Untitled
Untitled
21 December 2022
Christophe Geuzaine
Jean-François Remacle
Copyright 
          c 1997-2022 Christophe Geuzaine, Jean-François Remacle
Permission is granted to make and distribute verbatim copies of this manual provided the copy-
right notice and this permission notice are preserved on all copies.
                                                                                                                                   i
Short Contents
Obtaining Gmsh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Copying conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Reporting a bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1 Overview of Gmsh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Gmsh tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Gmsh graphical user interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4 Gmsh command-line interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5 Gmsh scripting language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6 Gmsh application programming interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7 Gmsh options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
8 Gmsh mesh size fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
9 Gmsh plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
10 Gmsh file formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
A Compiling the source code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
B Information for developers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
C Frequently asked questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
D Version history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
E Copyright and credits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
F License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Concept index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Syntax index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
                                                                                                                                                                       iii
Table of Contents
Obtaining Gmsh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Copying conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Reporting a bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1      Overview of Gmsh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
    1.1  Geometry module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
    1.2  Mesh module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
       1.2.1 Choosing the right unstructured algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
       1.2.2 Specifying mesh element sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
       1.2.3 Elementary entities vs. physical groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
    1.3 Solver module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
    1.4 Post-processing module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
    1.5 What Gmsh is pretty good at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
    1.6 . . . and what Gmsh is not so good at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
    1.7 Installing and running Gmsh on your computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2      Gmsh tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
    2.1     t1: Geometry basics, elementary entities, physical groups . . . . . . . . . . . . . . . . . . . . . . . . .                                                15
    2.2     t2: Transformations, extruded geometries, volumes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                            18
    2.3     t3: Extruded meshes, ONELAB parameters, options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                21
    2.4     t4: Built-in functions, holes in surfaces, annotations, entity colors . . . . . . . . . . . . . . . . .                                                    23
    2.5     t5: Mesh sizes, macros, loops, holes in volumes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                      26
    2.6     t6: Transfinite meshes, deleting entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                            30
    2.7     t7: Background meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                  32
    2.8     t8: Post-processing, image export and animations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                          33
    2.9     t9: Plugins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   36
    2.10     t10: Mesh size fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .             37
    2.11     t11: Unstructured quadrangular meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                   40
    2.12     t12: Cross-patch meshing with compounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                       42
    2.13     t13: Remeshing an STL file without an underlying CAD model . . . . . . . . . . . . . . . . . .                                                            43
    2.14     t14: Homology and cohomology computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                          45
    2.15     t15: Embedded points, lines and surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                  46
    2.16     t16: Constructive Solid Geometry, OpenCASCADE geometry kernel . . . . . . . . . . . . .                                                                   48
    2.17     t17: Anisotropic background mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                              50
    2.18     t18: Periodic meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .              51
    2.19     t19: Thrusections, fillets, pipes, mesh size from curvature . . . . . . . . . . . . . . . . . . . . . . . .                                               53
    2.20     t20: STEP import and manipulation, geometry partitioning . . . . . . . . . . . . . . . . . . . . .                                                        55
    2.21     t21: Mesh partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                57
    2.22     x1: Geometry and mesh data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                        59
    2.23     x2: Mesh import, discrete entities, hybrid models, terrain meshing . . . . . . . . . . . . . . .                                                          61
    2.24     x3: Post-processing data import: list-based . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                   65
    2.25     x4: Post-processing data import: model-based . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                        68
    2.26     x5: Additional geometrical data: parametrizations, normals, curvatures . . . . . . . . . .                                                                70
    2.27     x6: Additional mesh data: integration points, Jacobians and basis functions . . . . . .                                                                   72
    2.28     x7: Additional mesh data: internal edges and faces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                            74
iv                                                                                                                                                        Gmsh 4.11.1
Obtaining Gmsh
The source code and pre-compiled binary versions of Gmsh (for Windows, macOS and Linux)
can be downloaded from https://gmsh.info. Gmsh packages are also directly available in
various Linux and BSD distributions (Debian, Ubuntu, FreeBSD, ...).
If you use Gmsh, we would appreciate that you mention it in your work by citing the follow-
ing paper: C. Geuzaine and J.-F. Remacle, Gmsh: a three-dimensional finite element mesh
generator with built-in pre- and post-processing facilities. International Journal for Numerical
Methods in Engineering, Volume 79, Issue 11, pages 1309-1331, 2009. A preprint of that pa-
per as well as other references and the latest news about Gmsh development are available on
https://gmsh.info.
Copying conditions                                                                             3
Copying conditions
Gmsh is free software; this means that everyone is free to use it and to redistribute it on a
free basis. Gmsh is not in the public domain; it is copyrighted and there are restrictions on its
distribution, but these restrictions are designed to permit everything that a good cooperating
citizen would want to do. What is not allowed is to try to prevent others from further sharing
any version of Gmsh that they might get from you.
Specifically, we want to make sure that you have the right to give away copies of Gmsh, that
you receive source code or else can get it if you want it, that you can change Gmsh or use pieces
of Gmsh in new free programs, and that you know you can do these things.
To make sure that everyone has such rights, we have to forbid you to deprive anyone else of
these rights. For example, if you distribute copies of Gmsh, you must give the recipients all the
rights that you have. You must make sure that they, too, receive or can get the source code.
And you must tell them their rights.
Also, for our own protection, we must make certain that everyone finds out that there is no
warranty for Gmsh. If Gmsh is modified by someone else and passed on, we want their recipients
to know that what they have is not what we distributed, so that any problems introduced by
others will not reflect on our reputation.
The precise conditions of the license for Gmsh are found in the General Public
License that accompanies the source code (see Appendix F [License], page 409).
Further information about this license is available from the GNU Project webpage
https://www.gnu.org/copyleft/gpl-faq.html. Detailed copyright information can be found
in Appendix E [Copyright and credits], page 405.
If you want to integrate parts of Gmsh into a closed-source software, or want to sell a modified
closed-source version of Gmsh, you will need to obtain a different license. Please contact us
directly for more information.
Reporting a bug                                                                              5
Reporting a bug
If, after reading this reference manual, you think you have found a bug in Gmsh, please file an
issue on https://gitlab.onelab.info/gmsh/gmsh/issues. Provide as precise a description
of the problem as you can, including sample input files that produce the bug. Don’t forget to
mention both the version of Gmsh and your operation system.
See Appendix C [Frequently asked questions], page 375, and the bug tracking system to see
which problems we already know about.
Chapter 1: Overview of Gmsh                                                                    7
1 Overview of Gmsh
Gmsh is a three-dimensional finite element mesh generator with a build-in CAD engine and
post-processor. Its design goal is to provide a fast, light and user-friendly meshing tool with
parametric input and flexible visualization capabilities.
Gmsh is built around four modules (geometry, mesh, solver and post-processing), which can be
controlled with the graphical user interface (GUI; see Chapter 3 [Gmsh graphical user interface],
page 77), from the command line (see Chapter 4 [Gmsh command-line interface], page 83), using
text files written in Gmsh’s own scripting language (‘.geo’ files; see Chapter 5 [Gmsh scripting
language], page 89), or through the C++, C, Python, Julia and Fortran application programming
interface (API; see Chapter 6 [Gmsh application programming interface], page 123).
A brief description of the four modules is given hereafter, before an overview of what Gmsh does
best (... and what it is not so good at), and some practical information on how to install and
run Gmsh on your computer.
    Model entities can be manipulated and transformed in a variety of ways within the geometry
    module, but operations are always performed directly within their respective CAD kernels. As
    explained above, there is no common internal geometrical representation: rather, Gmsh directly
    performs the operations (translation, rotation, intersection, union, fragments, ...) on the native
    geometrical representation using each CAD kernel’s own API. In the same philosophy, models
    can be imported in the geometry module through each CAD kernel’s own import mechanisms.
    For example, by default Gmsh imports STEP and IGES files through OpenCASCADE, which
    will lead to the creation of model entities with an internal OpenCASCADE representation.
    The Chapter 2 [Gmsh tutorial], page 15, starting with Section 2.1 [t1], page 15, is the best place
    to learn how to use the geometry module: it contains examples of increasing complexity based
    on both the built-in and the OpenCASCADE kernel. Note that many features of the geometry
    module can be used interactively in the GUI (see Chapter 3 [Gmsh graphical user interface],
    page 77), which is also a good way to learn about both Gmsh’s scripting language and the API,
    as actions in the geometry module automatically append the related command in the input
    script file, and can optionally also generate input for the languages supported by the API (see
    the General.ScriptingLanguages option; this is still work-in-progress as of Gmsh 4.11.)
    In addition to CAD-type geometrical entities, whose geometry is provided by a CAD kernel,
    Gmsh also supports discrete model entities, which are defined by a mesh (e.g. STL). Gmsh does
    not perform geometrical operations on such discrete entities, but they can be equipped with a
    geometry through a so-called “reparametrization” procedure1 . The parametrization is then used
    for meshing, in exactly the same way as for CAD entities. See Section 2.13 [t13], page 43 for an
    example.
    are stored internally in Gmsh, and how they are accessed through the API: see Chapter 6 [Gmsh
    application programming interface], page 123.)
    Gmsh’s mesh module regroups several 1D, 2D and 3D meshing algorithms:
      • The 2D unstructured algorithms generate triangles and/or quadrangles (when recombina-
        tion commands or options are used). The 3D unstructured algorithms generate tetrahedra,
        or tetrahedra and pyramids (when the boundary mesh contains quadrangles).
      • The 2D structured algorithms (transfinite and extrusion) generate triangles by default, but
        quadrangles can be obtained by using the recombination commands or options. The 3D
        structured algorithms generate tetrahedra, hexahedra, prisms and pyramids, depending on
        the type of the surface meshes they are based on.
    All meshes can be subdivided to generate fully quadrangular or fully hexahedral meshes with
    the Mesh.SubdivisionAlgorithm option (see Section 7.4 [Mesh options], page 255).
      • The Box field specifies the size of the elements inside and outside of a parallelepipedic
        region.
      • The Distance field specifies the size of the mesh according to the distance to some
        model entities.
      • The MathEval field specifies the size of the mesh using an explicit mathematical func-
        tion.
      • The PostView field specifies an explicit background mesh in the form of a scalar post-
        processing view (see Section 1.4 [Post-processing module], page 12, and Chapter 10
        [Gmsh file formats], page 345) in which the nodal values are the target element sizes.
        This method is very general but it requires a first (usually rough) mesh and a way to
        compute the target sizes on this mesh (usually through an error estimation procedure,
        e.g. in an iterative process of mesh adaptation).
      • The Min field specifies the size as the minimum of the sizes computed using other fields.
      • ...
 4. Mesh sizes are also constrained by structured meshing constraints (e.g. transfinite or ex-
    truded meshes) as well as by any discrete model entity that is not equipped with a geometry,
    and which will thus preserve it mesh during mesh generation.
 5. Boundary mesh sizes are interpolated inside surfaces and/or volumes depending on the
    value of Mesh.MeshSizeExtendFromBoundary.
To determine the actual mesh size at any given point in the model, Gmsh evaluates all the above
mesh size constraints and selects the smallest value. Using the Gmsh API, this value can then
be further modified using a C++, C, Python, Julia or Fortran mesh size callback function pro-
vided via gmsh/model/mesh/setSizeCallback (see Section 6.4 [Namespace gmsh/model/mesh],
page 140).
The resulting value is further constrained in the interval [ Mesh.MeshSizeMin,
Mesh.MeshSizeMax ] (which can also be provided on the command line with -clmin and
-clmax). The resulting value is then finally multiplied by Mesh.MeshSizeFactor (-clscale on
the command line).
Note that when the element size is fully specified by a mesh size field, it is thus often desirable
to set
       Mesh.MeshSizeFromPoints = 0;
       Mesh.MeshSizeFromCurvature = 0;
       Mesh.MeshSizeExtendFromBoundary = 0;
to prevent over-refinement inside an entity due to small mesh sizes on its boundary.
 • in a ‘2D space’ plot, the scalar points are taken in the same order as they are defined in the
   post-processing view: the abscissa of the 2D graph is the curvilinear abscissa of the curve
   defined by the point series, and only one curve is drawn using the values associated with
   the points. If several time steps are available, each time step generates a new curve;
 • in a ‘2D time’ plot, one curve is drawn for each scalar point in the view and the abscissa is
   the time step.
2 Gmsh tutorial
The following tutorials introduce new features gradually, starting with the first tutorial t1 (see
Section 2.1 [t1], page 15). The corresponding files are available in the tutorials directory of the
Gmsh distribution.
The ‘.geo’ files (e.g. ‘t1.geo’) are written in Gmsh’s built-in scripting language (see Chapter 5
[Gmsh scripting language], page 89). You can open them directly with the Gmsh app: in the
GUI (see Chapter 3 [Gmsh graphical user interface], page 77), use the ‘File->Open’ menu and
select e.g. ‘t1.geo’. Or on the command line, run
       > gmsh t1.geo
which will launch the GUI, or run
       > gmsh t1.geo -2
to perform 2D meshing in batch mode (see Chapter 4 [Gmsh command-line interface], page 83).
The ‘c++’, ‘c’, ‘python’, ‘julia’ and ‘fortran’ subdirectories of the tutorials directory contain
the C++, C, Python, Julia and Fortran versions of the tutorials, written using the Gmsh API
(see Chapter 6 [Gmsh application programming interface], page 123). You will need the Gmsh
dynamic library and the associated header files (for C++ and C) or modules (for Python, Julia
and Fortran) to run them (see Section 1.7 [Installing and running Gmsh on your computer],
page 14). Each subdirectory contains additional information on how to run the tutorials for
each supported language.
All the tutorials starting with the letter ‘t’ are available both using the scripting language
and the API. Extended tutorials, starting with the letter ‘x’, introduce features that are only
available through the API.
Note that besides these tutorials, the Gmsh distribution contains many other examples written
using both the built-in scripting language and the API: see examples and benchmarks.
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 1
//
// Geometry basics, elementary entities, physical groups
//
// -----------------------------------------------------------------------------
lc = 1e-2;
// We can then define some additional points. All points should have different
// tags:
//   Curves are Gmsh’s second type of elementary entities, and, amongst curves,
//   straight lines are the simplest. A straight line is identified by a tag and
//   is defined by a list of two point tags. In the commands below, for example,
//   the line 1 starts at point 1 and ends at point 2.
//
//   Note that curve tags are separate from point tags - hence we can reuse tag
//   ‘1’ for our first curve. And as a general rule, elementary entity tags in
//   Gmsh have to be unique per geometrical dimension.
// We can then define the surface as a list of curve loops (only one here,
// representing the external contour, since there are no holes--see ‘t4.geo’ for
Chapter 2: Gmsh tutorial                                                          17
//   At this level, Gmsh knows everything to display the rectangular surface 1 and
//   to mesh it. An optional step is needed if we want to group elementary
//   geometrical entities into more meaningful groups, e.g. to define some
//   mathematical ("domain", "boundary"), functional ("left wing", "fuselage") or
//   material ("steel", "carbon") properties.
//
//   Such groups are called "Physical Groups" in Gmsh. By default, if physical
//   groups are defined, Gmsh will export in output files only mesh elements that
//   belong to at least one physical group. (To force Gmsh to save all elements,
//   whether they belong to physical groups or not, set ‘Mesh.SaveAll=1;’, or
//   specify ‘-save_all’ on the command line.) Physical groups are also identified
//   by tags, i.e. strictly positive integers, that should be unique per dimension
//   (0D, 1D, 2D or 3D). Physical groups can also be given names.
//
//   Here we define a physical curve that groups the left, bottom and right curves
//   in a single group (with prescribed tag 5); and a physical surface with name
//   "My surface" (with an automatic tag) containing the geometrical surface 1:
//   By default, Gmsh saves meshes in the latest version of the Gmsh mesh file
//   format (the ‘MSH’ format). You can save meshes in other mesh formats by
//   specifying a filename with a different extension in the GUI, on the command
//   line or in scripts. For example
//
//    Save "t1.unv";
//
//   will save the mesh in the UNV format. You can also save the mesh in older
//   versions of the MSH format:
//
//   - In the GUI: open ‘File->Export’, enter your ‘filename.msh’ and then pick
//     the version in the dropdown menu.
18                                                                                Gmsh 4.11.1
// - On the command line: use the ‘-format’ option (e.g. ‘gmsh file.geo -format
//   msh2 -2’).
// - In a ‘.geo’ script: add ‘Mesh.MshFileVersion = x.y;’ for any version
//   number ‘x.y’.
// - As an alternative method, you can also not specify the format explicitly,
//   and just choose a filename with the ‘.msh2’ or ‘.msh4’ extension.
//   Note that starting with Gmsh 3.0, models can be built using other geometry
//   kernels than the default built-in kernel. By specifying
//
//    SetFactory("OpenCASCADE");
//
//   any subsequent command in the ‘.geo’ file would be handled by the OpenCASCADE
//   geometry kernel instead of the built-in kernel. Different geometry kernels
//   have different features. With OpenCASCADE, instead of defining the surface by
//   successively defining 4 points, 4 curves and 1 curve loop, one can define the
//   rectangular surface directly with
//
//    Rectangle(2) = {.2, 0, 0, .1, .3};
//
//   The underlying curves and points could be accessed with the ‘Boundary’ or
//   ‘CombinedBoundary’ operators.
//
//   See e.g. ‘t16.geo’, ‘t18.geo’, ‘t19.geo’ or ‘t20.geo’ for complete examples
//   based on OpenCASCADE, and ‘examples/boolean’ for more.
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 2
//
// Transformations, extruded geometries, volumes
//
// -----------------------------------------------------------------------------
Include "t1.geo";
// We can then add new points and curves in the same way as we did in ‘t1.geo’:
// And it can be further rotated by -Pi/4 around (0, 0.3, 0) (with the rotation
// along the z axis) with:
// Note that there are no units in Gmsh: coordinates are just numbers - it’s up
// to the user to associate a meaning to them.
// This command created a new point with an automatically assigned tag. This tag
// can be obtained using the graphical user interface by hovering the mouse over
// the point: in this case, the new point has tag ‘6’.
// my_new_surfs[] (note the square brackets, and the ‘;’ at the end of the
// command) denotes a list, which contains the tags of the two new surfaces
// (check ‘Tools->Message console’ to see the message):
// In Gmsh lists use square brackets for their definition (mylist[] = {1, 2,
// 3};) as well as to access their elements (myotherlist[] = {mylist[0],
// mylist[2]}; mythirdlist[] = myotherlist[];), with list indexing starting at
20                                                                                      Gmsh 4.11.1
// 0. To get the size of a list, use the hash (pound): len = #mylist[].
//
// Note that parentheses can also be used instead of square brackets, so that we
// could also write ‘myfourthlist() = {mylist(0), mylist(1)};’.
//   Volumes are the fourth type of elementary entities in Gmsh. In the same way
//   one defines curve loops to build surfaces, one has to define surface loops
//   (i.e. ‘shells’) to build volumes. The following volume does not have holes
//   and thus consists of a single surface loop:
Point(100) = {0., 0.3, 0.12, lc}; Point(101) = {0.1, 0.3, 0.12, lc};
Point(102) = {0.1, 0.35, 0.12, lc};
//   When a volume can be extruded from a surface, it is usually easier to use the
//   ‘Extrude’ command directly instead of creating all the points, curves and
//   surfaces by hand. For example, the following command extrudes the surface 11
//   along the z axis and automatically creates a new volume (as well as all the
//   needed points, curves and surfaces):
// The following command permits to manually assign a mesh size to some of the
// new points:
// We finally group volumes 129 and 130 in a single physical group with tag ‘1’
// and name "The volume":
//   With the built-in geometry kernel, this can be achieved with ‘File->Export’ by
//   selecting the ‘Gmsh Unrolled GEO’ format, or by adding
//
//    Save "file.geo_unrolled";
//
//   in the script. It can also be achieved with ‘gmsh t2.geo -0’ on the command
//   line.
//
//   With the OpenCASCADE geometry kernel, unrolling the geometry can be achieved
//   with ‘File->Export’ by selecting the ‘OpenCASCADE BRep’ format, or by adding
//
//    Save "file.brep";
//
//   in the script. (OpenCASCADE geometries can also be exported to STEP.)
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 3
//
// Extruded meshes, ONELAB parameters, options
//
// -----------------------------------------------------------------------------
Include "t1.geo";
h = 0.1;
Extrude {0,0,h} {
  Surface{1}; Layers{ {8,2}, {0.5,1} };
}
// Using the built-in geometry kernel, only rotations with angles < Pi are
// supported. To do a full turn, you will thus need to apply at least 3
// rotations. The OpenCASCADE geometry kernel does not have this limitation.
// command. This list contains the "top" of the extruded surface (in ‘out[0]’),
// the newly created volume (in ‘out[1]’) and the tags of the lateral surfaces
// (in ‘out[2]’, ‘out[3]’, ...).
// We can then define a new physical volume (with tag 101) to group all the
// elementary volumes:
// Let us now change some options... Since all interactive options are
// accessible in Gmsh’s scripting language, we can for example make point tags
// visible or redefine some colors directly in the input file:
Geometry.PointNumbers = 1;
Geometry.Color.Points = Orange;
General.Color.Text = White;
Mesh.Color.Points = {255, 0, 0};
Geometry.Color.Surfaces = Geometry.Color.Points;
//   You can use the ‘Help->Current Options and Workspace’ menu to see the current
//   values of all options. To save all the options in a file, use
//   ‘File->Export->Gmsh Options’. To associate the current options with the
//   current file use ‘File->Save Model Options’. To save the current options for
//   all future Gmsh sessions use ‘File->Save Options As Default’.
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 4
//
// Built-in functions, holes in surfaces, annotations, entity colors
24                                                                                    Gmsh 4.11.1
//
// -----------------------------------------------------------------------------
cm = 1e-02;
e1 = 4.5 * cm; e2 = 6 * cm / 2; e3 = 5 * cm / 2;
h1 = 5 * cm; h2 = 10 * cm; h3 = 5 * cm; h4 = 2 * cm; h5 = 4.5 * cm;
R1 = 1 * cm; R2 = 1.5 * cm; r = 1 * cm;
Lc1 = 0.01;
Lc2 = 0.003;
// We can use all the usual mathematical functions (note the capitalized first
// letters), plus some useful functions like Hypot(a, b) := Sqrt(a^2 + b^2):
// Then we define some points and some lines using these variables:
Line(1)   = {1 , 17};
Line(2)   = {17, 16};
// Gmsh provides other curve primitives than straight lines: splines, B-splines,
// circle arcs, ellipse arcs, etc. Here we define a new circle arc, starting at
// point 14 and ending at point 16, with the circle’s center being the point 15:
Circle(3) = {14,15,16};
// Note that, in Gmsh, circle arcs should always be smaller than Pi. The
// OpenCASCADE geometry kernel does not have this limitation.
// We can then define additional lines and circles, as well as a new surface:
Chapter 2: Gmsh tutorial                                                        25
// But we still need to define the exterior surface. Since this surface has a
// hole, its definition now requires two curves loops:
View "comments" {
  // Add a text string in window coordinates, 10 pixels from the left and 10
  // pixels from the bottom, using the ‘StrCat’ function to concatenate strings:
  T2(10, -10, 0){ StrCat("Created on ", Today, " with Gmsh") };
  // Add a text string in model coordinates centered at (X,Y,Z) = (0, 0.11, 0):
  T3(0, 0.11, 0, TextAttributes("Align", "Center", "Font", "Helvetica")){
     "Hole"
  };
  // The image can also be drawn in "billboard" mode, i.e. always parallel to
  // the camera, by using the ‘#’ symbol:
  T3(0, 0.12, 0, TextAttributes("Align", "Center")){
    "file://t4_image.png@0.01x0#"
26                                                                                  Gmsh 4.11.1
};
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 5
//
// Mesh sizes, macros, loops, holes in volumes
//
// -----------------------------------------------------------------------------
lcar1 = .1;
Chapter 2: Gmsh tutorial                                                       27
lcar2 = .0005;
lcar3 = .055;
//   If we wanted to change these mesh sizes globally (without changing the above
//   definitions), we could give a global scaling factor for all mesh sizes on the
//   command line with the ‘-clscale’ option (or with ‘Mesh.MeshSizeFactor’ in an
//   option file). For example, with:
//
//   > gmsh t5.geo -clscale 1
//
//   this input file produces a mesh of approximately 3000 nodes and 14,000
//   tetrahedra. With
//
//   > gmsh t5.geo -clscale 0.2
//
//   the mesh counts approximately 231,000 nodes and 1,360,000 tetrahedra. You can
//   check mesh statistics in the graphical user interface with the
//   ‘Tools->Statistics’ menu.
//
//   See ‘t10.geo’ for more information about mesh sizes.
Macro CheeseHole
     //   In the following commands we use the reserved variable name ‘newp’, which
     //   automatically selects a new point tag. Analogously to ‘newp’, the special
     //   variables ‘newc’, ‘newcl, ‘news’, ‘newsl’ and ‘newv’ select new curve,
     //   curve loop, surface, surface loop and volume tags.
     //
     //   If ‘Geometry.OldNewReg’ is set to 0, the new tags are chosen as the highest
     //   current tag for each category (points, curves, curve loops, ...), plus
     //   one. By default, for backward compatibility, ‘Geometry.OldNewReg’ is set
     //   to 1, and only two categories are used: one for points and one for the
     //   rest.
  // We then store the surface loops tags in a list for later reference (we will
  // need these to define the final volume):
  theloops[t] = newsl;
  Surface Loop(theloops[t]) = {s1, s2, s3, s4, s5, s6, s7, s8};
  thehole = newv;
  Volume(thehole) = theloops[t];
Return
x = 0; y = 0.75; z = 0; r = 0.09;
For t In {1:5}
  x += 0.166;
  z += 0.166;
Call CheeseHole;
  //   We also print some variables on the terminal (note that, since all
  //   variables in ‘.geo’ files are treated internally as floating point numbers,
  //   the format string should only contain valid floating point format
  //   specifiers like ‘%g’, ‘%f’, ’%e’, etc.):
EndFor
// We can then define the surface loop for the exterior surface of the cube:
theloops[0] = newreg;
Surface Loop(theloops[0]) = {23:39:2};
//   The volume   of the cube, without the 5 holes, is now defined by 6 surface
//   loops: the   first surface loop defines the exterior surface; the surface loops
//   other than   the first one define holes. (Again, to reference an array of
//   variables,   its identifier is followed by square brackets):
30                                                                                 Gmsh 4.11.1
Volume(186) = {theloops[]};
// Note that using solid modelling with the OpenCASCADE geometry kernel, the
// same geometry could be built quite differently: see ‘t16.geo’.
// We finally define a physical volume for the elements discretizing the cube,
// without the holes (for which physical groups were already created in the
// ‘For’ loop):
//   We could make only part of the model visible to only mesh this subset:
//
//   Hide {:}
//   Recursive Show { Volume{129}; }
//   Mesh.MeshOnlyVisible=1;
// -----------------------------------------------------------------------------
//
Chapter 2: Gmsh tutorial                                                     31
// Let’s use the geometry from the first tutorial as a basis for this one:
lc = 1e-2;
Point(1) = {0, 0, 0, lc};
Point(2) = {.1, 0, 0, lc};
Point(3) = {.1, .3, 0, lc};
Point(4) = {0, .3, 0, lc};
Line(1) = {1, 2};
Line(2) = {3, 2};
Line(3) = {3, 4};
Line(4) = {4, 1};
Curve Loop(1) = {4, 1, -2, 3};
Plane Surface(1) = {1};
// Delete the surface and the left line, and replace the line with 3 new ones:
Delete{ Surface{1}; Curve{4}; }
// Create a surface:
Curve Loop(2) = {2, -1, l1, l2, l3, -3};
Plane Surface(1) = {-2};
// Let’s put 20 points total on combination of curves ‘l1’, ‘l2’ and ‘l3’
// (beware that the points ‘p1’ and ‘p2’ are shared by the curves, so we do not
// create 6 + 6 + 10 = 22 nodes, but 20!)
Transfinite Curve{l1} = 6;
Transfinite Curve{l2} = 6;
Transfinite Curve{l3} = 10;
// boundary using a structured grid. If the surface has more than 4 corner
// points, the corners of the transfinite interpolation have to be specified by
// hand:
Transfinite Surface{1} = {1, 2, 3, 4};
// When the surface has only 3 or 4 points on its boundary the list of corners
// can be omitted in the ‘Transfinite Surface’ constraint:
Point(7) = {0.2, 0.2, 0, 1.0};
Point(8) = {0.2, 0.1, 0, 1.0};
Point(9) = {-0, 0.3, 0, 1.0};
Point(10) = {0.25, 0.2, 0, 1.0};
Point(11) = {0.3, 0.1, 0, 1.0};
Line(10) = {8, 11};
Line(11) = {11, 10};
Line(12) = {10, 7};
Line(13) = {7, 8};
Curve Loop(14) = {13, 10, 11, 12};
Plane Surface(15) = {14};
Transfinite Curve {10:13} = 10;
Transfinite Surface{15};
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 7
//
Chapter 2: Gmsh tutorial                                                           33
// Background meshes
//
// -----------------------------------------------------------------------------
// In order to compute the mesh sizes from the background mesh only, and
// disregard any other size constraints, one can set:
Mesh.MeshSizeExtendFromBoundary = 0;
Mesh.MeshSizeFromPoints = 0;
Mesh.MeshSizeFromCurvature = 0;
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 8
//
// Post-processing, image export and animations
//
// -----------------------------------------------------------------------------
34                                                                     Gmsh 4.11.1
// In addition to creating geometries and meshes, GEO scripts can also be used
// to manipulate post-processing datasets (called "views" in Gmsh).
Include   "t1.geo";
Include   "view1.pos";
Include   "view1.pos";
Include   "view4.pos";
//   Gmsh can read post-processing views in various formats. Here the ‘view1.pos’
//   and ‘view4.pos’ files are in the Gmsh "parsed" format, which is interpreted
//   directly by the GEO script parser. The parsed format should only be used for
//   relatively small datasets of course: for larger datasets using e.g. MSH files
//   is much more efficient.
General.Trackball = 0;
General.RotationX = 0; General.RotationY = 0; General.RotationZ = 0;
General.Color.Background = White; General.Color.Foreground = Black;
General.Color.Text = Black;
General.Orthographic = 0;
General.Axes = 0; General.SmallAxes = 0;
v0 = PostProcessing.NbViews-4;
v1 = v0+1; v2 = v0+2; v3 = v0+3;
View[v0].IntervalsType = 2;
View[v0].OffsetZ = 0.05;
View[v0].RaiseZ = 0;
View[v0].Light = 1;
View[v0].ShowScale = 0;
View[v0].SmoothNormals = 1;
View[v1].IntervalsType = 1;
View[v1].ColorTable = { Green, Blue };
View[v1].NbIso = 10;
View[v1].ShowScale = 0;
View[v2].Name = "Test...";
View[v2].Axes = 1;
View[v2].Color.Axes = Black;
View[v2].IntervalsType = 2;
View[v2].Type = 2;
View[v2].IntervalsType = 2;
View[v2].AutoPosition = 0;
View[v2].PositionX = 85;
View[v2].PositionY = 50;
Chapter 2: Gmsh tutorial                                                       35
View[v2].Width = 200;
View[v2].Height = 130;
View[v3].Visible = 0;
//   But a script can be used to build much more complex animations, by changing
//   options at run-time and re-rendering the graphics. Each frame can then be
//   saved to disk as an image, and multiple frames can be encoded to form a
//   movie. Below is an example of such a custom animation.
t = 0; // Initial step
  If (num == 3)
    // Resize the graphics when num == 3, to create 640x480 frames
    General.GraphicsWidth = General.MenuWidth + 640;
    General.GraphicsHeight = 480;
  EndIf
frames = 50;
     // Draw the scene (one could use ‘DrawForceChanged’ instead to force the
     // reconstruction of the vertex arrays, e.g. if changing element clipping)
     Draw;
     If (num == 3)
36                                                                                 Gmsh 4.11.1
        // Uncomment the following lines to save each frame to an image file (the
        // ‘Print’ command saves the graphical window; the ‘Sprintf’ function
        // permits to create the file names on the fly):
EndFor
     If(num == 3)
       // Here we could make a system call to generate a movie. For example, with
       // ffmpeg:
EndFor
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 9
//
// Plugins
//
// -----------------------------------------------------------------------------
Include "view3.pos" ;
// We then set some options for the ‘Isosurface’ plugin (which extracts an
// isosurface from a 3D scalar view), and run it:
// We also set some options for the ‘CutPlane’ plugin (which computes a section
// of a 3D view using the plane A*x+B*y+C*z+D=0), and then run it:
Plugin(CutPlane).A = 0 ;
Plugin(CutPlane).B = 0.2 ;
Plugin(CutPlane).C = 1 ;
Plugin(CutPlane).D = 0 ;
Plugin(CutPlane).View = 0 ;
Plugin(CutPlane).Run ;
// Add a title (By convention, for window coordinates a value greater than 99999
// represents the center. We could also use ‘General.GraphicsWidth / 2’, but
// that would only center the string for the current window size.):
View[0].Light = 1;
View[0].IntervalsType      = 1;
View[0].NbIso = 6;
View[0].SmoothNormals      = 1;
View[1].IntervalsType      = 2;
View[2].IntervalsType      = 2;
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 10
//
// Mesh size fields
//
// -----------------------------------------------------------------------------
// Say we would like to obtain mesh elements with size lc/30 near curve 2 and
// point 5, and size lc elsewhere. To achieve this, we can use two fields:
// "Distance", and "Threshold". We first define a Distance field (‘Field[1]’) on
// points 5 and on curve 2. This field returns the distance to point 5 and to
// (100 equidistant points on) curve 2.
Field[1] = Distance;
Field[1].PointsList = {5};
Field[1].CurvesList = {2};
Field[1].Sampling = 100;
//   We then define a ‘Threshold’ field, which uses the return value of the
//   ‘Distance’ field 1 in order to define a simple change in element size
//   depending on the computed distances
//
//   SizeMax -                        /------------------
//                                 /
//                                /
//                               /
//   SizeMin -o----------------/
//            |                |       |
Chapter 2: Gmsh tutorial                                                          39
// Say we want to modulate the mesh element sizes using a mathematical function
// of the spatial coordinates. We can do this with the MathEval field:
Field[3] = MathEval;
Field[3].F = "Cos(4*3.14*x) * Sin(4*3.14*y) / 10 + 0.101";
// We could also combine MathEval with values coming from other fields. For
// example, let’s define a ‘Distance’ field around point 1
Field[4] = Distance;
Field[4].PointsList = {1};
// We can then create a ‘MathEval’ field with a function that depends on the
// return value of the ‘Distance’ field 4, i.e., depending on the distance to
// point 1 (here using a cubic law, with minimum element size = lc / 100)
Field[5] = MathEval;
Field[5].F = Sprintf("F4^3 + %g", lc / 100);
// We could also use a ‘Box’ field to impose a step change in element sizes
// inside a box
Field[6] = Box;
Field[6].VIn = lc / 15;
Field[6].VOut = lc;
Field[6].XMin = 0.3;
Field[6].XMax = 0.6;
Field[6].YMin = 0.3;
Field[6].YMax = 0.6;
Field[6].Thickness = 0.3;
// Many other types of fields are available: see the reference manual for a
// complete list. You can also create fields directly in the graphical user
// interface by selecting ‘Define->Size fields’ in the ‘Mesh’ module.
// Let’s use the minimum of all the fields as the background mesh size field
Field[7] = Min;
Field[7].FieldsList = {2, 3, 5, 6};
Background Field = 7;
//   To determine the size of mesh elements, Gmsh locally computes the minimum of
//
//   1) the size of the model bounding box;
//   2) if ‘Mesh.MeshSizeFromPoints’ is set, the mesh size specified at
//      geometrical points;
//   3) if ‘Mesh.MeshSizeFromCurvature’ is positive, the mesh size based on
//      curvature (the value specifying the number of elements per 2 * pi rad);
//   4) the background mesh size field;
40                                                                                Gmsh 4.11.1
Mesh.MeshSizeExtendFromBoundary = 0;
Mesh.MeshSizeFromPoints = 0;
Mesh.MeshSizeFromCurvature = 0;
// This will prevent over-refinement due to small mesh sizes on the boundary.
Mesh.Algorithm = 5;
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 11
//
// Unstructured quadrangular meshes
//
// -----------------------------------------------------------------------------
//   We have seen in tutorials ‘t3.geo’ and ‘t6.geo’ that extruded and transfinite
//   meshes can be "recombined" into quads, prisms or hexahedra by using the
//   "Recombine" keyword. Unstructured meshes can be recombined in the same
//   way. Let’s define a simple geometry with an analytical mesh size field:
Field[1] = MathEval;
Field[1].F = "0.01*(1.0+30.*(y-x*x)*(y-x*x) + (1-x)*(1-x))";
Background Field = 1;
Recombine Surface{100};
// If we’d had several surfaces, we could have used ‘Recombine Surface {:};’.
// Yet another way would be to specify the global option "Mesh.RecombineAll =
// 1;".
//   For even better 2D (planar) quadrilateral meshes, you can try the
//   experimental "Frontal-Delaunay for quads" meshing algorithm, which is a
//   triangulation algorithm that enables to create right triangles almost
//   everywhere: J.-F. Remacle, F. Henrotte, T. Carrier-Baudouin, E. Bechet,
//   E. Marchandise, C. Geuzaine and T. Mouton. A frontal Delaunay quad mesh
//   generator using the L^inf norm. International Journal for Numerical Methods
//   in Engineering, 94, pp. 494-512, 2013. Uncomment the following line to try
//   the Frontal-Delaunay algorithms for quads:
//
//   Mesh.Algorithm = 8;
//   The default recombination algorithm might leave some triangles in the mesh,
//   if recombining all the triangles leads to badly shaped quads. In such cases,
//   to generate full-quad meshes, you can either subdivide the resulting hybrid
//   mesh (with Mesh.SubdivisionAlgorithm = 1), or use the full-quad recombination
//   algorithm, which will automatically perform a coarser mesh followed by
//   recombination, smoothing and subdivision. Uncomment the following line to try
//   the full-quad algorithm:
//
//   Mesh.RecombinationAlgorithm = 2; // or 3
//   Note that you could also apply the recombination algorithm and/or the
//   subdivision step explicitly after meshing, as follows:
//
//   Mesh 2;
//   RecombineMesh;
42                                                                                Gmsh 4.11.1
// Mesh.SubdivisionAlgorithm = 1;
// RefineMesh;
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 12
//
// Cross-patch meshing with compounds
//
// -----------------------------------------------------------------------------
//   Step 3. above can only be performed if the mesh resulting from the
//   combination of the individual meshes can be reparametrized, i.e. if the shape
//   is "simple enough". If the shape is not amenable to reparametrization, you
//   should create a full mesh of the geometry and first re-classify it to
//   generate patches amenable to reparametrization (see ‘t13.geo’).
lc = 0.1;
// Treat curves 2, 3 and 4 as a single curve when meshing (i.e. mesh across
// points 6 and 7)
Compound Curve{2, 3, 4};
// Treat surfaces 1, 5 and 10 as a single surface when meshing (i.e. mesh across
// curves 9 and 10)
Compound Surface{1, 5, 10};
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 13
//
// Remeshing an STL file without an underlying CAD model
//
// -----------------------------------------------------------------------------
44                                                                    Gmsh 4.11.1
DefineConstant[
  // Angle between two triangles above which an edge is considered as sharp
  angle = {40, Min 20, Max 120, Step 1,
    Name "Parameters/Angle for surface detection"},
  // For complex geometries, patches can be too complex, too elongated or too
  // large to be parametrized; setting the following option will force the
  // creation of patches that are amenable to reparametrization:
  forceParametrizablePatches = {0, Choices{0,1},
    Name "Parameters/Create surfaces guaranteed to be parametrizable"},
  // For open surfaces include the boundary edges in the classification process:
  includeBoundary = 1,
  // Force curves to be split on given angle:
  curveAngle = 180
];
ClassifySurfaces{angle * Pi/180, includeBoundary, forceParametrizablePatches,
                 curveAngle * Pi / 180};
// Create a geometry for all the discrete curves and surfaces in the mesh, by
// computing a parametrization for each one
CreateGeometry;
// In batch mode the two steps above can be performed with ‘gmsh t13.stl
// -reparam 40’, which will save ‘t13.msh’ containing the parametrizations, and
// which can thus subsequently be remeshed.
//   Note that if a CAD model (e.g. as a STEP file, see ‘t20.geo’) is available
//   instead of an STL mesh, it is usually better to use that CAD model instead of
//   the geometry created by reparametrizing the mesh. Indeed, CAD geometries will
//   in general be more accurate, with smoother parametrizations, and will lead to
//   more efficient and higher quality meshing. Discrete surface remeshing in Gmsh
//   is optimized to handle dense STL meshes coming from e.g. imaging systems
//   where no CAD is available; it is less well suited for the poor quality STL
//   triangulations (optimized for size, with e.g. very elongated triangles) that
//   are usually generated by CAD tools for e.g. 3D printing.
// We specify element sizes imposed by a size field, just because we can :-)
funny = DefineNumber[0, Choices{0,1},
  Name "Parameters/Apply funny mesh size field?" ];
Field[1] = MathEval;
Chapter 2: Gmsh tutorial                                                               45
If(funny)
  Field[1].F = "2*Sin((x+y)/5) + 3";
Else
  Field[1].F = "4";
EndIf
Background Field = 1;
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 14
//
// Homology and cohomology computation
//
// -----------------------------------------------------------------------------
// Create physical groups, which are used to define the domain of the
// (co)homology computation and the subdomain of the relative (co)homology
// computation.
// Whole domain
Physical Volume(1) = {e(1)};
// Find bases for relative homology spaces of the domain modulo the four
// terminals.
Homology {{1}, {70, 71, 72, 73}};
// Find homology space bases isomorphic to the previous bases: homology spaces
// modulo the non-terminal domain surface, a.k.a the thin cuts.
Homology {{1}, {75}};
// More examples:
// Homology {1};
// Homology;
// Homology {{1}, {80}};
// Homology {{}, {80}};
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 15
//
// Embedded points, lines and surfaces
//
// -----------------------------------------------------------------------------
// One can force this point to be included ("embedded") in the 2D mesh, using
// the ‘Point In Surface’ command:
Point{5} In Surface{1};
// In the same way, one can force a curve to be embedded in the 2D mesh using
// the ‘Curve in Surface’ command:
Point(6) = {0.02, 0.12, 0, lc};
Point(7) = {0.04, 0.18, 0, lc};
Line(5) = {6, 7};
Curve{5} In Surface{1};
// One can also embed points and curves in a volume using the ‘Curve/Point In
// Volume’ commands:
Extrude {0, 0, 0.1}{ Surface {1}; }
p = newp;
Point(p) = {0.07, 0.15, 0.025, lc};
48                                                                             Gmsh 4.11.1
l = newc;
Point(p+1) = {0.025, 0.15, 0.025, lc};
Line(l) = {7, p+1};
Curve{l} In Volume {1};
// Finally, one can also embed a surface in a volume using the ‘Surface In
// Volume’ command:
Point(p+2) = {0.02, 0.12, 0.05, lc};
Point(p+3) = {0.04, 0.12, 0.05, lc};
Point(p+4) = {0.04, 0.18, 0.05, lc};
Point(p+5) = {0.02, 0.18, 0.05, lc};
Line(l+1) = {p+2, p+3};
Line(l+2) = {p+3, p+4};
Line(l+3) = {p+4, p+5};
Line(l+4) = {p+5, p+2};
ll = newcl;
Curve Loop(ll) = {l+1:l+4};
s = news;
Plane Surface(s) = {ll};
Surface{s} In Volume {1};
//   Note that with the OpenCASCADE kernel (see ‘t16.geo’), when the
//   ‘BooleanFragments’ command is applied to entities of different dimensions,
//   the lower dimensional entities will be autmatically embedded in the higher
//   dimensional entities if necessary.
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 16
Chapter 2: Gmsh tutorial                                                         49
//
// Constructive Solid Geometry, OpenCASCADE geometry kernel
//
// -----------------------------------------------------------------------------
SetFactory("OpenCASCADE");
// Let’s build the same model as in ‘t5.geo’, but using constructive solid
// geometry.
// We apply a boolean difference to create the "cube minus one eigth" shape:
BooleanDifference(3) = { Volume{1}; Delete; }{ Volume{2}; Delete; };
//   Here the   ‘Physical Volume’ definitions made above will thus still work, as
//   the five   spheres (volumes 4, 5, 6, 7 and 8), which will be deleted by the
//   fragment   operations, will be recreated identically (albeit with new surfaces)
//   with the   same tags.
// Creating entities using constructive solid geometry is very powerful, but can
// lead to practical issues for e.g. setting mesh sizes at points, or
// identifying boundaries.
// To identify points or other bounding entities you can take advantage of the
// ‘PointfsOf’ (a special case of the more general ‘Boundary’ command) and the
// ‘In BoundingBox’ commands.
lcar1 = .1;
lcar2 = .0005;
lcar3 = .055;
eps = 1e-3;
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 17
//
// Anisotropic background mesh
//
// -----------------------------------------------------------------------------
// a background mesh, i.e., a post-processing view that contains the target mesh
// sizes.
SetFactory("OpenCASCADE");
// Create a square
Rectangle(1) = {-2, -2, 0, 4, 4};
// Use bamg
Mesh.SmoothRatio = 3;
Mesh.AnisoMax = 1000;
Mesh.Algorithm = 7;
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 18
//
// Periodic meshes
//
// -----------------------------------------------------------------------------
SetFactory("OpenCASCADE");
// The first geometry is very simple: a unit cube with a non-uniform mesh size
52                                                                  Gmsh 4.11.1
// To impose that the mesh on surface 2 (the right side of the cube) should
// match the mesh from surface 1 (the left side), the following periodicity
// constraint is set:
Periodic Surface {2} = {1} Translate {1, 0, 0};
// During mesh generation, the mesh on surface 2 will be created by copying the
// mesh from surface 1. Periodicity constraints can be specified with a
// ‘Translation’, a ‘Rotation’ or a general ‘Affine’ transform.
// For more complicated cases, finding the corresponding surfaces by hand can be
// tedious, especially when geometries are created through solid
// modelling. Let’s construct a slightly more complicated geometry.
// We first fragment all the volumes, which will leave parts of spheres
// protruding outside the cube:
v() = BooleanFragments { Volume{10}; Delete; }{ Volume{11:18}; Delete; };
// Ask OpenCASCADE to compute more accurate bounding boxes of entities using the
// STL mesh:
Geometry.OCCBoundsUseStl = 1;
// We then retrieve all the volumes in the bounding box of the original cube,
// and delete all the parts outside it:
eps = 1e-3;
vin() = Volume In BoundingBox {2-eps,-eps,-eps, 2+1+eps,1+eps,1+eps};
v() -= vin();
Recursive Delete{ Volume{v()}; }
// visually):
MeshSize { PointsOf{ Volume{vin()}; }} = 0.1;
p() = Point In BoundingBox{2-eps, -eps, -eps, 2+eps, eps, eps};
MeshSize {p()} = 0.001;
// We now identify corresponding surfaces on the left and right sides of the
// geometry automatically.
For i In {0:#Sxmin()-1}
  // Then we get the bounding box of each left surface
  bb() = BoundingBox Surface { Sxmin(i) };
  // We translate the bounding box to the right and look for surfaces inside it:
  Sxmax() = Surface In BoundingBox { bb(0)-eps+1, bb(1)-eps, bb(2)-eps,
                                     bb(3)+eps+1, bb(4)+eps, bb(5)+eps };
  // For all the matches, we compare the corresponding bounding boxes...
  For j In {0:#Sxmax()-1}
    bb2() = BoundingBox Surface { Sxmax(j) };
    bb2(0) -= 1;
    bb2(3) -= 1;
    // ...and if they match, we apply the periodicity constraint
    If(Fabs(bb2(0)-bb(0)) < eps && Fabs(bb2(1)-bb(1)) < eps &&
       Fabs(bb2(2)-bb(2)) < eps && Fabs(bb2(3)-bb(3)) < eps &&
       Fabs(bb2(4)-bb(4)) < eps && Fabs(bb2(5)-bb(5)) < eps)
      Periodic Surface {Sxmax(j)} = {Sxmin(i)} Translate {1,0,0};
    EndIf
  EndFor
EndFor
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 19
//
// Thrusections, fillets, pipes, mesh size from curvature
//
// -----------------------------------------------------------------------------
54                                                                    Gmsh 4.11.1
// The OpenCASCADE geometry kernel supports several useful features for solid
// modelling.
SetFactory("OpenCASCADE");
// With ‘Ruled ThruSections’ you can force the use   of ruled surfaces:
Circle(11) = {2+0,0,0, 0.5};      Curve Loop(11) =   11;
Circle(12) = {2+0.1,0.05,1, 0.1}; Curve Loop(12) =   12;
Circle(13) = {2-0.1,-0.1,2, 0.3}; Curve Loop(13) =   13;
Ruled ThruSections(11) = {11:13};
// OpenCASCADE also allows general extrusions along a smooth path. Let’s first
// define a spline curve:
nturns = 1;
npts = 20;
r = 1;
h = 1 * nturns;
For i In {0 : npts - 1}
  theta = i * 2*Pi*nturns/npts;
  Point(1000 + i) = {r * Cos(theta), r * Sin(theta), i * h/npts};
EndFor
Spline(1000) = {1000 : 1000 + npts - 1};
// We define the shape we would like to extrude along the spline (a disk):
Disk(1000) = {1,0,0, 0.2};
Rotate {{1, 0, 0}, {0, 0, 0}, Pi/2} { Surface{1000}; }
// We delete the source surface, and increase the number of sub-edges for a
// nicer display of the geometry:
Delete{ Surface{1000}; }
Geometry.NumSubEdges = 1000;
Chapter 2: Gmsh tutorial                                                               55
// We can constraint the min and max element sizes to stay within reasonnable
// values (see ‘t10.geo’ for more details):
Mesh.MeshSizeMin = 0.001;
Mesh.MeshSizeMax = 0.3;
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 20
//
// STEP import and manipulation, geometry partitioning
//
// -----------------------------------------------------------------------------
// The OpenCASCADE geometry kernel allows to import STEP files and to modify
// them. In this tutorial we will load a STEP geometry and partition it into
// slices.
SetFactory("OpenCASCADE");
//   If we had specified
//
//   Geometry.OCCTargetUnit = "M";
//
//   before merging the STEP file, OpenCASCADE would have converted the units to
//   meters (instead of the default, which is millimeters).
ymin   =   bbox(1);
zmin   =   bbox(2);
xmax   =   bbox(3);
ymax   =   bbox(4);
zmax   =   bbox(5);
// We want to slice the model into N slices, and either keep the volume slices
// or just the surfaces obtained by the cutting:
DefineConstant[
  N = {5, Min 2, Max 100, Step 1, Name "Parameters/0Number of slices"}
  dir = {0, Choices{0="X", 1="Y", 2="Z"}, Name "Parameters/1Direction"}
  surf = {0, Choices{0, 1}, Name "Parameters/2Keep only surfaces?"}
];
dx = (xmax - xmin);
dy = (ymax - ymin);
dz = (zmax - zmin);
L = (dir == 0) ? dz : dx;
H = (dir == 1) ? dz : dy;
// Fragment (i.e. intersect) the volume with all the cutting planes:
BooleanFragments{ Volume{v()}; Delete; }{ Surface{s()}; Delete; }
// Now remove all the surfaces (and their bounding entities) that are not on the
// boundary of a volume, i.e. the parts of the cutting planes that "stick out"
// of the volume:
Recursive Delete { Surface{:}; }
If(surf)
  // If we want to only keep the surfaces, retrieve the surfaces in bounding
  // boxes around the cutting planes...
  eps = 1e-4;
  s() = {};
  For i In {1:N-1}
Chapter 2: Gmsh tutorial                                                               57
// -----------------------------------------------------------------------------
//
// Gmsh GEO tutorial 21
//
// Mesh partitioning
//
// -----------------------------------------------------------------------------
//   Gmsh can partition meshes using different algorithms, e.g. the graph
//   partitioner Metis or the ‘SimplePartition’ plugin. For all the partitining
//   algorithms, the relationship between mesh elements and mesh partitions is
//   encoded through the creation of new (discrete) elementary entities, called
//   "partition entities".
//
//   Partition entities behave exactly like other discrete elementary entities;
//   the only difference is that they keep track of both a mesh partition index
//   and their parent elementary entity.
//
//   The major advantage of this approach is that it allows to maintain a full
58                                                                  Gmsh 4.11.1
// Let us start by creating a simple geometry with two adjacent squares sharing
// an edge:
SetFactory("OpenCASCADE");
Rectangle(1) = {0, 0, 0, 1, 1};
Rectangle(2) = {1, 0, 0, 1, 1};
BooleanFragments{ Surface{1}; Delete; }{ Surface{2}; Delete; }
MeshSize {:} = 0.05;
// We create one physical group for each square, and we mesh the resulting
// geometry:
Physical Surface("Left", 100) = 1;
Physical Surface("Right", 200) = 2;
Mesh 2;
// We now define several constants to fine-tune how the mesh will be partitioned
DefineConstant[
  partitioner = {0, Choices{0="Metis", 1="SimplePartition"},
    Name "Parameters/0Mesh partitioner"}
  N = {3, Min 1, Max 256, Step 1,
    Name "Parameters/1Number of partitions"}
  topology = {1, Choices{0, 1},
    Name "Parameters/2Create partition topology (BRep)?"}
  ghosts = {0, Choices{0, 1},
    Name "Parameters/3Create ghost cells?"}
  physicals = {0, Choices{0, 1},
    Name "Parameters/3Create new physical groups?"}
  write = {1, Choices {0, 1},
    Name "Parameters/3Write file to disk?"}
  split = {0, Choices {0, 1},
    Name "Parameters/4Write one file per partition?"}
];
// Should we keep backward compatibility with pre-Gmsh 4, e.g. to save the mesh
// in MSH2 format?
Mesh.PartitionOldStyleMsh2 = 0;
If (partitioner == 0)
Chapter 2: Gmsh tutorial                                                       59
# The Python API allows to do much more than what can be done in .geo
# files. These additional features are introduced gradually in the extended
# tutorials, starting with ‘x1.py’.
# In this first extended tutorial, we start by using the API to access basic
# geometrical and mesh data.
import gmsh
import sys
if len(sys.argv) < 2:
    print("Usage: " + sys.argv[0] + " file")
    exit
gmsh.initialize()
# You can run this tutorial on any file that Gmsh can read, e.g. a mesh file in
# the MSH format: ‘python t1.py file.msh’
gmsh.open(sys.argv[1])
print(’Model ’ + gmsh.model.getCurrent() + ’ (’ +
      str(gmsh.model.getDimension()) + ’D)’)
# Get all the elementary entities in the model, as a vector of (dimension, tag)
# pairs:
entities = gmsh.model.getEntities()
for e in entities:
    # Dimension and tag of the entity:
    dim = e[0]
    tag = e[1]
      # Let’s print a summary of the information available on the entity and its
      # mesh.
    if len(name): name += ’ ’
    print("Entity " + name + str(e) + " of type " + type)
gmsh.finalize()
# -----------------------------------------------------------------------------
#
# Gmsh Python extended tutorial 2
#
# Mesh import, discrete entities, hybrid models, terrain meshing
#
# -----------------------------------------------------------------------------
import gmsh
import sys
import math
#    The API can be used to import a mesh without reading it from a file, by
#    creating nodes and elements on the fly and storing them in model
#    entities. These model entities can be existing CAD entities, or can be
#    discrete entities, entirely defined by the mesh.
#
#    Discrete entities can be reparametrized (see ‘t13.py’) so that they can be
#    remeshed later on; and they can also be combined with built-in CAD entities to
#    produce hybrid models.
#
#    We combine all these features in this tutorial to perform terrain meshing,
#    where the terrain is described by a discrete surface (that we then
#    reparametrize) combined with a CAD representation of the underground.
gmsh.initialize()
gmsh.model.add("x2")
# We will create the terrain surface mesh from N x N input data points:
N = 100
# The connectivities of the triangle elements (3 node tags per triangle) on the
# terrain surface:
tris = []
# The connectivities of the point elements on the 4 corners (1 node tag for each
# point element):
pnt = [tag(0, 0), tag(N, 0), tag(N, N), tag(0, N)]
# Add all the nodes on the surface (for simplicity... see below):
gmsh.model.mesh.addNodes(2, 1, nodes, coords)
# Add point elements on the 4 points, line elements on the 4 curves, and
# triangle elements on the surface:
for i in range(4):
    # Type 15 for point elements:
    gmsh.model.mesh.addElementsByType(i + 1, 15, [], [pnt[i]])
    # Type 1 for 2-node line elements:
64                                                                     Gmsh 4.11.1
# Reclassify the nodes on the curves and the points (since we put them all on
# the surface before with ‘addNodes’ for simplicity)
gmsh.model.mesh.reclassifyNodes()
# Create a geometry for the discrete curves and surfaces, so that we can remesh
# them later on:
gmsh.model.mesh.createGeometry()
#    Note that for more complicated meshes, e.g. for on input unstructured STL
#    mesh, we could use ‘classifySurfaces()’ to automatically create the discrete
#    entities and the topology; but we would then have to extract the boundaries
#    afterwards.
# Create other build-in CAD entities to form one volume below the terrain
# surface. Beware that only built-in CAD entities can be hybrid, i.e. have
# discrete entities on their boundary: OpenCASCADE does not support this
# feature.
p1 = gmsh.model.geo.addPoint(0, 0, -0.5)
p2 = gmsh.model.geo.addPoint(1, 0, -0.5)
p3 = gmsh.model.geo.addPoint(1, 1, -0.5)
p4 = gmsh.model.geo.addPoint(0, 1, -0.5)
c1 = gmsh.model.geo.addLine(p1, p2)
c2 = gmsh.model.geo.addLine(p2, p3)
c3 = gmsh.model.geo.addLine(p3, p4)
c4 = gmsh.model.geo.addLine(p4, p1)
c10 = gmsh.model.geo.addLine(p1, 1)
c11 = gmsh.model.geo.addLine(p2, 2)
c12 = gmsh.model.geo.addLine(p3, 3)
c13 = gmsh.model.geo.addLine(p4, 4)
ll1 = gmsh.model.geo.addCurveLoop([c1, c2, c3, c4])
s1 = gmsh.model.geo.addPlaneSurface([ll1])
ll3 = gmsh.model.geo.addCurveLoop([c1, c11, -1, -c10])
s3 = gmsh.model.geo.addPlaneSurface([ll3])
ll4 = gmsh.model.geo.addCurveLoop([c2, c12, -2, -c11])
s4 = gmsh.model.geo.addPlaneSurface([ll4])
ll5 = gmsh.model.geo.addCurveLoop([c3, c13, 3, -c12])
s5 = gmsh.model.geo.addPlaneSurface([ll5])
ll6 = gmsh.model.geo.addCurveLoop([c4, c10, 4, -c13])
s6 = gmsh.model.geo.addPlaneSurface([ll6])
sl1 = gmsh.model.geo.addSurfaceLoop([s1, s3, s4, s5, s6, 1])
v1 = gmsh.model.geo.addVolume([sl1])
gmsh.model.geo.synchronize()
if transfinite:
    NN = 30
    for c in gmsh.model.getEntities(1):
        gmsh.model.mesh.setTransfiniteCurve(c[1], NN)
    for s in gmsh.model.getEntities(2):
        gmsh.model.mesh.setTransfiniteSurface(s[1])
        gmsh.model.mesh.setRecombine(s[0], s[1])
        gmsh.model.mesh.setSmoothing(s[0], s[1], 100)
    gmsh.model.mesh.setTransfiniteVolume(v1)
elif transfiniteAuto:
    gmsh.option.setNumber(’Mesh.MeshSizeMin’, 0.5)
    gmsh.option.setNumber(’Mesh.MeshSizeMax’, 0.5)
    # setTransfiniteAutomatic() uses the sizing constraints to set the number
    # of points
    gmsh.model.mesh.setTransfiniteAutomatic()
else:
    gmsh.option.setNumber(’Mesh.MeshSizeMin’, 0.05)
    gmsh.option.setNumber(’Mesh.MeshSizeMax’, 0.05)
gmsh.model.mesh.generate(3)
gmsh.write(’x2.msh’)
gmsh.finalize()
# -----------------------------------------------------------------------------
#
# Gmsh Python extended tutorial 3
#
# Post-processing data import: list-based
#
# -----------------------------------------------------------------------------
import gmsh
import sys
66                                                                     Gmsh 4.11.1
gmsh.initialize(sys.argv)
#    List-based views are completely independent from any model and any mesh: they
#    are self-contained and simply contain lists of coordinates and values, element
#    by element, for 3 types of fields (scalar "S", vector "V" and tensor "T") and
#    several types of element shapes (point "P", line "L", triangle "T", quadrangle
#    "Q", tetrahedron "S", hexahedron "H", prism "I" and pyramid "Y"). (See ‘x4.py’
#    for a tutorial on model-based views.)
# List-based data is just added by concatenating the data for all the triangles:
gmsh.view.addListData(t1, "ST", 2, triangle1 + triangle2)
# Internally, post-processing views parsed by the .geo file parser create such
# list-based data (see e.g. ‘t7.py’, ‘t8.py’ and ‘t9.py’), independently of any
# mesh.
# Vector or tensor fields can be imported in the same way, the only difference
# beeing the type (starting with "V" for vector fields and "T" for tensor
# fields) and the number of components. For example a vector field on a line
# element can be added as follows:
line = [
    0., 1.,   # x coordinate of the 2 line nodes
    1.2, 1.2, # y coordinate of the 2 line nodes
    0., 0.    # z coordinate of the 2 line nodes
]
for step in range(0, 10):
Chapter 2: Gmsh tutorial                                                        67
    # 3 vector components for each node (2 nodes here), for each step
    line.extend([10. + step, 0., 0.,
                 10. + step, 0., 0.])
gmsh.view.addListData(t1, "VL", 1, line)
# List-based data can also hold 2D (in window coordinates) and 3D (in model
# coordinates) strings (see ‘t4.py’). Here we add a 2D string located on the
# bottom-left of the window (with a 20 pixels offset), as well as a 3D string
# located at model coordinates (0.5, 0.5. 0):
gmsh.view.addListDataString(t1, [20., -20.], ["Created with Gmsh"])
gmsh.view.addListDataString(t1, [0.5, 1.5, 0.],
                            ["A multi-step list-based view"],
                            ["Align", "Center", "Font", "Helvetica"])
# The various attributes of the view can be queried and changed using the option
# interface:
gmsh.view.option.setNumber(t1, "TimeStep", 5)
gmsh.view.option.setNumber(t1, "IntervalsType", 3)
ns = gmsh.view.option.getNumber(t1, "NbTimeStep")
print("View " + str(t1) + " has " + str(ns) + " time steps")
# Views can be queried and modified in various ways using plugins (see ‘t9.py’),
# or probed directly using ‘gmsh.view.probe()’ - here at point (0.9, 0.1, 0):
print("Value at (0.9, 0.1, 0)", gmsh.view.probe(t1, 0.9, 0.1, 0))
# Add nine values that will be interpolated by second order basis functions
quad.extend([1., 1., 1., 1., 3., 3., 3., 3., -3.])
# Set the two interpolation matrices c[i][j] and e[i][j] defining the d = 9
# basis functions: f[i](u, v, w) = sum_(j = 0, ..., d - 1) c[i][j] u^e[j][0]
# v^e[j][1] w^e[j][2], i = 0, ..., d-1, with u, v, w the coordinates in the
# reference element:
gmsh.view.setInterpolationMatrices(t2, "Quadrangle", 9,
                                   [0, 0, 0.25, 0, 0, -0.25, -0.25, 0, 0.25,
                                    0, 0, 0.25, 0, 0, -0.25, 0.25, 0, -0.25,
                                    0, 0, 0.25, 0, 0, 0.25, 0.25, 0, 0.25,
                                    0, 0, 0.25, 0, 0, 0.25, -0.25, 0, -0.25,
68                                                                            Gmsh 4.11.1
gmsh.finalize()
# -----------------------------------------------------------------------------
#
# Gmsh Python extended tutorial 4
Chapter 2: Gmsh tutorial                                                       69
#
# Post-processing data import: model-based
#
# -----------------------------------------------------------------------------
import gmsh
import sys
gmsh.initialize(sys.argv)
#   Contrary to list-based view (see ‘x3.py’), model-based views are based on one
#   or more meshes. Compared to list-based views, they are thus linked to one
#   model (per step). Post-processing data stored in MSH files create such
#   model-based views.
# Besided node-based data, which result in continuous fields, one can also add
# general discontinous fields defined at the nodes of each element, using
# "ElementNodeData":
t2 = gmsh.view.add("Discontinuous")
for step in range(0, 10):
    gmsh.view.addHomogeneousModelData(
        t2, step, "simple model", "ElementNodeData",
        [1, 2], # tags of elements
        [10., 10., 12. + step, 14., 15., 13. + step]) # data per element nodes
#   Constant per element datasets can also be created using "ElementData". Note
#   that a more general function ‘addModelData’ to add data for hybrid meshes
#   (when data is not homogeneous, i.e. when the number of nodes changes between
#   elements) is also available.
gmsh.model.occ.addBox(0, 0, 0, 1, 1, 1)
gmsh.model.occ.synchronize()
gmsh.model.mesh.generate(3)
# We can add other steps to view "t" based on this new mesh:
nodes, coord, _ = gmsh.model.mesh.getNodes()
for step in range(11, 20):
    gmsh.view.addHomogeneousModelData(
        t1, step, "another model", "NodeData", nodes,
        [step * coord[i] for i in range(0, len(coord), 3)])
gmsh.finalize()
# -----------------------------------------------------------------------------
#
# Gmsh Python extended tutorial 5
Chapter 2: Gmsh tutorial                                                       71
#
# Additional geometrical data: parametrizations, normals, curvatures
#
# -----------------------------------------------------------------------------
import gmsh
import sys
import math
gmsh.initialize(sys.argv)
# The API provides access to geometrical data in a CAD kernel agnostic manner.
# Let’s create a simple CAD model by fusing a sphere and a cube, then mesh the
# surfaces:
gmsh.model.add("x5")
s = gmsh.model.occ.addSphere(0, 0, 0, 1)
b = gmsh.model.occ.addBox(0.5, 0, 0, 1.3, 2, 3)
gmsh.model.occ.fuse([(3, s)], [(3, b)])
gmsh.model.occ.synchronize()
gmsh.model.mesh.generate(2)
# We can for example retrieve the exact normals and the curvature at all the
# mesh nodes (i.e. not normals and curvatures computed from the mesh, but
# directly evaluated on the geometry), by querying the CAD kernels at the
# corresponding parametric coordinates.
normals = []
curvatures = []
    # Get the mesh nodes on the surface, including those on the boundary
    # (contrary to internal nodes, which store their parametric coordinates,
    # boundary nodes will be reparametrized on the surface in order to compute
    # their parametric coordinates, the result being different when
    # reparametrized on another adjacent surface)
    tags, coord, param = gmsh.model.mesh.getNodes(2, s, True)
    # Get the surface normals on all the points on the surface corresponding to
    # the parametric coordinates of the nodes
    norm = gmsh.model.getNormal(s, param)
    # Store the normals and the curvatures so that we can display them as
    # list-based post-processing views
    for i in range(0, len(coord), 3):
        normals.append(coord[i])
72                                                                  Gmsh 4.11.1
         normals.append(coord[i + 1])
         normals.append(coord[i + 2])
         normals.append(norm[i])
         normals.append(norm[i + 1])
         normals.append(norm[i + 2])
         curvatures.append(coord[i])
         curvatures.append(coord[i + 1])
         curvatures.append(coord[i + 2])
         curvatures.append(curv[i // 3])
# Create a list-based vector view on points to display the normals, and a scalar
# view on points to display the curvatures
vn = gmsh.view.add("normals")
gmsh.view.addListData(vn, "VP", len(normals) // 6, normals)
gmsh.view.option.setNumber(vn, ’ShowScale’, 0)
gmsh.view.option.setNumber(vn, ’ArrowSizeMax’, 30)
gmsh.view.option.setNumber(vn, ’ColormapNumber’, 19)
vc = gmsh.view.add("curvatures")
gmsh.view.addListData(vc, "SP", len(curvatures) // 4, curvatures)
gmsh.view.option.setNumber(vc, ’ShowScale’, 0)
# We can also reparametrize curve 5 on surface 1, and evaluate the points in the
# parametric plane of the surface:
uv = gmsh.model.reparametrizeOnSurface(1, 5, t, 1)
xyz2 = gmsh.model.getValue(2, 1, uv)
gmsh.finalize()
#
# Additional mesh data: integration points, Jacobians and basis functions
#
# -----------------------------------------------------------------------------
import gmsh
import sys
gmsh.initialize(sys.argv)
gmsh.model.add("x6")
# The API provides access to all the elementary building blocks required to
# implement finite-element-type numerical methods. Let’s create a simple 2D
# model and mesh it:
gmsh.model.occ.addRectangle(0, 0, 0, 1, 0.1)
gmsh.model.occ.synchronize()
gmsh.model.mesh.setTransfiniteAutomatic()
gmsh.model.mesh.generate(2)
for t in elementTypes:
    # Retrieve properties for the given element type
    elementName, dim, order, numNodes, numPrimNodes, localNodeCoord =\
    gmsh.model.mesh.getElementProperties(t)
    print("\n** " + elementName + " **\n")
gmsh.finalize()
# -----------------------------------------------------------------------------
#
# Gmsh Python extended tutorial 7
#
# Additional mesh data: internal edges and faces
#
# -----------------------------------------------------------------------------
import sys
import gmsh
gmsh.initialize(sys.argv)
gmsh.model.add("x7")
# Meshes are fully described in Gmsh by nodes and elements, both associated to
# model entities. The API can be used to generate and handle other mesh
# entities, i.e. mesh edges and faces, which are not stored by default.
gmsh.option.setNumber("Mesh.MeshSizeMin", 2.)
gmsh.model.mesh.generate(3)
# Like elements, mesh edges and faces are described by (an ordered list of)
# their nodes. Let us retrieve the edges and the (triangular) faces of all the
# first order tetrahedra in the mesh:
elementType = gmsh.model.mesh.getElementType("tetrahedron", 1)
edgeNodes = gmsh.model.mesh.getElementEdgeNodes(elementType)
faceNodes = gmsh.model.mesh.getElementFaceNodes(elementType, 3)
# Edges and faces are returned for each element as a list of nodes corresponding
# to the canonical orientation of the edges and faces for a given element type.
# Gmsh can also identify unique edges and faces (a single edge or face whatever
# the ordering of their nodes) and assign them a unique tag. This identification
# can be done internally by Gmsh (e.g. when generating keys for basis
# functions), or requested explicitly as follows:
gmsh.model.mesh.createEdges()
gmsh.model.mesh.createFaces()
# Edge and face tags can then be retrieved by providing their nodes:
edgeTags, edgeOrientations = gmsh.model.mesh.getEdges(edgeNodes)
faceTags, faceOrientations = gmsh.model.mesh.getFaces(3, faceNodes)
# Since element edge and face nodes are returned in the same order as the
# elements, one can easily keep track of which element(s) each edge or face is
# connected to:
elementTags, elementNodeTags = gmsh.model.mesh.getElementsByType(elementType)
edges2Elements = {}
faces2Elements = {}
for i in range(len(edgeTags)): # 6 edges per tetrahedron
    if not edgeTags[i] in edges2Elements:
        edges2Elements[edgeTags[i]] = [elementTags[i // 6]]
    else:
        edges2Elements[edgeTags[i]].append(elementTags[i // 6])
for i in range(len(faceTags)): # 4 faces per tetrahedron
    if not faceTags[i] in faces2Elements:
        faces2Elements[faceTags[i]] = [elementTags[i // 4]]
    else:
        faces2Elements[faceTags[i]].append(elementTags[i // 4])
#   New unique lower dimensional elements can also be easily created given the
#   edge or face nodes. This is especially useful for numerical methods that
#   require integrating or interpolating on internal edges or faces (like
#   e.g. Discontinuous Galerkin techniques), since creating elements for the
#   internal entities will make this additional mesh data readily available (see
#   ‘x6.py’). For example, we can create a new discrete surface...
s   = gmsh.model.addDiscreteEntity(2)
# ... and fill it with unique triangles corresponding to the faces of the
# tetrahedra:
maxElementTag = gmsh.model.mesh.getMaxElementTag()
76                                                                  Gmsh 4.11.1
uniqueFaceTags = set()
tagsForTriangles = []
faceNodesForTriangles = []
for i in range(len(faceTags)):
    if faceTags[i] not in uniqueFaceTags:
        uniqueFaceTags.add(faceTags[i])
        tagsForTriangles.append(faceTags[i] + maxElementTag)
        faceNodesForTriangles.append(faceNodes[3 * i])
        faceNodesForTriangles.append(faceNodes[3 * i + 1])
        faceNodesForTriangles.append(faceNodes[3 * i + 2])
elementType2D = gmsh.model.mesh.getElementType("triangle", 1)
gmsh.model.mesh.addElementsByType(s, elementType2D, tagsForTriangles,
                                  faceNodesForTriangles)
# Since the tags for the triangles have been created based on the face tags,
# the information about neighboring elements can also be readily created,
# useful e.g. in Finite Volume or Discontinuous Galerkin techniques:
for t in tagsForTriangles:
    print("triangle " + str(int(t)) + " is connected to tetrahedra " +
          str(faces2Elements[t - maxElementTag]))
# If all you need is the list of all edges or faces in terms of their nodes, you
# can also directly call:
edgeTags, edgeNodes = gmsh.model.mesh.getAllEdges()
faceTags, faceNodes = gmsh.model.mesh.getAllFaces(3)
To create a new geometrical model, use the ‘File->New’ menu to create a new model file, and
choose for example ‘mymodel.geo’ as file name. Then in the tree menu, successively open the
‘Geometry’, ‘Elementary entities’ and ‘Add’ submenus, and click for example on ‘Rectangle’. A
context window with parameters will pop up: you can enter some parameters in this window
(e.g. the width and height of the rectangle) and move the mouse to place it on the canvas. If you
don’t want to place the rectangle with the mouse, select ‘X’, ‘Y’ and ‘Z freeze’ in the window
and enter the coordinates manually in the context window. Once you are done, either press e
(see the status message on the top of the graphic window) or click on the ‘Add’ button in the
context window.
78                                                                                       Gmsh 4.11.1
There is no need to save your geometrical model: when the rectangle was added, scripting
commands were automatically appended to your model file ‘mymodel.geo’:
       //+
       SetFactory("OpenCASCADE");
       Rectangle(1) = {0, 0, 0, 1, 0.5, 0};
You can edit this script with any text editor; clicking on ‘Edit script’ in the tree menu will
launch the default text editor specified by the General.Editor option (see Section 7.1 [General
options], page 219). If you edit the script, you should click on ‘Reload script’ in the tree menu
to reload the modifications in the GUI. The //+ line in the script is a comment that is used as
a placemark between commands added by the GUI; see Chapter 5 [Gmsh scripting language],
page 89 for the scripting language reference.
Combining GUI actions and script file editing is a classical way of working with the Gmsh app.
For example, it is often faster to define variables and points directly in the script file, and then
use the GUI to define the curves, the surfaces and the volumes interactively.
To load an existing model instead of creating a model from scratch, use the ‘File->Open’ menu.
For example, to open the first tutorial (see Chapter 2 [Gmsh tutorial], page 15), choose t1.geo.
On the terminal, you can also specify the file name directly on the command line, i.e.:
       > gmsh t1.geo
To generate a mesh, open ‘Mesh’ in the tree menu and choose the desired dimension: ‘1D’
will mesh all the curves; ‘2D’ will mesh all the surfaces—as well as all the curves if ‘1D’ was
not called before; ‘3D’ will mesh all the volumes—and all the surfaces if ‘2D’ was not called
before. To save the resulting mesh in the current mesh format click on ‘Save’ in the tree menu,
or select the appropriate format and file name with the ‘File->Export’ menu. The default
mesh file name is based on the name of the current active model, with an appended extension
depending on the mesh format. Note that most interactive commands have keyboard shortcuts:
see Section 3.2 [Keyboard shortcuts], page 80, or select ‘Help->Keyboard and Mouse Usage’ in
the menu. For example, to quickly generate the 2D mesh and save a mesh, you can first press
2, then Ctrl+Shift+s.
A double-click in the graphic window will pop up a quick shortcut menu, which can be used
e.g. to quickly toggle the visibility of mesh entities (like surface faces), reset the viewport, select
the rotation center, display axes, or access the full module options (from the ‘Tools->Options’
menu). The shortcut buttons on the bottom left of the status bar can be used to quickly adjust
the viewport: ‘X’, ‘Y’, ‘Z’ set viewports with the corresponding axis perpendicular to graphic
plane; the rotation button rotates the view by 90 degrees; and ‘1:1’ resets the scale.
Several files can be loaded simultaneously. When specified on the command line, the first one
defines the active model (in the same way as using the ‘File->Open’ menu) and the others are
Chapter 3: Gmsh graphical user interface                                                          79
‘merged’ into this model (in the same way as using the the ‘File->Merge’ menu). For example,
to merge the post-processing views contained in the files view1.pos and view5.msh together with
the geometry of the first tutorial Section 2.1 [t1], page 15, you can type the following command:
       > gmsh t1.geo view1.pos view5.msh
When one or more more post-processing views are loaded, a ‘Post-Processing’ entry in the
tree menu appears. With the previous command, three views will appear in the tree menu
under ‘Post-processing’, respectively labeled ‘A scalar map’, ‘Nodal scalar map’ and ‘Element 1
vector’. In this example the views contain several time steps: you can loop through them with
the shortcuts icons on the left of the status bar. A mouse click on the view name will toggle the
visibility of the selected view, while a click on the arrow button on the right will provide access
to the view’s options.
Note that all the options specified interactively can also be directly specified in the script files.
You can save the current options of the current active model with the ‘File->Save Model Options’.
This will create a new option file with the same filename as the active model, but with an extra
‘.opt’ extension added. The next time you open this model, the associated options will be
automatically loaded, too. To save the current options as your default preferences for all future
Gmsh sessions, use the ‘File->Save Options As Default’ menu instead. You can also save the
current options in an arbitrary file by choosing the ‘Gmsh options’ format in ‘File->Export’.
For more information about available options (and how to reset them to their default values),
see Chapter 7 [Gmsh options], page 219. A full list of options with their current values is also
available using the ‘Help->Current Options’ menu.
Finally, note that the GUI can also be run (and modified) using the API: see Section 6.14
[Namespace gmsh/fltk], page 209 for details.
The two next sections describe the mouse actions in the GUI, as well as all the predefined
keyboard shortcuts. Screencasts explaining how to use the Gmsh GUI are available online at
the following address: https://gmsh.info/screencasts/.
-part_split
          Save mesh partitions in separate files (Mesh.PartitionSplitMeshFiles)
-part_[no_]topo
          Create the partition topology (Mesh.PartitionCreateTopology)
-part_[no_]ghosts
          Create ghost cells (Mesh.PartitionCreateGhostCells)
-part_[no_]physicals
          Create physical groups for partitions (Mesh.PartitionCreatePhysicals)
-part_topo_pro
          Save the partition topology .pro file (Mesh.PartitionTopologyFile)
-preserve_numbering_msh2
          Preserve element numbering in MSH2 format (Mesh.PreserveNumberingMsh2)
-save_all
             Save all elements (Mesh.SaveAll)
-save_parametric
          Save nodes with their parametric coordinates (Mesh.SaveParametric)
-save_topology
          Save model topology (Mesh.SaveTopology)
-algo string
          Select mesh algorithm: auto, meshadapt, del2d, front2d, delquad, quadqs, initial2d,
          del3d, front3d, mmg3d, hxt, initial3d (Mesh.Algorithm and Mesh.Algorithm3D)
-smooth int
          Set number of mesh smoothing steps (Mesh.Smoothing)
-order int
             Set mesh order (Mesh.ElementOrder)
-optimize[_netgen]
          Optimize quality of tetrahedral elements (Mesh.Optimize[Netgen])
-optimize_threshold
          Optimize tetrahedral elements that have a quality less than a threshold
          (Mesh.OptimizeThreshold)
-optimize_ho
          Optimize high order meshes (Mesh.HighOrderOptimize)
-ho_[min,max,nlayers]
          High-order optimization parameters           (Mesh.HighOrderThreshold[Min,Max],
          Mesh.HighOrderNumLayers)
-clscale value
          Set mesh element size factor (Mesh.MeshSizeFactor)
-clmin value
          Set minimum mesh element size (Mesh.MeshSizeMin)
-clmax value
          Set maximum mesh element size (Mesh.MeshSizeMax)
-clextend value
          Extend mesh element sizes from boundaries (Mesh.MeshSizeExtendFromBoundary)
Chapter 4: Gmsh command-line interface                                                         85
-clcurv value
          Compute mesh element size from curvature, with value the target number of ele-
          ments per 2*pi radians (Mesh.MeshSizeFromCurvature)
-aniso_max value
          Set maximum anisotropy for bamg (Mesh.AnisoMax)
-smooth_ratio value
          Set smoothing ration between mesh sizes at nodes of a same edge for bamg
          (Mesh.SmoothRatio)
-epslc1d value
          Set accuracy of evaluation            of   mesh     size    field   for     1D    mesh
          (Mesh.LcIntegrationPrecision)
-swapangle value
          Set the threshold angle (in degrees) between two adjacent faces below which a swap
          is allowed (Mesh.AllowSwapAngle)
-rand value
          Set random perturbation factor (Mesh.RandomFactor)
-bgm file Load background mesh from file
-check      Perform various consistency checks on mesh
-ignore_periocity
          Ignore periodic boundaries (Mesh.IgnorePeriodicity)
Post-processing:
-link int Select link mode between views (PostProcessing.Link)
-combine    Combine views having identical names into multi-time-step views
Solver:
-listen string
          Always listen to incoming connection requests (Solver.AlwaysListen) on the given
          socket (uses Solver.SocketName if not specified)
-minterpreter string
          Name of Octave interpreter (Solver.OctaveInterpreter)
-pyinterpreter string
          Name of Python interpreter (Solver.OctaveInterpreter)
-run        Run ONELAB solver(s)
Display:
-n          Hide all meshes and post-processing          views   on    startup      (View.Visible,
            Mesh.[Points,Lines,SurfaceEdges,...])
-nodb       Disable double buffering (General.DoubleBuffer)
-numsubedges
          Set num of subdivisions for high order element display (Mesh.NumSubEdges)
-fontsize int
          Specify the font size for the GUI (General.FontSize)
-theme string
          Specify FLTK GUI theme (General.FltkTheme)
86                                                                                Gmsh 4.11.1
-display string
          Specify display (General.Display)
-camera     Use camera mode view (General.CameraMode)
-stereo     OpenGL quad-buffered stereo rendering (General.Stereo)
-gamepad    Use gamepad controller if available
Other:
-, -parse_and_exit
          Parse input files, then exit
-save       Save output file, then exit
-o file     Specify output file name
-new        Create new model before merge next file
-merge      Merge next files
-open       Open next files
-log filename
          Log all messages to filename
-a, -g, -m, -s, -p
           Start in automatic, geometry,          mesh,   solver   or   post-processing   mode
           (General.InitialModule)
-pid        Print process id on stdout
-watch pattern
          Pattern of files to merge as they become available (General.WatchFilePattern)
-bg file    Load background (image or PDF) file (General.BackgroundImageFileName)
-v int      Set verbosity level (General.Verbosity)
-string "string"
          Parse command string at startup
-setnumber name value
          Set constant, ONELAB or option number name=value
-setstring name value
          Set constant, ONELAB or option string name=value
-nopopup    Don’t popup dialog windows in scripts (General.NoPopup)
-noenv      Don’t modify the environment at startup
-nolocale
            Don’t modify the locale at startup
-option file
          Parse option file at startup
-convert files
          Convert files into latest binary formats, then exit
-nt int     Set number of threads (General.NumThreads)
-cpu        Report CPU times for all operations
-version    Show version number
Chapter 4: Gmsh command-line interface         87
       expression :
         real |
         string |
         string ~ { expression }
         string [ expression ] |
         # string [ ] |
         ( expression ) |
         operator-unary-left expression |
         expression operator-unary-right |
         expression operator-binary expression |
         expression operator-ternary-left expression
            operator-ternary-right expression |
         built-in-function |
         number-option |
         Find(expression-list-item, expression-list-item ) |
         StrFind(string-expression, string-expression ) |
         StrCmp(string-expression, string-expression ) |
         StrLen(string-expression ) |
         TextAttributes(string-expression <,string-expression ...>) |
         Exists(string ) | Exists(string ~{ expression }) |
         FileExists(string-expression ) |
         StringToName(string-expression ) | S2N(string-expression ) |
         GetNumber(string-expression <,expression >) |
         GetValue("string ", expression ) |
         DefineNumber(expression, onelab-options )
Such expressions are used in most of Gmsh’s scripting commands. When ~{expression } is
appended to a string string, the result is a new string formed by the concatenation of string, _
(an underscore) and the value of the expression. This is most useful in loops (see Section 5.1.8
[Loops and conditionals], page 96), where it permits to define unique strings automatically. For
example,
       For i In {1:3}
         x~{i} = i;
       EndFor
is the same as
       x_1 = 1;
       x_2 = 2;
       x_3 = 3;
The brackets [] permit to extract one item from a list (parentheses can also be used instead of
brackets). The # permits to get the size of a list. The operators operator-unary-left, operator-
unary-right, operator-binary, operator-ternary-left and operator-ternary-right are defined in
Section 5.1.5 [Operators], page 93. For the definition of built-in-functions, see Section 5.1.6
[Built-in functions], page 95. The various number-options are listed in Chapter 7 [Gmsh op-
tions], page 219. Find searches for occurrences of the first expression in the second (both of
which can be lists). StrFind searches the first string-expression for any occurrence of the second
string-expression. StrCmp compares the two strings (returns an integer greater than, equal to, or
less than 0, according as the first string is greater than, equal to, or less than the second string).
StrLen returns the length of the string. TextAttributes creates attributes for text strings.
Exists checks if a variable with the given name exists (i.e., has been defined previously), and
FileExists checks if the file with the given name exists. StringToName creates a name from the
provided string. GetNumber allows to get the value of a ONELAB variable (the optional second
argument is the default value returned if the variable does not exist). GetValue allows to ask
Chapter 5: Gmsh scripting language                                                             91
the user for a value interactively (the second argument is the value returned in non-interactive
mode). For example, inserting GetValue("Value of parameter alpha?", 5.76) in an input
file will query the user for the value of a certain parameter alpha, assuming the default value
is 5.76. If the option General.NoPopup is set (see Section 7.1 [General options], page 219), no
question is asked and the default value is automatically used.
DefineNumber allows to define a ONELAB variable in-line. The expression given as the first
argument is the default value; this is followed by the various ONELAB options. See the ONELAB
tutorial wiki for more information.
List of expressions are also widely used, and are defined as:
       expression-list :
          expression-list-item <, expression-list-item > ...
with
       expression-list-item :
          expression |
          expression : expression |
          expression : expression : expression |
          string [ ] | string ( ) |
          List [ string ] |
          List [ expression-list-item ] |
          List [ { expression-list } ] |
          Unique [ expression-list-item ] |
          Abs [ expression-list-item ] |
          ListFromFile [ expression-char ] |
          LinSpace[ expression, expression, expression ] |
          LogSpace[ expression, expression, expression ] |
          string [ { expression-list } ] |
          Point { expression } |
          transform |
          extrude |
          boolean |
          Point|Curve|Surface|Volume In BoundingBox { expression-list } |
          BoundingBox Point|Curve|Surface|Volume { expression-list } |
          Mass Curve|Surface|Volume { expression } |
          CenterOfMass Curve|Surface|Volume { expression } |
          MatrixOfInertia Curve|Surface|Volume { expression } |
          Point { expression } |
          Physical Point|Curve|Surface|Volume { expression-list } |
          <Physical> Point|Curve|Surface|Volume { : } |
The second case in this last definition permits to create a list containing the range of numbers
comprised between two expressions, with a unit incrementation step. The third case also per-
mits to create a list containing the range of numbers comprised between two expressions, but
with a positive or negative incrementation step equal to the third expression. The fourth, fifth
and sixth cases permit to reference an expression list (parentheses can also be used instead of
brackets). Unique sorts the entries in the list and removes all duplicates. Abs takes the absolute
value of all entries in the list. ListFromFile reads a list of numbers from a file. LinSpace
and LogSpace construct lists using linear or logarithmic spacing. The next two cases permit to
reference an expression sublist (whose elements are those corresponding to the indices provided
by the expression-list). The next cases permit to retrieve the indices of entities created through
geometrical transformations, extrusions and boolean operations (see Section 5.2.7 [Transforma-
tions], page 108, Section 5.2.5 [Extrusions], page 106 and Section 5.2.6 [Boolean operations],
page 107).
92                                                                                    Gmsh 4.11.1
The next two cases allow to retrieve entities in a given bounding box, or get the bounding box
of a given entity, with the bounding box specified as (X min, Y min, Z min, X max, Y max,
Z max). Beware that the order of coordinates is different than in the BoundingBox command
for the scene: see Section 5.1.9 [Other general commands], page 97. The last cases permit to
retrieve the mass, the center of mass or the matrix of inertia of an entity, the coordinates of a
given geometry point (see Section 5.2.1 [Points], page 102), the elementary entities making up
physical groups, and the tags of all (physical or elementary) points, curves, surfaces or volumes
in the model. These operations all trigger a synchronization of the CAD model with the internal
Gmsh model.
To see the practical use of such expressions, have a look at the first couple of examples in
Chapter 2 [Gmsh tutorial], page 15. Note that, in order to lighten the syntax, you can omit
the braces {} enclosing an expression-list if this expression-list only contains a single item. Also
note that a braced expression-list can be preceded by a minus sign in order to change the sign
of all the expression-list-items.
For some commands it makes sense to specify all the possible expressions in a list. This is
achieved with expression-list-or-all, defined as:
      expression-list-or-all :
        expression-list | :
The meaning of “all” (:) depends on context. For example, Curve { : } will get the ids of all
the existing curves in the model, while Surface { : } will get the ids of all existing surfaces.
CurrentDirectory (or CurrentDir) and CurrentFileName return the directory and file name
of the script being parsed. StrPrefix and StrRelative take the prefix (e.g. to remove the ex-
tension) or the relative path of a given file name. StrCat and Str concatenate string expressions
(Str adds a newline character after each string except the last). StrChoice returns the first
or second string-expression depending on the value of expression. StrSub returns the portion
of the string that starts at the character position given by the first expression and spans the
number of characters given by the second expression or until the end of the string (whichever
comes first; or always if the second expression is not provided). UpperCase converts the string-
expression to upper case. AbsolutePath returns the absolute path of a file. DirName returns the
directory of a file. Sprintf is equivalent to the sprintf C function (where string-expression is
a format string that can contain floating point formatting characters: %e, %g, etc.) The various
string-options are listed in Chapter 7 [Gmsh options], page 219. GetEnvThe gets the value of an
environment variable from the operating system. GetString allows to get a ONELAB string
value (the second optional argument is the default value returned if the variable does not ex-
ist). GetStringValue asks the user for a value interactively (the second argument is the value
used in non-interactive mode). StrReplace’s arguments are: input string, old substring, new
substring (brackets can be used instead of parentheses in Str and Sprintf). Physical Point,
etc., or Point, etc., retrieve the name of the physical or elementary entity, if any. NameToString
converts a variable name into a string.
DefineString allows to define a ONELAB variable in-line. The string-expression given as the
first argument is the default value; this is followed by the various ONELAB options. See the
ONELAB tutorial wiki for more information.
String expressions are mostly used to specify non-numeric options and input/output file names.
See Section 2.8 [t8], page 33, for an interesting usage of string-expressions in an animation script.
List of string expressions are defined as:
      string-expression-list :
        string-expression <,...>
5.1.5 Operators
Gmsh’s operators are similar to the corresponding operators in C and C++. Here is the list of
available unary, binary and ternary operators.
operator-unary-left:
-           Unary minus.
    94                                                                                             Gmsh 4.11.1
    !             Logical not.
    operator-unary-right:
    ++            Post-incrementation.
    --            Post-decrementation.
    operator-binary:
    ^             Exponentiation.
    *             Multiplication.
    /             Division.
    %             Modulo.
    +             Addition.
    -             Subtraction.
    ==            Equality.
    !=            Inequality.
    >             Greater.
    >=            Greater or equality.
    <             Less.
    <=            Less or equality.
    &&            Logical ‘and’.
    ||            Logical ‘or’. (Warning: the logical ‘or’ always implies the evaluation of both argu-
                  ments. That is, unlike in C or C++, the second operand of || is evaluated even if
                  the first one is true).
    operator-ternary-left:
    ?
    operator-ternary-right:
    :             The only ternary operator, formed by operator-ternary-left and operator-ternary-
                  right, returns the value of its second argument if the first argument is non-zero;
                  otherwise it returns the value of its third argument.
    The evaluation priorities are summarized below1 (from stronger to weaker, i.e., * has a highest
    evaluation priority than +). Parentheses () may be used anywhere to change the order of
    evaluation:
     1. (), [], ., #
     2. ^
     3. !, ++, --, - (unary)
     4. *, /, %
     5. +, -
     6. <, >, <=, >=
     7. ==, !=
     8. &&
     9. ||
    10. ?:
    11. =, +=, -=, *=, /=
1
    The affectation operators are introduced in Section 5.1.9 [Other general commands], page 97.
Chapter 5: Gmsh scripting language                                                                95
Round ( expression )
           Rounds expression to the nearest integer.
Sqrt ( expression )
           Square root of expression (expression >= 0).
Sin ( expression )
           Sine of expression.
Sinh ( expression )
           Hyperbolic sine of expression.
Tan ( expression )
           Tangent of expression.
Tanh ( expression )
           Hyperbolic tangent of expression.
            each iteration, the value of the iterate is affected to an expression named string, and
            the commands comprised between ‘For string In { expression : expression :
            expression }’ and the matching EndFor are executed.
EndFor      End a matching For command.
If ( expression )
           The body enclosed between ‘If ( expression )’ and the matching ElseIf, Else
           or EndIf, is evaluated if expression is non-zero.
ElseIf ( expression )
           The body enclosed between ‘ElseIf ( expression )’ and the next matching
           ElseIf, Else or EndIf, is evaluated if expression is non-zero and none of the ex-
           pression of the previous matching codes If and ElseIf were non-zero.
Else        The body enclosed between Else and the matching EndIf is evaluated if none of
            the expression of the previous matching codes If and ElseIf were non-zero.
EndIf       End a matching If command.
           contain formatting characters (%f, %e, etc.). Note that all expressions are evaluated
           as floating point values in Gmsh (see Section 5.1.2 [Floating point expressions],
           page 89), so that only valid floating point formatting characters make sense in
           string-expression. See Section 2.5 [t5], page 26, for an example of the use of Printf.
Printf ( string-expression , expression-list ) > string-expression ;
           Same as Printf above, but output the expression in a file.
Printf ( string-expression , expression-list ) >> string-expression ;
           Same as Printf above, but appends the expression at the end of the file.
Warning|Error ( string-expression <, expression-list > );
          Same as Printf, but raises a warning or an error.
Merge string-expression ;
          Merge a file named string-expression. This command is equivalent to the ‘File-
          >Merge’ menu in the GUI. If the path in string-expression is not absolute, string-
          expression is appended to the path of the current file. This operation triggers a
          synchronization of the CAD model with the internal Gmsh model.
ShapeFromFile( string-expression );
          Merge a BREP, STEP or IGES file and returns the tags of the highest-dimensional
          entities. Only available with the OpenCASCADE geometry kernel.
Draw;      Redraw the scene.
SplitCurrentWindowHorizontal expression ;
          Split the current window horizontally, with the ratio given by expression.
SplitCurrentWindowVertical expression ;
          Split the current window vertically, with the ratio given by expression.
SetCurrentWindow expression ;
          Set the current window by speficying its index (starting at 0) in the list of all
          windows. When new windows are created by splits, new windows are appended at
          the end of the list.
UnsplitWindow;
          Restore a single window.
SetChanged;
          Force the mesh and post-processing vertex arrays to be regenerated. Useful e.g. for
          creating animations with changing clipping planes, etc.
BoundingBox;
          Recompute the bounding box of the scene (which is normally computed only after
          new model entities are added or after files are included or merged). The bounding
          box is computed as follows:
             1. If there is a mesh (i.e., at least one mesh node), the bounding box is taken as
                the box enclosing all the mesh nodes;
             2. If there is no mesh but there is a geometry (i.e., at least one geometrical point),
                the bounding box is taken as the box enclosing all the geometrical points;
             3. If there is no mesh and no geometry, but there are some post-processing views,
                the bounding box is taken as the box enclosing all the primitives in the views.
           This operation triggers a synchronization of the CAD model with the internal Gmsh
           model.
Chapter 5: Gmsh scripting language                                                        101
5.2.1 Points
Point ( expression ) = { expression, expression, expression <, expression > };
           Create a point. The expression inside the parentheses is the point’s tag; the three
           first expressions inside the braces on the right hand side give the three X, Y and Z
           coordinates of the point in the three-dimensional Euclidean space; the optional last
           expression sets the prescribed mesh element size at that point. See Section 1.2.2
           [Specifying mesh element sizes], page 10, for more information about how this value
           is used in the meshing process.
Physical Point ( expression | string-expression <, expression > ) <+|->= {
expression-list };
          Create a physical point. The expression inside the parentheses is the physical point’s
          tag; the expression-list on the right hand side should contain the tags of all the
          elementary points that need to be grouped inside the physical point. If a string-
          expression is given instead instead of expression inside the parentheses, a string label
          is associated with the physical tag, which can be either provided explicitly (after
          the comma) or not (in which case a unique tag is automatically created).
5.2.2 Curves
Line ( expression ) = { expression, expression };
           Create a straight line segment. The expression inside the parentheses is the line
           segment’s tag; the two expressions inside the braces on the right hand side give tags
           of the start and end points of the segment.
Bezier ( expression ) = { expression-list };
           Create a Bezier curve. The expression-list contains the tags of the control points.
BSpline ( expression ) = { expression-list };
           Create a cubic BSpline. The expression-list contains the tags of the control points.
           Creates a periodic curve if the first and last points are identical.
Spline ( expression ) = { expression-list };
           Create a spline going through the points in expression-list. With the built-in geome-
           try kernel this constructs a Catmull-Rom spline. With the OpenCASCADE kernel,
Chapter 5: Gmsh scripting language                                                             103
            this constructs a C2 BSpline. Creates a periodic curve if the first and last points
            are identical.
Circle ( expression ) = { expression, expression, expression <, ...> };
           Create a circle arc. If three expressions are provided on the right-hand-side they
           define the start point, the center and the end point of the arc. With the built-in
           geometry kernel the arc should be strictly smaller than Pi. With the OpenCAS-
           CADE kernel, if between 4 and 6 expressions are provided, the first three define the
           coordinates of the center, the next one defines the radius, and the optional next two
           the start and end angle.
Ellipse ( expression ) = { expression, expression, expression <, ...> };
           Create an ellipse arc. If four expressions are provided on the right-hand-side they
           define the start point, the center point, a point anywhere on the major axis and
           the end point. If the first point is a major axis point, the third expression can be
           ommitted. With the OpenCASCADE kernel, if between 5 and 7 expressions are
           provided, the first three define the coordinates of the center, the next two define the
           major (along the x-axis) and minor radii (along the y-axis), and the next two the
           start and end angle. Note that OpenCASCADE does not allow creating ellipse arcs
           with the major radius smaller than the minor radius.
Compound Spline | BSpline ( expression ) = { expression-list } Using expression ;
          Create a spline or a BSpline from control points sampled on the curves in expression-
          list. Using expression specifies the number of intervals on each curve to compute
          the sampling points. Compound splines and BSplines are only available with the
          built-in geometry kernel.
Curve Loop ( expression ) = { expression-list };
           Create an oriented loop of curves, i.e. a closed wire. The expression inside the
           parentheses is the curve loop’s tag; the expression-list on the right hand side should
           contain the tags of all the curves that constitute the curve loop. A curve loop
           must be a closed loop. With the built-in geometry kernel, the curves should be
           ordered and oriented, using negative tags to specify reverse orientation. (If the
           orientation is correct, but the ordering is wrong, Gmsh will actually reorder the list
           internally to create a consistent loop; the built-in kernel also supports multiple curve
           loops (or subloops) in a single Curve Loop command, but this is not recommended).
           With the OpenCASCADE kernel the curve loop is always oriented according to the
           orientation of its first curve; negative tags can be specified for compatibility with
           the built-in kernel, but are simply ignored. Curve loops are used to create surfaces:
           see Section 5.2.3 [Surfaces], page 104.
Wire ( expression ) = { expression-list };
           Create a path made of curves. Wires are only available with the OpenCASCADE
           kernel. They are used to create ThruSections and extrusions along paths.
Physical Curve ( expression | string-expression <, expression > ) <+|->= {
expression-list };
          Create a physical curve. The expression inside the parentheses is the physical curve’s
          tag; the expression-list on the right hand side should contain the tags of all the
          elementary curves that need to be grouped inside the physical curve. If a string-
          expression is given instead instead of expression inside the parentheses, a string
          label is associated with the physical tag, which can be either provided explicitly
          (after the comma) or not (in which case a unique tag is automatically created). In
          some mesh file formats (e.g. MSH2), specifying negative tags in the expression-list
          will reverse the orientation of the mesh elements belonging to the corresponding
          elementary curves in the saved mesh file.
104                                                                                  Gmsh 4.11.1
5.2.3 Surfaces
Plane Surface ( expression ) = { expression-list };
          Create a plane surface. The expression inside the parentheses is the plane surface’s
          tag; the expression-list on the right hand side should contain the tags of all the curve
          loops defining the surface. The first curve loop defines the exterior boundary of the
          surface; all other curve loops define holes in the surface. A curve loop defining a
          hole should not have any curves in common with the exterior curve loop (in which
          case it is not a hole, and the two surfaces should be defined separately). Likewise,
          a curve loop defining a hole should not have any curves in common with another
          curve loop defining a hole in the same surface (in which case the two curve loops
          should be combined).
5.2.4 Volumes
Volume ( expression ) = { expression-list };
           Create a volume. The expression inside the parentheses is the volume’s tag; the
           expression-list on the right hand side should contain the tags of all the surface loops
           defining the volume. The first surface loop defines the exterior boundary of the
           volume; all other surface loops define holes in the volume. A surface loop defining
           a hole should not have any surfaces in common with the exterior surface loop (in
           which case it is not a hole, and the two volumes should be defined separately).
           Likewise, a surface loop defining a hole should not have any surfaces in common
           with another surface loop defining a hole in the same volume (in which case the two
           surface loops should be combined).
Sphere ( expression ) = { expression-list };
           Create a sphere, defined by the 3 coordinates of its center and a radius. Additional
           expressions define 3 angle limits. The first two optional arguments define the polar
           angle opening (from -Pi/2 to Pi/2). The optional ‘angle3’ argument defines the az-
           imuthal opening (from 0 to 2*Pi). Sphere is only available with the OpenCASCADE
           kernel.
Box ( expression ) = { expression-list };
           Create a box, defined by the 3 coordinates of a point and the 3 extents. Box is only
           available with the OpenCASCADE kernel.
Cylinder ( expression ) = { expression-list };
           Create a cylinder, defined by the 3 coordinates of the center of the first circular
           face, the 3 components of the vector defining its axis and its radius. An addi-
           tional expression defines the angular opening. Cylinder is only available with the
           OpenCASCADE kernel.
Torus ( expression ) = { expression-list };
           Create a torus, defined by the 3 coordinates of its center and 2 radii. An additional
           expression defines the angular opening. Torus is only available with the OpenCAS-
           CADE kernel.
Cone ( expression ) = { expression-list };
           Create a cone, defined by the 3 coordinates of the center of the first circular face,
           the 3 components of the vector defining its axis and the two radii of the faces (these
           radii can be zero). An additional expression defines the angular opening. Cone is
           only available with the OpenCASCADE kernel.
Wedge ( expression ) = { expression-list };
           Create a right angular wedge, defined by the 3 coordinates of the right-angle point
           and the 3 extends. An additional parameter defines the top X extent (zero by
           default). Wedge is only available with the OpenCASCADE kernel.
106                                                                                  Gmsh 4.11.1
5.2.5 Extrusions
Curves, surfaces and volumes can also be created through extrusion of points, curves and sur-
faces, respectively. Here is the syntax of the geometrical extrusion commands (go to Section 5.3.2
[Structured grids], page 111, to see how these commands can be extended in order to also extrude
the mesh):
extrude:
Extrude { extrude-list }
           Extrude entities in extrude-list using a translation along their normal. Only avail-
           able with the built-in geometry kernel.
Chapter 5: Gmsh scripting language                                                              107
5.2.7 Transformations
Geometrical transformations can be applied to elementary entities, or to copies of elementary en-
tities (using the Duplicata command: see below). The syntax of the transformation commands
is:
transform:
Dilate { { expression-list }, expression } { transform-list }
           Scale all elementary entities in transform-list by a factor expression. The expression-
           list should contain three expressions giving the X, Y, and Z coordinates of the center
           of the homothetic transformation.
Dilate { { expression-list }, { expression, expression, expression } } {
transform-list }
           Scale all elementary entities in transform-list using different factors along X, Y and Z
           (the three expressions). The expression-list should contain three expressions giving
           the X, Y, and Z coordinates of the center of the homothetic transformation.
Rotate { { expression-list }, { expression-list }, expression } { transform-list }
           Rotate all elementary entities in transform-list by an angle of expression radians.
           The first expression-list should contain three expressions giving the X, Y and Z direc-
           tion of the rotation axis; the second expression-list should contain three expressions
           giving the X, Y and Z components of any point on this axis.
Chapter 5: Gmsh scripting language                                                              109
            you must use the automatically created entity identifier created by the extrusion
            command. For example, the following extrusion command will return the tag of the
            new “top” surface in num[0] and the tag of the new volume in num[1]:
                   num[] = Extrude {0,0,1} { Surface{1}; Layers{10}; };
            QuadTriNoNewVerts and QuadTriAddVerts allow to connect structured, extruded
            volumes containing quadrangle-faced elements to structured or unstructured tetra-
            hedral volumes, by subdividing into triangles any quadrangles on boundary surfaces
            shared with tetrahedral volumes. (They have no effect for 1D or 2D extrusions.)
            QuadTriNoNewVerts subdivides any of the region’s quad-faced 3D elements that
            touch these boundary triangles into pyramids, prisms, or tetrahedra as necessary,
            all without adding new nodes. QuadTriAddVerts works in a similar way, but subdi-
            vides 3D elements touching the boundary triangles by adding a new node inside each
            element at the node-based centroid. Either method results in a structured extru-
            sion with an outer layer of subdivided elements that interface the inner, unmodified
            elements to the triangle-meshed region boundaries.
            In some rare cases, due to certain lateral boundary conditions, it may not be possible
            make a valid element subdivision with QuadTriNoNewVerts without adding addi-
            tional nodes. In this case, an internal node is created at the node-based centroid of
            the element. The element is then divided using that node. When an internal node
            is created with QuadTriNoNewVerts, the user is alerted by a warning message sent
            for each instance; however, the mesh will still be valid and conformal.
            Both QuadTriNoNewVerts and QuadTriAddVerts can be used with the optional
            RecombLaterals keyword. By default, the QuadTri algorithms will mesh any free
            laterals as triangles, if possible. RecombLaterals forces any free laterals to remain
            as quadrangles, if possible. Lateral surfaces between two QuadTri regions will always
            be meshed as quadrangles.
            Note that the QuadTri algorithms will handle all potential meshing conflicts along
            the lateral surfaces of the extrusion. In other words, QuadTri will not subdivide a
            lateral that must remain as quadrangles, nor will it leave a lateral as quadrangles
            if it must be divided. The user should therefore feel free to mix different types of
            neighboring regions with a QuadTri meshed region; the mesh should work. However,
            be aware that the top surface of the QuadTri extrusion will always be meshed as
            triangles, unless it is extruded back onto the original source in a toroidal loop (a
            case which also works with QuadTri).
            QuadTriNoNewVerts and QuadTriAddVerts may be used interchangeably, but
            QuadTriAddVerts often gives better element quality.
            If the user wishes to interface a structured extrusion to a tetrahedral volume without
            modifying the original structured mesh, the user may create dedicated interface
            volumes around the structured geometry and apply a QuadTri algorithm to those
            volumes only.
Extrude { { expression-list }, { expression-list }, expression } { extrude-list
layers }
           Extrude both the geometry and the mesh using a rotation (see Section 5.2.5 [Extru-
           sions], page 106). The layers option is defined as above. With the built-in geometry
           kernel the angle should be strictly smaller than Pi. With the OpenCASCADE kernel
           the angle should be strictly smaller than 2 Pi.
Extrude { { expression-list }, { expression-list }, { expression-list },
expression } { extrude-list layers }
           Extrude both the geometry and the mesh using a combined translation and rotation
           (see Section 5.2.5 [Extrusions], page 106). The layers option is defined as above.
Chapter 5: Gmsh scripting language                                                             113
            With the built-in geometry kernel the angle should be strictly smaller than Pi. With
            the OpenCASCADE kernel the angle should be strictly smaller than 2 Pi.
Extrude { Surface { expression-list }; layers < Using Index[expr ]; > < Using
View[expr ]; > < ScaleLastLayer; > }
           Extrude a “topological” boundary layer from the specified surfaces. If no view is
           specified, the mesh of the boundary layer entities is created using a gouraud-shaded
           (smoothed) normal field. If a scalar view is specified, it locally prescribes the thick-
           ness of the layer. If a vector-valued view is specified it locally prescribes both the
           extrusion direction and the thickness. Specifying a boundary layer index allows to
           extrude several independent boundary layers (with independent normal smoothing).
           ScaleLastLayer scales the height of the last (top) layer of each normal’s extrusion
           by the average length of the edges in all the source elements that contain the source
           node (actually, the average of the averages for each element–edges actually touch-
           ing the source node are counted twice). This allows the height of the last layer to
           vary along with the size of the source elements in order to achieve better element
           quality. For example, in a boundary layer extruded with the Layers definition ’Lay-
           ers{ {1,4,2}, {0.5, 0.6, 1.6} },’ a source node adjacent to elements with an overall
           average edge length of 5.0 will extrude to have a last layer height = (1.6-0.6) * 5.0
           = 5.0. Topological boundary layers are only available with the built-in kernel. See
           sphere boundary layer.geo or sphere boundary layer from view.geo for ‘.geo’ file
           examples, and aneurysm.py for an API example.
            The advantage of this approach is that it provides a topological description of the
            boundary layer, which means that it can be connected to other geometrical entities.
            The disadvantage is that the mesh is just a “simple” extrusion: no fans, no special
            treatments of reentrant corners, etc. Another boundary layer algorithm is currently
            available through the BoundaryLayer field (see Section 1.2.2 [Specifying mesh ele-
            ment sizes], page 10). It only works in 2D however, and is a meshing constraint:
            it works directly at the mesh level, without creating geometrical entities. See e.g.
            BL0.geo or naca12 2d.geo.
Transfinite Curve { expression-list-or-all } = expression < Using Progression |
Bump expression >;
          Select the curves in expression-list to be meshed with the 1D transfinite algorithm.
          The expression on the right hand side gives the number of nodes that will be cre-
          ated on the curve (this overrides any other mesh element size prescription—see
          Section 1.2.2 [Specifying mesh element sizes], page 10). The optional argument
          ‘Using Progression expression ’ instructs the transfinite algorithm to distribute
          the nodes following a geometric progression (Progression 2 meaning for example
          that each line element in the series will be twice as long as the preceding one). The
          optional argument ‘Using Bump expression ’ instructs the transfinite algorithm to
          distribute the nodes with a refinement at both ends of the curve. This operation
          triggers a synchronization of the CAD model with the internal Gmsh model.
Transfinite Surface { expression-list-or-all } < = { expression-list } > < Left |
Right | Alternate | AlternateRight | AlternateLeft > ;
           Select surfaces to be meshed with the 2D transfinite algorithm. The expression-
           list on the right-hand-side should contain the tags of three or four points on the
           boundary of the surface that define the corners of the transfinite interpolation. If
           no tags are given, the transfinite algorithm will try to find the corners automatically.
           The optional argument specifies the way the triangles are oriented when the mesh
           is not recombined. Alternate is a synonym for AlternateRight. For 3-sided
           surfaces a specific algorithm can be used to generate structured triangular by setting
114                                                                              Gmsh 4.11.1
RecombineMesh;
          Recombine the current mesh into quadrangles. This operation triggers a synchro-
          nization of the CAD model with the internal Gmsh model.
SetOrder expression ;
          Change the order of the elements in the current mesh.
PartitionMesh expression ;
          Partition the mesh into expression, using current partitioning options.
Point | Curve { expression-list } In Surface { expression };
           Add a meshing constraint to embed the point(s) or curve(s) in the given surface. The
           surface mesh will conform to the mesh of the point(s) or curves(s). This operation
           triggers a synchronization of the CAD model with the internal Gmsh model.
Point | Curve | Surface { expression-list } In Volume { expression };
           Add a meshing constraint to embed the point(s), curve(s) or surface(s) in the given
           volume. The volume mesh will conform to the mesh of the corresponding point(s),
           curve(s) or surface(s). This is only supported with the 3D Delaunay algorithms.
           This operation triggers a synchronization of the CAD model with the internal Gmsh
           model.
Periodic Curve { expression-list } = { expression-list } ;
          Add a meshing constraint to force the mesh of the curves on the left-hand side to
          match the mesh of the curves on the right-hand side (masters). If used after meshing,
          generate the periodic node correspondence information assuming the mesh of the
          curves on the left-hand side effectively matches the mesh of the curves on the right-
          hand side. This operation triggers a synchronization of the CAD model with the
          internal Gmsh model.
Periodic Surface expression { expression-list } = expression { expression-list } ;
          Add a meshing constraint to force the mesh of the surface on the left-hand side (with
          boundary edges specified between braces) to match the mesh of the master surface
          on the right-hand side (with boundary edges specified between braces). If used after
          meshing, generate the periodic node correspondence information assuming the mesh
          of the surface on the left-hand side effectively matches the mesh of the master surface
          on the right-hand side (useful for structured and extruded meshes). This operation
          triggers a synchronization of the CAD model with the internal Gmsh model.
Periodic Curve | Surface { expression-list } = { expression-list } Affine |
Translate { expression-list } ;
          Add a meshing constraint to force mesh of curves or surfaces on the left-hand side
          to match the mesh of the curves or surfaces on the right-hand side (masters), using
          prescribed geometrical transformations. If used after meshing, generate the peri-
          odic node correspondence information assuming the mesh of the curves or surfaces
          on the left-hand side effectively matches the mesh of the curves or surfaces on the
          right-hand side (useful for structured and extruded meshes). Affine takes a 4 x 4
          affine transformation matrix given by row (only 12 entries can be provided for con-
          venience); Translate takes the 3 components of the translation as in Section 5.2.7
          [Transformations], page 108. This operation triggers a synchronization of the CAD
          model with the internal Gmsh model.
Periodic Curve | Surface { expression-list } = { expression-list } Rotate {
expression-list }, { expression-list }, expression } ;
          Add a meshing constraint to force the mesh of curves or surfaces on the left-hand side
          to match the mesh of the curves on the right-hand side (masters), using a rotation
116                                                                                  Gmsh 4.11.1
Coherence Mesh;
          Remove all duplicate mesh nodes in the current mesh.
RenumberMeshNodes;
          Renumber the node tags in the current mesh in a continuous sequence.
RenumberMeshElements;
          Renumber the elements tags in the current mesh in a continuous sequence.
< Recursive > Color color-expression { <Physical> Point | Curve | Surface | Volume {
expression-list-or-all }; ... }
          Set the mesh color of the entities in expression-list to color-expression. This opera-
          tion triggers a synchronization of the CAD model with the internal Gmsh model.
            physical copies of the data, just merge the file containing the post-processing view
            multiple times.
AliasWithOptions View[expression ];
          Create an alias of the expression-th post-processing view and copies all the options
          of the expression-th view to the new aliased view.
CopyOptions View[expression, expression ];
          Copy all the options from the first expression-th post-processing view to the second
          one.
Combine ElementsByViewName;
          Combine all the post-processing views having the same name into new views. The
          combination is done “spatially”, i.e., simply by appending the elements at the end
          of the new views.
Combine ElementsFromAllViews | Combine Views;
          Combine all the post-processing views into a single new view. The combination is
          done “spatially”, i.e., simply by appending the elements at the end of the new view.
Combine ElementsFromVisibleViews;
          Combine all the visible post-processing views into a single new view. The combi-
          nation is done “spatially”, i.e., simply by appending the elements at the end of the
          new view.
Combine TimeStepsByViewName | Combine TimeSteps;
          Combine the data from all the post-processing views having the same name into
          new multi-time-step views. The combination is done “temporally”, i.e., as if the
          data in each view corresponds to a different time instant. The combination will fail
          if the meshes in all the views are not identical.
Combine TimeStepsFromAllViews;
          Combine the data from all the post-processing views into a new multi-time-step view.
          The combination is done “temporally”, i.e., as if the data in each view corresponds
          to a different time instant. The combination will fail if the meshes in all the views
          are not identical.
Combine TimeStepsFromVisibleViews;
          Combine the data from all the visible post-processing views into a new multi-time-
          step view. The combination is done “temporally”, i.e., as if the data in each view
          corresponds to a different time instant. The combination will fail if the meshes in
          all the views are not identical.
Delete View[expression ];
          Delete (remove) the expression-th post-processing view. Note that post-processing
          view indices start at 0.
Delete Empty Views;
          Delete (remove) all the empty post-processing views.
Background Mesh View[expression ];
          Apply the expression-th post-processing view as the current background mesh. Note
          that post-processing view indices start at 0.
Plugin (string ) . Run;
          Execute the plugin string. The list of default plugins is given in Chapter 9 [Gmsh
          plugins], page 317.
Chapter 5: Gmsh scripting language                                                          119
           The optional TIME list can contain a list of expressions giving the value of the time
           (or any other variable) for which an evolution was saved.
           The optional INTERPOLATION_SCHEME lists can contain the interpolation matrices
           used for high-order adaptive visualization.
           Let us assume that the approximation of the view’s value over an element is written
           as a linear combination of d basis functions f [i], i=0, ..., d-1 (the coefficients being
           stored in values). Defining f [i] = Sum(j=0, ..., d-1) F[i][j] p[j], with p[j] = u^P[j][0]
           v^P[j][1] w^P[j][2] (u, v and w being the coordinates in the element’s parameter
           space), then val-coef-matrix denotes the d x d matrix F and val-exp-matrix denotes
           the d x 3 matrix P.
           In the same way, let us also assume that the coordinates x, y and z of the ele-
           ment are obtained through a geometrical mapping from parameter space as a linear
           combination of m basis functions g[i], i=0, ..., m-1 (the coefficients being stored in
           coordinates). Defining g[i] = Sum(j=0, ..., m-1) G[i][j] q[j], with q[j] = u^Q[j][0]
           v^Q[j][1] w^Q[j][2], then geo-coef-matrix denotes the m x m matrix G and geo-exp-
           matrix denotes the m x 3 matrix Q.
           Here are for example the interpolation matrices for a first order quadrangle:
                  INTERPOLATION_SCHEME
                  {
                    {1/4,-1/4, 1/4,-1/4},
                    {1/4, 1/4,-1/4,-1/4},
                    {1/4, 1/4, 1/4, 1/4},
                    {1/4,-1/4,-1/4, 1/4}
                  }
                  {
                    {0, 0, 0},
                    {1, 0, 0},
                    {0, 1, 0},
                    {1, 1, 0}
                  };
Chapter 6: Gmsh application programming interface                                               123
          must be synchronized with the model in order to be meshed, or, more generally, for func-
          tions outside of gmsh/model/geo or gmsh/model/occ to manipulate them. 1D and 2D
          meshing algorithms use the parametrization of the underlying geometrical curve or surface
          to generate the mesh. Discrete entities can be remeshed provided that a parametrization is
          explicitly recomputed for them.
      • Mesh data is made of elements (points, lines, triangles, quadrangles, tetrahedra, hexahedra,
        prisms, pyramids, ...), defined by an ordered list of their nodes. Elements and nodes are
        identified by tags (strictly positive identification numbers), and are stored (classified ) in the
        model entity they discretize. Once meshed, a model entity of dimension 0 (a geometrical
        point) will thus contain a mesh element of type point (MSH type 15: cf. Section 10.1 [MSH
        file format], page 345), as well as a mesh node. A model curve will contain line elements
        (e.g. of MSH type 1 or 8 for first order or second order meshes, respectively) as well as its
        interior nodes, while its boundary nodes will be stored in the bounding model points. A
        model surface will contain triangular and/or quadrangular elements and all the nodes not
        classified on its boundary or on its embedded entities (curves and points). A model volume
        will contain tetrahedra, hexahedra, etc. and all the nodes not classified on its boundary
        or on its embedded entities (surfaces, curves and points). This data model allows to easily
        and efficiently handle the creation, modification and destruction of conformal meshes. All
        the mesh-related functions are provided in the gmsh/model/mesh namespace.
      • Post-processing data is made of views. Each view is identified by a tag, and can also be
        accessed by its index (which can change when views are sorted, added or deleted). A view
        stores both display options and data, unless the view is an alias of another view (in which
        case it only stores display options, and the data points to a reference view). View data
        can contain several steps (e.g. to store time series) and can be either linked to one or
        more models1 (mesh-based data, as stored in MSH files: cf. Section 10.1 [MSH file format],
        page 345) or independent from any model (list-based data, as stored in parsed POS files:
        cf. Section 5.4 [Post-processing scripting commands], page 117). Various plugins exist to
        modify and create views.
    All the functions available in the API are given below. See the relevant header/module file
    for the exact definition in each supported language: in C++ gmsh/model/geo/addPoint will
    lead to a namespaced function gmsh::model::geo::addPoint, while in Python and Julia it
    will lead to gmsh.model.geo.addPoint, in C to gmshModelGeoAddPoint and in Fortran to
    gmsh%model%geo%addPoint. In addition to the default “camelCase” function names, the Python
    and Julia APIs also define “snake case” aliases, i.e. gmsh.model.geo.add_point, as this is the
    recommended style in these languages. Output values are passed by reference in C++, as pointers
    in C and directly returned (after the return value, if any) in Python and Julia.
             Output:     -
             Return:     -
             Language-specific definition:
                        C++, C, Python, Julia
             Examples: C++ (t7.cpp, t8.cpp, t9.cpp, t13.cpp, t17.cpp), Python (t7.py, t8.py,
                       t9.py, t13.py, t17.py, ...)
gmsh/write
             Write a file. The export format is determined by the file extension.
             Input:      fileName (string)
             Output:     -
             Return:     -
             Language-specific definition:
                        C++, C, Python, Julia
             Examples: C++ (t1.cpp, t2.cpp, t3.cpp, t4.cpp, t5.cpp, ...), Python (t1.py, t2.py,
                       t3.py, t4.py, t5.py, ...)
gmsh/clear
             Clear all loaded models and post-processing data, and add a new empty model.
             Input:      -
             Output:     -
             Return:     -
             Language-specific definition:
                        C++, C, Python, Julia
             Examples: C++ (t3.cpp, x1.cpp), Python (t3.py, t13.py, x1.py, x3d export.py)
           Return:     integer
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t1.cpp, t2.cpp, t3.cpp, t5.cpp, t14.cpp, ...), Python (t1.py, t2.py,
                     t3.py, t5.py, t14.py, ...)
gmsh/model/removePhysicalGroups
          Remove the physical groups dimTags (given as a vector of (dim, tag) pairs) from
          the current model. If dimTags is empty, remove all groups.
           Input:      dimTags = [] (vector of pairs of integers)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/setPhysicalName
          Set the name of the physical group of dimension dim and tag tag.
           Input:      dim (integer), tag (integer), name (string)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (poisson.py, step assembly.py)
gmsh/model/removePhysicalName
          Remove the physical name name from the current model.
           Input:      name (string)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/getPhysicalName
          Get the name of the physical group of dimension dim and tag tag.
           Input:      dim (integer), tag (integer)
           Output:     name (string)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (x1.cpp), Python (x1.py, poisson.py)
gmsh/model/setTag
          Set the tag of the entity of dimension dim and tag tag to the new value newTag.
           Input:      dim (integer), tag (integer), newTag (integer)
           Output:     -
132                                                                                  Gmsh 4.11.1
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/getBoundary
          Get the boundary of the model entities dimTags, given as a vector of (dim, tag)
          pairs. Return in outDimTags the boundary of the individual entities (if combined is
          false) or the boundary of the combined geometrical shape formed by all input entities
          (if combined is true). Return tags multiplied by the sign of the boundary entity if
          oriented is true. Apply the boundary operator recursively down to dimension 0
          (i.e. to points) if recursive is true.
            Input:      dimTags (vector of pairs of integers), combined = True (boolean),
                        oriented = True (boolean), recursive = False (boolean)
            Output:     outDimTags (vector of pairs of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t14.cpp, t16.cpp, t18.cpp, t19.cpp, t21.cpp), Python (t14.py,
                      t16.py, t18.py, t19.py, t21.py, ...)
gmsh/model/getAdjacencies
          Get the upward and downward adjacencies of the model entity of dimension dim
          and tag tag. The upward vector returns the tags of adjacent entities of dimension
          dim + 1; the downward vector returns the tags of adjacent entities of dimension dim
          - 1.
            Input:      dim (integer), tag (integer)
            Output:     upward (vector of integers), downward (vector of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x1.cpp), Python (x1.py)
gmsh/model/getEntitiesInBoundingBox
          Get the model entities in the bounding box defined by the two points (xmin, ymin,
          zmin) and (xmax, ymax, zmax). If dim is >= 0, return only the entities of the specified
          dimension (e.g. points if dim == 0).
            Input:      xmin (double), ymin (double), zmin (double), xmax (double), ymax (dou-
                        ble), zmax (double), dim = -1 (integer)
            Output:     dimTags (vector of pairs of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t16.cpp, t18.cpp, t20.cpp), Python (t16.py, t18.py, t20.py,
                      naca boundary layer 3d.py)
gmsh/model/getBoundingBox
          Get the bounding box (xmin, ymin, zmin), (xmax, ymax, zmax) of the model entity
          of dimension dim and tag tag. If dim and tag are negative, get the bounding box
          of the whole model.
Chapter 6: Gmsh application programming interface                                           133
gmsh/model/getValue
          Evaluate the parametrization of the entity of dimension dim and tag tag at the
          parametric coordinates parametricCoord. Only valid for dim equal to 0 (with empty
          parametricCoord), 1 (with parametricCoord containing parametric coordinates on
          the curve) or 2 (with parametricCoord containing u, v parametric coordinates on
          the surface, concatenated: [p1u, p1v, p2u, ...]). Return x, y, z coordinates in coord,
          concatenated: [p1x, p1y, p1z, p2x, ...].
            Input:      dim (integer), tag (integer), parametricCoord (vector of doubles)
            Output:     coord (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t2.cpp, x5.cpp), Python (t2.py, x5.py, reparamOnFace.py,
                      terrain stl.py)
gmsh/model/getDerivative
          Evaluate the derivative of the parametrization of the entity of dimension dim and
          tag tag at the parametric coordinates parametricCoord. Only valid for dim equal
          to 1 (with parametricCoord containing parametric coordinates on the curve) or
          2 (with parametricCoord containing u, v parametric coordinates on the surface,
          concatenated: [p1u, p1v, p2u, ...]). For dim equal to 1 return the x, y, z components
          of the derivative with respect to u [d1ux, d1uy, d1uz, d2ux, ...]; for dim equal to 2
          return the x, y, z components of the derivative with respect to u and v: [d1ux, d1uy,
          d1uz, d1vx, d1vy, d1vz, d2ux, ...].
            Input:      dim (integer), tag (integer), parametricCoord (vector of doubles)
            Output:     derivatives (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/getSecondDerivative
          Evaluate the second derivative of the parametrization of the entity of dimension dim
          and tag tag at the parametric coordinates parametricCoord. Only valid for dim
          equal to 1 (with parametricCoord containing parametric coordinates on the curve)
          or 2 (with parametricCoord containing u, v parametric coordinates on the surface,
          concatenated: [p1u, p1v, p2u, ...]). For dim equal to 1 return the x, y, z components
          of the second derivative with respect to u [d1uux, d1uuy, d1uuz, d2uux, ...]; for dim
          equal to 2 return the x, y, z components of the second derivative with respect to
          u and v, and the mixed derivative with respect to u and v: [d1uux, d1uuy, d1uuz,
          d1vvx, d1vvy, d1vvz, d1uvx, d1uvy, d1uvz, d2uux, ...].
            Input:      dim (integer), tag (integer), parametricCoord (vector of doubles)
            Output:     derivatives (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/getCurvature
          Evaluate the (maximum) curvature of the entity of dimension dim and tag tag
          at the parametric coordinates parametricCoord. Only valid for dim equal to 1
136                                                                               Gmsh 4.11.1
gmsh/model/getParametrizationBounds
          Get the min and max bounds of the parametric coordinates for the entity of dimension
          dim and tag tag.
            Input:      dim (integer), tag (integer)
            Output:     min (vector of doubles), max (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x5.cpp), Python (x5.py, reparamOnFace.py)
gmsh/model/isInside
          Check if the coordinates (or the parametric coordinates if parametric is set) pro-
          vided in coord correspond to points inside the entity of dimension dim and tag tag,
          and return the number of points inside. This feature is only available for a subset
          of entities, depending on the underlying geometrical representation.
            Input:      dim (integer), tag (integer), coord (vector of doubles), parametric =
                        False (boolean)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/getClosestPoint
          Get the points closestCoord on the entity of dimension dim and tag tag to the
          points coord, by orthogonal projection. coord and closestCoord are given as x,
          y, z coordinates, concatenated: [p1x, p1y, p1z, p2x, ...]. parametricCoord returns
          the parametric coordinates t on the curve (if dim = 1) or u and v coordinates
          concatenated on the surface (if dim = 2), i.e. [p1t, p2t, ...] or [p1u, p1v, p2u, ...].
            Input:      dim (integer), tag (integer), coord (vector of doubles)
            Output:     closestCoord (vector of doubles), parametricCoord (vector of dou-
                        bles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (closest point.py)
gmsh/model/reparametrizeOnSurface
          Reparametrize the boundary entity (point or curve, i.e. with dim == 0 or dim ==
          1) of tag tag on the surface surfaceTag. If dim == 1, reparametrize all the points
          corresponding to the parametric coordinates parametricCoord. Multiple matches
          in case of periodic surfaces can be selected with which. This feature is only available
          for a subset of entities, depending on the underlying geometrical representation.
            Input:      dim (integer), tag (integer), parametricCoord (vector of doubles),
                        surfaceTag (integer), which = 0 (integer)
            Output:     surfaceParametricCoord (vector of doubles)
            Return:     -
138                                                                                    Gmsh 4.11.1
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x5.cpp), Python (x5.py, reparamOnFace.py)
gmsh/model/setVisibility
          Set the visibility of the model entities dimTags (given as a vector of (dim, tag) pairs)
          to value. Apply the visibility setting recursively if recursive is true.
            Input:      dimTags (vector of pairs of integers), value (integer), recursive =
                        False (boolean)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (gui.py, hybrid order.py)
gmsh/model/getVisibility
          Get the visibility of the model entity of dimension dim and tag tag.
            Input:      dim (integer), tag (integer)
            Output:     value (integer)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/setVisibilityPerWindow
          Set the global visibility of the model per window to value, where windowIndex
          identifies the window in the window list.
            Input:      value (integer), windowIndex = 0 (integer)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/setColor
          Set the color of the model entities dimTags (given as a vector of (dim, tag) pairs)
          to the RGBA value (r, g, b, a), where r, g, b and a should be integers between 0
          and 255. Apply the color setting recursively if recursive is true.
            Input:      dimTags (vector of pairs of integers), r (integer), g (integer), b (integer),
                        a = 255 (integer), recursive = False (boolean)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t4.cpp), Python (t4.py, gui.py)
gmsh/model/getColor
          Get the color of the model entity of dimension dim and tag tag.
Chapter 6: Gmsh application programming interface                           139
            Examples: Python (naca boundary layer 2d.py,           naca boundary layer 3d.py,
                      opt.py, tube boundary layer.py)
gmsh/model/mesh/recombine
          Recombine the mesh of the current model.
            Input:      -
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (stl to mesh.py)
gmsh/model/mesh/refine
          Refine the mesh of the current model by uniformly splitting the elements.
            Input:      -
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/setOrder
          Set the order of the elements in the mesh of the current model to order.
            Input:      order (integer)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++      (x6.cpp),      Python            (x6.py,      hybrid order.py,
                      naca boundary layer 2d.py,                   naca boundary layer 3d.py,
                      tube boundary layer.py)
gmsh/model/mesh/getLastEntityError
          Get the last entities dimTags (as a vector of (dim, tag) pairs) where a meshing error
          occurred. Currently only populated by the new 3D meshing algorithms.
            Input:      -
            Output:     dimTags (vector of pairs of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getLastNodeError
          Get the last node tags nodeTags where a meshing error occurred. Currently only
          populated by the new 3D meshing algorithms.
            Input:      -
            Output:     nodeTags (vector of sizes)
142                                                                                Gmsh 4.11.1
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/clear
          Clear the mesh, i.e. delete all the nodes and elements, for the entities dimTags,
          given as a vector of (dim, tag) pairs. If dimTags is empty, clear the whole mesh.
          Note that the mesh of an entity can only be cleared if this entity is not on the
          boundary of another entity with a non-empty mesh.
            Input:      dimTags = [] (vector of pairs of integers)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (copy mesh.py, flatten.py)
gmsh/model/mesh/reverse
          Reverse the orientation of the elements in the entities dimTags, given as a vector of
          (dim, tag) pairs. If dimTags is empty, reverse the orientation of the elements in the
          whole mesh.
            Input:      dimTags = [] (vector of pairs of integers)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (mirror mesh.py)
gmsh/model/mesh/affineTransform
          Apply the affine transformation affineTransform (16 entries of a 4x4 matrix, by
          row; only the 12 first can be provided for convenience) to the coordinates of the
          nodes classified on the entities dimTags, given as a vector of (dim, tag) pairs. If
          dimTags is empty, transform all the nodes in the mesh.
            Input:      affineTransform (vector of doubles), dimTags = [] (vector of pairs of
                        integers)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (flatten2.py)
gmsh/model/mesh/getNodes
          Get the nodes classified on the entity of dimension dim and tag tag. If tag < 0, get
          the nodes for all entities of dimension dim. If dim and tag are negative, get all the
          nodes in the mesh. nodeTags contains the node tags (their unique, strictly positive
          identification numbers). coord is a vector of length 3 times the length of nodeTags
          that contains the x, y, z coordinates of the nodes, concatenated: [n1x, n1y, n1z, n2x,
          ...]. If dim >= 0 and returnParamtricCoord is set, parametricCoord contains the
Chapter 6: Gmsh application programming interface                                              143
            parametric coordinates ([u1, u2, ...] or [u1, v1, u2, ...]) of the nodes, if available.
            The length of parametricCoord can be 0 or dim times the length of nodeTags. If
            includeBoundary is set, also return the nodes classified on the boundary of the
            entity (which will be reparametrized on the entity if dim >= 0 in order to compute
            their parametric coordinates).
            Input:      dim = -1 (integer), tag = -1 (integer), includeBoundary = False
                        (boolean), returnParametricCoord = True (boolean)
            Output:     nodeTags (vector of sizes), coord (vector of doubles), parametricCoord
                        (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x1.cpp, x4.cpp, x5.cpp),            Python (x1.py,      x4.py,   x5.py,
                      adapt mesh.py, copy mesh.py, ...)
gmsh/model/mesh/getNodesByElementType
          Get the nodes classified on the entity of tag tag, for all the elements of type
          elementType. The other arguments are treated as in getNodes.
            Input:      elementType (integer), tag = -1 (integer), returnParametricCoord =
                        True (boolean)
            Output:     nodeTags (vector of sizes), coord (vector of doubles), parametricCoord
                        (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (stl to brep.py)
gmsh/model/mesh/getNode
          Get the coordinates and the parametric coordinates (if any) of the node with tag
          tag, as well as the dimension dim and tag tag of the entity on which the node
          is classified. This function relies on an internal cache (a vector in case of dense
          node numbering, a map otherwise); for large meshes accessing nodes in bulk is often
          preferable.
            Input:      nodeTag (size)
            Output:     coord (vector of doubles), parametricCoord (vector of doubles), dim
                        (integer), tag (integer)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/setNode
          Set the coordinates and the parametric coordinates (if any) of the node with tag tag.
          This function relies on an internal cache (a vector in case of dense node numbering,
          a map otherwise); for large meshes accessing nodes in bulk is often preferable.
            Input:      nodeTag (size), coord (vector of doubles), parametricCoord (vector of
                        doubles)
            Output:     -
144                                                                                Gmsh 4.11.1
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/rebuildNodeCache
          Rebuild the node cache.
            Input:      onlyIfNecessary = True (boolean)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/rebuildElementCache
          Rebuild the element cache.
            Input:      onlyIfNecessary = True (boolean)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getNodesForPhysicalGroup
          Get the nodes from all the elements belonging to the physical group of dimension
          dim and tag tag. nodeTags contains the node tags; coord is a vector of length 3
          times the length of nodeTags that contains the x, y, z coordinates of the nodes,
          concatenated: [n1x, n1y, n1z, n2x, ...].
            Input:      dim (integer), tag (integer)
            Output:     nodeTags (vector of sizes), coord (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getMaxNodeTag
          Get the maximum tag maxTag of a node in the mesh.
            Input:      -
            Output:     maxTag (size)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/addNodes
          Add nodes classified on the model entity of dimension dim and tag tag. nodeTags
          contains the node tags (their unique, strictly positive identification numbers). coord
          is a vector of length 3 times the length of nodeTags that contains the x, y, z
          coordinates of the nodes, concatenated: [n1x, n1y, n1z, n2x, ...]. The optional
          parametricCoord vector contains the parametric coordinates of the nodes, if any.
          The length of parametricCoord can be 0 or dim times the length of nodeTags. If
          the nodeTags vector is empty, new tags are automatically assigned to the nodes.
Chapter 6: Gmsh application programming interface                                              145
            Input:       dim (integer), tag (integer), nodeTags (vector of sizes), coord (vector
                         of doubles), parametricCoord = [] (vector of doubles)
            Output:      -
            Return:      -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x2.cpp, x4.cpp), Python (x2.py, x4.py, copy mesh.py, discrete.py,
                      flatten.py, ...)
gmsh/model/mesh/reclassifyNodes
          Reclassify all nodes on their associated model entity, based on the elements. Can be
          used when importing nodes in bulk (e.g. by associating them all to a single volume),
          to reclassify them correctly on model surfaces, curves, etc. after the elements have
          been set.
            Input:       -
            Output:      -
            Return:      -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x2.cpp), Python (x2.py, terrain.py)
gmsh/model/mesh/relocateNodes
          Relocate the nodes classified on the entity of dimension dim and tag tag using their
          parametric coordinates. If tag < 0, relocate the nodes for all entities of dimension
          dim. If dim and tag are negative, relocate all the nodes in the mesh.
            Input:       dim = -1 (integer), tag = -1 (integer)
            Output:      -
            Return:      -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getElements
          Get the elements classified on the entity of dimension dim and tag tag. If tag < 0,
          get the elements for all entities of dimension dim. If dim and tag are negative, get
          all the elements in the mesh. elementTypes contains the MSH types of the elements
          (e.g. 2 for 3-node triangles: see getElementProperties to obtain the properties for
          a given element type). elementTags is a vector of the same length as elementTypes;
          each entry is a vector containing the tags (unique, strictly positive identifiers) of the
          elements of the corresponding type. nodeTags is also a vector of the same length as
          elementTypes; each entry is a vector of length equal to the number of elements of
          the given type times the number N of nodes for this type of element, that contains
          the node tags of all the elements of the given type, concatenated: [e1n1, e1n2, ...,
          e1nN, e2n1, ...].
            Input:       dim = -1 (integer), tag = -1 (integer)
            Output:      elementTypes (vector of integers), elementTags (vector of vectors of
                         sizes), nodeTags (vector of vectors of sizes)
            Return:      -
146                                                                                 Gmsh 4.11.1
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x1.cpp), Python (x1.py, copy mesh.py, explore.py, flatten.py,
                      mesh quality.py, ...)
gmsh/model/mesh/getElement
          Get the type and node tags of the element with tag tag, as well as the dimension
          dim and tag tag of the entity on which the element is classified. This function relies
          on an internal cache (a vector in case of dense element numbering, a map otherwise);
          for large meshes accessing elements in bulk is often preferable.
            Input:      elementTag (size)
            Output:     elementType (integer), nodeTags (vector of sizes), dim (integer), tag
                        (integer)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getElementByCoordinates
          Search the mesh for an element located at coordinates (x, y, z). This function
          performs a search in a spatial octree. If an element is found, return its tag, type
          and node tags, as well as the local coordinates (u, v, w) within the reference element
          corresponding to search location. If dim is >= 0, only search for elements of the
          given dimension. If strict is not set, use a tolerance to find elements near the
          search location.
            Input:      x (double), y (double), z (double), dim = -1 (integer), strict = False
                        (boolean)
            Output:     elementTag (size), elementType (integer), nodeTags (vector of sizes),
                        u (double), v (double), w (double)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getElementsByCoordinates
          Search the mesh for element(s) located at coordinates (x, y, z). This function
          performs a search in a spatial octree. Return the tags of all found elements in
          elementTags. Additional information about the elements can be accessed through
          getElement and getLocalCoordinatesInElement. If dim is >= 0, only search for
          elements of the given dimension. If strict is not set, use a tolerance to find elements
          near the search location.
            Input:      x (double), y (double), z (double), dim = -1 (integer), strict = False
                        (boolean)
            Output:     elementTags (vector of sizes)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getLocalCoordinatesInElement
          Return the local coordinates (u, v, w) within the element elementTag corresponding
          to the model coordinates (x, y, z). This function relies on an internal cache (a vector
Chapter 6: Gmsh application programming interface                                          147
            in case of dense element numbering, a map otherwise); for large meshes accessing
            elements in bulk is often preferable.
            Input:      elementTag (size), x (double), y (double), z (double)
            Output:     u (double), v (double), w (double)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getElementTypes
          Get the types of elements in the entity of dimension dim and tag tag. If tag < 0,
          get the types for all entities of dimension dim. If dim and tag are negative, get all
          the types in the mesh.
            Input:      dim = -1 (integer), tag = -1 (integer)
            Output:     elementTypes (vector of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x6.cpp), Python (x6.py, poisson.py)
gmsh/model/mesh/getElementType
          Return an element type given its family name familyName ("Point", "Line", "Tri-
          angle", "Quadrangle", "Tetrahedron", "Pyramid", "Prism", "Hexahedron") and
          polynomial order order. If serendip is true, return the corresponding serendip
          element type (element without interior nodes).
            Input:      familyName (string), order (integer), serendip = False (boolean)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x7.cpp), Python (x7.py)
gmsh/model/mesh/getElementProperties
          Get the properties of an element of type elementType: its name (elementName),
          dimension (dim), order (order), number of nodes (numNodes), local coordinates of
          the nodes in the reference element (localNodeCoord vector, of length dim times
          numNodes) and number of primary (first order) nodes (numPrimaryNodes).
            Input:      elementType (integer)
            Output:     elementName (string), dim (integer), order (integer), numNodes (inte-
                        ger), localNodeCoord (vector of doubles), numPrimaryNodes (integer)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x1.cpp), Python (x1.py, x6.py, explore.py, poisson.py)
148                                                                                 Gmsh 4.11.1
gmsh/model/mesh/getElementsByType
          Get the elements of type elementType classified on the entity of tag tag. If tag < 0,
          get the elements for all entities. elementTags is a vector containing the tags (unique,
          strictly positive identifiers) of the elements of the corresponding type. nodeTags is a
          vector of length equal to the number of elements of the given type times the number
          N of nodes for this type of element, that contains the node tags of all the elements
          of the given type, concatenated: [e1n1, e1n2, ..., e1nN, e2n1, ...]. If numTasks > 1,
          only compute and return the part of the data indexed by task.
            Input:      elementType (integer), tag = -1 (integer), task = 0 (size), numTasks =
                        1 (size)
            Output:     elementTags (vector of sizes), nodeTags (vector of sizes)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x7.cpp), Python (x7.py, adapt mesh.py, neighbors.py, poisson.py,
                      stl to brep.py)
gmsh/model/mesh/getMaxElementTag
          Get the maximum tag maxTag of an element in the mesh.
            Input:      -
            Output:     maxTag (size)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x7.cpp), Python (x7.py)
gmsh/model/mesh/preallocateElementsByType
          Preallocate data before calling getElementsByType with numTasks > 1. For C and
          C++ only.
            Input:      elementType (integer), elementTag (boolean), nodeTag (boolean), tag
                        = -1 (integer)
            Output:     elementTags (vector of sizes), nodeTags (vector of sizes)
            Return:     -
            Language-specific definition:
                       C++, C
gmsh/model/mesh/getElementQualities
          Get the quality elementQualities of the elements with tags elementTags.
          qualityType is the requested quality measure: "minSJ" for the minimal
          scaled jacobien, "minSICN" for the minimal signed inverted condition number,
          "minSIGE" for the signed inverted gradient error, "gamma" for the ratio of the
          inscribed to circumcribed sphere radius, "volume" for the volume. If numTasks >
          1, only compute and return the part of the data indexed by task.
            Input:      elementTags (vector of sizes), qualityName = "minSICN" (string), task
                        = 0 (size), numTasks = 1 (size)
            Output:     elementsQuality (vector of doubles)
Chapter 6: Gmsh application programming interface                                          149
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (mesh quality.py)
gmsh/model/mesh/addElements
          Add elements classified on the entity of dimension dim and tag tag. types contains
          the MSH types of the elements (e.g. 2 for 3-node triangles: see the Gmsh reference
          manual). elementTags is a vector of the same length as types; each entry is a
          vector containing the tags (unique, strictly positive identifiers) of the elements of
          the corresponding type. nodeTags is also a vector of the same length as types; each
          entry is a vector of length equal to the number of elements of the given type times
          the number N of nodes per element, that contains the node tags of all the elements
          of the given type, concatenated: [e1n1, e1n2, ..., e1nN, e2n1, ...].
            Input:      dim (integer), tag (integer), elementTypes (vector of integers),
                        elementTags (vector of vectors of integers (size)), nodeTags (vector of
                        vectors of integers (size))
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python        (copy mesh.py,         discrete.py,             flatten.py,
                      mesh from discrete curve.py, mirror mesh.py, ...)
gmsh/model/mesh/addElementsByType
          Add elements of type elementType classified on the entity of tag tag. elementTags
          contains the tags (unique, strictly positive identifiers) of the elements of the cor-
          responding type. nodeTags is a vector of length equal to the number of elements
          times the number N of nodes per element, that contains the node tags of all the
          elements, concatenated: [e1n1, e1n2, ..., e1nN, e2n1, ...]. If the elementTag vector
          is empty, new tags are automatically assigned to the elements.
            Input:      tag (integer), elementType (integer), elementTags (vector of sizes),
                        nodeTags (vector of sizes)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x2.cpp, x4.cpp, x7.cpp), Python (x2.py,              x4.py,   x7.py,
                      import perf.py, raw tetrahedralization.py, ...)
gmsh/model/mesh/getIntegrationPoints
          Get the numerical quadrature information for the given element type elementType
          and integration rule integrationType, where integrationType concatenates the
          integration rule family name with the desired order (e.g. "Gauss4" for a quadrature
          suited for integrating 4th order polynomials). The "CompositeGauss" family uses
          tensor-product rules based the 1D Gauss-Legendre rule; the "Gauss" family uses an
          economic scheme when available (i.e. with a minimal number of points), and falls
          back to "CompositeGauss" otherwise. Note that integration points for the "Gauss"
150                                                                                  Gmsh 4.11.1
            family can fall outside of the reference element for high-order rules. localCoord
            contains the u, v, w coordinates of the G integration points in the reference element:
            [g1u, g1v, g1w, ..., gGu, gGv, gGw]. weights contains the associated weights: [g1q,
            ..., gGq].
            Input:      elementType (integer), integrationType (string)
            Output:     localCoord (vector of doubles), weights (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (x6.py, adapt mesh.py, poisson.py)
gmsh/model/mesh/getJacobians
          Get the Jacobians of all the elements of type elementType classified on the entity
          of tag tag, at the G evaluation points localCoord given as concatenated u, v, w
          coordinates in the reference element [g1u, g1v, g1w, ..., gGu, gGv, gGw]. Data
          is returned by element, with elements in the same order as in getElements and
          getElementsByType. jacobians contains for each element the 9 entries of the
          3x3 Jacobian matrix at each evaluation point. The matrix is returned by column:
          [e1g1Jxu, e1g1Jyu, e1g1Jzu, e1g1Jxv, ..., e1g1Jzw, e1g2Jxu, ..., e1gGJzw, e2g1Jxu,
          ...], with Jxu=dx/du, Jyu=dy/du, etc. determinants contains for each element the
          determinant of the Jacobian matrix at each evaluation point: [e1g1, e1g2, ... e1gG,
          e2g1, ...]. coord contains for each element the x, y, z coordinates of the evaluation
          points. If tag < 0, get the Jacobian data for all entities. If numTasks > 1, only
          compute and return the part of the data indexed by task.
            Input:      elementType (integer), localCoord (vector of doubles), tag = -1 (in-
                        teger), task = 0 (size), numTasks = 1 (size)
            Output:     jacobians (vector of doubles), determinants (vector of doubles),
                        coord (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (x6.py, adapt mesh.py, poisson.py)
gmsh/model/mesh/preallocateJacobians
          Preallocate data before calling getJacobians with numTasks > 1. For C and C++
          only.
            Input:      elementType     (integer),     numEvaluationPoints (integer),
                        allocateJacobians (boolean), allocateDeterminants (boolean),
                        allocateCoord (boolean), tag = -1 (integer)
            Output:     jacobians (vector of doubles), determinants (vector of doubles),
                        coord (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C
gmsh/model/mesh/getJacobian
          Get the Jacobian for a single element elementTag, at the G evaluation points
          localCoord given as concatenated u, v, w coordinates in the reference element [g1u,
Chapter 6: Gmsh application programming interface                                            151
            g1v, g1w, ..., gGu, gGv, gGw]. jacobians contains the 9 entries of the 3x3 Jaco-
            bian matrix at each evaluation point. The matrix is returned by column: [e1g1Jxu,
            e1g1Jyu, e1g1Jzu, e1g1Jxv, ..., e1g1Jzw, e1g2Jxu, ..., e1gGJzw, e2g1Jxu, ...], with
            Jxu=dx/du, Jyu=dy/du, etc. determinants contains the determinant of the Ja-
            cobian matrix at each evaluation point. coord contains the x, y, z coordinates of
            the evaluation points. This function relies on an internal cache (a vector in case of
            dense element numbering, a map otherwise); for large meshes accessing Jacobians
            in bulk is often preferable.
            Input:      elementTag (size), localCoord (vector of doubles)
            Output:     jacobians (vector of doubles), determinants (vector of doubles),
                        coord (vector of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getBasisFunctions
          Get the basis functions of the element of type elementType at the evaluation points
          localCoord (given as concatenated u, v, w coordinates in the reference element
          [g1u, g1v, g1w, ..., gGu, gGv, gGw]), for the function space functionSpaceType.
          Currently supported function spaces include "Lagrange" and "GradLagrange" for
          isoparametric Lagrange basis functions and their gradient in the u, v, w coordinates
          of the reference element; "LagrangeN" and "GradLagrangeN", with N = 1, 2, ...,
          for N-th order Lagrange basis functions; "H1LegendreN" and "GradH1LegendreN",
          with N = 1, 2, ..., for N-th order hierarchical H1 Legendre functions; "HcurlLegen-
          dreN" and "CurlHcurlLegendreN", with N = 1, 2, ..., for N-th order curl-conforming
          basis functions. numComponents returns the number C of components of a basis
          function (e.g. 1 for scalar functions and 3 for vector functions). basisFunctions
          returns the value of the N basis functions at the evaluation points, i.e. [g1f1, g1f2,
          ..., g1fN, g2f1, ...] when C == 1 or [g1f1u, g1f1v, g1f1w, g1f2u, ..., g1fNw, g2f1u,
          ...] when C == 3. For basis functions that depend on the orientation of the ele-
          ments, all values for the first orientation are returned first, followed by values for
          the second, etc. numOrientations returns the overall number of orientations. If
          the wantedOrientations vector is not empty, only return the values for the desired
          orientation indices.
            Input:      elementType   (integer),   localCoord   (vector  of  doubles),
                        functionSpaceType (string), wantedOrientations = [] (vector of
                        integers)
            Output:     numComponents (integer), basisFunctions (vector of doubles),
                        numOrientations (integer)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (x6.py, adapt mesh.py, poisson.py)
gmsh/model/mesh/getBasisFunctionsOrientation
          Get the orientation index of the elements of type elementType in the entity
          of tag tag. The arguments have the same meaning as in getBasisFunctions.
          basisFunctionsOrientation is a vector giving for each element the orientation
          index in the values returned by getBasisFunctions. For Lagrange basis functions
          the call is superfluous as it will return a vector of zeros.
152                                                                             Gmsh 4.11.1
gmsh/model/mesh/getAllFaces
          Get the global unique identifiers faceTags and the nodes faceNodes of the faces
          of type faceType in the mesh. Mesh faces are created e.g. by createFaces(),
          getKeys() or addFaces().
            Input:      faceType (integer)
            Output:     faceTags (vector of sizes), faceNodes (vector of sizes)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x7.cpp), Python (x7.py)
gmsh/model/mesh/addEdges
          Add mesh edges defined by their global unique identifiers edgeTags and their nodes
          edgeNodes.
            Input:      edgeTags (vector of sizes), edgeNodes (vector of sizes)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/addFaces
          Add mesh faces of type faceType defined by their global unique identifiers faceTags
          and their nodes faceNodes.
            Input:      faceType (integer), faceTags (vector of sizes), faceNodes (vector of
                        sizes)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getKeys
          Generate the pair of keys for the elements of type elementType in the entity of tag
          tag, for the functionSpaceType function space. Each pair (typeKey, entityKey)
          uniquely identifies a basis function in the function space. If returnCoord is set,
          the coord vector contains the x, y, z coordinates locating basis functions for sorting
          purposes. Warning: this is an experimental feature and will probably change in a
          future release.
            Input:      elementType (integer), functionSpaceType (string), tag = -1 (inte-
                        ger), returnCoord = True (boolean)
            Output:     typeKeys (vector of integers), entityKeys (vector of sizes), coord (vec-
                        tor of doubles)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getKeysForElement
          Get the pair of keys for a single element elementTag.
Chapter 6: Gmsh application programming interface                                           155
gmsh/model/mesh/setSize
          Set a mesh size constraint on the model entities dimTags, given as a vector of (dim,
          tag) pairs. Currently only entities of dimension 0 (points) are handled.
           Input:      dimTags (vector of pairs of integers), size (double)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t16.cpp, t18.cpp, t21.cpp), Python (t16.py, t18.py, t21.py,
                     adapt mesh.py, extend field.py, ...)
gmsh/model/mesh/getSizes
          Get the mesh size constraints (if any) associated with the model entities dimTags,
          given as a vector of (dim, tag) pairs. A zero entry in the output sizes vector
          indicates that no size constraint is specified on the corresponding entity.
           Input:      dimTags (vector of pairs of integers)
           Output:     sizes (vector of doubles)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/mesh/setSizeAtParametricPoints
          Set mesh size constraints at the given parametric points parametricCoord on the
          model entity of dimension dim and tag tag. Currently only entities of dimension 1
          (lines) are handled.
           Input:      dim (integer), tag (integer), parametricCoord (vector of doubles),
                       sizes (vector of doubles)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/mesh/setSizeCallback
          Set a mesh size callback for the current model. The callback function should take
          six arguments as input (dim, tag, x, y, z and lc). The first two integer arguments
          correspond to the dimension dim and tag tag of the entity being meshed. The next
          four double precision arguments correspond to the coordinates x, y and z around
          which to prescribe the mesh size and to the mesh size lc that would be prescribed
          if the callback had not been called. The callback function should return a double
          precision number specifying the desired mesh size; returning lc is equivalent to a
          no-op.
           Input:      callback ()
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
158                                                                                  Gmsh 4.11.1
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x2.cpp),        Python    (x2.py,    terrain.py,   terrain bspline.py,
                      terrain stl.py)
gmsh/model/mesh/setTransfiniteAutomatic
          Set transfinite meshing constraints on the model entities in dimTags, given as a
          vector of (dim, tag) pairs. Transfinite meshing constraints are added to the curves
          of the quadrangular surfaces and to the faces of 6-sided volumes. Quadragular
          faces with a corner angle superior to cornerAngle (in radians) are ignored. The
          number of points is automatically determined from the sizing constraints. If dimTag
          is empty, the constraints are applied to all entities in the model. If recombine is
          true, the recombine flag is automatically set on the transfinite surfaces.
            Input:      dimTags = [] (vector of pairs of integers), cornerAngle = 2.35 (dou-
                        ble), recombine = True (boolean)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x2.cpp, x6.cpp), Python (x2.py, x6.py)
gmsh/model/mesh/setRecombine
          Set a recombination meshing constraint on the model entity of dimension dim and tag
          tag. Currently only entities of dimension 2 (to recombine triangles into quadrangles)
          are supported; angle specifies the threshold angle for the simple recombination
          algorithm..
            Input:      dim (integer), tag (integer), angle = 45. (double)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t11.cpp, x2.cpp), Python (t11.py, x2.py, poisson.py, terrain.py,
                      terrain bspline.py, ...)
gmsh/model/mesh/setSmoothing
          Set a smoothing meshing constraint on the model entity of dimension dim and tag
          tag. val iterations of a Laplace smoother are applied.
            Input:      dim (integer), tag (integer), val (integer)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x2.cpp),        Python    (x2.py,    terrain.py,   terrain bspline.py,
                      terrain stl.py)
gmsh/model/mesh/setReverse
          Set a reverse meshing constraint on the model entity of dimension dim and tag tag.
          If val is true, the mesh orientation will be reversed with respect to the natural mesh
160                                                                                  Gmsh 4.11.1
            orientation (i.e. the orientation consistent with the orientation of the geometry). If
            val is false, the mesh is left as-is.
            Input:      dim (integer), tag (integer), val = True (boolean)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/setAlgorithm
          Set the meshing algorithm on the model entity of dimension dim and tag tag.
          Supported values are those of the Mesh.Algorithm option, as listed in the Gmsh
          reference manual. Currently only supported for dim == 2.
            Input:      dim (integer), tag (integer), val (integer)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t5.cpp), Python (t5.py)
gmsh/model/mesh/setSizeFromBoundary
          Force the mesh size to be extended from the boundary, or not, for the model entity
          of dimension dim and tag tag. Currently only supported for dim == 2.
            Input:      dim (integer), tag (integer), val (integer)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/setCompound
          Set a compound meshing constraint on the model entities of dimension dim and tags
          tags. During meshing, compound entities are treated as a single discrete entity,
          which is automatically reparametrized.
            Input:      dim (integer), tags (vector of integers)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t12.cpp), Python (t12.py)
gmsh/model/mesh/setOutwardOrientation
          Set meshing constraints on the bounding surfaces of the volume of tag tag so that all
          surfaces are oriented with outward pointing normals; and if a mesh already exists,
          reorient it. Currently only available with the OpenCASCADE kernel, as it relies on
          the STL triangulation.
            Input:      tag (integer)
Chapter 6: Gmsh application programming interface                                             161
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/removeConstraints
          Remove all meshing constraints from the model entities dimTags, given as a vector
          of (dim, tag) pairs. If dimTags is empty, remove all constraings.
            Input:      dimTags = [] (vector of pairs of integers)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (terrain bspline.py)
gmsh/model/mesh/embed
          Embed the model entities of dimension dim and tags tags in the (inDim, inTag)
          model entity. The dimension dim can 0, 1 or 2 and must be strictly smaller than
          inDim, which must be either 2 or 3. The embedded entities should not intersect each
          other or be part of the boundary of the entity inTag, whose mesh will conform to the
          mesh of the embedded entities. With the OpenCASCADE kernel, if the fragment
          operation is applied to entities of different dimensions, the lower dimensional entities
          will be automatically embedded in the higher dimensional entities if they are not on
          their boundary.
            Input:      dim (integer), tags (vector of integers), inDim (integer), inTag (integer)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t15.cpp), Python (t15.py)
gmsh/model/mesh/removeEmbedded
          Remove embedded entities from the model entities dimTags, given as a vector of
          (dim, tag) pairs. if dim is >= 0, only remove embedded entities of the given dimen-
          sion (e.g. embedded points if dim == 0).
            Input:      dimTags (vector of pairs of integers), dim = -1 (integer)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/getEmbedded
          Get the entities (if any) embedded in the model entity of dimension dim and tag
          tag.
            Input:      dim (integer), tag (integer)
            Output:     dimTags (vector of pairs of integers)
162                                                                                Gmsh 4.11.1
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/mesh/reorderElements
          Reorder the elements of type elementType classified on the entity of tag tag ac-
          cording to the ordering vector.
           Input:      elementType (integer), tag (integer), ordering (vector of sizes)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/mesh/renumberNodes
          Renumber the node tags in a continuous sequence.
           Input:      -
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (view renumbering.py)
gmsh/model/mesh/renumberElements
          Renumber the element tags in a continuous sequence.
           Input:      -
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (view renumbering.py)
gmsh/model/mesh/setPeriodic
          Set the meshes of the entities of dimension dim and tag tags as periodic copies
          of the meshes of entities tagsMaster, using the affine transformation specified in
          affineTransformation (16 entries of a 4x4 matrix, by row). If used after meshing,
          generate the periodic node correspondence information assuming the meshes of enti-
          ties tags effectively match the meshes of entities tagsMaster (useful for structured
          and extruded meshes). Currently only available for dim == 1 and dim == 2.
           Input:      dim (integer), tags (vector of integers), tagsMaster (vector of integers),
                       affineTransform (vector of doubles)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t18.cpp), Python (t18.py, periodic.py)
Chapter 6: Gmsh application programming interface                                       163
gmsh/model/mesh/getPeriodic
          Get master entities tagsMaster for the entities of dimension dim and tags tags.
           Input:      dim (integer), tags (vector of integers)
           Output:     tagMaster (vector of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/mesh/getPeriodicNodes
          Get the master entity tagMaster, the node tags nodeTags and their corresponding
          master node tags nodeTagsMaster, and the affine transform affineTransform for
          the entity of dimension dim and tag tag. If includeHighOrderNodes is set, include
          high-order nodes in the returned data.
           Input:      dim (integer),     tag   (integer),   includeHighOrderNodes = False
                       (boolean)
           Output:     tagMaster (integer), nodeTags (vector of sizes), nodeTagsMaster (vec-
                       tor of sizes), affineTransform (vector of doubles)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (periodic.py)
gmsh/model/mesh/getPeriodicKeys
          Get the master entity tagMaster and the key pairs (typeKeyMaster,
          entityKeyMaster) corresponding to the entity tag and the key pairs (typeKey,
          entityKey) for the elements of type elementType and function space type
          functionSpaceType. If returnCoord is set, the coord and coordMaster vectors
          contain the x, y, z coordinates locating basis functions for sorting purposes.
           Input:      elementType (integer), functionSpaceType (string), tag (integer),
                       returnCoord = True (boolean)
           Output:     tagMaster (integer), typeKeys (vector of integers), typeKeysMaster
                       (vector of integers), entityKeys (vector of sizes), entityKeysMaster
                       (vector of sizes), coord (vector of doubles), coordMaster (vector of
                       doubles)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (periodic.py)
gmsh/model/mesh/importStl
          Import the model STL representation (if available) as the current mesh.
           Input:      -
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
164                                                                               Gmsh 4.11.1
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/mesh/classifySurfaces
          Classify ("color") the surface mesh based on the angle threshold angle (in radi-
          ans), and create new discrete surfaces, curves and points accordingly. If boundary
          is set, also create discrete curves on the boundary if the surface is open. If
          forReparametrization is set, create curves and surfaces that can be reparametrized
          using a single map. If curveAngle is less than Pi, also force curves to be split ac-
          cording to curveAngle. If exportDiscrete is set, clear any built-in CAD kernel
          entities and export the discrete entities in the built-in CAD kernel.
           Input:      angle (double), boundary = True (boolean), forReparametrization =
                       False (boolean), curveAngle = pi (double), exportDiscrete = True
                       (boolean)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t13.cpp), Python (t13.py, aneurysm.py, glue and remesh stl.py,
                     remesh stl.py, terrain stl.py)
gmsh/model/mesh/createGeometry
          Create a geometry for the discrete entities dimTags (given as a vector of (dim, tag)
          pairs) represented solely by a mesh (without an underlying CAD description), i.e.
          create a parametrization for discrete curves and surfaces, assuming that each can
          be parametrized with a single map. If dimTags is empty, create a geometry for all
          the discrete entities.
           Input:      dimTags = [] (vector of pairs of integers)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t13.cpp, x2.cpp), Python (t13.py,             x2.py,   aneurysm.py,
                     glue and remesh stl.py, remesh stl.py, ...)
gmsh/model/mesh/createTopology
          Create a boundary representation from the mesh if the model does not have one (e.g.
          when imported from mesh file formats with no BRep representation of the underlying
          model). If makeSimplyConnected is set, enforce simply connected discrete surfaces
          and volumes. If exportDiscrete is set, clear any built-in CAD kernel entities and
          export the discrete entities in the built- in CAD kernel.
           Input:      makeSimplyConnected = True       (boolean),   exportDiscrete = True
                       (boolean)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
166                                                                              Gmsh 4.11.1
gmsh/model/mesh/addHomologyRequest
          Add a request to compute a basis representation for homology spaces (if type ==
          "Homology") or cohomology spaces (if type == "Cohomology"). The computation
          domain is given in a list of physical group tags domainTags; if empty, the whole
          mesh is the domain. The computation subdomain for relative (co)homology com-
          putation is given in a list of physical group tags subdomainTags; if empty, absolute
          (co)homology is computed. The dimensions of the (co)homology bases to be com-
          puted are given in the list dim; if empty, all bases are computed. Resulting basis
          representation (co)chains are stored as physical groups in the mesh. If the request
          is added before mesh generation, the computation will be performed at the end of
          the meshing pipeline.
           Input:      type = "Homology" (string), domainTags = [] (vector of integers),
                       subdomainTags = [] (vector of integers), dims = [] (vector of integers)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t14.cpp), Python (t14.py)
gmsh/model/mesh/clearHomologyRequests
          Clear all (co)homology computation requests.
           Input:      -
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/mesh/computeHomology
          Perform the (co)homology computations requested by addHomologyRequest(). The
          newly created physical groups are returned in dimTags as a vector of (dim, tag)
          pairs.
           Input:      -
           Output:     dimTags (vector of pairs of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/mesh/computeCrossField
          Compute a cross field for the current mesh. The function creates 3 views: the H
          function, the Theta function and cross directions. Return the tags of the views.
           Input:      -
           Output:     viewTags (vector of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
Chapter 6: Gmsh application programming interface                                           167
gmsh/model/mesh/triangulate
          Triangulate the points given in the coord vector as pairs of u, v coordinates, and
          return the node tags (with numbering starting at 1) of the resulting triangles in tri.
            Input:      coord (vector of doubles)
            Output:     tri (vector of sizes)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (raw triangulation.py)
gmsh/model/mesh/tetrahedralize
          Tetrahedralize the points given in the coord vector as x, y, z coordinates, concate-
          nated, and return the node tags (with numbering starting at 1) of the resulting
          tetrahedra in tetra.
            Input:      coord (vector of doubles)
            Output:     tetra (vector of sizes)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (raw tetrahedralization.py)
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/field/setNumbers
          Set the numerical list option option to value values for field tag.
Output: -
Return: -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/field/getNumbers
          Get the value of the numerical list option option for field tag.
Return: -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/mesh/field/setAsBackgroundMesh
          Set the field tag as the background mesh size field.
Output: -
Return: -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t7.cpp, t10.cpp, t11.cpp, t13.cpp, t17.cpp), Python (t7.py, t10.py,
                      t13.py, t17.py, adapt mesh.py, ...)
gmsh/model/mesh/field/setAsBoundaryLayer
          Set the field tag as a boundary layer size field.
Output: -
Return: -
            Language-specific definition:
                       C++, C, Python, Julia
            major axis point majorTag. If tag is positive, set the tag explicitly; otherwise a new
            tag is selected automatically. If (nx, ny, nz) != (0, 0, 0), explicitly set the plane of
            the circle arc. Return the tag of the ellipse arc.
            Input:      startTag (integer), centerTag (integer), majorTag (integer), endTag
                        (integer), tag = -1 (integer), nx = 0. (double), ny = 0. (double), nz =
                        0. (double)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/addSpline
          Add a spline (Catmull-Rom) curve in the built-in CAD representation, going
          through the points pointTags. If tag is positive, set the tag explicitly; other-
          wise a new tag is selected automatically. Create a periodic curve if the first and last
          points are the same. Return the tag of the spline curve.
            Input:      pointTags (vector of integers), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t12.cpp), Python (t12.py)
gmsh/model/geo/addBSpline
          Add a cubic b-spline curve in the built-in CAD representation, with pointTags
          control points. If tag is positive, set the tag explicitly; otherwise a new tag is
          selected automatically. Creates a periodic curve if the first and last points are the
          same. Return the tag of the b-spline curve.
            Input:      pointTags (vector of integers), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/addBezier
          Add a Bezier curve in the built-in CAD representation, with pointTags control
          points. If tag is positive, set the tag explicitly; otherwise a new tag is selected
          automatically. Return the tag of the Bezier curve.
            Input:      pointTags (vector of integers), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/addPolyline
          Add a polyline curve in the built-in CAD representation, going through the points
          pointTags. If tag is positive, set the tag explicitly; otherwise a new tag is selected
172                                                                                Gmsh 4.11.1
            automatically. Create a periodic curve if the first and last points are the same.
            Return the tag of the polyline curve.
            Input:      pointTags (vector of integers), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/addCompoundSpline
          Add a spline (Catmull-Rom) curve in the built-in CAD representation, going
          through points sampling the curves in curveTags. The density of sampling points
          on each curve is governed by numIntervals. If tag is positive, set the tag explicitly;
          otherwise a new tag is selected automatically. Return the tag of the spline.
            Input:      curveTags (vector of integers), numIntervals = 5 (integer), tag = -1
                        (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/addCompoundBSpline
          Add a b-spline curve in the built-in CAD representation, with control points sam-
          pling the curves in curveTags. The density of sampling points on each curve is
          governed by numIntervals. If tag is positive, set the tag explicitly; otherwise a
          new tag is selected automatically. Return the tag of the b-spline.
            Input:      curveTags (vector of integers), numIntervals = 20 (integer), tag = -1
                        (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/addCurveLoop
          Add a curve loop (a closed wire) in the built-in CAD representation, formed by
          the curves curveTags. curveTags should contain (signed) tags of model entities of
          dimension 1 forming a closed loop: a negative tag signifies that the underlying curve
          is considered with reversed orientation. If tag is positive, set the tag explicitly;
          otherwise a new tag is selected automatically. If reorient is set, automatically
          reorient the curves if necessary. Return the tag of the curve loop.
            Input:      curveTags (vector of integers), tag = -1 (integer), reorient = False
                        (boolean)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t1.cpp, t2.cpp, t3.cpp, t5.cpp, t6.cpp, ...), Python (t1.py, t2.py,
                      t3.py, t5.py, t6.py, ...)
Chapter 6: Gmsh application programming interface                                             173
gmsh/model/geo/addCurveLoops
          Add curve loops in the built-in CAD representation based on the curves curveTags.
          Return the tags of found curve loops, if any.
            Input:      curveTags (vector of integers)
            Output:     tags (vector of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (aneurysm.py, tube boundary layer.py)
gmsh/model/geo/addPlaneSurface
          Add a plane surface in the built-in CAD representation, defined by one or more
          curve loops wireTags. The first curve loop defines the exterior contour; additional
          curve loop define holes. If tag is positive, set the tag explicitly; otherwise a new tag
          is selected automatically. Return the tag of the surface.
            Input:      wireTags (vector of integers), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t1.cpp, t2.cpp, t3.cpp, t5.cpp, t6.cpp, ...), Python (t1.py, t2.py,
                      t3.py, t5.py, t6.py, ...)
gmsh/model/geo/addSurfaceFilling
          Add a surface in the built-in CAD representation, filling the curve loops in wireTags
          using transfinite interpolation. Currently only a single curve loop is supported; this
          curve loop should be composed by 3 or 4 curves only. If tag is positive, set the
          tag explicitly; otherwise a new tag is selected automatically. Return the tag of the
          surface.
            Input:      wireTags (vector of integers), tag = -1 (integer), sphereCenterTag =
                        -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t5.cpp, t12.cpp), Python (t5.py, t12.py)
gmsh/model/geo/addSurfaceLoop
          Add a surface loop (a closed shell) formed by surfaceTags in the built-in CAD
          representation. If tag is positive, set the tag explicitly; otherwise a new tag is
          selected automatically. Return the tag of the shell.
            Input:      surfaceTags (vector of integers), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
174                                                                                   Gmsh 4.11.1
            Examples: C++ (t2.cpp, t5.cpp, t13.cpp, x2.cpp), Python (t2.py, t5.py, t13.py,
                      x2.py, aneurysm.py, ...)
gmsh/model/geo/addVolume
          Add a volume (a region) in the built-in CAD representation, defined by one or more
          shells shellTags. The first surface loop defines the exterior boundary; additional
          surface loop define holes. If tag is positive, set the tag explicitly; otherwise a new
          tag is selected automatically. Return the tag of the volume.
            Input:       shellTags (vector of integers), tag = -1 (integer)
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t2.cpp, t5.cpp, t13.cpp, x2.cpp), Python (t2.py, t5.py, t13.py,
                      x2.py, aneurysm.py, ...)
gmsh/model/geo/addGeometry
          Add a geometry in the built-in CAD representation. geometry can currently be
          one of "Sphere" or "PolarSphere" (where numbers should contain the x, y, z co-
          ordinates of the center, followed by the radius), or "Parametric" (where strings
          should contains three expression evaluating to the x, y and z coordinates. If tag
          is positive, set the tag of the geometry explicitly; otherwise a new tag is selected
          automatically. Return the tag of the geometry.
            Input:       geometry (string), numbers = [] (vector of doubles), strings = []
                         (vector of strings), tag = -1 (integer)
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (ocean.py)
gmsh/model/geo/addPointOnGeometry
          Add a point in the built-in CAD representation, at coordinates (x, y, z) on the
          geometry geometryTag. If meshSize is > 0, add a meshing constraint at that point.
          If tag is positive, set the tag explicitly; otherwise a new tag is selected automatically.
          Return the tag of the point. For surface geometries, only the x and y coordinates
          are used.
            Input:       geometryTag (integer), x (double), y (double), z = 0. (double),
                         meshSize = 0. (double), tag = -1 (integer)
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (ocean.py)
gmsh/model/geo/extrude
          Extrude the entities dimTags (given as a vector of (dim, tag) pairs) in the built-
          in CAD representation, using a translation along (dx, dy, dz). Return extruded
Chapter 6: Gmsh application programming interface                                             175
            entities in outDimTags. If the numElements vector is not empty, also extrude the
            mesh: the entries in numElements give the number of elements in each layer. If
            the height vector is not empty, it provides the (cumulative) height of the different
            layers, normalized to 1. If recombine is set, recombine the mesh in the layers.
            Input:      dimTags (vector of pairs of integers), dx (double), dy (double), dz (dou-
                        ble), numElements = [] (vector of integers), heights = [] (vector of
                        doubles), recombine = False (boolean)
            Output:     outDimTags (vector of pairs of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t2.cpp, t3.cpp, t14.cpp, t15.cpp), Python (t2.py, t3.py, t14.py,
                      t15.py, hex.py)
gmsh/model/geo/revolve
          Extrude the entities dimTags (given as a vector of (dim, tag) pairs) in the built-in
          CAD representation, using a rotation of angle radians around the axis of revo-
          lution defined by the point (x, y, z) and the direction (ax, ay, az). The angle
          should be strictly smaller than Pi. Return extruded entities in outDimTags. If the
          numElements vector is not empty, also extrude the mesh: the entries in numElements
          give the number of elements in each layer. If the height vector is not empty, it pro-
          vides the (cumulative) height of the different layers, normalized to 1. If recombine
          is set, recombine the mesh in the layers.
            Input:      dimTags (vector of pairs of integers), x (double), y (double), z (double),
                        ax (double), ay (double), az (double), angle (double), numElements =
                        [] (vector of integers), heights = [] (vector of doubles), recombine =
                        False (boolean)
            Output:     outDimTags (vector of pairs of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t3.cpp), Python (t3.py)
gmsh/model/geo/twist
          Extrude the entities dimTags (given as a vector of (dim, tag) pairs) in the built-in
          CAD representation, using a combined translation and rotation of angle radians,
          along (dx, dy, dz) and around the axis of revolution defined by the point (x, y,
          z) and the direction (ax, ay, az). The angle should be strictly smaller than Pi.
          Return extruded entities in outDimTags. If the numElements vector is not empty,
          also extrude the mesh: the entries in numElements give the number of elements in
          each layer. If the height vector is not empty, it provides the (cumulative) height
          of the different layers, normalized to 1. If recombine is set, recombine the mesh in
          the layers.
            Input:      dimTags (vector of pairs of integers), x (double), y (double), z (double),
                        dx (double), dy (double), dz (double), ax (double), ay (double), az (dou-
                        ble), angle (double), numElements = [] (vector of integers), heights =
                        [] (vector of doubles), recombine = False (boolean)
            Output:     outDimTags (vector of pairs of integers)
176                                                                                 Gmsh 4.11.1
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t3.cpp), Python (t3.py)
gmsh/model/geo/extrudeBoundaryLayer
          Extrude the entities dimTags (given as a vector of (dim, tag) pairs) in the built-in
          CAD representation along the normals of the mesh, creating discrete boundary layer
          entities. Return extruded entities in outDimTags. The entries in numElements give
          the number of elements in each layer. If the height vector is not empty, it provides
          the (cumulative) height of the different layers. If recombine is set, recombine the
          mesh in the layers. A second boundary layer can be created from the same entities
          if second is set. If viewIndex is >= 0, use the corresponding view to either specify
          the normals (if the view contains a vector field) or scale the normals (if the view is
          scalar).
            Input:      dimTags (vector of pairs of integers), numElements = [1] (vector of inte-
                        gers), heights = [] (vector of doubles), recombine = False (boolean),
                        second = False (boolean), viewIndex = -1 (integer)
            Output:     outDimTags (vector of pairs of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python         (aneurysm.py,           naca boundary layer 2d.py,
                      naca boundary layer 3d.py, tube boundary layer.py)
gmsh/model/geo/translate
          Translate the entities dimTags (given as a vector of (dim, tag) pairs) in the built-in
          CAD representation along (dx, dy, dz).
            Input:      dimTags (vector of pairs of integers), dx (double), dy (double), dz (dou-
                        ble)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t2.cpp), Python (t2.py)
gmsh/model/geo/rotate
          Rotate the entities dimTags (given as a vector of (dim, tag) pairs) in the built-in
          CAD representation by angle radians around the axis of revolution defined by the
          point (x, y, z) and the direction (ax, ay, az).
            Input:      dimTags (vector of pairs of integers), x (double), y (double), z (double),
                        ax (double), ay (double), az (double), angle (double)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
Chapter 6: Gmsh application programming interface                                             177
gmsh/model/geo/remove
          Remove the entities dimTags (given as a vector of (dim, tag) pairs) in the built-
          in CAD representation, provided that they are not on the boundary of higher-
          dimensional entities. If recursive is true, remove all the entities on their bound-
          aries, down to dimension 0.
            Input:      dimTags (vector of pairs of integers), recursive = False (boolean)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t6.cpp), Python (t6.py)
gmsh/model/geo/removeAllDuplicates
          Remove all duplicate entities in the built-in CAD representation (different entities
          at the same geometrical location).
            Input:      -
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/splitCurve
          Split the curve of tag tag in the built-in CAD representation, on the specified control
          points pointTags. This feature is only available for lines, splines and b-splines.
          Return the tag(s) curveTags of the newly created curve(s).
            Input:      tag (integer), pointTags (vector of integers)
            Output:     curveTags (vector of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/getMaxTag
          Get the maximum tag of entities of dimension dim in the built-in CAD representa-
          tion.
            Input:      dim (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/setMaxTag
          Set the maximum tag maxTag for entities of dimension dim in the built-in CAD
          representation.
            Input:      dim (integer), maxTag (integer)
            Output:     -
Chapter 6: Gmsh application programming interface                                          179
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/addPhysicalGroup
          Add a physical group of dimension dim, grouping the entities with tags tags in the
          built-in CAD representation. Return the tag of the physical group, equal to tag if
          tag is positive, or a new tag if tag < 0. Set the name of the physical group if name
          is not empty.
            Input:      dim (integer), tags (vector of integers), tag = -1 (integer), name = ""
                        (string)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t5.cpp), Python (t5.py)
gmsh/model/geo/removePhysicalGroups
          Remove the physical groups dimTags (given as a vector of (dim, tag) pairs) from
          the built-in CAD representation. If dimTags is empty, remove all groups.
            Input:      dimTags = [] (vector of pairs of integers)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/synchronize
          Synchronize the built-in CAD representation with the current Gmsh model. This
          can be called at any time, but since it involves a non trivial amount of processing,
          the number of synchronization points should normally be minimized. Without syn-
          chronization the entities in the built-in CAD representation are not available to any
          function outside of the built-in CAD kernel functions.
            Input:      -
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t1.cpp, t2.cpp, t3.cpp, t5.cpp, t6.cpp, ...), Python (t1.py, t2.py,
                      t3.py, t5.py, t6.py, ...)
gmsh/model/geo/mesh/setRecombine
          Set a recombination meshing constraint on the entity of dimension dim and tag tag
          in the built-in CAD kernel representation. Currently only entities of dimension 2 (to
          recombine triangles into quadrangles) are supported; angle specifies the threshold
          angle for the simple recombination algorithm.
            Input:      dim (integer), tag (integer), angle = 45. (double)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t6.cpp), Python (t6.py)
gmsh/model/geo/mesh/setSmoothing
          Set a smoothing meshing constraint on the entity of dimension dim and tag tag in
          the built-in CAD kernel representation. val iterations of a Laplace smoother are
          applied.
            Input:      dim (integer), tag (integer), val (integer)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/mesh/setReverse
          Set a reverse meshing constraint on the entity of dimension dim and tag tag in
          the built-in CAD kernel representation. If val is true, the mesh orientation will be
          reversed with respect to the natural mesh orientation (i.e. the orientation consistent
          with the orientation of the geometry). If val is false, the mesh is left as-is.
            Input:      dim (integer), tag (integer), val = True (boolean)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/mesh/setAlgorithm
          Set the meshing algorithm on the entity of dimension dim and tag tag in the built-in
          CAD kernel representation. Currently only supported for dim == 2.
            Input:      dim (integer), tag (integer), val (integer)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/geo/mesh/setSizeFromBoundary
          Force the mesh size to be extended from the boundary, or not, for the entity of
          dimension dim and tag tag in the built-in CAD kernel representation. Currently
          only supported for dim == 2.
182                                                                                 Gmsh 4.11.1
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (naca boundary layer 2d.py, naca boundary layer 3d.py)
gmsh/model/occ/addCircle
          Add a circle of center (x, y, z) and radius r in the OpenCASCADE CAD repre-
          sentation. If tag is positive, set the tag explicitly; otherwise a new tag is selected
          automatically. If angle1 and angle2 are specified, create a circle arc between the
          two angles. If a vector zAxis of size 3 is provided, use it as the normal to the circle
          plane (z-axis). If a vector xAxis of size 3 is provided in addition to zAxis, use it to
          define the x-axis. Return the tag of the circle.
            Input:      x (double), y (double), z (double), r (double), tag = -1 (integer),
                        angle1 = 0. (double), angle2 = 2*pi (double), zAxis = [] (vector of
                        doubles), xAxis = [] (vector of doubles)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t19.cpp),        Python (t19.py,       bspline bezier trimmed.py,
                      closest point.py, prim axis.py, trimmed.py)
gmsh/model/occ/addEllipseArc
          Add an ellipse arc in the OpenCASCADE CAD representation, between the two
          points startTag and endTag, and with center centerTag and major axis point
          majorTag. If tag is positive, set the tag explicitly; otherwise a new tag is selected
          automatically. Return the tag of the ellipse arc. Note that OpenCASCADE does
          not allow creating ellipse arcs with the major radius smaller than the minor radius.
            Input:      startTag (integer), centerTag (integer), majorTag (integer), endTag
                        (integer), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/occ/addEllipse
          Add an ellipse of center (x, y, z) and radii r1 and r2 (with r1 >= r2) along the
          x- and y-axes, respectively, in the OpenCASCADE CAD representation. If tag is
          positive, set the tag explicitly; otherwise a new tag is selected automatically. If
          angle1 and angle2 are specified, create an ellipse arc between the two angles. If a
          vector zAxis of size 3 is provided, use it as the normal to the ellipse plane (z-axis).
          If a vector xAxis of size 3 is provided in addition to zAxis, use it to define the
          x-axis. Return the tag of the ellipse.
            Input:      x (double), y (double), z (double), r1 (double), r2 (double), tag = -1
                        (integer), angle1 = 0. (double), angle2 = 2*pi (double), zAxis = []
                        (vector of doubles), xAxis = [] (vector of doubles)
            Output:     -
            Return:     integer
184                                                                                 Gmsh 4.11.1
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (prim axis.py)
gmsh/model/occ/addSpline
          Add a spline (C2 b-spline) curve in the OpenCASCADE CAD representation, going
          through the points pointTags. If tag is positive, set the tag explicitly; otherwise a
          new tag is selected automatically. Create a periodic curve if the first and last points
          are the same. Return the tag of the spline curve. If the tangents vector contains 6
          entries, use them as concatenated x, y, z components of the initial and final tangents
          of the b-spline; if it contains 3 times as many entries as the number of points, use
          them as concatenated x, y, z components of the tangents at each point, unless the
          norm of the tangent is zero.
            Input:      pointTags (vector of integers), tag = -1 (integer), tangents = [] (vec-
                        tor of doubles)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t19.cpp),     Python (t19.py,        naca boundary layer 2d.py,
                      naca boundary layer 3d.py, pipe.py, spline.py, ...)
gmsh/model/occ/addBSpline
          Add a b-spline curve of degree degree in the OpenCASCADE CAD representation,
          with pointTags control points. If weights, knots or multiplicities are not
          provided, default parameters are computed automatically. If tag is positive, set the
          tag explicitly; otherwise a new tag is selected automatically. Create a periodic curve
          if the first and last points are the same. Return the tag of the b-spline curve.
            Input:      pointTags (vector of integers), tag = -1 (integer), degree = 3 (inte-
                        ger), weights = [] (vector of doubles), knots = [] (vector of doubles),
                        multiplicities = [] (vector of integers)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (bspline filling.py, spline.py)
gmsh/model/occ/addBezier
          Add a Bezier curve in the OpenCASCADE CAD representation, with pointTags
          control points. If tag is positive, set the tag explicitly; otherwise a new tag is
          selected automatically. Return the tag of the Bezier curve.
            Input:      pointTags (vector of integers), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (spline.py)
Chapter 6: Gmsh application programming interface                                              185
gmsh/model/occ/addWire
          Add a wire (open or closed) in the OpenCASCADE CAD representation, formed
          by the curves curveTags. Note that an OpenCASCADE wire can be made of
          curves that share geometrically identical (but topologically different) points. If tag
          is positive, set the tag explicitly; otherwise a new tag is selected automatically.
          Return the tag of the wire.
            Input:       curveTags (vector of integers), tag = -1 (integer), checkClosed =
                         False (boolean)
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t19.cpp),         Python (t19.py,          bspline bezier trimmed.py,
                      bspline filling.py, pipe.py, trimmed.py)
gmsh/model/occ/addCurveLoop
          Add a curve loop (a closed wire) in the OpenCASCADE CAD representation, formed
          by the curves curveTags. curveTags should contain tags of curves forming a closed
          loop. Negative tags can be specified for compatibility with the built-in kernel, but
          are simply ignored: the wire is oriented according to the orientation of its first
          curve. Note that an OpenCASCADE curve loop can be made of curves that share
          geometrically identical (but topologically different) points. If tag is positive, set the
          tag explicitly; otherwise a new tag is selected automatically. Return the tag of the
          curve loop.
            Input:       curveTags (vector of integers), tag = -1 (integer)
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t19.cpp),        Python (t19.py,          naca boundary layer 2d.py,
                      stl to brep.py, surface filling.py)
gmsh/model/occ/addRectangle
          Add a rectangle in the OpenCASCADE CAD representation, with lower left corner
          at (x, y, z) and upper right corner at (x + dx, y + dy, z). If tag is positive, set the
          tag explicitly; otherwise a new tag is selected automatically. Round the corners if
          roundedRadius is nonzero. Return the tag of the rectangle.
            Input:       x (double), y (double), z (double), dx (double), dy (double), tag = -1
                         (integer), roundedRadius = 0. (double)
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t17.cpp, t20.cpp, t21.cpp, x6.cpp), Python (t17.py, t20.py, t21.py,
                      x6.py, adapt mesh.py, ...)
186                                                                                Gmsh 4.11.1
gmsh/model/occ/addDisk
          Add a disk in the OpenCASCADE CAD representation, with center (xc, yc, zc) and
          radius rx along the x-axis and ry along the y-axis (rx >= ry). If tag is positive, set
          the tag explicitly; otherwise a new tag is selected automatically. If a vector zAxis
          of size 3 is provided, use it as the normal to the disk (z-axis). If a vector xAxis of
          size 3 is provided in addition to zAxis, use it to define the x-axis. Return the tag
          of the disk.
            Input:      xc (double), yc (double), zc (double), rx (double), ry (double), tag
                        = -1 (integer), zAxis = [] (vector of doubles), xAxis = [] (vector of
                        doubles)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t19.cpp), Python (t19.py, pipe.py, poisson.py, prim axis.py)
gmsh/model/occ/addPlaneSurface
          Add a plane surface in the OpenCASCADE CAD representation, defined by one
          or more curve loops (or closed wires) wireTags. The first curve loop defines the
          exterior contour; additional curve loop define holes. If tag is positive, set the tag
          explicitly; otherwise a new tag is selected automatically. Return the tag of the
          surface.
            Input:      wireTags (vector of integers), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (naca boundary layer 2d.py, stl to brep.py)
gmsh/model/occ/addSurfaceFilling
          Add a surface in the OpenCASCADE CAD representation, filling the curve loop
          wireTag. If tag is positive, set the tag explicitly; otherwise a new tag is selected
          automatically. Return the tag of the surface. If pointTags are provided, force the
          surface to pass through the given points. The other optional arguments are degree
          (the degree of the energy criterion to minimize for computing the deformation of the
          surface), numPointsOnCurves (the average number of points for discretisation of the
          bounding curves), numIter (the maximum number of iterations of the optimization
          process), anisotropic (improve performance when the ratio of the length along
          the two parametric coordinates of the surface is high), tol2d (tolerance to the
          constraints in the parametric plane of the surface), tol3d (the maximum distance
          allowed between the support surface and the constraints), tolAng (the maximum
          angle allowed between the normal of the surface and the constraints), tolCurv (the
          maximum difference of curvature allowed between the surface and the constraint),
          maxDegree (the highest degree which the polynomial defining the filling surface can
          have) and, maxSegments (the largest number of segments which the filling surface
          can have).
            Input:      wireTag (integer), tag = -1 (integer), pointTags = [] (vector of
                        integers), degree = 3 (integer), numPointsOnCurves = 15 (integer),
Chapter 6: Gmsh application programming interface                                               187
            tag is selected automatically. Return the tag of the surface loop. Setting sewing
            allows one to build a shell made of surfaces that share geometrically identical (but
            topologically different) curves.
            Input:      surfaceTags (vector of integers), tag = -1 (integer), sewing = False
                        (boolean)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (stl to brep.py)
gmsh/model/occ/addVolume
          Add a volume (a region) in the OpenCASCADE CAD representation, defined by one
          or more surface loops shellTags. The first surface loop defines the exterior bound-
          ary; additional surface loop define holes. If tag is positive, set the tag explicitly;
          otherwise a new tag is selected automatically. Return the tag of the volume.
            Input:      shellTags (vector of integers), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (stl to brep.py)
gmsh/model/occ/addSphere
          Add a sphere of center (xc, yc, zc) and radius r in the OpenCASCADE CAD
          representation. The optional angle1 and angle2 arguments define the polar angle
          opening (from -Pi/2 to Pi/2). The optional angle3 argument defines the azimuthal
          opening (from 0 to 2*Pi). If tag is positive, set the tag explicitly; otherwise a new
          tag is selected automatically. Return the tag of the sphere.
            Input:      xc (double), yc (double), zc (double), radius (double), tag = -1 (inte-
                        ger), angle1 = -pi/2 (double), angle2 = pi/2 (double), angle3 = 2*pi
                        (double)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t16.cpp, t18.cpp, x5.cpp), Python (t16.py, t18.py, x5.py,
                      boolean.py, extend field.py, ...)
gmsh/model/occ/addBox
          Add a parallelepipedic box in the OpenCASCADE CAD representation, defined by
          a point (x, y, z) and the extents along the x-, y- and z-axes. If tag is positive, set
          the tag explicitly; otherwise a new tag is selected automatically. Return the tag of
          the box.
            Input:      x (double), y (double), z (double), dx (double), dy (double), dz (double),
                        tag = -1 (integer)
190                                                                                   Gmsh 4.11.1
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t16.cpp, t18.cpp, x4.cpp, x5.cpp, x7.cpp), Python (t16.py, t18.py,
                      x4.py, x5.py, x7.py, ...)
gmsh/model/occ/addCylinder
          Add a cylinder in the OpenCASCADE CAD representation, defined by the center
          (x, y, z) of its first circular face, the 3 components (dx, dy, dz) of the vector defining
          its axis and its radius r. The optional angle argument defines the angular opening
          (from 0 to 2*Pi). If tag is positive, set the tag explicitly; otherwise a new tag is
          selected automatically. Return the tag of the cylinder.
            Input:       x (double), y (double), z (double), dx (double), dy (double), dz (double),
                         r (double), tag = -1 (integer), angle = 2*pi (double)
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (boolean.py, gui.py, tube boundary layer.py)
gmsh/model/occ/addCone
          Add a cone in the OpenCASCADE CAD representation, defined by the center (x,
          y, z) of its first circular face, the 3 components of the vector (dx, dy, dz) defining
          its axis and the two radii r1 and r2 of the faces (these radii can be zero). If tag is
          positive, set the tag explicitly; otherwise a new tag is selected automatically. angle
          defines the optional angular opening (from 0 to 2*Pi). Return the tag of the cone.
            Input:       x (double), y (double), z (double), dx (double), dy (double), dz (double),
                         r1 (double), r2 (double), tag = -1 (integer), angle = 2*pi (double)
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/model/occ/addWedge
          Add a right angular wedge in the OpenCASCADE CAD representation, defined by
          the right-angle point (x, y, z) and the 3 extends along the x-, y- and z-axes (dx,
          dy, dz). If tag is positive, set the tag explicitly; otherwise a new tag is selected
          automatically. The optional argument ltx defines the top extent along the x-axis.
          If a vector zAxis of size 3 is provided, use it to define the z-axis. Return the tag of
          the wedge.
            Input:       x (double), y (double), z (double), dx (double), dy (double), dz (double),
                         tag = -1 (integer), ltx = 0. (double), zAxis = [] (vector of doubles)
            Output:      -
            Return:      integer
            Language-specific definition:
                       C++, C, Python, Julia
Chapter 6: Gmsh application programming interface                                            191
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/occ/extrude
          Extrude the entities dimTags (given as a vector of (dim, tag) pairs) in the Open-
          CASCADE CAD representation, using a translation along (dx, dy, dz). Return
          extruded entities in outDimTags. If the numElements vector is not empty, also ex-
          trude the mesh: the entries in numElements give the number of elements in each
          layer. If the height vector is not empty, it provides the (cumulative) height of the
          different layers, normalized to 1. If recombine is set, recombine the mesh in the
          layers.
           Input:      dimTags (vector of pairs of integers), dx (double), dy (double), dz (dou-
                       ble), numElements = [] (vector of integers), heights = [] (vector of
                       doubles), recombine = False (boolean)
           Output:     outDimTags (vector of pairs of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (naca boundary layer 3d.py)
gmsh/model/occ/revolve
          Extrude the entities dimTags (given as a vector of (dim, tag) pairs) in the Open-
          CASCADE CAD representation, using a rotation of angle radians around the axis
          of revolution defined by the point (x, y, z) and the direction (ax, ay, az). Return
          extruded entities in outDimTags. If the numElements vector is not empty, also ex-
          trude the mesh: the entries in numElements give the number of elements in each
          layer. If the height vector is not empty, it provides the (cumulative) height of the
          different layers, normalized to 1. When the mesh is extruded the angle should be
          strictly smaller than 2*Pi. If recombine is set, recombine the mesh in the layers.
           Input:      dimTags (vector of pairs of integers), x (double), y (double), z (double),
                       ax (double), ay (double), az (double), angle (double), numElements =
                       [] (vector of integers), heights = [] (vector of doubles), recombine =
                       False (boolean)
           Output:     outDimTags (vector of pairs of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (naca boundary layer 3d.py)
gmsh/model/occ/addPipe
          Add a pipe in the OpenCASCADE CAD representation, by extruding the entities
          dimTags (given as a vector of (dim, tag) pairs) along the wire wireTag. The type of
          sweep can be specified with trihedron (possible values: "DiscreteTrihedron", "Cor-
          rectedFrenet", "Fixed", "Frenet", "ConstantNormal", "Darboux", "GuideAC",
          "GuidePlan", "GuideACWithContact", "GuidePlanWithContact"). If trihedron
          is not provided, "DiscreteTrihedron" is assumed. Return the pipe in outDimTags.
           Input:      dimTags (vector of pairs of integers), wireTag (integer), trihedron =
                       "" (string)
Chapter 6: Gmsh application programming interface                                           193
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++    (x5.cpp),     Python           (x5.py,      boolean.py,       gui.py,
                      tube boundary layer.py)
gmsh/model/occ/intersect
          Compute the boolean intersection (the common parts) of the entities objectDimTags
          and toolDimTags (vectors of (dim, tag) pairs) in the OpenCASCADE CAD rep-
          resentation. Return the resulting entities in outDimTags. If tag is positive, try to
          set the tag explicitly (only valid if the boolean operation results in a single entity).
          Remove the object if removeObject is set. Remove the tool if removeTool is set.
            Input:      objectDimTags (vector of pairs of integers), toolDimTags (vector of
                        pairs of integers), tag = -1 (integer), removeObject = True (boolean),
                        removeTool = True (boolean)
            Output:     outDimTags (vector of pairs of integers), outDimTagsMap (vector of vec-
                        tors of pairs of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (boolean.py, gui.py)
gmsh/model/occ/cut
          Compute the boolean difference between the entities objectDimTags and
          toolDimTags (given as vectors of (dim, tag) pairs) in the OpenCASCADE CAD
          representation. Return the resulting entities in outDimTags. If tag is positive,
          try to set the tag explicitly (only valid if the boolean operation results in a single
          entity). Remove the object if removeObject is set. Remove the tool if removeTool
          is set.
            Input:      objectDimTags (vector of pairs of integers), toolDimTags (vector of
                        pairs of integers), tag = -1 (integer), removeObject = True (boolean),
                        removeTool = True (boolean)
            Output:     outDimTags (vector of pairs of integers), outDimTagsMap (vector of vec-
                        tors of pairs of integers)
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t16.cpp), Python (t16.py, boolean.py, extend field.py, gui.py,
                      spherical surf.py)
gmsh/model/occ/fragment
          Compute the boolean fragments (general fuse) resulting from the intersection of the
          entities objectDimTags and toolDimTags (given as vectors of (dim, tag) pairs) in
          the OpenCASCADE CAD representation, making all iterfaces conformal. When
          applied to entities of different dimensions, the lower dimensional entities will be
          automatically embedded in the higher dimensional entities if they are not on their
          boundary. Return the resulting entities in outDimTags. If tag is positive, try to
          set the tag explicitly (only valid if the boolean operation results in a single entity).
          Remove the object if removeObject is set. Remove the tool if removeTool is set.
Chapter 6: Gmsh application programming interface                                            195
gmsh/model/occ/mirror
          Mirror the entities dimTags (given as a vector of (dim, tag) pairs) in the OpenCAS-
          CADE CAD representation, with respect to the plane of equation a * x + b * y + c
          * z + d = 0.
           Input:      dimTags (vector of pairs of integers), a (double), b (double), c (double),
                       d (double)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/occ/symmetrize
          Mirror the entities dimTags (given as a vector of (dim, tag) pairs) in the OpenCAS-
          CADE CAD representation, with respect to the plane of equation a * x + b * y + c
          * z + d = 0. (This is a deprecated synonym for mirror.)
           Input:      dimTags (vector of pairs of integers), a (double), b (double), c (double),
                       d (double)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/occ/affineTransform
          Apply a general affine transformation matrix affineTransform (16 entries of a 4x4
          matrix, by row; only the 12 first can be provided for convenience) to the entities
          dimTags (given as a vector of (dim, tag) pairs) in the OpenCASCADE CAD repre-
          sentation.
           Input:      dimTags (vector of pairs of integers), affineTransform (vector of dou-
                       bles)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/occ/copy
          Copy the entities dimTags in the OpenCASCADE CAD representation; the new
          entities are returned in outDimTags.
           Input:      dimTags (vector of pairs of integers)
           Output:     outDimTags (vector of pairs of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t19.cpp, t20.cpp), Python (t19.py, t20.py)
gmsh/model/occ/remove
          Remove the entities dimTags (given as a vector of (dim, tag) pairs) in the Open-
          CASCADE CAD representation, provided that they are not on the boundary of
Chapter 6: Gmsh application programming interface                                          197
           of (dim, tag) pairs. If the optional argument highestDimOnly is set, only import
           the highest dimensional entities in the file. The optional argument format can be
           used to force the format of the file (currently "brep", "step" or "iges").
           Input:      fileName (string), highestDimOnly = True (boolean), format = ""
                       (string)
           Output:     outDimTags (vector of pairs of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t20.cpp), Python (t20.py)
gmsh/model/occ/importShapesNativePointer
          Imports an OpenCASCADE shape by providing a pointer to a native OpenCAS-
          CADE TopoDS_Shape object (passed as a pointer to void). The imported entities
          are returned in outDimTags as a vector of (dim, tag) pairs. If the optional argu-
          ment highestDimOnly is set, only import the highest dimensional entities in shape.
          In Python, this function can be used for integration with PythonOCC, in which
          the SwigPyObject pointer of TopoDS_Shape must be passed as an int to shape,
          i.e., shape = int(pythonocc_shape.this). Warning: this function is unsafe, as
          providing an invalid pointer will lead to undefined behavior.
           Input:      shape (pointer), highestDimOnly = True (boolean)
           Output:     outDimTags (vector of pairs of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/occ/getEntities
          Get all the OpenCASCADE entities. If dim is >= 0, return only the entities of the
          specified dimension (e.g. points if dim == 0). The entities are returned as a vector
          of (dim, tag) pairs.
           Input:      dim = -1 (integer)
           Output:     dimTags (vector of pairs of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++    (t20.cpp),   Python     (t20.py,  bspline bezier patches.py,
                     naca boundary layer 3d.py, tube boundary layer.py)
gmsh/model/occ/getEntitiesInBoundingBox
          Get the OpenCASCADE entities in the bounding box defined by the two points
          (xmin, ymin, zmin) and (xmax, ymax, zmax). If dim is >= 0, return only the entities
          of the specified dimension (e.g. points if dim == 0).
           Input:      xmin (double), ymin (double), zmin (double), xmax (double), ymax (dou-
                       ble), zmax (double), dim = -1 (integer)
           Output:     dimTags (vector of pairs of integers)
           Return:     -
Chapter 6: Gmsh application programming interface                                        199
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/occ/getBoundingBox
          Get the bounding box (xmin, ymin, zmin), (xmax, ymax, zmax) of the OpenCAS-
          CADE entity of dimension dim and tag tag.
           Input:      dim (integer), tag (integer)
           Output:     xmin (double), ymin (double), zmin (double), xmax (double), ymax (dou-
                       ble), zmax (double)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t20.cpp), Python (t20.py, naca boundary layer 3d.py)
gmsh/model/occ/getCurveLoops
          Get the tags curveLoopTags of the curve loops making up the surface of tag
          surfaceTag, as well as the tags curveTags of the curves making up each curve
          loop.
           Input:      surfaceTag (integer)
           Output:     curveLoopTags (vector of integers), curveTags (vector of vectors of
                       integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/occ/getSurfaceLoops
          Get the tags surfaceLoopTags of the surface loops making up the volume of tag
          volumeTag, as well as the tags surfaceTags of the surfaces making up each surface
          loop.
           Input:      volumeTag (integer)
           Output:     surfaceLoopTags (vector of integers), surfaceTags (vector of vectors
                       of integers)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/model/occ/getMass
          Get the mass of the OpenCASCADE entity of dimension dim and tag tag.
           Input:      dim (integer), tag (integer)
           Output:     mass (double)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (step assembly.py, volume.py)
gmsh/model/occ/getCenterOfMass
          Get the center of mass of the OpenCASCADE entity of dimension dim and tag tag.
200                                                                            Gmsh 4.11.1
gmsh/view/getTags
          Get the tags of all views.
            Input:       -
            Output:      tags (vector of integers)
            Return:      -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t8.cpp, t9.cpp), Python (t8.py, t9.py, plugin.py)
gmsh/view/addModelData
          Add model-based post-processing data to the view with tag tag. modelName iden-
          tifies the model the data is attached to. dataType specifies the type of data, cur-
          rently either "NodeData", "ElementData" or "ElementNodeData". step specifies
          the identifier (>= 0) of the data in a sequence. tags gives the tags of the nodes or
          elements in the mesh to which the data is associated. data is a vector of the same
          length as tags: each entry is the vector of double precision numbers representing the
          data associated with the corresponding tag. The optional time argument associate
          a time value with the data. numComponents gives the number of data components
          (1 for scalar data, 3 for vector data, etc.) per entity; if negative, it is automatically
          inferred (when possible) from the input data. partition allows one to specify data
          in several sub-sets.
            Input:       tag (integer), step (integer), modelName (string), dataType (string),
                         tags (vector of sizes), data (vector of vectors of doubles), time = 0.
                         (double), numComponents = -1 (integer), partition = 0 (integer)
            Output:      -
            Return:      -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (adapt mesh.py, plugin.py, poisson.py, view.py)
gmsh/view/addHomogeneousModelData
          Add homogeneous model-based post-processing data to the view with tag tag. The
          arguments have the same meaning as in addModelData, except that data is supposed
          to be homogeneous and is thus flattened in a single vector. For data types that can
          lead to different data sizes per tag (like "ElementNodeData"), the data should be
          padded.
            Input:       tag (integer), step (integer), modelName (string), dataType (string),
                         tags (vector of sizes), data (vector of doubles), time = 0. (double),
                         numComponents = -1 (integer), partition = 0 (integer)
            Output:      -
            Return:      -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x4.cpp), Python (x4.py, copy mesh.py, view renumbering.py)
gmsh/view/getModelData
          Get model-based post-processing data from the view with tag tag at step step.
          Return the data associated to the nodes or the elements with tags tags, as well as
          the dataType and the number of components numComponents.
Chapter 6: Gmsh application programming interface                                            203
            Return:      -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (plugin.py, volume.py)
gmsh/view/addListDataString
          Add a string to a list-based post-processing view with tag tag. If coord contains
          3 coordinates the string is positioned in the 3D model space ("3D string");
          if it contains 2 coordinates it is positioned in the 2D graphics viewport ("2D
          string"). data contains one or more (for multistep views) strings. style
          contains key-value pairs of styling parameters, concatenated. Available keys
          are "Font" (possible values: "Times-Roman", "Times- Bold", "Times-Italic",
          "Times-BoldItalic",     "Helvetica",    "Helvetica-Bold",    "Helvetica-Oblique",
          "Helvetica-BoldOblique",     "Courier",     "Courier-Bold",    "Courier-Oblique",
          "Courier-BoldOblique", "Symbol", "ZapfDingbats", "Screen"), "FontSize" and
          "Align" (possible values: "Left" or "BottomLeft", "Center" or "BottomCenter",
          "Right" or "BottomRight", "TopLeft", "TopCenter", "TopRight", "CenterLeft",
          "CenterCenter", "CenterRight").
            Input:       tag (integer), coord (vector of doubles), data (vector of strings), style
                         = [] (vector of strings)
            Output:      -
            Return:      -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (t4.cpp, x3.cpp), Python (t4.py, x3.py)
gmsh/view/getListDataStrings
          Get list-based post-processing data strings (2D strings if dim = 2, 3D strings if dim
          = 3) from the view with tag tag. Return the coordinates in coord, the strings in
          data and the styles in style.
            Input:       tag (integer), dim (integer)
            Output:      coord (vector of doubles), data (vector of strings), style (vector of
                         strings)
            Return:      -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/view/setInterpolationMatrices
          Set interpolation matrices for the element family type ("Line", "Triangle", "Quad-
          rangle", "Tetrahedron", "Hexahedron", "Prism", "Pyramid") in the view tag. The
          approximation of the values over an element is written as a linear combination of d
          basis functions f i(u, v, w) = sum (j = 0, ..., d - 1) coef[i][j] u^exp[j][0] v^exp[j][1]
          w^exp[j][2], i = 0, ..., d-1, with u, v, w the coordinates in the reference element. The
          coef matrix (of size d x d) and the exp matrix (of size d x 3) are stored as vectors,
          by row. If dGeo is positive, use coefGeo and expGeo to define the interpolation of
          the x, y, z coordinates of the element in terms of the u, v, w coordinates, in exactly
          the same way. If d < 0, remove the interpolation matrices.
Chapter 6: Gmsh application programming interface                                           205
            Input:      tag (integer), type (string), d (integer), coef (vector of doubles), exp
                        (vector of doubles), dGeo = 0 (integer), coefGeo = [] (vector of dou-
                        bles), expGeo = [] (vector of doubles)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: C++ (x3.cpp), Python (x3.py)
gmsh/view/addAlias
          Add a post-processing view as an alias of the reference view with tag refTag. If
          copyOptions is set, copy the options of the reference view. If tag is positive use it
          (and remove the view with that tag if it already exists), otherwise associate a new
          tag. Return the view tag.
            Input:      refTag (integer), copyOptions = False (boolean), tag = -1 (integer)
            Output:     -
            Return:     integer
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (view combine.py)
gmsh/view/combine
          Combine elements (if what == "elements") or steps (if what == "steps") of all
          views (how == "all"), all visible views (how == "visible") or all views having the
          same name (how == "name"). Remove original views if remove is set.
            Input:      what (string), how (string), remove = True (boolean), copyOptions =
                        True (boolean)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
            Examples: Python (view combine.py)
gmsh/view/probe
          Probe the view tag for its values at point (x, y, z). If no match is found, value
          is returned empty. Return only the value at step step is step is positive. Re-
          turn only values with numComp if numComp is positive. Return the gradient of the
          values if gradient is set. If distanceMax is zero, only return a result if an ex-
          act match inside an element in the view is found; if distanceMax is positive and
          an exact match is not found, return the value at the closest node if it is closer
          than distanceMax; if distanceMax is negative and an exact match is not found,
          always return the value at the closest node. The distance to the match is returned
          in distance. Return the result from the element described by its coordinates if
          xElementCoord, yElementCoord and zElementCoord are provided. If dim is >= 0,
          return only matches from elements of the specified dimension.
            Input:      tag (integer), x (double), y (double), z (double), step = -1 (integer),
                        numComp = -1 (integer), gradient = False (boolean), distanceMax =
206                                                                                Gmsh 4.11.1
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t8.cpp, x3.cpp), Python (t8.py, x3.py)
gmsh/view/option/setString
          Set the string option name to value value for the view with tag tag.
           Input:      tag (integer), name (string), value (string)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t4.cpp, t8.cpp), Python (t4.py, t8.py)
gmsh/view/option/getString
          Get the value of the string option name for the view with tag tag.
           Input:      tag (integer), name (string)
           Output:     value (string)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/view/option/setColor
          Set the color option name to the RGBA value (r, g, b, a) for the view with tag tag,
          where where r, g, b and a should be integers between 0 and 255.
           Input:      tag (integer), name (string), r (integer), g (integer), b (integer), a = 255
                       (integer)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/view/option/getColor
          Get the r, g, b, a value of the color option name for the view with tag tag.
           Input:      tag (integer), name (string)
           Output:     r (integer), g (integer), b (integer), a (integer)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/view/option/copy
          Copy the options from the view with tag refTag to the view with tag tag.
           Input:      refTag (integer), tag (integer)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
208                                                                                 Gmsh 4.11.1
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (split window.py)
gmsh/fltk/setStatusMessage
          Set a status message in the current window. If graphics is set, display the message
          inside the graphic window instead of the status bar.
           Input:      message (string), graphics = False (boolean)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (prepro.py, select elements.py)
gmsh/fltk/showContextWindow
          Show context window for the entity of dimension dim and tag tag.
           Input:      dim (integer), tag (integer)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (prepro.py)
gmsh/fltk/openTreeItem
          Open the name item in the menu tree.
           Input:      name (string)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (prepro.py)
gmsh/fltk/closeTreeItem
          Close the name item in the menu tree.
           Input:      name (string)
           Output:     -
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
Chapter 6: Gmsh application programming interface                                         213
gmsh/parser/clear
          Clear all the Gmsh parser variables, or remove a single variable if name is given.
            Input:      name = "" (string)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
gmsh/parser/parse
          Parse the file fileName with the Gmsh parser.
            Input:      fileName (string)
            Output:     -
            Return:     -
            Language-specific definition:
                       C++, C, Python, Julia
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (prepro.py)
gmsh/onelab/setNumber
          Set the value of the number parameter name in the ONELAB database. Create the
          parameter if it does not exist; update the value if the parameter exists.
           Input:     name (string), value (vector of doubles)
           Output:    -
           Return:    -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (custom gui.py, onelab run.py, onelab test.py)
gmsh/onelab/setString
          Set the value of the string parameter name in the ONELAB database. Create the
          parameter if it does not exist; update the value if the parameter exists.
           Input:     name (string), value (vector of strings)
           Output:    -
           Return:    -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t3.cpp, t13.cpp, t21.cpp), Python (t3.py, t13.py, t21.py,
                     custom gui.py, onelab test.py, ...)
gmsh/onelab/getNumber
          Get the value of the number parameter name from the ONELAB database. Return
          an empty vector if the parameter does not exist.
           Input:     name (string)
           Output:    value (vector of doubles)
           Return:    -
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: C++ (t3.cpp, t13.cpp, t21.cpp), Python (t3.py, t13.py, t21.py,
                     custom gui.py, prepro.py, ...)
gmsh/onelab/getString
          Get the value of the string parameter name from the ONELAB database. Return
          an empty vector if the parameter does not exist.
           Input:     name (string)
           Output:    value (vector of strings)
           Return:    -
           Language-specific definition:
                      C++, C, Python, Julia
216                                                                            Gmsh 4.11.1
gmsh/onelab/getChanged
          Check if any parameters in the ONELAB database used by the client name have
          been changed.
Output: -
Return: integer
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/onelab/setChanged
          Set the changed flag to value value for all the parameters in the ONELAB database
          used by the client name.
Output: -
Return: -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/onelab/clear
          Clear the ONELAB database, or remove a single parameter if name is given.
Output: -
Return: -
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/onelab/run
          Run a ONELAB client. If name is provided, create a new ONELAB client with
          name name and executes command. If not, try to run a client that might be linked
          to the processed input files.
Output: -
Return: -
           Language-specific definition:
                      C++, C, Python, Julia
           Language-specific definition:
                      C++, C, Python, Julia
           Examples: Python (import perf.py)
gmsh/logger/getCpuTime
          Return CPU time.
           Input:      -
           Output:     -
           Return:     double
           Language-specific definition:
                      C++, C, Python, Julia
gmsh/logger/getLastError
          Return last error message, if any.
           Input:      -
           Output:     error (string)
           Return:     -
           Language-specific definition:
                      C++, C, Python, Julia
Chapter 7: Gmsh options                                                                        219
7 Gmsh options
This chapter lists all the Gmsh options. Options can be specified in script files (see
Section 5.1 [General scripting commands], page 89) or using the API (see Section 6.2 [Names-
pace gmsh/option], page 126): see Section 2.3 [t3], page 21 for an example. They can also be
specified on the command line using the -setnumber and -setstring switches: see Chapter 4
[Gmsh command-line interface], page 83. Many options can also be changed interactively in the
GUI (see Chapter 3 [Gmsh graphical user interface], page 77): to see which option corresponds
to which widget in the GUI, leave your mouse on the widget and a tooltip with the option
name will appear. Note that some options can affect the GUI in real time: loading a script file
that sets General.GraphicsWidth for example (see Section 7.1 [General options], page 219) will
change the width of the graphic window at runtime.
Gmsh’s default behavior is to save some of these options in a per-user “session resource” file (cf.
“Saved in: General.SessionFileName” in the option descriptions below) every time Gmsh is
shut down. This permits for example to automatically remember the size and location of the
windows or which fonts to use. A second set of options can be saved (automatically or manually
with the ‘File->Save Options As Default’ menu) in a per-user “option” file (cf. “Saved in:
General.OptionsFileName” in the descriptions below), automatically loaded by Gmsh every
time it starts up. Finally, other options are only saved to disk manually, either by explicitly
saving an option file with ‘File->Export’, or when saving per-model options with ‘File->Save
Model Options’ (cf. “Saved in: -” in the lists below). Per-model options are saved in a file
name matching the model file, but with an extra ‘.opt’ extension appended: the option file will
be automatically opened after Gmsh opens the model file.
Gmsh will attempt to save and load the session and option files first in the $GMSH_HOME directory,
then in $APPDATA (on Windows) or $HOME (on other OSes), then in $TMP, and finally in $TEMP,
in that order. If none of these variables are defined, Gmsh will try to save and load the files
from the current working directory.
To reset all options to their default values, either delete the General.SessionFileName and
General.OptionsFileName files by hand, use ‘Help->Restore All Options to Default Settings’,
or click on ‘Restore all options to default settings’ button in the ‘Tools->Options->General-
>Advanced’ window.
General.AxesLabelY
          Y-axis label
          Default value: ""
          Saved in: General.OptionsFileName
General.AxesLabelZ
          Z-axis label
          Default value: ""
          Saved in: General.OptionsFileName
General.BackgroundImageFileName
          Background image file in JPEG, PNG or PDF format
          Default value: ""
          Saved in: General.OptionsFileName
General.BuildInfo
          Gmsh build information (read-only)
          Default value:       "Version: 4.11.1-git-516d090cd; License: GNU General
          Public License; Build OS: MacOSX-sdk; Build date: 20221205; Build host:
          MacBook-Pro-Christophe.local; Build options: 64Bit ALGLIB[contrib]
          ANN[contrib] Bamg Blas[petsc] Blossom Cairo Cgns DIntegration
          Dlopen DomHex Eigen[contrib] Fltk GMP Gmm[contrib] Hxt Jpeg Kbipack
          Lapack[petsc] MathEx[contrib] Med Mesh Metis[contrib] Mmg Mpeg
          Netgen ONELAB ONELABMetamodel OpenCASCADE OpenCASCADE-CAF OpenGL
          OpenMP OptHom PETSc Parasolid ParasolidSTEP Parser Plugins Png Post
          QuadMeshingTools QuadTri Solver TetGen/BR TouchBar Voro++[contrib]
          WinslowUntangler Zlib; FLTK version: 1.4.0; PETSc version: 3.14.4
          (complex arithmtic); OCC version: 7.8.0; MED version: 4.1.0;
          Packaged by: geuzaine; Web site: https://gmsh.info; Issue tracker:
          https://gitlab.onelab.info/gmsh/gmsh/issues"
          Saved in: -
General.BuildOptions
          Gmsh build options (read-only)
          Default value:       "64Bit ALGLIB[contrib] ANN[contrib] Bamg Blas[petsc]
          Blossom Cairo Cgns DIntegration Dlopen DomHex Eigen[contrib] Fltk GMP
          Gmm[contrib] Hxt Jpeg Kbipack Lapack[petsc] MathEx[contrib] Med Mesh
          Metis[contrib] Mmg Mpeg Netgen ONELAB ONELABMetamodel OpenCASCADE
          OpenCASCADE-CAF OpenGL OpenMP OptHom PETSc Parasolid ParasolidSTEP
          Parser Plugins Png Post QuadMeshingTools QuadTri Solver TetGen/BR
          TouchBar Voro++[contrib] WinslowUntangler Zlib"
          Saved in: -
General.DefaultFileName
          Default project file name
          Default value: "untitled.geo"
          Saved in: General.OptionsFileName
General.Display
          X server to use (only for Unix versions)
          Default value: ""
          Saved in: -
Chapter 7: Gmsh options                                                                    221
General.ErrorFileName
          File into which the log is saved if a fatal error occurs
          Default value: ".gmsh-errors"
          Saved in: General.OptionsFileName
General.ExecutableFileName
          File name of the Gmsh executable (read-only)
          Default value: ""
          Saved in: General.SessionFileName
General.FileName
          Current project file name (read-only)
          Default value: ""
          Saved in: -
General.FltkTheme
          FLTK user interface theme (try e.g. plastic or gtk+)
          Default value: ""
          Saved in: General.SessionFileName
General.GraphicsFont
          Font used in the graphic window
          Default value: "Helvetica"
          Saved in: General.OptionsFileName
General.GraphicsFontEngine
          Set graphics font engine (Native, StringTexture, Cairo)
          Default value: "Native"
          Saved in: General.OptionsFileName
General.GraphicsFontTitle
          Font used in the graphic window for titles
          Default value: "Helvetica"
          Saved in: General.OptionsFileName
General.OptionsFileName
          Option file created with ‘Tools->Options->Save’; automatically read on startup
          Default value: ".gmsh-options"
          Saved in: General.SessionFileName
General.RecentFile0
          Most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
General.RecentFile1
          2nd most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
General.RecentFile2
          3rd most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
General.RecentFile3
          4th most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
222                                                                             Gmsh 4.11.1
General.RecentFile4
          5th most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
General.RecentFile5
          6th most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
General.RecentFile6
          7th most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
General.RecentFile7
          8th most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
General.RecentFile8
          9th most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
General.RecentFile9
          10th most recent opened file
          Default value: "untitled.geo"
          Saved in: General.SessionFileName
General.SessionFileName
          Option file into which session specific information is saved; automatically read on
          startup
          Default value: ".gmshrc"
          Saved in: -
General.ScriptingLanguages
          Language(s) in which scripting commands generated by the GUI are written
          Default value: "geo"
          Saved in: General.OptionsFileName
General.TextEditor
          System command to launch a text editor
          Default value: "open -t ’%s’"
          Saved in: General.OptionsFileName
General.TmpFileName
          Temporary file used by the geometry module
          Default value: ".gmsh-tmp"
          Saved in: General.SessionFileName
General.Version
          Gmsh version (read-only)
          Default value: "4.11.1-git-516d090cd"
          Saved in: -
Chapter 7: Gmsh options                                                                    223
General.WatchFilePattern
          Pattern of files to merge as they become available
          Default value: ""
          Saved in: -
General.AbortOnError
          Abort on error? (0: no, 1: abort meshing, 2: throw an exception unless in interactive
          mode, 3: throw an exception always, 4: exit)
          Default value: 0
          Saved in: General.OptionsFileName
General.AlphaBlending
          Enable alpha blending (transparency) in post-processing views
          Default value: 1
          Saved in: General.OptionsFileName
General.Antialiasing
          Use multisample antialiasing (will slow down rendering)
          Default value: 0
          Saved in: General.OptionsFileName
General.ArrowHeadRadius
          Relative radius of arrow head
          Default value: 0.12
          Saved in: General.OptionsFileName
General.ArrowStemLength
          Relative length of arrow stem
          Default value: 0.56
          Saved in: General.OptionsFileName
General.ArrowStemRadius
          Relative radius of arrow stem
          Default value: 0.02
          Saved in: General.OptionsFileName
General.Axes
          Axes (0: none, 1: simple axes, 2: box, 3: full grid, 4: open grid, 5: ruler)
          Default value: 0
          Saved in: General.OptionsFileName
General.AxesMikado
          Mikado axes style
          Default value: 0
          Saved in: General.OptionsFileName
General.AxesAutoPosition
          Position the axes automatically
          Default value: 1
          Saved in: General.OptionsFileName
General.AxesForceValue
          Force values on axes (otherwise use natural coordinates)
          Default value: 0
          Saved in: General.OptionsFileName
224                                           Gmsh 4.11.1
General.AxesMaxX
          Maximum X-axis coordinate
          Default value: 1
          Saved in: General.OptionsFileName
General.AxesMaxY
          Maximum Y-axis coordinate
          Default value: 1
          Saved in: General.OptionsFileName
General.AxesMaxZ
          Maximum Z-axis coordinate
          Default value: 1
          Saved in: General.OptionsFileName
General.AxesMinX
          Minimum X-axis coordinate
          Default value: 0
          Saved in: General.OptionsFileName
General.AxesMinY
          Minimum Y-axis coordinate
          Default value: 0
          Saved in: General.OptionsFileName
General.AxesMinZ
          Minimum Z-axis coordinate
          Default value: 0
          Saved in: General.OptionsFileName
General.AxesTicsX
          Number of tics on the X-axis
          Default value: 5
          Saved in: General.OptionsFileName
General.AxesTicsY
          Number of tics on the Y-axis
          Default value: 5
          Saved in: General.OptionsFileName
General.AxesTicsZ
          Number of tics on the Z-axis
          Default value: 5
          Saved in: General.OptionsFileName
General.AxesValueMaxX
          Maximum X-axis forced value
          Default value: 1
          Saved in: General.OptionsFileName
General.AxesValueMaxY
          Maximum Y-axis forced value
          Default value: 1
          Saved in: General.OptionsFileName
General.AxesValueMaxZ
          Maximum Z-axis forced value
          Default value: 1
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                 225
General.AxesValueMinX
          Minimum X-axis forced value
          Default value: 0
          Saved in: General.OptionsFileName
General.AxesValueMinY
          Minimum Y-axis forced value
          Default value: 0
          Saved in: General.OptionsFileName
General.AxesValueMinZ
          Minimum Z-axis forced value
          Default value: 0
          Saved in: General.OptionsFileName
General.BackgroundGradient
          Draw background gradient (0: none, 1: vertical, 2: horizontal, 3: radial)
          Default value: 1
          Saved in: General.OptionsFileName
General.BackgroundImage3D
          Create background image in the 3D model (units = model units) or as 2D back-
          ground (units = pixels)
          Default value: 0
          Saved in: General.OptionsFileName
General.BackgroundImagePage
          Page to render in the background image (for multi-page PDFs)
          Default value: 0
          Saved in: General.OptionsFileName
General.BackgroundImagePositionX
          X position of background image (for 2D background: < 0: measure from right
          window edge; >= 1e5: centered)
          Default value: 0
          Saved in: General.OptionsFileName
General.BackgroundImagePositionY
          Y position of background image (for 2D background: < 0: measure from bottom
          window edge; >= 1e5: centered)
          Default value: 0
          Saved in: General.OptionsFileName
General.BackgroundImageWidth
          Width of background image (0: actual width if height = 0, natural scaling if not;
          -1: graphic window width)
          Default value: -1
          Saved in: General.OptionsFileName
General.BackgroundImageHeight
          Height of background image (0: actual height if width = 0, natural scaling if not;
          -1: graphic window height)
          Default value: -1
          Saved in: General.OptionsFileName
226                                                                           Gmsh 4.11.1
General.BoundingBoxSize
          Overall bounding box size (read-only)
          Default value: 1
          Saved in: General.OptionsFileName
General.Camera
          Enable camera view mode
          Default value: 0
          Saved in: General.OptionsFileName
General.CameraAperture
          Camera aperture in degrees
          Default value: 40
          Saved in: General.OptionsFileName
General.CameraEyeSeparationRatio
          Eye separation ratio in % for stereo rendering
          Default value: 1.5
          Saved in: General.OptionsFileName
General.CameraFocalLengthRatio
          Camera Focal length ratio
          Default value: 1
          Saved in: General.OptionsFileName
General.Clip0A
          First coefficient in equation for clipping plane 0 (‘A’ in ‘AX+BY+CZ+D=0’)
          Default value: 1
          Saved in: -
General.Clip0B
          Second coefficient in equation for clipping plane 0 (‘B’ in ‘AX+BY+CZ+D=0’)
          Default value: 0
          Saved in: -
General.Clip0C
          Third coefficient in equation for clipping plane 0 (‘C’ in ‘AX+BY+CZ+D=0’)
          Default value: 0
          Saved in: -
General.Clip0D
          Fourth coefficient in equation for clipping plane 0 (‘D’ in ‘AX+BY+CZ+D=0’)
          Default value: 0
          Saved in: -
General.Clip1A
          First coefficient in equation for clipping plane 1
          Default value: 0
          Saved in: -
General.Clip1B
          Second coefficient in equation for clipping plane 1
          Default value: 1
          Saved in: -
General.Clip1C
          Third coefficient in equation for clipping plane 1
          Default value: 0
          Saved in: -
Chapter 7: Gmsh options                                         227
General.Clip1D
          Fourth coefficient in equation for clipping plane 1
          Default value: 0
          Saved in: -
General.Clip2A
          First coefficient in equation for clipping plane 2
          Default value: 0
          Saved in: -
General.Clip2B
          Second coefficient in equation for clipping plane 2
          Default value: 0
          Saved in: -
General.Clip2C
          Third coefficient in equation for clipping plane 2
          Default value: 1
          Saved in: -
General.Clip2D
          Fourth coefficient in equation for clipping plane 2
          Default value: 0
          Saved in: -
General.Clip3A
          First coefficient in equation for clipping plane 3
          Default value: -1
          Saved in: -
General.Clip3B
          Second coefficient in equation for clipping plane 3
          Default value: 0
          Saved in: -
General.Clip3C
          Third coefficient in equation for clipping plane 3
          Default value: 0
          Saved in: -
General.Clip3D
          Fourth coefficient in equation for clipping plane 3
          Default value: 1
          Saved in: -
General.Clip4A
          First coefficient in equation for clipping plane 4
          Default value: 0
          Saved in: -
General.Clip4B
          Second coefficient in equation for clipping plane 4
          Default value: -1
          Saved in: -
General.Clip4C
          Third coefficient in equation for clipping plane 4
          Default value: 0
          Saved in: -
228                                                                                Gmsh 4.11.1
General.Clip4D
          Fourth coefficient in equation for clipping plane 4
          Default value: 1
          Saved in: -
General.Clip5A
          First coefficient in equation for clipping plane 5
          Default value: 0
          Saved in: -
General.Clip5B
          Second coefficient in equation for clipping plane 5
          Default value: 0
          Saved in: -
General.Clip5C
          Third coefficient in equation for clipping plane 5
          Default value: -1
          Saved in: -
General.Clip5D
          Fourth coefficient in equation for clipping plane 5
          Default value: 1
          Saved in: -
General.ClipFactor
          Near and far clipping plane distance factor (decrease value for better z-buffer reso-
          lution)
          Default value: 5
          Saved in: -
General.ClipOnlyDrawIntersectingVolume
          Only draw layer of elements that intersect the clipping plane
          Default value: 0
          Saved in: General.OptionsFileName
General.ClipOnlyVolume
          Only clip volume elements
          Default value: 0
          Saved in: General.OptionsFileName
General.ClipPositionX
          Horizontal position (in pixels) of the upper left corner of the clipping planes window
          Default value: 650
          Saved in: General.SessionFileName
General.ClipPositionY
          Vertical position (in pixels) of the upper left corner of the clipping planes window
          Default value: 150
          Saved in: General.SessionFileName
General.ClipWholeElements
          Clip whole elements
          Default value: 0
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                      229
General.ColorScheme
          Default color scheme for graphics (0: light, 1: default, 2: grayscale, 3: dark)
          Default value: 1
          Saved in: General.SessionFileName
General.ConfirmOverwrite
          Ask confirmation before overwriting files?
          Default value: 1
          Saved in: General.OptionsFileName
General.ContextPositionX
          Horizontal position (in pixels) of the upper left corner of the contextual windows
          Default value: 650
          Saved in: General.SessionFileName
General.ContextPositionY
          Vertical position (in pixels) of the upper left corner of the contextual windows
          Default value: 150
          Saved in: General.SessionFileName
General.DetachedMenu
          Should the menu window be detached from the graphic window?
          Default value: 0
          Saved in: General.SessionFileName
General.DetachedProcess
          On Windows, should processes created by Gmsh be detached?
          Default value: 1
          Saved in: General.OptionsFileName
General.DisplayBorderFactor
          Border factor for model display (0: model fits window size exactly)
          Default value: 0.2
          Saved in: General.OptionsFileName
General.DoubleBuffer
          Use a double buffered graphic window (on Unix, should be set to 0 when working
          on a remote host without GLX)
          Default value: 1
          Saved in: General.OptionsFileName
General.DrawBoundingBoxes
          Draw bounding boxes
          Default value: 0
          Saved in: General.OptionsFileName
General.ExpertMode
          Enable expert mode (to disable all the messages meant for inexperienced users)
          Default value: 0
          Saved in: General.OptionsFileName
General.ExtraPositionX
          Horizontal position (in pixels) of the upper left corner of the generic extra window
          Default value: 650
          Saved in: General.SessionFileName
230                                                                                Gmsh 4.11.1
General.ExtraPositionY
          Vertical position (in pixels) of the upper left corner of the generic extra window
          Default value: 350
          Saved in: General.SessionFileName
General.ExtraHeight
          Height (in pixels) of the generic extra window
          Default value: 100
          Saved in: General.SessionFileName
General.ExtraWidth
          Width (in pixels) of the generic extra window
          Default value: 100
          Saved in: General.SessionFileName
General.FastRedraw
          Draw simplified model while rotating, panning and zooming
          Default value: 0
          Saved in: General.OptionsFileName
General.FieldPositionX
          Horizontal position (in pixels) of the upper left corner of the field window
          Default value: 650
          Saved in: General.SessionFileName
General.FieldPositionY
          Vertical position (in pixels) of the upper left corner of the field window
          Default value: 550
          Saved in: General.SessionFileName
General.FieldHeight
          Height (in pixels) of the field window
          Default value: 320
          Saved in: General.SessionFileName
General.FieldWidth
          Width (in pixels) of the field window
          Default value: 420
          Saved in: General.SessionFileName
General.FileChooserPositionX
          Horizontal position (in pixels) of the upper left corner of the file chooser windows
          Default value: 200
          Saved in: General.SessionFileName
General.FileChooserPositionY
          Vertical position (in pixels) of the upper left corner of the file chooser windows
          Default value: 200
          Saved in: General.SessionFileName
General.FltkColorScheme
          FLTK user interface color theme (0: standard, 1:dark)
          Default value: 0
          Saved in: General.SessionFileName
General.FltkRefreshRate
          FLTK user interface maximum refresh rate, per second (0: no limit)
          Default value: 5
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                      231
General.FontSize
          Size of the font in the user interface, in pixels (-1: automatic)
          Default value: -1
          Saved in: General.OptionsFileName
General.GraphicsFontSize
          Size of the font in the graphic window, in pixels
          Default value: 15
          Saved in: General.OptionsFileName
General.GraphicsFontSizeTitle
          Size of the font in the graphic window for titles, in pixels
          Default value: 18
          Saved in: General.OptionsFileName
General.GraphicsHeight
          Height (in pixels) of the graphic window
          Default value: 600
          Saved in: General.SessionFileName
General.GraphicsPositionX
          Horizontal position (in pixels) of the upper left corner of the graphic window
          Default value: 50
          Saved in: General.SessionFileName
General.GraphicsPositionY
          Vertical position (in pixels) of the upper left corner of the graphic window
          Default value: 50
          Saved in: General.SessionFileName
General.GraphicsWidth
          Width (in pixels) of the graphic window
          Default value: 800
          Saved in: General.SessionFileName
General.HighOrderToolsPositionX
          Horizontal position (in pixels) of the upper left corner of the high-order tools window
          Default value: 650
          Saved in: General.SessionFileName
General.HighOrderToolsPositionY
          Vertical position (in pixels) of the upper left corner of the high-order tools window
          Default value: 150
          Saved in: General.SessionFileName
General.HighResolutionGraphics
          Use high-resolution OpenGL graphics (e.g. for Macs with retina displays)
          Default value: 1
          Saved in: General.OptionsFileName
General.InitialModule
          Module launched on startup (0: automatic, 1: geometry, 2: mesh, 3: solver, 4:
          post-processing)
          Default value: 0
          Saved in: General.OptionsFileName
General.InputScrolling
          Enable numerical input scrolling in user interface (moving the mouse to change
          numbers)
232                                                                            Gmsh 4.11.1
           Default value: 1
           Saved in: General.OptionsFileName
General.Light0
          Enable light source 0
          Default value: 1
          Saved in: General.OptionsFileName
General.Light0X
          X position of light source 0
          Default value: 0.65
          Saved in: General.OptionsFileName
General.Light0Y
          Y position of light source 0
          Default value: 0.65
          Saved in: General.OptionsFileName
General.Light0Z
          Z position of light source 0
          Default value: 1
          Saved in: General.OptionsFileName
General.Light0W
          Divisor of the X, Y and Z coordinates of light source 0 (W=0 means infinitely far
          source)
          Default value: 0
          Saved in: General.OptionsFileName
General.Light1
          Enable light source 1
          Default value: 0
          Saved in: General.OptionsFileName
General.Light1X
          X position of light source 1
          Default value: 0.5
          Saved in: General.OptionsFileName
General.Light1Y
          Y position of light source 1
          Default value: 0.3
          Saved in: General.OptionsFileName
General.Light1Z
          Z position of light source 1
          Default value: 1
          Saved in: General.OptionsFileName
General.Light1W
          Divisor of the X, Y and Z coordinates of light source 1 (W=0 means infinitely far
          source)
          Default value: 0
          Saved in: General.OptionsFileName
General.Light2
          Enable light source 2
          Default value: 0
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                233
General.Light2X
          X position of light source 2
          Default value: 0.5
          Saved in: General.OptionsFileName
General.Light2Y
          Y position of light source 2
          Default value: 0.3
          Saved in: General.OptionsFileName
General.Light2Z
          Z position of light source 2
          Default value: 1
          Saved in: General.OptionsFileName
General.Light2W
          Divisor of the X, Y and Z coordinates of light source 2 (W=0 means infinitely far
          source)
          Default value: 0
          Saved in: General.OptionsFileName
General.Light3
          Enable light source 3
          Default value: 0
          Saved in: General.OptionsFileName
General.Light3X
          X position of light source 3
          Default value: 0.5
          Saved in: General.OptionsFileName
General.Light3Y
          Y position of light source 3
          Default value: 0.3
          Saved in: General.OptionsFileName
General.Light3Z
          Z position of light source 3
          Default value: 1
          Saved in: General.OptionsFileName
General.Light3W
          Divisor of the X, Y and Z coordinates of light source 3 (W=0 means infinitely far
          source)
          Default value: 0
          Saved in: General.OptionsFileName
General.Light4
          Enable light source 4
          Default value: 0
          Saved in: General.OptionsFileName
General.Light4X
          X position of light source 4
          Default value: 0.5
          Saved in: General.OptionsFileName
234                                                                              Gmsh 4.11.1
General.Light4Y
          Y position of light source 4
          Default value: 0.3
          Saved in: General.OptionsFileName
General.Light4Z
          Z position of light source 4
          Default value: 1
          Saved in: General.OptionsFileName
General.Light4W
          Divisor of the X, Y and Z coordinates of light source 4 (W=0 means infinitely far
          source)
          Default value: 0
          Saved in: General.OptionsFileName
General.Light5
          Enable light source 5
          Default value: 0
          Saved in: General.OptionsFileName
General.Light5X
          X position of light source 5
          Default value: 0.5
          Saved in: General.OptionsFileName
General.Light5Y
          Y position of light source 5
          Default value: 0.3
          Saved in: General.OptionsFileName
General.Light5Z
          Z position of light source 5
          Default value: 1
          Saved in: General.OptionsFileName
General.Light5W
          Divisor of the X, Y and Z coordinates of light source 5 (W=0 means infinitely far
          source)
          Default value: 0
          Saved in: General.OptionsFileName
General.LineWidth
          Display width of lines (in pixels)
          Default value: 1
          Saved in: General.OptionsFileName
General.ManipulatorPositionX
          Horizontal position (in pixels) of the upper left corner of the manipulator window
          Default value: 650
          Saved in: General.SessionFileName
General.ManipulatorPositionY
          Vertical position (in pixels) of the upper left corner of the manipulator window
          Default value: 150
          Saved in: General.SessionFileName
Chapter 7: Gmsh options                                                                  235
General.MaxX
          Maximum model coordinate along the X-axis (read-only)
          Default value: 0
          Saved in: -
General.MaxY
          Maximum model coordinate along the Y-axis (read-only)
          Default value: 0
          Saved in: -
General.MaxZ
          Maximum model coordinate along the Z-axis (read-only)
          Default value: 0
          Saved in: -
General.MenuWidth
          Width (in pixels) of the menu tree
          Default value: 200
          Saved in: General.SessionFileName
General.MenuHeight
          Height (in pixels) of the (detached) menu tree
          Default value: 200
          Saved in: General.SessionFileName
General.MenuPositionX
          Horizontal position (in pixels) of the (detached) menu tree
          Default value: 400
          Saved in: General.SessionFileName
General.MenuPositionY
          Vertical position (in pixels) of the (detached) menu tree
          Default value: 400
          Saved in: General.SessionFileName
General.MessageFontSize
          Size of the font in the message window, in pixels (-1: automatic)
          Default value: -1
          Saved in: General.OptionsFileName
General.MessageHeight
          Height (in pixels) of the message console when it is visible (should be > 0)
          Default value: 300
          Saved in: General.SessionFileName
General.MinX
          Minimum model coordinate along the X-axis (read-only)
          Default value: 0
          Saved in: -
General.MinY
          Minimum model coordinate along the Y-axis (read-only)
          Default value: 0
          Saved in: -
General.MinZ
          Minimum model coordinate along the Z-axis (read-only)
          Default value: 0
          Saved in: -
236                                                                               Gmsh 4.11.1
General.MouseHoverMeshes
          Enable mouse hover on meshes
          Default value: 0
          Saved in: General.OptionsFileName
General.MouseSelection
          Enable mouse selection
          Default value: 1
          Saved in: General.OptionsFileName
General.MouseInvertZoom
          Invert mouse wheel zoom direction
          Default value: 0
          Saved in: General.OptionsFileName
General.NativeFileChooser
          Use the native file chooser?
          Default value: 1
          Saved in: General.SessionFileName
General.NonModalWindows
          Force all control windows to be on top of the graphic window ("non-modal")
          Default value: 1
          Saved in: General.SessionFileName
General.NoPopup
          Disable interactive dialog windows in scripts (and use default values instead)
          Default value: 0
          Saved in: General.OptionsFileName
General.NumThreads
          Maximum number of threads used by Gmsh when compiled with OpenMP support
          (0: use system default, i.e. OMP NUM THREADS)
          Default value: 1
          Saved in: General.OptionsFileName
General.OptionsPositionX
          Horizontal position (in pixels) of the upper left corner of the option window
          Default value: 650
          Saved in: General.SessionFileName
General.OptionsPositionY
          Vertical position (in pixels) of the upper left corner of the option window
          Default value: 150
          Saved in: General.SessionFileName
General.Orthographic
          Orthographic projection mode (0: perspective projection)
          Default value: 1
          Saved in: General.OptionsFileName
General.PluginPositionX
          Horizontal position (in pixels) of the upper left corner of the plugin window
          Default value: 650
          Saved in: General.SessionFileName
Chapter 7: Gmsh options                                                                  237
General.PluginPositionY
          Vertical position (in pixels) of the upper left corner of the plugin window
          Default value: 550
          Saved in: General.SessionFileName
General.PluginHeight
          Height (in pixels) of the plugin window
          Default value: 320
          Saved in: General.SessionFileName
General.PluginWidth
          Width (in pixels) of the plugin window
          Default value: 420
          Saved in: General.SessionFileName
General.PointSize
          Display size of points (in pixels)
          Default value: 3
          Saved in: General.OptionsFileName
General.PolygonOffsetAlwaysOn
          Always apply polygon offset, instead of trying to detect when it is required
          Default value: 0
          Saved in: General.OptionsFileName
General.PolygonOffsetFactor
          Polygon offset factor (offset = factor * DZ + r * units)
          Default value: 0.5
          Saved in: General.OptionsFileName
General.PolygonOffsetUnits
          Polygon offset units (offset = factor * DZ + r * units)
          Default value: 1
          Saved in: General.OptionsFileName
General.ProgressMeterStep
          Increment (in percent) of the progress meter bar
          Default value: 10
          Saved in: General.OptionsFileName
General.QuadricSubdivisions
          Number of subdivisions used to draw points or lines as spheres or cylinders
          Default value: 6
          Saved in: General.OptionsFileName
General.RotationX
          First Euler angle (used if Trackball=0)
          Default value: 0
          Saved in: -
General.RotationY
          Second Euler angle (used if Trackball=0)
          Default value: 0
          Saved in: -
General.RotationZ
          Third Euler angle (used if Trackball=0)
          Default value: 0
          Saved in: -
238                                                                           Gmsh 4.11.1
General.RotationCenterGravity
          Rotate around the (pseudo) center of mass instead of (RotationCenterX, Rotation-
          CenterY, RotationCenterZ)
          Default value: 1
          Saved in: General.OptionsFileName
General.RotationCenterX
          X coordinate of the center of rotation
          Default value: 0
          Saved in: -
General.RotationCenterY
          Y coordinate of the center of rotation
          Default value: 0
          Saved in: -
General.RotationCenterZ
          Z coordinate of the center of rotation
          Default value: 0
          Saved in: -
General.SaveOptions
          Automatically save current options in General.OptionsFileName (1) or per model
          (2)when the graphical user interface is closed?
          Default value: 0
          Saved in: General.SessionFileName
General.SaveSession
          Automatically save session specific information in General.SessionFileName when
          the graphical user interface is closed?
          Default value: 1
          Saved in: General.SessionFileName
General.ScaleX
          X-axis scale factor
          Default value: 1
          Saved in: -
General.ScaleY
          Y-axis scale factor
          Default value: 1
          Saved in: -
General.ScaleZ
          Z-axis scale factor
          Default value: 1
          Saved in: -
General.Shininess
          Material shininess
          Default value: 0.4
          Saved in: General.OptionsFileName
General.ShininessExponent
          Material shininess exponent (between 0 and 128)
          Default value: 40
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                      239
General.ShowModuleMenu
          Show the standard Gmsh menu in the tree
          Default value: 1
          Saved in: General.OptionsFileName
General.ShowOptionsOnStartup
          Show option window on startup
          Default value: 0
          Saved in: General.OptionsFileName
General.ShowMessagesOnStartup
          Show message window on startup
          Default value: 0
          Saved in: General.OptionsFileName
General.SmallAxes
          Display the small axes
          Default value: 1
          Saved in: General.OptionsFileName
General.SmallAxesPositionX
          X position (in pixels) of small axes (< 0: measure from right window edge; >= 1e5:
          centered)
          Default value: -60
          Saved in: General.OptionsFileName
General.SmallAxesPositionY
          Y position (in pixels) of small axes (< 0: measure from bottom window edge; >=
          1e5: centered)
          Default value: -40
          Saved in: General.OptionsFileName
General.SmallAxesSize
          Size (in pixels) of small axes
          Default value: 30
          Saved in: General.OptionsFileName
General.StatisticsPositionX
          Horizontal position (in pixels) of the upper left corner of the statistic window
          Default value: 650
          Saved in: General.SessionFileName
General.StatisticsPositionY
          Vertical position (in pixels) of the upper left corner of the statistic window
          Default value: 150
          Saved in: General.SessionFileName
General.Stereo
          Use stereo rendering
          Default value: 0
          Saved in: General.OptionsFileName
General.SystemMenuBar
          Use the system menu bar on macOS?
          Default value: 1
          Saved in: General.SessionFileName
240                                                                             Gmsh 4.11.1
General.Terminal
          Should information be printed on the terminal (if available)?
          Default value: 0
          Saved in: General.OptionsFileName
General.Tooltips
          Show tooltips in the user interface
          Default value: 1
          Saved in: General.OptionsFileName
General.Trackball
          Use trackball rotation mode
          Default value: 1
          Saved in: General.OptionsFileName
General.TrackballHyperbolicSheet
          Use hyperbolic sheet away from trackball center for z-rotations
          Default value: 1
          Saved in: General.OptionsFileName
General.TrackballQuaternion0
          First trackball quaternion component (used if General.Trackball=1)
          Default value: 0
          Saved in: -
General.TrackballQuaternion1
          Second trackball quaternion component (used if General.Trackball=1)
          Default value: 0
          Saved in: -
General.TrackballQuaternion2
          Third trackball quaternion component (used if General.Trackball=1)
          Default value: 0
          Saved in: -
General.TrackballQuaternion3
          Fourth trackball quaternion component (used if General.Trackball=1)
          Default value: 1
          Saved in: -
General.TranslationX
          X-axis translation (in model units)
          Default value: 0
          Saved in: -
General.TranslationY
          Y-axis translation (in model units)
          Default value: 0
          Saved in: -
General.TranslationZ
          Z-axis translation (in model units)
          Default value: 0
          Saved in: -
General.VectorType
          Default vector display type (for normals, etc.)
          Default value: 4
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                       241
General.Verbosity
          Level of information printed on the terminal and the message console (0: silent
          except for fatal errors, 1: +errors, 2: +warnings, 3: +direct, 4: +information, 5:
          +status, 99: +debug)
          Default value: 5
          Saved in: General.OptionsFileName
General.VisibilityPositionX
          Horizontal position (in pixels) of the upper left corner of the visibility window
          Default value: 650
          Saved in: General.SessionFileName
General.VisibilityPositionY
          Vertical position (in pixels) of the upper left corner of the visibility window
          Default value: 150
          Saved in: General.SessionFileName
General.ZoomFactor
          Middle mouse button zoom acceleration factor
          Default value: 4
          Saved in: General.OptionsFileName
General.Color.Background
          Background color
          Default value: {255,255,255}
          Saved in: General.OptionsFileName
General.Color.BackgroundGradient
          Background gradient color
          Default value: {208,215,255}
          Saved in: General.OptionsFileName
General.Color.Foreground
          Foreground color
          Default value: {85,85,85}
          Saved in: General.OptionsFileName
General.Color.Text
          Text color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
General.Color.Axes
          Axes color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
General.Color.SmallAxes
          Small axes color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
General.Color.AmbientLight
          Ambient light color
          Default value: {25,25,25}
          Saved in: General.OptionsFileName
242                                                                           Gmsh 4.11.1
General.Color.DiffuseLight
          Diffuse light color
          Default value: {255,255,255}
          Saved in: General.OptionsFileName
General.Color.SpecularLight
          Specular light color
          Default value: {255,255,255}
          Saved in: General.OptionsFileName
Print.EpsCompress
          Compress PostScript/PDF output using zlib
          Default value: 0
          Saved in: General.OptionsFileName
Print.EpsLineWidthFactor
          Width factor for lines in PostScript/PDF output
          Default value: 1
          Saved in: General.OptionsFileName
Print.EpsOcclusionCulling
          Cull occluded primitives (to reduce PostScript/PDF file size)
          Default value: 1
          Saved in: General.OptionsFileName
Print.EpsPointSizeFactor
          Size factor for points in PostScript/PDF output
          Default value: 1
          Saved in: General.OptionsFileName
Print.EpsPS3Shading
          Enable PostScript Level 3 shading
          Default value: 0
          Saved in: General.OptionsFileName
Print.EpsQuality
          PostScript/PDF quality (0: bitmap, 1: vector (simple sort), 2: vector (accurate
          sort), 3: vector (unsorted)
          Default value: 1
          Saved in: General.OptionsFileName
Print.Format
          File format (10: automatic)
          Default value: 10
          Saved in: General.OptionsFileName
Print.GeoLabels
          Save labels in unrolled Gmsh geometries
          Default value: 1
          Saved in: General.OptionsFileName
Print.GeoOnlyPhysicals
          Only save entities that belong to physical groups
          Default value: 0
          Saved in: General.OptionsFileName
Print.GifDither
          Apply dithering to GIF output
          Default value: 0
          Saved in: General.OptionsFileName
Print.GifInterlace
          Interlace GIF output
          Default value: 0
          Saved in: General.OptionsFileName
244                                                                                Gmsh 4.11.1
Print.GifSort
          Sort the colormap in GIF output
          Default value: 1
          Saved in: General.OptionsFileName
Print.GifTransparent
          Output transparent GIF image
          Default value: 0
          Saved in: General.OptionsFileName
Print.Height
          Height of printed image; use (possibly scaled) current height if < 0
          Default value: -1
          Saved in: General.OptionsFileName
Print.JpegQuality
          JPEG quality (between 1 and 100)
          Default value: 100
          Saved in: General.OptionsFileName
Print.JpegSmoothing
          JPEG smoothing (between 0 and 100)
          Default value: 0
          Saved in: General.OptionsFileName
Print.PgfTwoDim
          Output PGF format for two dimensions. Mostly irrelevant if ‘PgfExportAxis=0‘.
          Default ‘1‘ (yes).
          Default value: 1
          Saved in: General.OptionsFileName
Print.PgfExportAxis
          Include axis in export pgf code (not in the png). Default ‘0‘ (no).
          Default value: 0
          Saved in: General.OptionsFileName
Print.PgfHorizontalBar
          Use a horizontal color bar in the pgf output. Default ‘0‘ (no).
          Default value: 0
          Saved in: General.OptionsFileName
Print.PostElementary
          Save elementary region tags in mesh statistics exported as post-processing views
          Default value: 1
          Saved in: General.OptionsFileName
Print.PostElement
          Save element tags in mesh statistics exported as post-processing views
          Default value: 0
          Saved in: General.OptionsFileName
Print.PostGamma
          Save Gamma quality measure in mesh statistics exported as post-processing views
          Default value: 0
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                   245
Print.PostEta
          Save Eta quality measure in mesh statistics exported as post-processing views
          Default value: 0
          Saved in: General.OptionsFileName
Print.PostSICN
          Save SICN (signed inverse condition number) quality measure in mesh statistics
          exported as post-processing views
          Default value: 0
          Saved in: General.OptionsFileName
Print.PostSIGE
          Save SIGE (signed inverse gradient error) quality measure in mesh statistics ex-
          ported as post-processing views
          Default value: 0
          Saved in: General.OptionsFileName
Print.PostDisto
          Save Disto quality measure in mesh statistics exported as post-processing views
          Default value: 0
          Saved in: General.OptionsFileName
Print.TexAsEquation
          Print all TeX strings as equations
          Default value: 0
          Saved in: General.OptionsFileName
Print.TexForceFontSize
          Force font size of TeX strings to fontsize in the graphic window
          Default value: 0
          Saved in: General.OptionsFileName
Print.TexWidthInMm
          Width of tex graphics in mm (use 0 for the natural width inferred from the image
          width in pixels)
          Default value: 150
          Saved in: General.OptionsFileName
Print.Text
             Print text strings?
             Default value: 1
             Saved in: General.OptionsFileName
Print.X3dCompatibility
          Produce highly compatible X3D output (no scale bar)
          Default value: 0
          Saved in: General.OptionsFileName
Print.X3dPrecision
          Precision of X3D output
          Default value: 1e-09
          Saved in: General.OptionsFileName
Print.X3dRemoveInnerBorders
          Remove inner borders in X3D output
          Default value: 0
          Saved in: General.OptionsFileName
246                                                                             Gmsh 4.11.1
Print.X3dTransparency
          Transparency for X3D output
          Default value: 0
          Saved in: General.OptionsFileName
Print.X3dSurfaces
          Save surfaces in CAD X3D output (0: no, 1: yes in a single X3D object,2: one X3D
          object per geometrical surface, 3: one X3D object perphysical surface)
          Default value: 1
          Saved in: General.OptionsFileName
Print.X3dEdges
          Save edges in CAD X3D output (0: no, 1: yes in a single X3D object,2: one X3D
          object per geometrical edge, 3: one X3D object perphysical edge)
          Default value: 0
          Saved in: General.OptionsFileName
Print.X3dVertices
          Save vertices in CAD X3D output (0: no, 1: yes)
          Default value: 0
          Saved in: General.OptionsFileName
Print.X3dVolumes
          Save separate volumes in CAD X3D output (0: no, 1: yes)
          Default value: 0
          Saved in: General.OptionsFileName
Print.X3dColorize
          Apply colors to faces (0: no, 1: yes)
          Default value: 0
          Saved in: General.OptionsFileName
Print.Width
          Width of printed image; use (possibly scaled) current width if < 0)
          Default value: -1
          Saved in: General.OptionsFileName
Geometry.DoubleClickedVolumeCommand
          Command parsed when double-clicking on a volume, or ’ONELAB’ to edit associated
          ONELAB parameters
          Default value: "ONELAB"
          Saved in: General.OptionsFileName
Geometry.OCCTargetUnit
          Length unit to which coordinates from STEP and IGES files are converted to when
          imported by OpenCASCADE, e.g. ’M’ for meters (leave empty to use the default
          OpenCASCADE behavior); the option should be set before importing the STEP or
          IGES file
          Default value: ""
          Saved in: General.OptionsFileName
Geometry.PipeDefaultTrihedron
          Default trihedron type when creating pipes
          Default value: "DiscreteTrihedron"
          Saved in: General.OptionsFileName
Geometry.AutoCoherence
          Should all duplicate entities be automatically removed with the built-in geometry
          kernel? If Geometry.AutoCoherence = 2, also remove degenerate entities. The
          option has no effect with the OpenCASCADE kernel
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.Clip
          Enable clipping planes? (Plane[i]=2^i, i=0,...,5)
          Default value: 0
          Saved in: -
Geometry.CopyMeshingMethod
          Copy meshing method (unstructured or transfinite) when duplicating geometrical
          entities with built-in geometry kernel?
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.Curves
          Display geometry curves?
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.CurveLabels
          Display curve labels?
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.CurveSelectWidth
          Display width of selected curves (in pixels)
          Default value: 3
          Saved in: General.OptionsFileName
Geometry.CurveType
          Display curves as solid color segments (0), 3D cylinders (1) or tapered cylinders (2)
          Default value: 0
          Saved in: General.OptionsFileName
248                                                                                Gmsh 4.11.1
Geometry.CurveWidth
          Display width of lines (in pixels)
          Default value: 2
          Saved in: General.OptionsFileName
Geometry.DoubleClickedEntityTag
          Tag of last double-clicked geometrical entity
          Default value: 0
          Saved in: -
Geometry.ExactExtrusion
          Use exact extrusion formula in interpolations (set to 0 to allow geometrical trans-
          formations of extruded entities)
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.ExtrudeReturnLateralEntities
          Add lateral entities in lists returned by extrusion commands?
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.ExtrudeSplinePoints
          Number of control points for splines created during extrusion
          Default value: 5
          Saved in: General.OptionsFileName
Geometry.HighlightOrphans
          Highlight orphan and boundary entities?
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.LabelType
          Type of entity label (0: description, 1: elementary entity tag, 2: physical group tag,
          3: elementary name, 4: physical name)
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.Light
          Enable lighting for the geometry
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.LightTwoSide
          Light both sides of surfaces (leads to slower rendering)
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.MatchGeomAndMesh
          Matches geometries and meshes
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.MatchMeshScaleFactor
          Rescaling factor for the mesh to correspond to size of the geometry
          Default value: 1
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                  249
Geometry.MatchMeshTolerance
          Tolerance for matching mesh and geometry
          Default value: 1e-06
          Saved in: General.OptionsFileName
Geometry.Normals
          Display size of normal vectors (in pixels)
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.NumSubEdges
          Number of subdivisions (per control point or pole) used to draw curves
          Default value: 40
          Saved in: General.OptionsFileName
Geometry.OCCAutoEmbed
          Automatically embed points, curves and faces in higher dimensional entities if they
          are marked as ’internal’ by OpenCASCADE
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.OCCAutoFix
          Automatically fix orientation of wires, faces, shells and volumes when creating new
          entities with the OpenCASCADE kernel
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.OCCBooleanPreserveNumbering
          Try to preserve the numbering of entities through OpenCASCADE boolean opera-
          tions
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.OCCBoundsUseStl
          Use STL mesh for computing bounds of OpenCASCADE shapes (more accurate,
          but slower)
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OCCDisableStl
          Disable STL creation in OpenCASCADE kernel
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OCCFixDegenerated
          Fix degenerated edges/faces when importing STEP, IGES and BRep models with
          the OpenCASCADE kernel
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OCCFixSmallEdges
          Fix small edges when importing STEP, IGES and BRep models with the OpenCAS-
          CADE kernel
          Default value: 0
          Saved in: General.OptionsFileName
250                                                                             Gmsh 4.11.1
Geometry.OCCFixSmallFaces
          Fix small faces when importing STEP, IGES and BRep models with the OpenCAS-
          CADE kernel
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OCCExportOnlyVisible
          Only consider visible shapes when exporting STEP or BREP models with the Open-
          CASCADE kernel
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OCCImportLabels
          Import labels and colors when importing STEP models with the OpenCASCADE
          kernel
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.OCCMakeSolids
          Fix shells and make solids when importing STEP, IGES and BRep models with the
          OpenCASCADE kernel
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OCCParallel
          Use multi-threaded OpenCASCADE boolean operators
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OCCSafeUnbind
          Revert to safe (i.e. with recursive checks on boundaries) unbinding of entities in
          boolean operations and geometrical transformations
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OCCScaling
          Scale STEP, IGES and BRep models by the given factor when importing them with
          the OpenCASCADE kernel
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.OCCSewFaces
          Sew faces when importing STEP, IGES and BRep models with the OpenCASCADE
          kernel
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OCCThruSectionsDegree
          Maximum degree of surfaces generated by thrusections with the OpenCASCADE
          kernel, if not explicitly specified (default OCC value if negative)
          Default value: -1
          Saved in: General.OptionsFileName
Geometry.OCCUnionUnify
          Try to unify faces and edges (remove internal seams) which lie on the same geometry
          after performing a boolean union with the OpenCASCADE kernel
          Default value: 1
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                   251
Geometry.OCCUseGenericClosestPoint
          Use generic algrithm to compute point projections in the OpenCASCADE kernel
          (less robust, but significally faster in some configurations)
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OffsetX
          Model display offset along X-axis (in model coordinates)
          Default value: 0
          Saved in: -
Geometry.OffsetY
          Model display offset along Y-axis (in model coordinates)
          Default value: 0
          Saved in: -
Geometry.OffsetZ
          Model display offset along Z-axis (in model coordinates)
          Default value: 0
          Saved in: -
Geometry.OldCircle
          Use old circle description (compatibility option for old Gmsh geometries)
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OldRuledSurface
          Use old 3-sided ruled surface interpolation (compatibility option for old Gmsh ge-
          ometries)
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.OldNewReg
          Use old newreg definition for geometrical transformations (compatibility option for
          old Gmsh geometries)
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.OrientedPhysicals
          Use sign of elementary entity in physical definition as orientation indicator
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.Points
          Display geometry points?
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.PointLabels
          Display points labels?
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.PointSelectSize
          Display size of selected points (in pixels)
          Default value: 6
          Saved in: General.OptionsFileName
252                                                                              Gmsh 4.11.1
Geometry.PointSize
          Display size of points (in pixels)
          Default value: 4
          Saved in: General.OptionsFileName
Geometry.PointType
          Display points as solid color dots (0) or 3D spheres (1)
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.ReparamOnFaceRobust
          Use projection for reparametrization of a point classified on GEdge on a GFace
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.ScalingFactor
          Global geometry scaling factor
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.SnapPoints
          Snap points on curves if their evaluation using the parametrization is larger than
          the geometrical tolerance (currently only with the OpenCASCADE kernel)
          Default value: 1
          Saved in: General.OptionsFileName
Geometry.SnapX
          Snapping grid spacing along the X-axis
          Default value: 0.1
          Saved in: General.OptionsFileName
Geometry.SnapY
          Snapping grid spacing along the Y-axis
          Default value: 0.1
          Saved in: General.OptionsFileName
Geometry.SnapZ
          Snapping grid spacing along the Z-axis
          Default value: 0.1
          Saved in: General.OptionsFileName
Geometry.Surfaces
          Display geometry surfaces?
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.SurfaceLabels
          Display surface labels?
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.SurfaceType
          Surface display type (0: cross, 1: wireframe, 2: solid). Wireframe and solid are not
          available with the built-in geometry kernel.
          Default value: 0
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                  253
Geometry.Tangents
          Display size of tangent vectors (in pixels)
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.Tolerance
          Geometrical tolerance
          Default value: 1e-08
          Saved in: General.OptionsFileName
Geometry.ToleranceBoolean
          Geometrical tolerance for boolean operations
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.Transform
          Transform model display coordinates (0: no, 1: scale)
          Default value: 0
          Saved in: -
Geometry.TransformXX
          Element (1,1) of the 3x3 model display transformation matrix
          Default value: 1
          Saved in: -
Geometry.TransformXY
          Element (1,2) of the 3x3 model display transformation matrix
          Default value: 0
          Saved in: -
Geometry.TransformXZ
          Element (1,3) of the 3x3 model display transformation matrix
          Default value: 0
          Saved in: -
Geometry.TransformYX
          Element (2,1) of the 3x3 model display transformation matrix
          Default value: 0
          Saved in: -
Geometry.TransformYY
          Element (2,2) of the 3x3 model display transformation matrix
          Default value: 1
          Saved in: -
Geometry.TransformYZ
          Element (2,3) of the 3x3 model display transformation matrix
          Default value: 0
          Saved in: -
Geometry.TransformZX
          Element (3,1) of the 3x3 model display transformation matrix
          Default value: 0
          Saved in: -
Geometry.TransformZY
          Element (3,2) of the 3x3 model display transformation matrix
          Default value: 0
          Saved in: -
254                                                                      Gmsh 4.11.1
Geometry.TransformZZ
          Element (3,3) of the 3x3 model display transformation matrix
          Default value: 1
          Saved in: -
Geometry.Volumes
          Display geometry volumes?
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.VolumeLabels
          Display volume labels?
          Default value: 0
          Saved in: General.OptionsFileName
Geometry.Color.Points
          Normal geometry point color
          Default value: {90,90,90}
          Saved in: General.OptionsFileName
Geometry.Color.Curves
          Normal geometry curve color
          Default value: {0,0,255}
          Saved in: General.OptionsFileName
Geometry.Color.Surfaces
          Normal geometry surface color
          Default value: {128,128,128}
          Saved in: General.OptionsFileName
Geometry.Color.Volumes
          Normal geometry volume color
          Default value: {255,255,0}
          Saved in: General.OptionsFileName
Geometry.Color.Selection
          Selected geometry color
          Default value: {255,0,0}
          Saved in: General.OptionsFileName
Geometry.Color.HighlightZero
          Highlight 0 color
          Default value: {255,0,0}
          Saved in: General.OptionsFileName
Geometry.Color.HighlightOne
          Highlight 1 color
          Default value: {255,150,0}
          Saved in: General.OptionsFileName
Geometry.Color.HighlightTwo
          Highlight 2 color
          Default value: {255,255,0}
          Saved in: General.OptionsFileName
Geometry.Color.Tangents
          Tangent geometry vectors color
          Default value: {255,255,0}
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                  255
Geometry.Color.Normals
          Normal geometry vectors color
          Default value: {255,0,0}
          Saved in: General.OptionsFileName
Geometry.Color.Projection
          Projection surface color
          Default value: {0,255,0}
          Saved in: General.OptionsFileName
Mesh.Binary
          Write mesh files in binary format (if possible)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.BoundaryLayerFanElements
          Number of elements (per Pi radians) for 2D boundary layer fans
          Default value: 5
          Saved in: General.OptionsFileName
Mesh.CgnsImportOrder
          Order of the mesh to be created by coarsening CGNS structured zones (1 to 4)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.CgnsImportIgnoreBC
          Ignore information in ZoneBC structures when reading a CGNS file
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.CgnsImportIgnoreSolution
          Ignore solution when reading a CGNS file
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.CgnsConstructTopology
          Reconstruct the model topology (BREP) after reading a CGNS file
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.CgnsExportCPEX0045
          Use the CPEX0045 convention when exporting a high-order mesh to CGNS
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.CgnsExportStructured
          Export transfinite meshes as structured CGNS grids
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Clip
            Enable clipping planes? (Plane[i]=2^i, i=0,...,5)
            Default value: 0
            Saved in: -
Mesh.ColorCarousel
          Mesh coloring (0: by element type, 1: by elementary entity, 2: by physical group,
          3: by mesh partition)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.CompoundClassify
          How are surface mesh elements classified on compounds? (0: on the new discrete
          surface, 1: on the original geometrical surfaces - incompatible with e.g. high-order
          meshing)
          Default value: 1
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                   257
Mesh.CompoundMeshSizeFactor
          Mesh size factor applied to compound parts
          Default value: 0.5
          Saved in: General.OptionsFileName
Mesh.CpuTime
          CPU time (in seconds) for the generation of the current mesh (read-only)
          Default value: 0
          Saved in: -
Mesh.CreateTopologyMsh2
          Attempt to (re)create the model topology when reading MSH2 files
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.DrawSkinOnly
          Draw only the skin of 3D meshes?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Dual
            Display the dual mesh obtained by barycentric subdivision
            Default value: 0
            Saved in: General.OptionsFileName
Mesh.ElementOrder
          Element order (1: first order elements)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.Explode
          Element shrinking factor (between 0 and 1)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.FirstElementTag
          First tag (>= 1) of mesh elements when generating or renumbering a mesh
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.FirstNodeTag
          First tag (>= 1) of mesh nodes when generating or renumbering a mesh
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.FlexibleTransfinite
          Allow transfinite constraints to be modified for recombination (e.g. Blossom) or by
          global mesh size factor
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Format
          Mesh output format (1: msh, 2: unv, 10: auto, 16: vtk, 19: vrml, 21: mail, 26: pos
          stat, 27: stl, 28: p3d, 30: mesh, 31: bdf, 32: cgns, 33: med, 34: diff, 38: ir3, 39:
          inp, 40: ply2, 41: celum, 42: su2, 47: tochnog, 49: neu, 50: matlab)
          Default value: 10
          Saved in: General.OptionsFileName
258                                                                            Gmsh 4.11.1
Mesh.Hexahedra
          Display mesh hexahedra?
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.HighOrderDistCAD
          Try to optimize distance to CAD in high-order optimizer?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.HighOrderFixBoundaryNodes
          Fix boundary nodes during high-order optimization?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.HighOrderIterMax
          Maximum number of iterations in high-order optimization pass
          Default value: 100
          Saved in: General.OptionsFileName
Mesh.HighOrderNumLayers
          Number of layers around a problematic element to consider for high-order opti-
          mization, or number of element layers to consider in the boundary layer mesh for
          high-order fast curving
          Default value: 6
          Saved in: General.OptionsFileName
Mesh.HighOrderOptimize
          Optimize high-order meshes? (0: none, 1: optimization, 2: elastic+optimization, 3:
          elastic, 4: fast curving)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.HighOrderPassMax
          Maximum number of high-order optimization passes (moving barrier)
          Default value: 25
          Saved in: General.OptionsFileName
Mesh.HighOrderPeriodic
          Force location of nodes for periodic meshes using periodicity transform (0: assume
          identical parametrisations, 1: invert parametrisations, 2: compute closest point
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.HighOrderPoissonRatio
          Poisson ratio of the material used in the elastic smoother for high-order meshes
          (between -1.0 and 0.5, excluded)
          Default value: 0.33
          Saved in: General.OptionsFileName
Mesh.HighOrderSavePeriodic
          Save high-order nodes in periodic section of MSH files?
          Default value: 0
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                  259
Mesh.HighOrderPrimSurfMesh
          Try to fix flipped surface mesh elements in high-order optimizer?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.HighOrderThresholdMin
          Minimum threshold for high-order element optimization
          Default value: 0.1
          Saved in: General.OptionsFileName
Mesh.HighOrderThresholdMax
          Maximum threshold for high-order element optimization
          Default value: 2
          Saved in: General.OptionsFileName
Mesh.HighOrderFastCurvingNewAlgo
          Curve boundary layer with new "fast curving" algorithm (experimental)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.HighOrderCurveOuterBL
          Curve also the outer surface of the boundary layer in the fast curving algorithm (0
          = do not curve, 1 = curve according to boundary, 2 = curve without breaking outer
          elements)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.HighOrderMaxRho
          Maximum min/max ratio of edge/face size for the detection of BL element columns
          in the fast curving algorithm
          Default value: 0.3
          Saved in: General.OptionsFileName
Mesh.HighOrderMaxAngle
          Maximum angle between layers of BL elements for the detection of columns in the
          fast curving algorithm
          Default value: 0.174533
          Saved in: General.OptionsFileName
Mesh.HighOrderMaxInnerAngle
          Maximum angle between edges/faces within layers of BL triangles/tets for the de-
          tection of columns in the fast curving algorithm
          Default value: 0.523599
          Saved in: General.OptionsFileName
Mesh.IgnoreParametrization
          Skip parametrization section when reading meshes in the MSH4 format
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.IgnorePeriodicity
          Skip periodic node section and skip periodic boundary alignment step when reading
          meshes in the MSH2 format
          Default value: 1
          Saved in: General.OptionsFileName
260                                                                             Gmsh 4.11.1
Mesh.LabelSampling
          Label sampling rate (display one label every ‘LabelSampling’ elements)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.LabelType
          Type of element label (0: node/element tag, 1: elementary entity tag, 2: physical
          entity tag, 3: partition, 4: coordinates)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.LcIntegrationPrecision
          Accuracy of evaluation of the LC field for 1D mesh generation
          Default value: 1e-09
          Saved in: General.OptionsFileName
Mesh.Light
             Enable lighting for the mesh
             Default value: 1
             Saved in: General.OptionsFileName
Mesh.LightLines
          Enable lighting for mesh edges (0: no, 1: surfaces, 2: surfaces+volumes
          Default value: 2
          Saved in: General.OptionsFileName
Mesh.LightTwoSide
          Light both sides of surfaces (leads to slower rendering)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.Lines
             Display mesh lines (1D elements)?
             Default value: 0
             Saved in: General.OptionsFileName
Mesh.LineLabels
          Display mesh line labels?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.LineWidth
          Display width of mesh lines (in pixels)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.MaxIterDelaunay3D
          Maximum number of point insertion iterations in 3D Delaunay mesher (0: unlim-
          ited)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MaxNumThreads1D
          Maximum number of threads for 1D meshing (0: use General.NumThreads)
          Default value: 0
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                 261
Mesh.MaxNumThreads2D
          Maximum number of threads for 2D meshing (0: use General.NumThreads)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MaxNumThreads3D
          Maximum number of threads for 3D meshing (0: use General.NumThreads)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MaxRetries
          Maximum number of times meshing is retried on curves and surfaces with a pending
          mesh
          Default value: 10
          Saved in: General.OptionsFileName
Mesh.MeshOnlyVisible
          Mesh only visible entities (experimental)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MeshOnlyEmpty
          Mesh only entities that have no existing mesh
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MeshSizeExtendFromBoundary
          Extend computation of mesh element sizes from the boundaries into the interior (0:
          never; 1: for surfaces and volumes; 2: for surfaces and volumes, but use smallest
          surface element edge length instead of longest length in 3D Delaunay; -2: only for
          surfaces; -3: only for volumes)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.MeshSizeFactor
          Factor applied to all mesh element sizes
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.MeshSizeMin
          Minimum mesh element size
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MeshSizeMax
          Maximum mesh element size
          Default value: 1e+22
          Saved in: General.OptionsFileName
Mesh.MeshSizeFromCurvature
          Automatically compute mesh element sizes from curvature, using the value as the
          target number of elements per 2 * Pi radians
          Default value: 0
          Saved in: General.OptionsFileName
262                                                                            Gmsh 4.11.1
Mesh.MeshSizeFromCurvatureIsotropic
          Force isotropic curvature estimation when the mesh size is computed from curvature
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MeshSizeFromPoints
          Compute mesh element sizes from values given at geometry points
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.MeshSizeFromParametricPoints
          Compute mesh element sizes from values given at geometry points defining para-
          metric curves
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MetisAlgorithm
          METIS partitioning algorithm ’ptype’ (1: Recursive, 2: K-way)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.MetisEdgeMatching
          METIS edge matching type ’ctype’ (1: Random, 2: Sorted Heavy-Edge)
          Default value: 2
          Saved in: General.OptionsFileName
Mesh.MetisMaxLoadImbalance
          METIS maximum load imbalance ’ufactor’ (-1: default, i.e. 30 for K-way and 1 for
          Recursive)
          Default value: -1
          Saved in: General.OptionsFileName
Mesh.MetisObjective
          METIS objective type ’objtype’ (1: min. edge-cut, 2: min. communication volume)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.MetisMinConn
          METIS minimize maximum connectivity of partitions ’minconn’ (-1: default)
          Default value: -1
          Saved in: General.OptionsFileName
Mesh.MetisRefinementAlgorithm
          METIS algorithm for k-way refinement ’rtype’ (1: FM-based cut, 2: Greedy, 3:
          Two-sided node FM, 4: One-sided node FM)
          Default value: 2
          Saved in: General.OptionsFileName
Mesh.MinimumLineNodes
          Minimum number of nodes used to mesh (straight) lines
          Default value: 2
          Saved in: General.OptionsFileName
Mesh.MinimumCircleNodes
          Minimum number of nodes used to mesh circles and ellipses
          Default value: 7
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                 263
Mesh.MinimumCurveNodes
          Minimum number of nodes used to mesh curves other than lines, circles and ellipses
          Default value: 3
          Saved in: General.OptionsFileName
Mesh.MinimumElementsPerTwoPi
          [Deprecated]
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MshFileVersion
          Version of the MSH file format to use
          Default value: 4.1
          Saved in: General.OptionsFileName
Mesh.MedFileMinorVersion
          Minor version of the MED file format to use (-1: use minor version of the MED
          library)
          Default value: -1
          Saved in: General.OptionsFileName
Mesh.MedImportGroupsOfNodes
          Import groups of nodes (0: no; 1: create geometrical point for each node)?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.MedSingleModel
          Import MED meshes in the current model, even if several MED mesh names exist
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.NbHexahedra
          Number of hexahedra in the current mesh (read-only)
          Default value: 0
          Saved in: -
Mesh.NbNodes
          Number of nodes in the current mesh (read-only)
          Default value: 0
          Saved in: -
Mesh.NbPartitions
          Number of partitions
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.NbPrisms
          Number of prisms in the current mesh (read-only)
          Default value: 0
          Saved in: -
Mesh.NbPyramids
          Number of pyramids in the current mesh (read-only)
          Default value: 0
          Saved in: -
264                                                                           Gmsh 4.11.1
Mesh.NbTrihedra
          Number of trihedra in the current mesh (read-only)
          Default value: 0
          Saved in: -
Mesh.NbQuadrangles
          Number of quadrangles in the current mesh (read-only)
          Default value: 0
          Saved in: -
Mesh.NbTetrahedra
          Number of tetrahedra in the current mesh (read-only)
          Default value: 0
          Saved in: -
Mesh.NbTriangles
          Number of triangles in the current mesh (read-only)
          Default value: 0
          Saved in: -
Mesh.NewtonConvergenceTestXYZ
          Force inverse surface mapping algorithm (Newton-Raphson) to converge in real co-
          ordinates (experimental)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Nodes
             Display mesh nodes?
             Default value: 0
             Saved in: General.OptionsFileName
Mesh.NodeLabels
          Display mesh node labels?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.NodeSize
          Display size of mesh nodes (in pixels)
          Default value: 4
          Saved in: General.OptionsFileName
Mesh.NodeType
          Display mesh nodes as solid color dots (0) or 3D spheres (1)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Normals
          Display size of normal vectors (in pixels)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.NumSubEdges
          Number of edge subdivisions used to draw high-order mesh elements
          Default value: 2
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                               265
Mesh.OldInitialDelaunay2D
          Use old initial 2D Delaunay code
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Optimize
          Optimize the mesh to improve the quality of tetrahedral elements
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.OptimizeThreshold
          Optimize tetrahedra that have a quality below ...
          Default value: 0.3
          Saved in: General.OptionsFileName
Mesh.OptimizeNetgen
          Optimize the mesh using Netgen to improve the quality of tetrahedral elements
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.PartitionHexWeight
          Weight of hexahedral element for METIS load balancing (-1: automatic)
          Default value: -1
          Saved in: General.OptionsFileName
Mesh.PartitionLineWeight
          Weight of line element for METIS load balancing (-1: automatic)
          Default value: -1
          Saved in: General.OptionsFileName
Mesh.PartitionPrismWeight
          Weight of prismatic element (wedge) for METIS load balancing (-1: automatic)
          Default value: -1
          Saved in: General.OptionsFileName
Mesh.PartitionPyramidWeight
          Weight of pyramidal element for METIS load balancing (-1: automatic)
          Default value: -1
          Saved in: General.OptionsFileName
Mesh.PartitionQuadWeight
          Weight of quadrangle for METIS load balancing (-1: automatic)
          Default value: -1
          Saved in: General.OptionsFileName
Mesh.PartitionTrihedronWeight
          Weight of trihedron element for METIS load balancing (-1: automatic)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.PartitionTetWeight
          Weight of tetrahedral element for METIS load balancing (-1: automatic)
          Default value: -1
          Saved in: General.OptionsFileName
Mesh.PartitionTriWeight
          Weight of triangle element for METIS load balancing (-1: automatic)
          Default value: -1
          Saved in: General.OptionsFileName
266                                                                               Gmsh 4.11.1
Mesh.PartitionCreateTopology
          Create boundary representation of partitions
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.PartitionCreatePhysicals
          Create physical groups for partitions, based on existing physical groups
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.PartitionCreateGhostCells
          Create ghost cells, i.e. create for each partition a ghost entity containing elements
          connected to neighboring partitions by at least one node.
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.PartitionSplitMeshFiles
          Write one file for each mesh partition
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.PartitionTopologyFile
          Write a .pro file with the partition topology
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.PartitionOldStyleMsh2
          Write partitioned meshes in MSH2 format using old style (i.e. by not referencing new
          partitioned entities, except on partition boundaries), for backward compatibility
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.PartitionConvertMsh2
          When reading partitioned meshes in MSH2 format, create new partition entities
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.PreserveNumberingMsh2
          Preserve element numbering in MSH2 format (will break meshes with multiple phys-
          ical groups for a single elementary entity)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Prisms
          Display mesh prisms?
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.Pyramids
          Display mesh pyramids?
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.QuadqsSizemapMethod
          Size map method in QuadQuasiStructured. 0: default, 1: cross-field,2: cross-field +
          CAD small features adaptation,3: from background mesh (e.g. sizes in current tri-
          angulation),4: cross-field + CAD small features adaptation (clamped by background
Chapter 7: Gmsh options                                                                   267
           mesh)
           Default value: 3
           Saved in: General.OptionsFileName
Mesh.QuadqsTopologyOptimizationMethods
          Topology optimization methods in QuadQuasiStructured. 0: default (all),100:
          pattern-based CAD faces,010: disk quadrangulation remeshing,001: cavity remesh-
          ing,xxx: combination of multiple methods (e.g. 111 for all)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.QuadqsRemeshingBoldness
          Controls how much cavity remeshing is allowed to distort the quad mesh. From 0 (no
          quality decrease during remeshing) to 1 (quality can tend to 0 during remeshing).
          Default value: 0.66
          Saved in: General.OptionsFileName
Mesh.QuadqsScalingOnTriangulation
          Ratio on the edge length between the triangulation and the quadrangulation. Use
          a small ratio (e.g. 0.5) to get a background triangulation finer than the quad mesh.
          Useful to get a more accurate cross-field.
          Default value: 0.75
          Saved in: General.OptionsFileName
Mesh.Quadrangles
          Display mesh quadrangles?
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.QualityInf
          Only display elements whose quality measure is greater than QualityInf
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.QualitySup
          Only display elements whose quality measure is smaller than QualitySup
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.QualityType
          Type of quality measure (0: SICN~signed inverse condition number, 1: SIGE~signed
          inverse gradient error, 2: gamma~vol/sum face/max edge, 3: Disto~minJ/maxJ
          Default value: 2
          Saved in: General.OptionsFileName
Mesh.RadiusInf
          Only display elements whose longest edge is greater than RadiusInf
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.RadiusSup
          Only display elements whose longest edge is smaller than RadiusSup
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.RandomFactor
          Random factor used in the 2D meshing algorithm (should be increased if Random-
          Factor * size(triangle)/size(model) approaches machine accuracy)
268                                                                             Gmsh 4.11.1
Mesh.Recombine3DConformity
          3d recombination conformity type (0: nonconforming, 1: trihedra, 2: pyra-
          mids+trihedra, 3:pyramids+hexSplit+trihedra, 4:hexSplit+trihedra)(experimental)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.RefineSteps
          Number of refinement steps in the MeshAdapt-based 2D algorithms
          Default value: 10
          Saved in: General.OptionsFileName
Mesh.Renumber
          Renumber nodes and elements in a continuous sequence after mesh generation
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.ReparamMaxTriangles
          Maximum number of triangles in a single parametrization patch
          Default value: 250000
          Saved in: General.OptionsFileName
Mesh.SaveAll
          Save all elements, even if they don’t belong to physical groups (for some mesh
          formats, this removes physical groups altogether)
          Default value: 0
          Saved in: -
Mesh.SaveElementTagType
          Type of the element tag saved in mesh formats that don’t support saving physical
          or partition ids (1: elementary, 2: physical, 3: partition)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.SaveGroupsOfElements
          Save groups of elements for each physical group (for UNV and INP mesh format) if
          value is positive; if negative, save groups of elements for physical groups of dimension
          dim if the (dim+1)^th least significant digit of -Mesh.SaveGroupsOfElements is 1
          (for example: -100 will only savesurfaces, while -1010 will save volumes and curves),
          and for INP skip saving elements of dimension dim altogether if the (dim+1)^th
          least significant digit of -Mesh.SaveGroupsOfElements is 0
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.SaveGroupsOfNodes
          Save groups of nodes for each physical group (for UNV, INP and Tochnog mesh
          formats) if value is positive; if negative, save groups of nodes for physical groups of
          dimension dim if the (dim+1)^th least significant digit of -Mesh.SaveGroupsOfNodes
          is 1 (for example: -100 will only save surfaces, while -1010 will save volumes and
          curves); for INP, save groups of nodes for all entities of dimension dim if the
          (dim+1)^th least significant digit of -Mesh.SaveGroupsOfNodes is 2
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.SaveParametric
          Save parametric coordinates of nodes
          Default value: 0
          Saved in: General.OptionsFileName
270                                                                            Gmsh 4.11.1
Mesh.SaveWithoutOrphans
          Don’t save orphan entities (not connected to any highest dimensional entity in the
          model) in MSH4 files
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.SaveTopology
          Save model topology in MSH2 output files (this is always saved in MSH3 and above)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.ScalingFactor
          Global scaling factor applied to the saved mesh
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.SecondOrderIncomplete
          Create incomplete second order elements? (8-node quads, 20-node hexas, etc.)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.SecondOrderLinear
          Should second order nodes (as well as nodes generated with subdivision algorithms)
          simply be created by linear interpolation?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Smoothing
          Number of smoothing steps applied to the final mesh
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.SmoothCrossField
          Apply n barycentric smoothing passes to the 3D cross field
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.CrossFieldClosestPoint
          Use closest point to compute 2D crossfield
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.SmoothNormals
          Smooth the mesh normals?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.SmoothRatio
          Ratio between mesh sizes at nodes of a same edge (used in BAMG)
          Default value: 1.8
          Saved in: General.OptionsFileName
Mesh.StlAngularDeflection
          Maximum angular deflection when creating STL representations of entities (cur-
          rently only used with the OpenCASCADE kernel)
          Default value: 0.3
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                     271
Mesh.StlLinearDeflection
          Maximum relative linear deflection when creating STL representation of entities
          (currently only used with the OpenCASCADE kernel)
          Default value: 0.001
          Saved in: General.OptionsFileName
Mesh.StlLinearDeflectionRelative
          Compute the linear deflection for STL representations relative to the length of curves
          (currently only used with the OpenCASCADE kernel)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.StlOneSolidPerSurface
          Create one solid per surface when exporting STL files? (0: single solid, 1: one solid
          per face, 2: one solid per physical surface)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.StlRemoveDuplicateTriangles
          Remove duplicate triangles when importing STL files?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.SubdivisionAlgorithm
          Mesh subdivision algorithm (0: none, 1: all quadrangles, 2: all hexahedra, 3:
          barycentric)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.SurfaceEdges
          Display edges of surface mesh?
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.SurfaceFaces
          Display faces of surface mesh?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.SurfaceLabels
          Display surface mesh element labels?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.SwitchElementTags
          Invert elementary and physical tags when reading the mesh
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Tangents
          Display size of tangent vectors (in pixels)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Tetrahedra
          Display mesh tetrahedra?
          Default value: 1
          Saved in: General.OptionsFileName
272                                                                                  Gmsh 4.11.1
Mesh.ToleranceEdgeLength
          Skip a model edge in mesh generation if its length is less than user’s defined tolerance
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.ToleranceInitialDelaunay
          Tolerance for initial 3D Delaunay mesher
          Default value: 1e-12
          Saved in: General.OptionsFileName
Mesh.ToleranceReferenceElement
          Tolerance for classifying a point inside a reference element (of size 1)
          Default value: 1e-06
          Saved in: General.OptionsFileName
Mesh.Triangles
          Display mesh triangles?
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.Trihedra
          Display mesh trihedra?
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.TransfiniteTri
          Use alternative transfinite arrangement when meshing 3-sided surfaces
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.UnvStrictFormat
          Use strict format specification for UNV files, with ’D’ for exponents (instead of ’E’
          as used by some tools)
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.VolumeEdges
          Display edges of volume mesh?
          Default value: 1
          Saved in: General.OptionsFileName
Mesh.VolumeFaces
          Display faces of volume mesh?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.VolumeLabels
          Display volume mesh element labels?
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Voronoi
          Display the voronoi diagram
          Default value: 0
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                  273
Mesh.ZoneDefinition
          Method for defining a zone (0: single zone, 1: by partition, 2: by physical)
          Default value: 0
          Saved in: General.OptionsFileName
Mesh.Color.Nodes
          Mesh node color
          Default value: {0,0,255}
          Saved in: General.OptionsFileName
Mesh.Color.NodesSup
          Second order mesh node color
          Default value: {255,0,255}
          Saved in: General.OptionsFileName
Mesh.Color.Lines
          Mesh line color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
Mesh.Color.Triangles
          Mesh triangle color (if Mesh.ColorCarousel=0)
          Default value: {160,150,255}
          Saved in: General.OptionsFileName
Mesh.Color.Quadrangles
          Mesh quadrangle color (if Mesh.ColorCarousel=0)
          Default value: {130,120,225}
          Saved in: General.OptionsFileName
Mesh.Color.Tetrahedra
          Mesh tetrahedron color (if Mesh.ColorCarousel=0)
          Default value: {160,150,255}
          Saved in: General.OptionsFileName
Mesh.Color.Hexahedra
          Mesh hexahedron color (if Mesh.ColorCarousel=0)
          Default value: {130,120,225}
          Saved in: General.OptionsFileName
Mesh.Color.Prisms
          Mesh prism color (if Mesh.ColorCarousel=0)
          Default value: {232,210,23}
          Saved in: General.OptionsFileName
Mesh.Color.Pyramids
          Mesh pyramid color (if Mesh.ColorCarousel=0)
          Default value: {217,113,38}
          Saved in: General.OptionsFileName
Mesh.Color.Trihedra
          Mesh trihedron color (if Mesh.ColorCarousel=0)
          Default value: {20,255,0}
          Saved in: General.OptionsFileName
Mesh.Color.Tangents
          Tangent mesh vector color
          Default value: {255,255,0}
          Saved in: General.OptionsFileName
274                                           Gmsh 4.11.1
Mesh.Color.Normals
          Normal mesh vector color
          Default value: {255,0,0}
          Saved in: General.OptionsFileName
Mesh.Color.Zero
          Color 0 in color carousel
          Default value: {255,120,0}
          Saved in: General.OptionsFileName
Mesh.Color.One
          Color 1 in color carousel
          Default value: {0,255,132}
          Saved in: General.OptionsFileName
Mesh.Color.Two
          Color 2 in color carousel
          Default value: {255,160,0}
          Saved in: General.OptionsFileName
Mesh.Color.Three
          Color 3 in color carousel
          Default value: {0,255,192}
          Saved in: General.OptionsFileName
Mesh.Color.Four
          Color 4 in color carousel
          Default value: {255,200,0}
          Saved in: General.OptionsFileName
Mesh.Color.Five
          Color 5 in color carousel
          Default value: {0,216,255}
          Saved in: General.OptionsFileName
Mesh.Color.Six
          Color 6 in color carousel
          Default value: {255,240,0}
          Saved in: General.OptionsFileName
Mesh.Color.Seven
          Color 7 in color carousel
          Default value: {0,176,255}
          Saved in: General.OptionsFileName
Mesh.Color.Eight
          Color 8 in color carousel
          Default value: {228,255,0}
          Saved in: General.OptionsFileName
Mesh.Color.Nine
          Color 9 in color carousel
          Default value: {0,116,255}
          Saved in: General.OptionsFileName
Mesh.Color.Ten
          Color 10 in color carousel
          Default value: {188,255,0}
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                       275
Mesh.Color.Eleven
          Color 11 in color carousel
          Default value: {0,76,255}
          Saved in: General.OptionsFileName
Mesh.Color.Twelve
          Color 12 in color carousel
          Default value: {148,255,0}
          Saved in: General.OptionsFileName
Mesh.Color.Thirteen
          Color 13 in color carousel
          Default value: {24,0,255}
          Saved in: General.OptionsFileName
Mesh.Color.Fourteen
          Color 14 in color carousel
          Default value: {108,255,0}
          Saved in: General.OptionsFileName
Mesh.Color.Fifteen
          Color 15 in color carousel
          Default value: {84,0,255}
          Saved in: General.OptionsFileName
Mesh.Color.Sixteen
          Color 16 in color carousel
          Default value: {68,255,0}
          Saved in: General.OptionsFileName
Mesh.Color.Seventeen
          Color 17 in color carousel
          Default value: {104,0,255}
          Saved in: General.OptionsFileName
Mesh.Color.Eighteen
          Color 18 in color carousel
          Default value: {0,255,52}
          Saved in: General.OptionsFileName
Mesh.Color.Nineteen
          Color 19 in color carousel
          Default value: {184,0,255}
          Saved in: General.OptionsFileName
Solver.Executable2
          System command to launch solver 2
          Default value: ""
          Saved in: General.SessionFileName
Solver.Executable3
          System command to launch solver 3
          Default value: ""
          Saved in: General.SessionFileName
Solver.Executable4
          System command to launch solver 4
          Default value: ""
          Saved in: General.SessionFileName
Solver.Executable5
          System command to launch solver 5
          Default value: ""
          Saved in: General.SessionFileName
Solver.Executable6
          System command to launch solver 6
          Default value: ""
          Saved in: General.SessionFileName
Solver.Executable7
          System command to launch solver 7
          Default value: ""
          Saved in: General.SessionFileName
Solver.Executable8
          System command to launch solver 8
          Default value: ""
          Saved in: General.SessionFileName
Solver.Executable9
          System command to launch solver 9
          Default value: ""
          Saved in: General.SessionFileName
Solver.Name0
          Name of solver 0
          Default value: "GetDP"
          Saved in: General.SessionFileName
Solver.Name1
          Name of solver 1
          Default value: ""
          Saved in: General.SessionFileName
Solver.Name2
          Name of solver 2
          Default value: ""
          Saved in: General.SessionFileName
Solver.Name3
          Name of solver 3
          Default value: ""
          Saved in: General.SessionFileName
Chapter 7: Gmsh options                       277
Solver.Name4
          Name of solver 4
          Default value: ""
          Saved in: General.SessionFileName
Solver.Name5
          Name of solver 5
          Default value: ""
          Saved in: General.SessionFileName
Solver.Name6
          Name of solver 6
          Default value: ""
          Saved in: General.SessionFileName
Solver.Name7
          Name of solver 7
          Default value: ""
          Saved in: General.SessionFileName
Solver.Name8
          Name of solver 8
          Default value: ""
          Saved in: General.SessionFileName
Solver.Name9
          Name of solver 9
          Default value: ""
          Saved in: General.SessionFileName
Solver.Extension0
          File extension for solver 0
          Default value: ".pro"
          Saved in: General.SessionFileName
Solver.Extension1
          File extension for solver 1
          Default value: ""
          Saved in: General.SessionFileName
Solver.Extension2
          File extension for solver 2
          Default value: ""
          Saved in: General.SessionFileName
Solver.Extension3
          File extension for solver 3
          Default value: ""
          Saved in: General.SessionFileName
Solver.Extension4
          File extension for solver 4
          Default value: ""
          Saved in: General.SessionFileName
Solver.Extension5
          File extension for solver 5
          Default value: ""
          Saved in: General.SessionFileName
278                                                                              Gmsh 4.11.1
Solver.Extension6
          File extension for solver 6
          Default value: ""
          Saved in: General.SessionFileName
Solver.Extension7
          File extension for solver 7
          Default value: ""
          Saved in: General.SessionFileName
Solver.Extension8
          File extension for solver 8
          Default value: ""
          Saved in: General.SessionFileName
Solver.Extension9
          File extension for solver 9
          Default value: ""
          Saved in: General.SessionFileName
Solver.OctaveInterpreter
          Name of the Octave interpreter (used to run .m files)
          Default value: "octave"
          Saved in: General.SessionFileName
Solver.PythonInterpreter
          Name of the Python interpreter (used to run .py files if they are not executable)
          Default value: "python"
          Saved in: General.SessionFileName
Solver.RemoteLogin0
          Command to login to a remote host to launch solver 0
          Default value: ""
          Saved in: General.SessionFileName
Solver.RemoteLogin1
          Command to login to a remote host to launch solver 1
          Default value: ""
          Saved in: General.SessionFileName
Solver.RemoteLogin2
          Command to login to a remote host to launch solver 2
          Default value: ""
          Saved in: General.SessionFileName
Solver.RemoteLogin3
          Command to login to a remote host to launch solver 3
          Default value: ""
          Saved in: General.SessionFileName
Solver.RemoteLogin4
          Command to login to a remote host to launch solver 4
          Default value: ""
          Saved in: General.SessionFileName
Solver.RemoteLogin5
          Command to login to a remote host to launch solver 5
          Default value: ""
          Saved in: General.SessionFileName
Chapter 7: Gmsh options                                                                    279
Solver.RemoteLogin6
          Command to login to a remote host to launch solver 6
          Default value: ""
          Saved in: General.SessionFileName
Solver.RemoteLogin7
          Command to login to a remote host to launch solver 7
          Default value: ""
          Saved in: General.SessionFileName
Solver.RemoteLogin8
          Command to login to a remote host to launch solver 8
          Default value: ""
          Saved in: General.SessionFileName
Solver.RemoteLogin9
          Command to login to a remote host to launch solver 9
          Default value: ""
          Saved in: General.SessionFileName
Solver.SocketName
          Base name of socket (UNIX socket if the name does not contain a colon, TCP/IP
          otherwise, in the form ’host:baseport’; the actual name/port is constructed by ap-
          pending the unique client id. If baseport is 0 or is not provided, the port is chosen
          automatically (recommended))
          Default value: ".gmshsock"
          Saved in: General.OptionsFileName
Solver.AlwaysListen
          Always listen to incoming connection requests?
          Default value: 0
          Saved in: General.OptionsFileName
Solver.AutoArchiveOutputFiles
          Automatically archive output files after each computation
          Default value: 0
          Saved in: General.OptionsFileName
Solver.AutoCheck
          Automatically check model every time a parameter is changed
          Default value: 1
          Saved in: General.OptionsFileName
Solver.AutoLoadDatabase
          Automatically load the ONELAB database when launching a solver
          Default value: 0
          Saved in: General.OptionsFileName
Solver.AutoSaveDatabase
          Automatically save the ONELAB database after each computation
          Default value: 1
          Saved in: General.OptionsFileName
Solver.AutoMesh
          Automatically mesh (0: never; 1: if geometry changed, but use existing mesh on
          disk if available; 2: if geometry changed; -1: the geometry script creates the mesh)
          Default value: 2
          Saved in: General.OptionsFileName
280                                                                             Gmsh 4.11.1
Solver.AutoMergeFile
          Automatically merge result files
          Default value: 1
          Saved in: General.OptionsFileName
Solver.AutoShowViews
          Automcatically show newly merged results (0: none; 1: all; 2: last one)
          Default value: 2
          Saved in: General.OptionsFileName
Solver.AutoShowLastStep
          Automatically show the last step in newly merged results, if there are more than 2
          steps
          Default value: 1
          Saved in: General.OptionsFileName
Solver.Plugins
          Enable default solver plugins?
          Default value: 0
          Saved in: General.OptionsFileName
Solver.ShowInvisibleParameters
          Show all parameters, even those marked invisible
          Default value: 0
          Saved in: General.OptionsFileName
Solver.Timeout
          Time (in seconds) before closing the socket if no connection is happening
          Default value: 5
          Saved in: General.OptionsFileName
PostProcessing.Binary
          Write post-processing files in binary format (if possible)
          Default value: 0
          Saved in: General.OptionsFileName
PostProcessing.CombineRemoveOriginal
          Remove original views after a Combine operation
          Default value: 1
          Saved in: General.OptionsFileName
PostProcessing.CombineCopyOptions
          Copy options during Combine operation
          Default value: 1
          Saved in: General.OptionsFileName
PostProcessing.DoubleClickedGraphPointX
          Abscissa of last double-clicked graph point
          Default value: 0
          Saved in: -
PostProcessing.DoubleClickedGraphPointY
          Ordinate of last double-clicked graph point
          Default value: 0
          Saved in: -
PostProcessing.DoubleClickedView
          Index of last double-clicked view
          Default value: 0
          Saved in: -
PostProcessing.ForceElementData
          Try to force saving datasets as ElementData
          Default value: 0
          Saved in: General.OptionsFileName
PostProcessing.ForceNodeData
          Try to force saving datasets as NodeData
          Default value: 0
          Saved in: General.OptionsFileName
PostProcessing.Format
          Default file format for post-processing views (0: ASCII view, 1: binary view, 2:
          parsed view, 3: STL triangulation, 4: raw text, 5: Gmsh mesh, 6: MED file, 10:
          automatic)
          Default value: 10
          Saved in: General.OptionsFileName
PostProcessing.GraphPointX
          Synonym for ‘DoubleClickedGraphPointX’
          Default value: 0
          Saved in: -
PostProcessing.GraphPointY
          Synonym for ‘DoubleClickedGraphPointY’
          Default value: 0
          Saved in: -
282                                                                              Gmsh 4.11.1
PostProcessing.HorizontalScales
          Display value scales horizontally
          Default value: 1
          Saved in: General.OptionsFileName
PostProcessing.Link
          Post-processing view links (0: apply next option changes to selected views, 1: force
          same options for all selected views)
          Default value: 0
          Saved in: General.OptionsFileName
PostProcessing.NbViews
          Current number of views merged (read-only)
          Default value: 0
          Saved in: -
PostProcessing.Plugins
          Enable default post-processing plugins?
          Default value: 1
          Saved in: General.OptionsFileName
PostProcessing.SaveInterpolationMatrices
          Save the interpolation matrices when exporting model-based data
          Default value: 1
          Saved in: General.OptionsFileName
PostProcessing.SaveMesh
          Save the mesh when exporting model-based data
          Default value: 1
          Saved in: General.OptionsFileName
PostProcessing.Smoothing
          Apply (non-reversible) smoothing to post-processing view when merged
          Default value: 0
          Saved in: General.OptionsFileName
View.Attributes
          Optional string attached to the view. If the string contains ’AlwaysVisible’, the
          view will not be hidden when new ones are merged.
          Default value: ""
          Saved in: General.OptionsFileName
View.AxesFormatX
          Number format for X-axis (in standard C form)
          Default value: "%.3g"
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                  283
View.AxesFormatY
          Number format for Y-axis (in standard C form)
          Default value: "%.3g"
          Saved in: General.OptionsFileName
View.AxesFormatZ
          Number format for Z-axis (in standard C form)
          Default value: "%.3g"
          Saved in: General.OptionsFileName
View.AxesLabelX
          X-axis label
          Default value: ""
          Saved in: General.OptionsFileName
View.AxesLabelY
          Y-axis label
          Default value: ""
          Saved in: General.OptionsFileName
View.AxesLabelZ
          Z-axis label
          Default value: ""
          Saved in: General.OptionsFileName
View.DoubleClickedCommand
          Command parsed when double-clicking on the view
          Default value: ""
          Saved in: General.OptionsFileName
View.FileName
          Default post-processing view file name
          Default value: ""
          Saved in: -
View.Format
          Number format (in standard C form)
          Default value: "%.3g"
          Saved in: General.OptionsFileName
View.GeneralizedRaiseX
          Generalized elevation of the view along X-axis (in model coordinates, using formula
          possibly containing x, y, z, s[tep], t[ime], v0, ... v8)
          Default value: "v0"
          Saved in: General.OptionsFileName
View.GeneralizedRaiseY
          Generalized elevation of the view along Y-axis (in model coordinates, using formula
          possibly containing x, y, z, s[tep], t[ime], v0, ... v8)
          Default value: "v1"
          Saved in: General.OptionsFileName
View.GeneralizedRaiseZ
          Generalized elevation of the view along Z-axis (in model coordinates, using formula
          possibly containing x, y, z, s[tep], t[ime], v0, ... v8)
          Default value: "v2"
          Saved in: General.OptionsFileName
284                                              Gmsh 4.11.1
View.Group
             Group to which this view belongs
             Default value: ""
             Saved in: General.OptionsFileName
View.Name
             Default post-processing view name
             Default value: ""
             Saved in: -
View.Stipple0
          First stippling pattern
          Default value: "1*0x1F1F"
          Saved in: General.OptionsFileName
View.Stipple1
          Second stippling pattern
          Default value: "1*0x3333"
          Saved in: General.OptionsFileName
View.Stipple2
          Third stippling pattern
          Default value: "1*0x087F"
          Saved in: General.OptionsFileName
View.Stipple3
          Fourth stippling pattern
          Default value: "1*0xCCCF"
          Saved in: General.OptionsFileName
View.Stipple4
          Fifth stippling pattern
          Default value: "2*0x1111"
          Saved in: General.OptionsFileName
View.Stipple5
          Sixth stippling pattern
          Default value: "2*0x0F0F"
          Saved in: General.OptionsFileName
View.Stipple6
          Seventh stippling pattern
          Default value: "1*0xCFFF"
          Saved in: General.OptionsFileName
View.Stipple7
          Eighth stippling pattern
          Default value: "2*0x0202"
          Saved in: General.OptionsFileName
View.Stipple8
          Ninth stippling pattern
          Default value: "2*0x087F"
          Saved in: General.OptionsFileName
View.Stipple9
          Tenth stippling pattern
          Default value: "1*0xFFFF"
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                    285
View.AbscissaRangeType
          Ascissa scale range type (1: default, 2: custom)
          Default value: 1
          Saved in: General.OptionsFileName
View.AdaptVisualizationGrid
          Use adaptive visualization grid (for high-order elements)?
          Default value: 0
          Saved in: General.OptionsFileName
View.AngleSmoothNormals
          Threshold angle below which normals are not smoothed
          Default value: 30
          Saved in: General.OptionsFileName
View.ArrowSizeMax
          Maximum display size of arrows (in pixels)
          Default value: 60
          Saved in: General.OptionsFileName
View.ArrowSizeMin
          Minimum display size of arrows (in pixels)
          Default value: 0
          Saved in: General.OptionsFileName
View.AutoPosition
          Position the scale or 2D plot automatically (0: manual, 1: automatic, 2: top left, 3:
          top right, 4: bottom left, 5: bottom right, 6: top, 7: bottom, 8: left, 9: right, 10:
          full, 11: top third, 12: in model coordinates)
          Default value: 1
          Saved in: General.OptionsFileName
View.Axes
            Axes (0: none, 1: simple axes, 2: box, 3: full grid, 4: open grid, 5: ruler)
            Default value: 0
            Saved in: General.OptionsFileName
View.AxesMikado
          Mikado axes style
          Default value: 0
          Saved in: General.OptionsFileName
View.AxesAutoPosition
          Position the axes automatically
          Default value: 1
          Saved in: General.OptionsFileName
View.AxesMaxX
          Maximum X-axis coordinate
          Default value: 1
          Saved in: General.OptionsFileName
View.AxesMaxY
          Maximum Y-axis coordinate
          Default value: 1
          Saved in: General.OptionsFileName
286                                                                                 Gmsh 4.11.1
View.AxesMaxZ
          Maximum Z-axis coordinate
          Default value: 1
          Saved in: General.OptionsFileName
View.AxesMinX
          Minimum X-axis coordinate
          Default value: 0
          Saved in: General.OptionsFileName
View.AxesMinY
          Minimum Y-axis coordinate
          Default value: 0
          Saved in: General.OptionsFileName
View.AxesMinZ
          Minimum Z-axis coordinate
          Default value: 0
          Saved in: General.OptionsFileName
View.AxesTicsX
          Number of tics on the X-axis
          Default value: 5
          Saved in: General.OptionsFileName
View.AxesTicsY
          Number of tics on the Y-axis
          Default value: 5
          Saved in: General.OptionsFileName
View.AxesTicsZ
          Number of tics on the Z-axis
          Default value: 5
          Saved in: General.OptionsFileName
View.Boundary
          Draw the ‘N minus b’-dimensional boundary of the element (N: element dimension,
          b: option value)
          Default value: 0
          Saved in: General.OptionsFileName
View.CenterGlyphs
          Center glyphs (arrows, numbers, etc.)? (0: left, 1: centered, 2: right)
          Default value: 0
          Saved in: General.OptionsFileName
View.Clip
            Enable clipping planes? (Plane[i]=2^i, i=0,...,5)
            Default value: 0
            Saved in: -
View.Closed
          Close the subtree containing this view
          Default value: 0
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                287
View.ColormapAlpha
          Colormap alpha channel value (used only if != 1)
          Default value: 1
          Saved in: General.OptionsFileName
View.ColormapAlphaPower
          Colormap alpha channel power
          Default value: 0
          Saved in: General.OptionsFileName
View.ColormapBeta
          Colormap beta parameter (gamma = 1-beta)
          Default value: 0
          Saved in: General.OptionsFileName
View.ColormapBias
          Colormap bias
          Default value: 0
          Saved in: General.OptionsFileName
View.ColormapCurvature
          Colormap curvature or slope coefficient
          Default value: 0
          Saved in: General.OptionsFileName
View.ColormapInvert
          Invert the color values, i.e., replace x with (255-x) in the colormap?
          Default value: 0
          Saved in: General.OptionsFileName
View.ColormapNumber
          Default colormap number (0: black, 1: vis5d, 2: jet, 3: lucie, 4: rainbow, 5:
          emc2000, 6: incadescent, 7: hot, 8: pink, 9: grayscale, 10: french, 11: hsv, 12:
          spectrum, 13: bone, 14: spring, 15: summer, 16: autumm, 17: winter, 18: cool, 19:
          copper, 20: magma, 21: inferno, 22: plasma, 23: viridis, 24: turbo)
          Default value: 2
          Saved in: General.OptionsFileName
View.ColormapRotation
          Incremental colormap rotation
          Default value: 0
          Saved in: General.OptionsFileName
View.ColormapSwap
          Swap the min/max values in the colormap?
          Default value: 0
          Saved in: General.OptionsFileName
View.ComponentMap0
          Forced component 0 (if View.ForceNumComponents > 0)
          Default value: 0
          Saved in: General.OptionsFileName
View.ComponentMap1
          Forced component 1 (if View.ForceNumComponents > 0)
          Default value: 1
          Saved in: General.OptionsFileName
288                                                             Gmsh 4.11.1
View.ComponentMap2
          Forced component 2 (if View.ForceNumComponents > 0)
          Default value: 2
          Saved in: General.OptionsFileName
View.ComponentMap3
          Forced component 3 (if View.ForceNumComponents > 0)
          Default value: 3
          Saved in: General.OptionsFileName
View.ComponentMap4
          Forced component 4 (if View.ForceNumComponents > 0)
          Default value: 4
          Saved in: General.OptionsFileName
View.ComponentMap5
          Forced component 5 (if View.ForceNumComponents > 0)
          Default value: 5
          Saved in: General.OptionsFileName
View.ComponentMap6
          Forced component 6 (if View.ForceNumComponents > 0)
          Default value: 6
          Saved in: General.OptionsFileName
View.ComponentMap7
          Forced component 7 (if View.ForceNumComponents > 0)
          Default value: 7
          Saved in: General.OptionsFileName
View.ComponentMap8
          Forced component 8 (if View.ForceNumComponents > 0)
          Default value: 8
          Saved in: General.OptionsFileName
View.CustomAbscissaMax
          User-defined maximum abscissa value
          Default value: 0
          Saved in: -
View.CustomAbscissaMin
          User-defined minimum abscissa value
          Default value: 0
          Saved in: -
View.CustomMax
          User-defined maximum value to be displayed
          Default value: 0
          Saved in: -
View.CustomMin
          User-defined minimum value to be displayed
          Default value: 0
          Saved in: -
View.DisplacementFactor
          Displacement amplification
          Default value: 1
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                 289
View.DrawHexahedra
          Display post-processing hexahedra?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawLines
          Display post-processing lines?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawPoints
          Display post-processing points?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawPrisms
          Display post-processing prisms?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawPyramids
          Display post-processing pyramids?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawTrihedra
          Display post-processing trihedra?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawQuadrangles
          Display post-processing quadrangles?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawScalars
          Display scalar values?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawSkinOnly
          Draw only the skin of 3D scalar views?
          Default value: 0
          Saved in: General.OptionsFileName
View.DrawStrings
          Display post-processing annotation strings?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawTensors
          Display tensor values?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawTetrahedra
          Display post-processing tetrahedra?
          Default value: 1
          Saved in: General.OptionsFileName
290                                                                               Gmsh 4.11.1
View.DrawTriangles
          Display post-processing triangles?
          Default value: 1
          Saved in: General.OptionsFileName
View.DrawVectors
          Display vector values?
          Default value: 1
          Saved in: General.OptionsFileName
View.Explode
          Element shrinking factor (between 0 and 1)
          Default value: 1
          Saved in: General.OptionsFileName
View.ExternalView
          Index of the view used to color vector fields (-1: self)
          Default value: -1
          Saved in: General.OptionsFileName
View.FakeTransparency
          Use fake transparency (cheaper than the real thing, but incorrect)
          Default value: 0
          Saved in: General.OptionsFileName
View.ForceNumComponents
          Force number of components to display (see View.ComponentMapN for mapping)
          Default value: 0
          Saved in: General.OptionsFileName
View.GeneralizedRaiseFactor
          Generalized raise amplification factor
          Default value: 1
          Saved in: General.OptionsFileName
View.GeneralizedRaiseView
          Index of the view used for generalized raise (-1: self)
          Default value: -1
          Saved in: General.OptionsFileName
View.GlyphLocation
          Glyph (arrow, number, etc.) location (1: center of gravity, 2: node)
          Default value: 1
          Saved in: General.OptionsFileName
View.Height
          Height (in pixels) of the scale or 2D plot
          Default value: 200
          Saved in: General.OptionsFileName
View.IntervalsType
          Type of interval display (1: iso, 2: continuous, 3: discrete, 4: numeric)
          Default value: 2
          Saved in: General.OptionsFileName
View.Light
             Enable lighting for the view
             Default value: 1
             Saved in: General.OptionsFileName
Chapter 7: Gmsh options                                                                  291
View.LightLines
          Light element edges
          Default value: 1
          Saved in: General.OptionsFileName
View.LightTwoSide
          Light both sides of surfaces (leads to slower rendering)
          Default value: 1
          Saved in: General.OptionsFileName
View.LineType
          Display lines as solid color segments (0) or 3D cylinders (1)
          Default value: 0
          Saved in: General.OptionsFileName
View.LineWidth
          Display width of lines (in pixels)
          Default value: 1
          Saved in: General.OptionsFileName
View.MaxRecursionLevel
          Maximum recursion level for adaptive views
          Default value: 0
          Saved in: General.OptionsFileName
View.Max    Maximum value in the view (read-only)
            Default value: 0
            Saved in: -
View.MaxVisible
          Maximum value in the visible parts of the view, taking current time step and tensor
          display type into account (read-only)
          Default value: 0
          Saved in: -
View.MaxX
            Maximum view coordinate along the X-axis (read-only)
            Default value: 0
            Saved in: -
View.MaxY
            Maximum view coordinate along the Y-axis (read-only)
            Default value: 0
            Saved in: -
View.MaxZ
            Maximum view coordinate along the Z-axis (read-only)
            Default value: 0
            Saved in: -
View.Min    Minimum value in the view (read-only)
            Default value: 0
            Saved in: -
View.MinVisible
          Minimum value in the visible parts of the view, taking current time step and tensor
          display type into account (read-only)
          Default value: 0
          Saved in: -
292                                                                            Gmsh 4.11.1
View.MinX
             Minimum view coordinate along the X-axis (read-only)
             Default value: 0
             Saved in: -
View.MinY
             Minimum view coordinate along the Y-axis (read-only)
             Default value: 0
             Saved in: -
View.MinZ
             Minimum view coordinate along the Z-axis (read-only)
             Default value: 0
             Saved in: -
View.NbIso
             Number of intervals
             Default value: 10
             Saved in: General.OptionsFileName
View.NbTimeStep
          Number of time steps in the view (do not change this!)
          Default value: 1
          Saved in: -
View.NormalRaise
          Elevation of the view along the normal (in model coordinates)
          Default value: 0
          Saved in: -
View.Normals
          Display size of normal vectors (in pixels)
          Default value: 0
          Saved in: General.OptionsFileName
View.OffsetX
          Translation of the view along X-axis (in model coordinates)
          Default value: 0
          Saved in: -
View.OffsetY
          Translation of the view along Y-axis (in model coordinates)
          Default value: 0
          Saved in: -
View.OffsetZ
          Translation of the view along Z-axis (in model coordinates)
          Default value: 0
          Saved in: -
View.PointSize
          Display size of points (in pixels)
          Default value: 3
          Saved in: General.OptionsFileName
View.PointType
          Display points as solid color dots (0), 3D spheres (1), scaled dots (2) or scaled
          spheres (3)
Chapter 7: Gmsh options                                                                    293
            Default value: 0
            Saved in: General.OptionsFileName
View.PositionX
          X position (in pixels) of the scale or 2D plot (< 0: measure from right edge; >= 1e5:
          centered)
          Default value: 100
          Saved in: General.OptionsFileName
View.PositionY
          Y position (in pixels) of the scale or 2D plot (< 0: measure from bottom edge; >=
          1e5: centered)
          Default value: 50
          Saved in: General.OptionsFileName
View.RaiseX
          Elevation of the view along X-axis (in model coordinates)
          Default value: 0
          Saved in: -
View.RaiseY
          Elevation of the view along Y-axis (in model coordinates)
          Default value: 0
          Saved in: -
View.RaiseZ
          Elevation of the view along Z-axis (in model coordinates)
          Default value: 0
          Saved in: -
View.RangeType
          Value scale range type (1: default, 2: custom, 3: per time step)
          Default value: 1
          Saved in: General.OptionsFileName
View.Sampling
          Element sampling rate (draw one out every ‘Sampling’ elements)
          Default value: 1
          Saved in: General.OptionsFileName
View.SaturateValues
          Saturate the view values to custom min and max (1: true, 0: false)
          Default value: 0
          Saved in: General.OptionsFileName
View.ScaleType
          Value scale type (1: linear, 2: logarithmic, 3: double logarithmic)
          Default value: 1
          Saved in: General.OptionsFileName
View.ShowElement
          Show element boundaries?
          Default value: 0
          Saved in: General.OptionsFileName
View.ShowScale
          Show value scale?
          Default value: 1
          Saved in: General.OptionsFileName
294                                                                                Gmsh 4.11.1
View.ShowTime
          Time display mode (0: none, 1: time series, 2: harmonic data, 3: automatic, 4: step
          data, 5: multi-step data, 6: real eigenvalues, 7: complex eigenvalues)
          Default value: 3
          Saved in: General.OptionsFileName
View.SmoothNormals
          Smooth the normals?
          Default value: 0
          Saved in: General.OptionsFileName
View.Stipple
          Stipple curves in 2D and line plots?
          Default value: 0
          Saved in: General.OptionsFileName
View.Tangents
          Display size of tangent vectors (in pixels)
          Default value: 0
          Saved in: General.OptionsFileName
View.TargetError
          Target representation error for adaptive views
          Default value: 0.0001
          Saved in: General.OptionsFileName
View.TensorType
          Tensor display type (1: Von-Mises, 2: maximum eigenvalue, 3: minimum eigenvalue,
          4: eigenvectors, 5: ellipse, 6: ellipsoid, 7: frame)
          Default value: 1
          Saved in: General.OptionsFileName
View.TimeStep
          Current time step displayed
          Default value: 0
          Saved in: -
View.Time
            Current time displayed (if positive, sets the time step corresponding the given time
            value)
            Default value: 0
            Saved in: -
View.TransformXX
          Element (1,1) of the 3x3 coordinate transformation matrix
          Default value: 1
          Saved in: -
View.TransformXY
          Element (1,2) of the 3x3 coordinate transformation matrix
          Default value: 0
          Saved in: -
View.TransformXZ
          Element (1,3) of the 3x3 coordinate transformation matrix
          Default value: 0
          Saved in: -
Chapter 7: Gmsh options                                                               295
View.TransformYX
          Element (2,1) of the 3x3 coordinate transformation matrix
          Default value: 0
          Saved in: -
View.TransformYY
          Element (2,2) of the 3x3 coordinate transformation matrix
          Default value: 1
          Saved in: -
View.TransformYZ
          Element (2,3) of the 3x3 coordinate transformation matrix
          Default value: 0
          Saved in: -
View.TransformZX
          Element (3,1) of the 3x3 coordinate transformation matrix
          Default value: 0
          Saved in: -
View.TransformZY
          Element (3,2) of the 3x3 coordinate transformation matrix
          Default value: 0
          Saved in: -
View.TransformZZ
          Element (3,3) of the 3x3 coordinate transformation matrix
          Default value: 1
          Saved in: -
View.Type
             Type of plot (1: 3D, 2: 2D space, 3: 2D time, 4: 2D)
             Default value: 1
             Saved in: -
View.UseGeneralizedRaise
          Use generalized raise?
          Default value: 0
          Saved in: General.OptionsFileName
View.VectorType
          Vector display type (1: segment, 2: arrow, 3: pyramid, 4: 3D arrow, 5: displace-
          ment, 6: comet)
          Default value: 4
          Saved in: General.OptionsFileName
View.Visible
          Is the view visible?
          Default value: 1
          Saved in: -
View.Width
             Width (in pixels) of the scale or 2D plot
             Default value: 300
             Saved in: General.OptionsFileName
296                                           Gmsh 4.11.1
View.Color.Points
          Point color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Lines
          Line color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Triangles
          Triangle color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Quadrangles
          Quadrangle color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Tetrahedra
          Tetrahedron color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Hexahedra
          Hexahedron color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Prisms
          Prism color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Pyramids
          Pyramid color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Trihedra
          Trihedron color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Tangents
          Tangent vector color
          Default value: {255,255,0}
          Saved in: General.OptionsFileName
View.Color.Normals
          Normal vector color
          Default value: {255,0,0}
          Saved in: General.OptionsFileName
View.Color.Text2D
          2D text color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
Chapter 7: Gmsh options                       297
View.Color.Text3D
          3D text color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Axes
          Axes color
          Default value: {0,0,0}
          Saved in: General.OptionsFileName
View.Color.Background2D
          Bacground color for 2D plots
          Default value: {255,255,255}
          Saved in: General.OptionsFileName
View.ColorTable
          Color table used to draw the view
          Saved in: General.OptionsFileName
Chapter 8: Gmsh mesh size fields                                                              299
Options:
            CurvesList
                         Tags of curves in the geometric model
                         Type: list
                         Default value: {}
            DistMax      Maxmium distance, above this distance from the curves, prescribe the
                         maximum mesh sizes
                         Type: float
                         Default value: 0.5
            DistMin      Minimum distance, below this distance from the curves, prescribe the
                         minimum mesh sizes
                         Type: float
                         Default value: 0.1
            Sampling     Number of sampling points on each curve
                         Type: integer
                         Default value: 20
            SizeMaxNormal
                      Maximum mesh size in the direction normal to the closest curve
                      Type: float
                      Default value: 0.5
            SizeMaxTangent
                      Maximum mesh size in the direction tangeant to the closest curve
                      Type: float
                      Default value: 0.5
            SizeMinNormal
                      Minimum mesh size in the direction normal to the closest curve
                      Type: float
                      Default value: 0.05
            SizeMinTangent
                      Minimum mesh size in the direction tangeant to the closest curve
                      Type: float
                      Default value: 0.5
AutomaticMeshSizeField
          Compute a mesh size field that is quite automatic Takes into account surface cur-
          vatures and closeness of objects
300                                                                           Gmsh 4.11.1
Options:
       If Thickness is > 0, the mesh size is interpolated between VIn and VOut in a layer
       around the ball of the prescribed thickness.
Options:
       Radius      Radius
                   Type: float
                   Default value: 0
Chapter 8: Gmsh mesh size fields                                                        301
           Thickness
                        Thickness of a transition layer outside the ball
                        Type: float
                        Default value: 0
           VIn          Value inside the ball
                        Type: float
                        Default value: 1e+22
           VOut         Value outside the ball
                        Type: float
                        Default value: 1e+22
           XCenter      X coordinate of the ball center
                        Type: float
                        Default value: 0
           YCenter      Y coordinate of the ball center
                        Type: float
                        Default value: 0
           ZCenter      Z coordinate of the ball center
                        Type: float
                        Default value: 0
BoundaryLayer
          Insert a 2D boundary layer mesh next to some curves in the model.
Options:
           AnisoMax     Threshold angle for creating a mesh fan in the boundary layer
                        Type: float
                        Default value: 10000000000
           Beta         Beta coefficient of the Beta Law
                        Type: float
                        Default value: 1.01
           BetaLaw      Use Beta Law instead of geometric progression
                        Type: integer
                        Default value: 0
           CurvesList
                        Tags of curves in the geometric model for which a boundary layer is
                        needed
                        Type: list
                        Default value: {}
           ExcludedSurfacesList
                     Tags of surfaces in the geometric model where the boundary layer should
                     not be constructed
                     Type: list
                     Default value: {}
           FanPointsList
                     Tags of points in the geometric model for which a fan is created
                     Type: list
                     Default value: {}
302                                                                          Gmsh 4.11.1
      FanPointsSizesList
                Number of elements in the fan for each fan node. If not present default
                value Mesh.BoundaryLayerFanElements
                Type: list
                Default value: {}
      IntersectMetrics
                Intersect metrics of all surfaces
                Type: integer
                Default value: 0
      NbLayers     Number of Layers in theBeta Law
                   Type: integer
                   Default value: 10
      PointsList
                   Tags of points in the geometric model for which a boundary layer ends
                   Type: list
                   Default value: {}
      Quads        Generate recombined elements in the boundary layer
                   Type: integer
                   Default value: 0
      Ratio        Size ratio between two successive layers
                   Type: float
                   Default value: 1.1
      Size         Mesh size normal to the curve
                   Type: float
                   Default value: 0.1
      SizeFar      Mesh size far from the curves
                   Type: float
                   Default value: 1
      SizesList
                   Mesh size normal to the curve, per point (overwrites Size when defined)
                   Type: list double
                   Default value: {}
      Thickness
                   Maximal thickness of the boundary layer
                   Type: float
                   Default value: 0.01
Box   Return VIn inside the box, and VOut outside. The box is defined by
      If Thickness is > 0, the mesh size is interpolated between VIn and VOut in a layer
      around the box of the prescribed thickness.
      Options:
Chapter 8: Gmsh mesh size fields                                                       303
           Thickness
                        Thickness of a transition layer outside the box
                        Type: float
                        Default value: 0
           VIn          Value inside the box
                        Type: float
                        Default value: 1e+22
           VOut         Value outside the box
                        Type: float
                        Default value: 1e+22
           XMax         Maximum X coordinate of the box
                        Type: float
                        Default value: 0
           XMin         Minimum X coordinate of the box
                        Type: float
                        Default value: 0
           YMax         Maximum Y coordinate of the box
                        Type: float
                        Default value: 0
           YMin         Minimum Y coordinate of the box
                        Type: float
                        Default value: 0
           ZMax         Maximum Z coordinate of the box
                        Type: float
                        Default value: 0
           ZMin         Minimum Z coordinate of the box
                        Type: float
                        Default value: 0
Constant   Return VIn when inside the entities (and on their boundary if IncludeBoundary is
           set), and VOut outside.
Options:
           CurvesList
                        Curve tags
                        Type: list
                        Default value: {}
           IncludeBoundary
                     Include the boundary of the entities
                     Type: boolean
                     Default value: 1
           PointsList
                        Point tags
                        Type: list
                        Default value: {}
304                                                                              Gmsh 4.11.1
            SurfacesList
                      Surface tags
                      Type: list
                      Default value: {}
            VIn        Value inside the entities
                       Type: float
                       Default value: 1e+22
            VOut       Value outside the entities
                       Type: float
                       Default value: 1e+22
            VolumesList
                      Volume tags
                      Type: list
                      Default value: {}
Curvature
            Compute the curvature of Field[InField]:
F = div(norm(grad(Field[InField])))
Options:
Options:
            Radius     Radius
                       Type: float
                       Default value: 0
            VIn        Value inside the cylinder
                       Type: float
                       Default value: 1e+22
            VOut       Value outside the cylinder
                       Type: float
                       Default value: 1e+22
            XAxis      X component of the cylinder axis
                       Type: float
                       Default value: 0
Chapter 8: Gmsh mesh size fields                                                            305
Options:
           CurvesList
                        Tags of curves in the geometric model
                        Type: list
                        Default value: {}
           PointsList
                        Tags of points in the geometric model
                        Type: list
                        Default value: {}
           Sampling     Linear (i.e. per dimension) number of sampling points to discretize each
                        curve and surface
                        Type: integer
                        Default value: 20
           SurfacesList
                     Tags of surfaces in the geometric model (only OpenCASCADE and
                     discrete surfaces are currently supported)
                     Type: list
                     Default value: {}
Extend     Compute an extension of the mesh sizes from the given boundary curves (resp. sur-
           faces) inside the surfaces (resp. volumes) being meshed. If the mesh size on the
           boundary, computed as the local average length of the edges of the boundary ele-
           ments, is denoted by SizeBnd, the extension is computed as:
Options:
           CurvesList
                        Tags of curves in the geometric model
                        Type: list
                        Default value: {}
           DistMax      Maximum distance of the size extension
                        Type: float
                        Default value: 1
           Power        Power exponent used to interpolate the mesh size
                        Type: float
                        Default value: 1
           SizeMax      Mesh size outside DistMax
                        Type: float
                        Default value: 1
           SurfacesList
                     Tags of surfaces in the geometric model
                     Type: list
                     Default value: {}
ExternalProcess
          **This Field is experimental**
          Call an external process that received coordinates triple (x,y,z) as binary double
          precision numbers on stdin and is supposed to write the field value on stdout as a
          binary double precision number.
          NaN,NaN,NaN is sent as coordinate to indicate the end of the process.
           while(True):
           xyz = struct.unpack("ddd", sys.stdin.buffer.read(24))
           if math.isnan(xyz[0]):
           break
           f = 0.001 + xyz[1]*0.009
           sys.stdout.buffer.write(struct.pack("d",f))
           sys.stdout.flush()
Options:
           CommandLine
                     Command line to launch
                     Type: string
                     Default value: ""
Frustum    Interpolate mesh sizes on a extended cylinder frustrum defined by inner (R1i and
           R2i) and outer (R1o and R2o) radii and two endpoints P1 and P2.The field value
           F for a point P is given by :
Options:
            Z2           Z coordinate of endpoint 2
                         Type: float
                         Default value: 0
Gradient    Compute the finite difference gradient of Field[InField]:
Options:
Options:
            FieldsList
                         Field indices
                         Type: list
                         Default value: {}
Laplacian
            Compute finite difference the Laplacian of Field[InField]:
            F = G(x+d,y,z) + G(x-d,y,z) +
            G(x,y+d,z) + G(x,y-d,z) +
            G(x,y,z+d) + G(x,y,z-d) - 6 * G(x,y,z),
Options:
Options:
           FromStereo
                        If = 1, the mesh is in stereographic coordinates: xi = 2Rx/(R+z), eta
                        = 2Ry/(R+z)
                        Type: integer
                        Default value: 0
           InField      Tag of the field to evaluate
                        Type: integer
                        Default value: 1
           RadiusStereo
                     Radius of the sphere of the stereograpic coordinates
                     Type: float
                     Default value: 6371000
MathEval   Evaluate a mathematical expression. The expression can contain x, y, z for spatial
           coordinates, F0, F1, ... for field values, and mathematical functions.
Options:
Options:
Options:
           FieldsList
                        Field indices
                        Type: list
                        Default value: {}
MaxEigenHessian
          Compute the maximum eigenvalue of the Hessian matrix of Field[InField], with the
          gradients evaluated by finite differences:
F = max(eig(grad(grad(Field[InField]))))
Options:
where G = Field[InField].
Options:
Options:
           FieldsList
                        Field indices
                        Type: list
                        Default value: {}
312                                                                               Gmsh 4.11.1
Options:
           FieldsList
                        Field indices
                        Type: list
                        Default value: {}
Options:
F = Field[InField](FX,FY,FZ)
See the MathEval Field help to get a description of valid FX, FY and FZ expressions.
Options:
PostView   Evaluate the post processing view with index ViewIndex, or with tag ViewTag if
           ViewTag is positive.
Options:
           CropNegativeValues
                     return MAX LC instead of a negative value (this option is needed for
                     backward compatibility with the BackgroundMesh option
                     Type: boolean
                     Default value: 1
Chapter 8: Gmsh mesh size fields                                                                    313
             UseClosest
                          Use value at closest node if no exact match is found
                          Type: boolean
                          Default value: 1
             ViewIndex
                          Post-processing view index
                          Type: integer
                          Default value: 0
             ViewTag      Post-processing view tag
                          Type: integer
                          Default value: -1
Restrict     Restrict the application of a field to a given list of geometrical points, curves, surfaces
             or volumes (as well as their boundaries if IncludeBoundary is set).
Options:
             CurvesList
                          Curve tags
                          Type: list
                          Default value: {}
             InField      Input field tag
                          Type: integer
                          Default value: 1
             IncludeBoundary
                       Include the boundary of the entities
                       Type: boolean
                       Default value: 1
             PointsList
                          Point tags
                          Type: list
                          Default value: {}
             SurfacesList
                       Surface tags
                       Type: list
                       Default value: {}
             VolumesList
                       Volume tags
                       Type: list
                       Default value: {}
Structured
             Linearly interpolate between data provided on a 3D rectangular structured grid.
             Ox Oy Oz
             Dx Dy Dz
             nx ny nz
314                                                                                        Gmsh 4.11.1
            where O are the coordinates of the first node, D are the distances between nodes in
            each direction, n are the numbers of nodes in each direction, and v are the values
            on each node.
Options:
Options:
                      Type: boolean
                      Default value: 0
           SizeMax    Mesh size when value > DistMax
                      Type: float
                      Default value: 1
           SizeMin    Mesh size when value < DistMin
                      Type: float
                      Default value: 0.1
           StopAtDistMax
                     True to not impose mesh size outside DistMax (i.e., F = a very big value
                     if Field[InField] > DistMax)
                     Type: boolean
                     Default value: 0
Chapter 9: Gmsh plugins                                                                        317
9 Gmsh plugins
This chapter lists all the plugins that are bundled in the official Gmsh distribution. Plugins are
available in the GUI (by right-clicking on a view button, or by clicking on the black arrow next
to the view button, and then selecting the ‘Plugin’ submenu), in the scripting language (see
Section 5.4 [Post-processing scripting commands], page 117) and in the API (see Section 6.12
[Namespace gmsh/plugin], page 208). See Section 2.9 [t9], page 36 for an example on how to
use plugins.
Plugin(AnalyseMeshQuality)
          Plugin(AnalyseMeshQuality) analyses the quality of the elements of a given dimen-
          sion in the current model. Depending on the input parameters it computes the
          minimum of the Jacobian determinant (J), the IGE quality measure (Inverse Gra-
          dient Error) and/or the ICN quality measure (Condition Number). Statistics are
          printed and, if requested, a model-based post-processing view is created for each
          quality measure. The plugin can optionally hide elements by comparing the mea-
          sure to a prescribed threshold.
            J is faster to compute but gives information only on element validity while the other
            measures also give information on element quality. The IGE measure is related to
            the error on the gradient of the finite element solution. It is the scaled Jacobian for
            quads and hexes and a new measure for triangles and tetrahedra. The ICN measure
            is related to the condition number of the stiffness matrix. (See the article "Effi-
            cient computation of the minimum of shape quality measures on curvilinear finite
            elements" for details.)
Parameters:
- ‘JacobianDeterminant’: compute J?
            - ‘HidingThreshold’: hide all elements for which min(mu) is strictly greater than (if
            ‘ThresholdGreater’ == 1) or less than (if ‘ThresholdGreater’ == 0) the thresh-
            old, where mu is ICN if ‘ICNMeasure’ == 1, IGE if ‘IGEMeasure’ == 1 or
            min(J)/max(J) if ‘JacobianDeterminant’ == 1.
           ICNMeasure
                        Default value: 0
           HidingThreshold
                     Default value: 99
           ThresholdGreater
                     Default value: 1
           CreateView
                        Default value: 0
           Recompute
                        Default value: 0
           DimensionOfElements
                     Default value: -1
Plugin(Annotate)
          Plugin(Annotate) adds the text string ‘Text’, in font ‘Font’ and size ‘FontSize’, in
          the view ‘View’. The string is aligned according to ‘Align’.
           If ‘ThreeD’ is equal to 1, the plugin inserts the string in model coordinates at the
           position (‘X’,‘Y’,‘Z’). If ‘ThreeD’ is equal to 0, the plugin inserts the string in screen
           coordinates at the position (‘X’,‘Y’).
            The number of points along U, V, W is set with the options ‘NumPointsU’, ‘Num-
            PointsV’ and ‘NumPointsW’.
            If ‘ConnectPoints’ is zero, the plugin creates points; otherwise, the plugin generates
            hexahedra, quadrangles, lines or points depending on the values of ‘NumPointsU’,
            ‘NumPointsV’ and ‘NumPointsW’.
            If ‘Boundary’ is zero, the plugin interpolates the view inside the box; otherwise the
            plugin interpolates the view at its boundary.
            Z3           Default value: 1
            NumPointsU
                         Default value: 20
            NumPointsV
                         Default value: 20
            NumPointsW
                         Default value: 20
            ConnectPoints
                      Default value: 1
            Boundary     Default value: 1
            View         Default value: -1
Plugin(CutGrid)
          Plugin(CutGrid) cuts the view ‘View’ with a rectangular grid defined by the 3 points
          (‘X0’,‘Y0’,‘Z0’) (origin), (‘X1’,‘Y1’,‘Z1’) (axis of U) and (‘X2’,‘Y2’,‘Z2’) (axis of V).
            The number of points along U and V is set with the options ‘NumPointsU’ and
            ‘NumPointsV’.
            If ‘ConnectPoints’ is zero, the plugin creates points; otherwise, the plugin generates
            quadrangles, lines or points depending on the values of ‘NumPointsU’ and ‘Num-
            PointsV’.
Plugin(CutMesh)
          Plugin(CutMesh) cuts the mesh of the current GModel with the zero value of the
          levelset defined with the view ’View’.Sub-elements are created in the new model
          (polygons in 2D and polyhedra in 3D) and border elements are created on the zero-
          levelset.
           If ‘Split’ is nonzero, the plugin splits the meshalong the edges of the cut elements
           in the positive side.
           If ‘ConnectPoints’ is set, the plugin creates surface or line elements; otherwise, the
           plugin generates points.
           If ‘ExtractVolume’ is nonzero, the plugin extracts the elements on one side of the
           plane (depending on the sign of ‘ExtractVolume’).
           If ‘ExtractVolume’ is nonzero, the plugin extracts the elements inside (if ‘ExtractVol-
           ume’ < 0) or outside (if ‘ExtractVolume’ > 0) the sphere.
           SuperSamplingNodes
                     Default value: 10
Plugin(Distance)
          Plugin(Distance) computes distances to entities in a mesh.
           PhaseView
                        Default value: 1
Plugin(GaussPoints)
          Given an input mesh, Plugin(GaussPoints) creates a list-based view containing the
          Gauss points for a given polynomial ‘Order’.
           If ‘PhysicalGroup’ is nonzero, the plugin only creates points for the elements be-
           longing to the group. Numeric options:
           Order        Default value: 0
           Dimension
                        Default value: 2
           PhysicalGroup
                     Default value: 0
Plugin(Gradient)
          Plugin(Gradient) computes the gradient of the field in the view ‘View’.
Plugin(HomologyComputation)
          Plugin(HomologyComputation) computes representative chains of basis elements of
          (relative) homology and cohomology spaces.
           Define physical groups in order to specify the computation domain and the relative
           subdomain. Otherwise the whole mesh is the domain and the relative subdomain is
           empty.
           Plugin(HomologyComputation) creates new views, one for each basis element. The
           resulting basis chains of desired dimension together with the mesh are saved to the
           given file. String options:
           DomainPhysicalGroups
                     Default value: ""
           SubdomainPhysicalGroups
                     Default value: ""
           ReductionImmunePhysicalGroups
                     Default value: ""
           DimensionOfChainsToSave
                     Default value: "0, 1, 2, 3"
           Filename    Default value: "homology.msh"
           Numeric options:
           ComputeHomology
                     Default value: 1
           ComputeCohomology
                     Default value: 0
           HomologyPhysicalGroupsBegin
                     Default value: -1
           CohomologyPhysicalGroupsBegin
                     Default value: -1
           CreatePostProcessingViews
                     Default value: 1
           ReductionOmit
                     Default value: 1
           ReductionCombine
                     Default value: 3
           PostProcessSimplify
                     Default value: 1
           ReductionHeuristic
                     Default value: 1
Plugin(HomologyPostProcessing)
          Plugin(HomologyPostProcessing) operates on representative basis chains of homol-
          ogy and cohomology spaces. Functionality:
            Options:
            ’PhysicalGroupsToTraceResults’: Trace the resulting (co)chains to the given physi-
            cal groups.
            ’PhysicalGroupsToProjectResults’: Project the resulting (co)chains to the comple-
            ment of the given physical groups.
            ’NameForResultChains’: Post-processing view name prefix for the results.
            ’ApplyBoundaryOperatorToResults’: Apply boundary operator to the resulting
            chains.
            String options:
            TransformationMatrix
                      Default value: "1, 0; 0, 1"
            PhysicalGroupsOfOperatedChains
                      Default value: "1, 2"
            PhysicalGroupsOfOperatedChains2
                      Default value: ""
            PhysicalGroupsToTraceResults
                      Default value: ""
            PhysicalGroupsToProjectResults
                      Default value: ""
            NameForResultChains
                      Default value: "c"
            Numeric options:
            ApplyBoundaryOperatorToResults
                      Default value: 0
Plugin(Integrate)
          Plugin(Integrate) integrates a scalar field over all the elements of the view ‘View’
          (if ‘Dimension’ < 0), or over all elements of the prescribed dimension (if ‘Dimension’
          > 0). If the field is a vector field, the circulation/flux of the field over line/surface
          elements is calculated.
            If ‘OverTime’ = i > -1 , the plugin integrates the scalar view over time (using the
            trapezoidal rule) instead of over space, starting at step i. If ‘Visible’ = 1, the plugin
            only integrates over visible entities.
Chapter 9: Gmsh plugins                                                                       329
            If ‘ExtractVolume’ is nonzero, the plugin extracts the isovolume with values greater
            (if ‘ExtractVolume’ > 0) or smaller (if ‘ExtractVolume’ < 0) than the isosurface
            ‘Value’.
            If ‘OtherTimeStep’ < 0, the plugin uses, for each time step in ‘View’, the corre-
            sponding time step in ‘OtherView’. If ‘OtherView’ < 0, the plugin uses ‘View’ as
            the value source.
            Plugin(Isosurface) creates as many list-based views as there are time steps in ‘View’.
            Numeric options:
            Value        Default value: 0
            ExtractVolume
                      Default value: 0
            RecurLevel
                         Default value: 3
330                                                                                 Gmsh 4.11.1
           TargetError
                     Default value: 0.0001
           View         Default value: -1
           OtherTimeStep
                     Default value: -1
           OtherView
                        Default value: -1
Plugin(Lambda2)
          Plugin(Lambda2) computes the eigenvalues Lambda(1,2,3) of the tensor (S ik S kj
          + Om ik Om kj), where S ij = 0.5 (ui,j + uj,i) and Om ij = 0.5 (ui,j - uj,i) are
          respectively the symmetric and antisymmetric parts of the velocity gradient tensor.
           If ‘View’ contains tensor elements, the plugin directly uses the tensors as the values
           of the velocity gradient tensor; if ‘View’ contains vector elements, the plugin uses
           them as the velocities from which to derive the velocity gradient tensor.
           If only ‘Expression0’ is given (and ‘Expression1’, ..., ‘Expression8’ are all empty),
           the plugin creates a scalar view. If ‘Expression0’, ‘Expression1’ and/or ‘Expression2’
           are given (and ‘Expression3’, ..., ‘Expression8’ are all empty) the plugin creates a
           vector view. Otherwise the plugin creates a tensor view.
Chapter 9: Gmsh plugins                                                                      331
          In addition to the usual mathematical functions (Exp, Log, Sqrt, Sin, Cos, Fabs,
          etc.) and operators (+, -, *, /, ^), all expressions can contain:
- the symbols v0, v1, v2, ..., vn, which represent the n components in ‘View’;
          - the symbols w0, w1, w2, ..., wn, which represent the n components of ‘OtherView’,
          at time step ‘OtherTimeStep’;
If ‘TimeStep’ < 0, the plugin extracts data from all the time steps in the view.
          Plugin(MathEval) creates one new view.If ‘PhysicalRegion’ < 0, the plugin is run
          on all physical regions.
           PhysicalRegion
                     Default value: -1
Plugin(MeshSizeFieldView)
          Plugin(MeshSizeFieldView) evaluates the mesh size field ‘MeshSizeField’ on speci-
          fied ‘Component‘ (0 for scalar) of the post-processing view ‘View’. Numeric options:
           MeshSizeField
                     Default value: 0
           View        Default value: -1
           Component
                       Default value: 0
Plugin(MeshSubEntities)
          Plugin(MeshSubEntities) creates mesh elements for the entities of dimension ‘Out-
          putDimension’ (0 for vertices, 1 for edges, 2 for faces) of the ‘InputPhysicalGroup’
          of dimension ‘InputDimension’. The plugin creates new elements belonging to ‘Out-
          putPhysicalGroup’. Numeric options:
           InputDimension
                     Default value: 1
           InputPhysicalGroup
                     Default value: 1
           OuputDimension
                     Default value: 0
           OuputPhysicalGroup
                     Default value: 2000
Plugin(MeshVolume)
          Plugin(MeshVolume) computes the volume of the mesh.
           If ‘View’ < 0, the plugin is run on the current view. If ‘OverTime’ = 1, the plugin
           calculates the min/max over space and time. If ‘Argument’ = 1, the plugin calculates
           the min/max and the argmin/argmax. If ‘Visible’ = 1, the plugin is only applied to
           visible entities.
            - the usual mathematical functions (Log, Sqrt, Sin, Cos, Fabs, ...) and operators (+,
            -, *, /, ^);
- the symbols Time and TimeStep, to retrieve the current time and time step values;
            - the symbols v0, v1, v2, ..., v8, to retrieve each component of the field in ‘View’ at
            the ‘TimeStep’-th time step;
            - the symbols w0, w1, w2, ..., w8, to retrieve each component of the field in ‘Oth-
            erView’ at the ‘OtherTimeStep’-th time step. If ‘OtherView’ and ‘View’ are based
            on different spatial grids, or if their data types are different, ‘OtherView’ is inter-
            polated onto ‘View’.
            If ‘TimeStep’ < 0, the plugin automatically loops over all the time steps in ‘View’
            and evaluates the expressions for each one.
           Expression6
                     Default value: ""
           Expression7
                     Default value: ""
           Expression8
                     Default value: ""
           Numeric options:
           TimeStep     Default value: -1
           View         Default value: -1
           OtherTimeStep
                     Default value: -1
           OtherView
                        Default value: -1
           ForceInterpolation
                     Default value: 0
Plugin(ModulusPhase)
          Plugin(ModulusPhase) interprets the time steps ‘realPart’ and ‘imaginaryPart’ in
          the view ‘View’ as the real and imaginary parts of a complex field and replaces them
          with their corresponding modulus and phase.
           Parameters: the wavenumber, the angular discretisation (phi in [0, 2*Pi] and theta
           in [0, Pi]) of the far field sphere and the indices of the views containing the complex-
           valued E and H fields. If ‘Normalize’ is set, the far field is normalized to 1. If ‘dB’ is
           set, the far field is computed in dB. If ‘NegativeTime’ is set, E and H are assumed to
           have exp(-iwt) time dependency; otherwise they are assume to have exp(+iwt) time
           dependency. If ‘MatlabOutputFile’ is given the raw far field data is also exported
           in Matlab format.
           If ‘ViewTag’ is positive, force that tag for the created view. The view type is de-
           termined by ‘Type’ (NodeData or ElementData). In the case of an ElementData
           type, the view can be restricted to a specific physical group with a positive ‘Physi-
           calGroup’. String options:
           Type         Default value: "NodeData"
           Numeric options:
           NumComp      Default value: 1
           Value        Default value: 0
           ViewTag      Default value: -1
           PhysicalGroup
                     Default value: -1
Plugin(Particles)
          Plugin(Particles) computes the trajectory of particules in the force field given by
          the ‘TimeStep’-th time step of a vector view ‘View’.
336                                                                                  Gmsh 4.11.1
            The plugin takes as input a grid defined by the 3 points (‘X0’,‘Y0’,‘Z0’) (origin),
            (‘X1’,‘Y1’,‘Z1’) (axis of U) and (‘X2’,‘Y2’,‘Z2’) (axis of V).
            The number of particles along U and V that are to be transported is set with the
            options ‘NumPointsU’ and ‘NumPointsV’. The equation
            is then solved with the initial conditions X(t=0) chosen as the grid, dX/dt(t=0)=0,
            and with F interpolated from the vector view.
            Time stepping is done using a Newmark scheme with step size ‘DT’ and ‘MaxIter’
            maximum number of iterations.
            Plugin(Particles) creates one new list-based view containing multi-step vector points.
            Numeric options:
            X0           Default value: 0
            Y0           Default value: 0
            Z0           Default value: 0
            X1           Default value: 1
            Y1           Default value: 0
            Z1           Default value: 0
            X2           Default value: 0
            Y2           Default value: 1
            Z2           Default value: 0
            NumPointsU
                         Default value: 10
            NumPointsV
                         Default value: 1
            A2           Default value: 1
            A1           Default value: 0
            A0           Default value: 0
            DT           Default value: 0.1
            MaxIter      Default value: 100
            TimeStep     Default value: 0
            View         Default value: -1
Plugin(Probe)
          Plugin(Probe) gets the value of the view ‘View’ at the point (‘X’,‘Y’,‘Z’).
           X            Default value: 0
           Y            Default value: 0
           Z            Default value: 0
           View         Default value: -1
Plugin(Remove)
          Plugin(Remove) removes the marked items from the list-based view ‘View’.
           NumSlicesZ
                        Default value: 1
Plugin(Skin)
          Plugin(Skin) extracts the boundary (skin) of the current mesh (if ‘FromMesh’ = 1),
          or from the the view ‘View’ (in which case it creates a new view). If ‘View’ < 0 and
          ‘FromMesh’ = 0, the plugin is run on the current view.
          If ‘Visible’ is set, the plugin only extracts the skin of visible entities. Numeric
          options:
           Visible      Default value: 1
           FromMesh     Default value: 0
           View         Default value: -1
Plugin(Smooth)
          Plugin(Smooth) averages the values at the nodes of the view ‘View’.
           Parameters
           - PhysicalVolumes: list of the physical volumes upon which the tree must be built.
           - PhysicalSurfaces: list of the physical surfaces upon which the tree must be built.
           - PhysicalCurves: list of the physical curves upon which the tree must be built.
           - OutputPhysical: physical tag of the generated tree (-1 will select a new tag auto-
           matically).
           Note - Lists must be comma separated integers and spaces are ignored.
           Remark - This plugin does not overwrite a physical group.Therefore, if an existing
           physical tag is used in OutputPhysical, the edges of the tree will be /added/ to the
           specified group. String options:
           PhysicalVolumes
                     Default value: ""
           PhysicalSurfaces
                     Default value: ""
           PhysicalCurves
                     Default value: ""
           Numeric options:
           OutputPhysical
                     Default value: -1
Plugin(SphericalRaise)
          Plugin(SphericalRaise) transforms the coordinates of the elements in the view
          ‘View’ using the values associated with the ‘TimeStep’-th time step.
340                                                                                Gmsh 4.11.1
           Instead of elevating the nodes along the X, Y and Z axes as with the
           View[‘View’].RaiseX, View[‘View’].RaiseY and View[‘View’].RaiseZ options, the
           raise is applied along the radius of a sphere centered at (‘Xc’, ‘Yc’, ‘Zc’).
           To produce a standard radiation pattern, set ‘Offset’ to minus the radius of the
           sphere the original data lives on.
           The plugin takes as input a grid defined by the 3 points (‘X0’,‘Y0’,‘Z0’) (origin),
           (‘X1’,‘Y1’,‘Z1’) (axis of U) and (‘X2’,‘Y2’,‘Z2’) (axis of V).
           The number of points along U and V that are to be transported is set with the
           options ‘NumPointsU’ and ‘NumPointsV’. The equation
dX(t)/dt = V(x,y,z)
           is then solved with the initial condition X(t=0) chosen as the grid and with V(x,y,z)
           interpolated on the vector view.
           The time stepping scheme is a RK44 with step size ‘DT’ and ‘MaxIter’ maximum
           number of iterations.
If ‘TimeStep’ < 0, the plugin tries to compute streamlines of the unsteady flow.
           Plugin(StreamLines) creates one new list-based view. This view contains multi-step
           vector points if ‘OtherView’ < 0, or single-step scalar lines if ‘OtherView’ >= 0.
           Numeric options:
           X0          Default value: 0
           Y0          Default value: 0
           Z0          Default value: 0
Chapter 9: Gmsh plugins                                                               341
           X1           Default value: 1
           Y1           Default value: 0
           Z1           Default value: 0
           X2           Default value: 0
           Y2           Default value: 1
           Z2           Default value: 0
           NumPointsU
                        Default value: 10
           NumPointsV
                        Default value: 1
           DT           Default value: 0.1
           MaxIter      Default value: 100
           TimeStep     Default value: 0
           View         Default value: -1
           OtherView
                        Default value: -1
Plugin(Summation)
          Plugin(Summation) sums every time steps of ’Reference View’ and (every) ’Other
          View X’and store the result in a new view.
          If ’View 0’ < 0 then the current view is selected.
          If ’View 1...8’ < 0 then this view is skipped.
          Views can have different number of time steps
          Warning: the Plugin assume that every views sharethe same mesh and that meshes
          do not move between time steps! String options:
           Resuling View Name
                     Default value: "default"
           Numeric options:
           View 0       Default value: -1
           View 1       Default value: -1
           View 2       Default value: -1
           View 3       Default value: -1
           View 4       Default value: -1
           View 5       Default value: -1
           View 6       Default value: -1
           View 7       Default value: -1
Plugin(Tetrahedralize)
          Plugin(Tetrahedralize) tetrahedralizes the points in the view ‘View’.
           String options:
           SeedsFile
                       Default value: "seeds.txt"
Chapter 9: Gmsh plugins                                                                    343
           Numeric options:
           ComputeBestSeeds
                     Default value: 0
           ComputeMicrostructure
                     Default value: 1
Plugin(Warp)
          Plugin(Warp) transforms the elements in the view ‘View’ by adding to their node
          coordinates the vector field stored in the ‘TimeStep’-th time step of the view ‘Oth-
          erView’, scaled by ‘Factor’.
           If ‘OtherView’ < 0, the vector field is taken as the field of surface normals multi-
           plied by the ‘TimeStep’ value in ‘View’. (The smoothing of the surface normals is
           controlled by the ‘SmoothingAngle’ parameter.)
      $Entities
        numPoints(size_t) numCurves(size_t)
          numSurfaces(size_t) numVolumes(size_t)
        pointTag(int) X(double) Y(double) Z(double)
          numPhysicalTags(size_t) physicalTag(int) ...
        ...
        curveTag(int) minX(double) minY(double) minZ(double)
          maxX(double) maxY(double) maxZ(double)
          numPhysicalTags(size_t) physicalTag(int) ...
          numBoundingPoints(size_t) pointTag(int; sign encodes orientation) ...
        ...
        surfaceTag(int) minX(double) minY(double) minZ(double)
          maxX(double) maxY(double) maxZ(double)
          numPhysicalTags(size_t) physicalTag(int) ...
          numBoundingCurves(size_t) curveTag(int; sign encodes orientation) ...
        ...
        volumeTag(int) minX(double) minY(double) minZ(double)
          maxX(double) maxY(double) maxZ(double)
          numPhysicalTags(size_t) physicalTag(int) ...
          numBoundngSurfaces(size_t) surfaceTag(int; sign encodes orientation) ...
        ...
      $EndEntities
      $PartitionedEntities
        numPartitions(size_t)
        numGhostEntities(size_t)
          ghostEntityTag(int) partition(int)
          ...
        numPoints(size_t) numCurves(size_t)
          numSurfaces(size_t) numVolumes(size_t)
        pointTag(int) parentDim(int) parentTag(int)
          numPartitions(size_t) partitionTag(int) ...
          X(double) Y(double) Z(double)
          numPhysicalTags(size_t) physicalTag(int) ...
        ...
        curveTag(int) parentDim(int) parentTag(int)
          numPartitions(size_t) partitionTag(int) ...
          minX(double) minY(double) minZ(double)
          maxX(double) maxY(double) maxZ(double)
Chapter 10: Gmsh file formats                                      347
     $Nodes
       numEntityBlocks(size_t) numNodes(size_t)
         minNodeTag(size_t) maxNodeTag(size_t)
       entityDim(int) entityTag(int) parametric(int; 0    or 1)
         numNodesInBlock(size_t)
         nodeTag(size_t)
         ...
         x(double) y(double) z(double)
             < u(double; if parametric and entityDim >=   1) >
             < v(double; if parametric and entityDim >=   2) >
             < w(double; if parametric and entityDim ==   3) >
         ...
       ...
     $EndNodes
     $Elements
       numEntityBlocks(size_t) numElements(size_t)
         minElementTag(size_t) maxElementTag(size_t)
       entityDim(int) entityTag(int) elementType(int; see below)
         numElementsInBlock(size_t)
         elementTag(size_t) nodeTag(size_t) ...
         ...
       ...
     $EndElements
     $Periodic
       numPeriodicLinks(size_t)
       entityDim(int) entityTag(int) entityTagMaster(int)
       numAffine(size_t) value(double) ...
       numCorrespondingNodes(size_t)
         nodeTag(size_t) nodeTagMaster(size_t)
         ...
       ...
348                                                                 Gmsh 4.11.1
$EndPeriodic
      $GhostElements
        numGhostElements(size_t)
        elementTag(size_t) partitionTag(int)
          numGhostPartitions(size_t) ghostPartitionTag(int) ...
        ...
      $EndGhostElements
      $Parametrizations
        numCurveParam(size_t) numSurfaceParam(size_t)
        curveTag(int) numNodes(size_t)
          nodeX(double) nodeY(double) nodeZ(double) nodeU(double)
          ...
        ...
        surfaceTag(int) numNodes(size_t) numTriangles(size_t)
          nodeX(double) nodeY(double) nodeZ(double)
            nodeU(double) nodeV(double)
            curvMaxX(double) curvMaxY(double) curvMaxZ(double)
            curvMinX(double) curvMinY(double) curvMinZ(double)
          ...
          nodeIndex1(int) nodeIndex2(int) nodeIndex3(int)
          ...
        ...
      $EndParametrizations
      $NodeData
        numStringTags(ASCII int)
        stringTag(string) ...
        numRealTags(ASCII int)
        realTag(ASCII double) ...
        numIntegerTags(ASCII int)
        integerTag(ASCII int) ...
        nodeTag(int) value(double) ...
        ...
      $EndNodeData
      $ElementData
        numStringTags(ASCII int)
        stringTag(string) ...
        numRealTags(ASCII int)
        realTag(ASCII double) ...
        numIntegerTags(ASCII int)
        integerTag(ASCII int) ...
        elementTag(int) value(double) ...
        ...
      $EndElementData
      $ElementNodeData
        numStringTags(ASCII int)
        stringTag(string) ...
        numRealTags(ASCII int)
Chapter 10: Gmsh file formats                                                              349
      $InterpolationScheme
         name(string)
         numElementTopologies(ASCII int)
         elementTopology
         numInterpolationMatrices(ASCII int)
         numRows(ASCII int) numColumns(ASCII int) value(ASCII double) ...
      $EndInterpolationScheme
In the format description above, elementType is e.g.:
1          2-node line.
2          3-node triangle.
3          4-node quadrangle.
4          4-node tetrahedron.
5          8-node hexahedron.
6          6-node prism.
7          5-node pyramid.
8          3-node second order line (2 nodes associated with the vertices and 1 with the edge).
9          6-node second order triangle (3 nodes associated with the vertices and 3 with the
           edges).
10         9-node second order quadrangle (4 nodes associated with the vertices, 4 with the
           edges and 1 with the face).
11         10-node second order tetrahedron (4 nodes associated with the vertices and 6 with
           the edges).
12         27-node second order hexahedron (8 nodes associated with the vertices, 12 with the
           edges, 6 with the faces and 1 with the volume).
13         18-node second order prism (6 nodes associated with the vertices, 9 with the edges
           and 3 with the quadrangular faces).
14         14-node second order pyramid (5 nodes associated with the vertices, 8 with the
           edges and 1 with the quadrangular face).
15         1-node point.
16         8-node second order quadrangle (4 nodes associated with the vertices and 4 with
           the edges).
17         20-node second order hexahedron (8 nodes associated with the vertices and 12 with
           the edges).
18         15-node second order prism (6 nodes associated with the vertices and 9 with the
           edges).
19         13-node second order pyramid (5 nodes associated with the vertices and 8 with the
           edges).
350                                                                                   Gmsh 4.11.1
20           9-node third order incomplete triangle (3 nodes associated with the vertices, 6 with
             the edges)
21           10-node third order triangle (3 nodes associated with the vertices, 6 with the edges,
             1 with the face)
22           12-node fourth order incomplete triangle (3 nodes associated with the vertices, 9
             with the edges)
23           15-node fourth order triangle (3 nodes associated with the vertices, 9 with the edges,
             3 with the face)
24           15-node fifth order incomplete triangle (3 nodes associated with the vertices, 12 with
             the edges)
25           21-node fifth order complete triangle (3 nodes associated with the vertices, 12 with
             the edges, 6 with the face)
26           4-node third order edge (2 nodes associated with the vertices, 2 internal to the edge)
27           5-node fourth order edge (2 nodes associated with the vertices, 3 internal to the
             edge)
28           6-node fifth order edge (2 nodes associated with the vertices, 4 internal to the edge)
29           20-node third order tetrahedron (4 nodes associated with the vertices, 12 with the
             edges, 4 with the faces)
30           35-node fourth order tetrahedron (4 nodes associated with the vertices, 18 with the
             edges, 12 with the faces, 1 in the volume)
31           56-node fifth order tetrahedron (4 nodes associated with the vertices, 24 with the
             edges, 24 with the faces, 4 in the volume)
92           64-node third order hexahedron (8 nodes associated with the vertices, 24 with the
             edges, 24 with the faces, 8 in the volume)
93           125-node fourth order hexahedron (8 nodes associated with the vertices, 36 with the
             edges, 54 with the faces, 27 in the volume)
...
All the currently supported elements in the format are defined in GmshDefines.h. See
Section 10.2 [Node ordering], page 352 for the ordering of the nodes.
The post-processing sections ($NodeData, $ElementData, $ElementNodeData) can contain
numStringTags string tags, numRealTags real value tags and numIntegerTags integer tags.
The default set of tags understood by Gmsh is as follows:
stringTag
             The first is interpreted as the name of the post-processing view and the second as
             the name of the interpolation scheme, as provided in the $InterpolationScheme
             section.
realTag      The first is interpreted as a time value associated with the dataset.
integerTag
             The first is interpreted as a time step index (starting at 0), the second as the number
             of field components of the data in the view (1, 3 or 9), the third as the number of
             entities (nodes or elements) in the view, and the fourth as the partition index for
             the view data (0 for no partition).
In the $InterpolationScheme section:
Chapter 10: Gmsh file formats                                                                 351
numElementTopologies
          is the number of element topologies for which interpolation matrices are provided.
elementTopology
          is the id tag of a given element topology: 1 for points, 2 for lines, 3 for triangles, 4
          for quadrangles, 5 for tetrahedra, 6 for pyramids, 7 for prisms, 8 for hexahedra, 9
          for polygons and 10 for polyhedra.
numInterpolationMatrices
          is the number of interpolation matrices provided for the given element topology.
          Currently you should provide 2 matrices, i.e., the matrices that specify how to
          interpolate the data (they have the same meaning as in Section 5.4 [Post-processing
          scripting commands], page 117). The matrices are specified by 2 integers (numRows
          and numColumns) followed by the values, by row.
Here is a small example of a minimal ASCII MSH4.1 file, with a mesh consisting of two quad-
rangles and an associated nodal scalar dataset (the comments are not part of the actual file):
      $MeshFormat
      4.1 0 8     MSH4.1, ASCII
      $EndMeshFormat
      $Nodes
      1 6 1 6     1 entity bloc, 6 nodes total, min/max node tags: 1 and 6
      2 1 0 6     2D entity (surface) 1, no parametric coordinates, 6 nodes
      1             node tag #1
      2             node tag #2
      3             etc.
      4
      5
      6
      0. 0. 0.      node #1 coordinates (0., 0., 0.)
      1. 0. 0.      node #2 coordinates (1., 0., 0.)
      1. 1. 0.      etc.
      0. 1. 0.
      2. 0. 0.
      2. 1. 0.
      $EndNodes
      $Elements
      1 2 1 2     1 entity bloc, 2 elements total, min/max element tags: 1 and 2
      2 1 3 2     2D entity (surface) 1, element type 3 (4-node quad), 2 elements
      1 1 2 3 4     quad tag #1, nodes 1 2 3 4
      2 2 5 6 3     quad tag #2, nodes 2 5 6 3
      $EndElements
      $NodeData
      1           1 string tag:
      "My view"     the name of the view ("My view")
      1           1 real tag:
      0.0           the time value (0.0)
      3           3 integer tags:
      0             the time step (0; time steps always start at 0)
      1             1-component (scalar) field
      6             6 associated nodal values
      1 0.0       value associated with node #1 (0.0)
      2 0.1       value associated with node #2 (0.1)
352                                                                                   Gmsh 4.11.1
      3 0.2       etc.
      4 0.0
      5 0.2
      6 0.4
      $EndNodeData
The 4.1 revision of the format includes the following modifications with respect to the initial 4.0
version:
 • All the unsigned long entries have been changed to size_t. All the entries designating
   counts which were previously encoded as int have also been changed to size_t. (This only
   impacts binary files.)
 • The $Entities section is now optional.
 • Integer and floating point data in the $Nodes section is not mixed anymore: all the tags
   are given first, followed by all the coordinates.
 • The bounding box for point entities has been replaced simply by the 3 coordinates of the
   point (instead of the six bounding box values).
 • The entityDim and entityTag values have been switched in the $Nodes and $Elements
   sections (for consistency with the ordering used elsewhere in the file and in the Chapter 6
   [Gmsh application programming interface], page 123).
 • The minimum and the maximum tag of nodes (resp. elements) have been added in the
   header of the $Nodes (resp. $Elements) section, to facilitate the detection of sparse or
   dense numberings when reading the file.
 • The $Periodic section has been changed to always provide the number of values in the
   affine transform (which can be zero, if the transform is not provided).
The following changes are foreseen in a future revision of the MSH format:
 • The $GhostElements, $NodeData, $ElementData and $ElementNodeData will be reworked
   for greater IO efficiency, with separation of entries by type and a block structure with
   predictable sizes.
 • Node and element tags in $NodeData, $ElementData and $ElementNodeData will be
   switched to size_t.
            v
            ^
            |
            |
      0-----+-----1 --> u          0----2----1          0---2---3---1
Chapter 10: Gmsh file formats                                     353
     v
     ^
     |
     2                          2               2
     |‘\                        |‘\             | \
     | ‘\                       | ‘\            7   6
     |    ‘\                    5    ‘4         |     \
     |      ‘\                  |      ‘\       8 (9) 5
     |        ‘\                |         ‘\    |         \
     0----------1--> u          0-----3----1    0---3---4---1
Triangle12/15:
      v
      ^
      |
      2
      | \
      9   8
      |     \
     10 (14) 7
      |         \
     11 (12) (13) 6
      |             \
      0---3---4---5---1--> u
           v
           ^
           |
     3-----------2              3-----6-----2     3-----6-----2
     |     |     |              |           |     |           |
     |     |     |              |           |     |           |
     |     +---- | --> u        7           5     7     8     5
     |           |              |           |     |           |
     |           |              |           |     |           |
     0-----------1              0-----4-----1     0-----4-----1
354                                                                           Gmsh 4.11.1
Tetrahedron: Tetrahedron10:
                            v
                        .
                      ,/
                     /
                   2                                         2
                ,/|‘\                                     ,/|‘\
              ,/ | ‘\                                   ,/ | ‘\
            ,/     ’.    ‘\                           ,6     ’.    ‘5
         ,/          |      ‘\                     ,/          8      ‘\
       ,/            |         ‘\                ,/            |         ‘\
      0-----------’.--------1 --> u             0--------4--’.--------1
       ‘\.             |       ,/                ‘\.             |       ,/
          ‘\.         |    ,/                       ‘\.         |    ,9
              ‘\.     ’. ,/                             ‘7.     ’. ,/
                  ‘\. |/                                    ‘\. |/
                      ‘3                                        ‘3
                         ‘\.
                             ‘ w
      Hexahedron:                 Hexahedron20:           Hexahedron27:
             v
      3----------2               3----13----2              3----13----2
      |\     ^   |\              |\          |\            |\         |\
      | \    |   | \             | 15        | 14          |15    24 | 14
      | \    |   | \             9 \         11 \          9 \ 20     11 \
      |   7------+---6           |    7----19+---6         |   7----19+---6
      |   | +-- |-- | -> u       |    |      |    |        |22 | 26 | 23|
      0---+---\--1   |           0---+-8----1     |        0---+-8----1    |
       \ |     \ \ |              \ 17        \ 18          \ 17    25 \ 18
        \ |     \ \ |             10 |         12|          10 | 21     12|
         \|      w \|               \|          \|            \|         \|
          4----------5               4----16----5              4----16----5
Chapter 10: Gmsh file formats                                                       355
                 w
                 ^
                 |
                 3                           3                         3
               ,/|‘\                       ,/|‘\                     ,/|‘\
             ,/ | ‘\                     12 | 13                   12 | 13
           ,/    |     ‘\              ,/    |     ‘\            ,/    |     ‘\
         4------+------5             4------14-----5           4------14-----5
         |       |       |           |       8       |         |       8       |
         |     ,/|‘\     |           |       |       |         |     ,/|‘\     |
         | ,/ | ‘\ |                 |       |       |         | 15 | 16 |
         |,/     |     ‘\|           |       |       |         |,/     |     ‘\|
        ,|       |       |\          10      |       11        10-----17-----11
      ,/ |       0        | ‘\       |       0        |        |       0        |
     u   |     ,/ ‘\      |    v     |     ,/ ‘\      |        |     ,/ ‘\      |
         | ,/        ‘\ |            | ,6        ‘7 |          | ,6        ‘7 |
         |,/           ‘\|           |,/           ‘\|         |,/           ‘\|
         1-------------2             1------9------2           1------9------2
Pyramid: Pyramid13:
                       4                                 4
                     ,/|\                              ,/|\
                  ,/ .’|\                           ,/ .’|\
               ,/     | | \                      ,/     | | \
             ,/      .’ | ‘.                   ,/      .’ | ‘.
           ,/        | ’. \                  ,7        | 12 \
        ,/         .’ w |     \           ,/         .’     |   \
      ,/            | ^ |       \       ,/            9     |     11
     0----------.’--|-3         ‘.     0--------6-.’----3         ‘.
      ‘\          |    | ‘\        \     ‘\           |       ‘\     \
        ‘\      .’     +----‘\ - \ -> v ‘5          .’          10    \
           ‘\   |      ‘\       ‘\ \          ‘\    |              ‘\ \
             ‘\.’         ‘\       ‘\‘          ‘\.’                 ‘\‘
                1----------------2                  1--------8-------2
                             ‘\
                                 u
356                                                                              Gmsh 4.11.1
Pyramid14:
                         4
                      ,/|\
                   ,/ .’|\
                ,/      | | \
              ,/      .’ | ‘.
            ,7         | 12 \
         ,/         .’     |    \
       ,/            9     |      11
      0--------6-.’----3          ‘.
        ‘\           |        ‘\     \
          ‘5       .’ 13        10    \
             ‘\    |               ‘\ \
               ‘\.’                  ‘\‘
                   1--------8-------2
                               ‘\
                                   u
     number-of-nodes
     node-number x-coord y-coord z-coord
     ...
     $EndNodes
     $Elements
     number-of-elements
     elm-number elm-type number-of-tags < tag > ... node-number-list
     ...
     $EndElements
     $Periodic
     number-of-periodic-entities
     <Affine value ...>
     dimension entity-tag master-entity-tag
     number-of-nodes
     node-number master-node-number
     ...
     $EndPeriodic
     $NodeData
     number-of-string-tags
     < "string-tag " >
     ...
     number-of-real-tags
     < real-tag >
     ...
     number-of-integer-tags
     < integer-tag >
     ...
     node-number value ...
     ...
     $EndNodeData
     $ElementData
     number-of-string-tags
     < "string-tag " >
     ...
     number-of-real-tags
     < real-tag >
     ...
     number-of-integer-tags
     < integer-tag >
     ...
     elm-number value ...
     ...
     $EndElementData
     $ElementNodeData
     number-of-string-tags
     < "string-tag " >
     ...
     number-of-real-tags
     < real-tag >
     ...
     number-of-integer-tags
     < integer-tag >
358                                                                                     Gmsh 4.11.1
        ...
        elm-number number-of-nodes-per-element value ...
        ...
        $EndElementNodeData
        $InterpolationScheme
        "name "
        number-of-element-topologies
        elm-topology
        number-of-interpolation-matrices
        num-rows num-columns value ...
        ...
        $EndInterpolationScheme
where
version-number
          is a real number equal to 2.2
file-type
             is an integer equal to 0 in the ASCII file format.
data-size
             is an integer equal to the size of the floating point numbers used in the file (currently
             only data-size = sizeof(double) is supported).
number-of-nodes
          is the number of nodes in the mesh.
node-number
          is the number (index) of the n-th node in the mesh; node-number must be a positive
          (non-zero) integer. Note that the node-numbers do not necessarily have to form a
          dense nor an ordered sequence.
x-coord y-coord z-coord
          are the floating point values giving the X, Y and Z coordinates of the n-th node.
number-of-elements
          is the number of elements in the mesh.
elm-number
             is the number (index) of the n-th element in the mesh; elm-number must be a
             positive (non-zero) integer. Note that the elm-numbers do not necessarily have to
             form a dense nor an ordered sequence.
elm-type     defines the geometrical type of the n-th element: see Section 10.1 [MSH file format],
             page 345.
number-of-tags
          gives the number of integer tags that follow for the n-th element. By default, the
          first tag is the tag of the physical entity to which the element belongs; the second is
          the tag of the elementary model entity to which the element belongs; the third is the
          number of mesh partitions to which the element belongs, followed by the partition
          ids (negative partition ids indicate ghost cells). A zero tag is equivalent to no tag.
          Gmsh and most codes using the MSH 2 format require at least the first two tags
          (physical and elementary tags).
node-number-list
          is the list of the node numbers of the n-th element. The ordering of the nodes is
          given in Section 10.2 [Node ordering], page 352.
Chapter 10: Gmsh file formats                                                                 359
number-of-string-tags
          gives the number of string tags that follow. By default the first string-tag
          is interpreted as the name of the post-processing view and the second as the
          name of the interpolation scheme. The interpolation scheme is provided in the
          $InterpolationScheme section (see below).
number-of-real-tags
          gives the number of real number tags that follow. By default the first real-tag is
          interpreted as a time value associated with the dataset.
number-of-integer-tags
          gives the number of integer tags that follow. By default the first integer-tag is
          interpreted as a time step index (starting at 0), the second as the number of field
          components of the data in the view (1, 3 or 9), the third as the number of entities
          (nodes or elements) in the view, and the fourth as the partition index for the view
          data (0 for no partition).
number-of-nodes-per-elements
          gives the number of node values for an element in an element-based view.
value       is a real number giving the value associated with a node or an element. For NodeData
            (respectively ElementData) views, there are ncomp values per node (resp. per
            element), where ncomp is the number of field components. For ElementNodeData
            views, there are ncomp times number-of-nodes-per-elements values per element.
number-of-element-topologies
          is the number of element topologies for which interpolation matrices are provided
elm-topology
          is the id tag of a given element topology: 1 for points, 2 for lines, 3 for triangles, 4
          for quadrangles, 5 for tetrahedra, 6 for pyramids, 7 for prisms, 8 for hexahedra, 9
          for polygons and 10 for polyhedra.
number-of-interpolation-matrices
          is the number of interpolation matrices provided for the element topology elm-
          topology. Currently you should provide 2 matrices, i.e., the matrices that specify
          how to interpolate the data (they have the same meaning as in Section 5.4 [Post-
          processing scripting commands], page 117). The matrices are specified by 2 integers
          (num-rows and num-columns) followed by the values.
Below is a small example (a mesh consisting of two quadrangles with an associated nodal scalar
dataset; the comments are not part of the actual file!):
      $MeshFormat
      2.2 0 8
      $EndMeshFormat
      $Nodes
      6                     six mesh nodes:
      1 0.0 0.0 0.0           node #1: coordinates (0.0, 0.0, 0.0)
      2 1.0 0.0 0.0           node #2: coordinates (1.0, 0.0, 0.0)
      3 1.0 1.0 0.0           etc.
      4 0.0 1.0 0.0
      5 2.0 0.0 0.0
      6 2.0 1.0 0.0
      $EndNodes
      $Elements
      2                     two elements:
360                                                                          Gmsh 4.11.1
version-number
          is a real number equal to 2.2.
file-type
             is an integer equal to 1.
data-size
             has the same meaning as in the ASCII file format. Currently only data-size =
             sizeof(double) is supported.
Chapter 10: Gmsh file formats                                                                  361
one-binary
             is an integer of value 1 written in binary form. This integer is used for detecting if
             the computer on which the binary file was written and the computer on which the
             file is read are of the same type (little or big endian).
             Here is a pseudo C code to write one-binary:
                     int one = 1;
                     fwrite(&one, sizeof(int), 1, file);
number-of-nodes
          has the same meaning as in the ASCII file format.
nodes-binary
          is the list of nodes in binary form, i.e., a array of number-of-nodes * (4 + 3 * data-
          size) bytes. For each node, the first 4 bytes contain the node number and the next
          (3 * data-size) bytes contain the three floating point coordinates.
          Here is a pseudo C code to write nodes-binary:
                 for(i = 0; i < number_of_nodes; i++){
                    fwrite(&num_i, sizeof(int), 1, file);
                    double xyz[3] = {node_i_x, node_i_y, node_i_z};
                    fwrite(xyz, sizeof(double), 3, file);
                 }
number-of-elements
          has the same meaning as in the ASCII file format.
element-header-binary
          is a list of 3 integers in binary form, i.e., an array of (3 * 4) bytes: the first four
          bytes contain the type of the elements that follow (same as elm-type in the ASCII
          format), the next four contain the number of elements that follow, and the last
          four contain the number of tags per element (same as number-of-tags in the ASCII
          format).
          Here is a pseudo C code to write element-header-binary:
                 int header[3] = {elm_type, num_elm_follow, num_tags};
                 fwrite(header, sizeof(int), 3, file);
elements-binary
          is a list of elements in binary form, i.e., an array of “number of elements that follow”
          * (4 + number-of-tags * 4 + #node-number-list * 4) bytes. For each element, the
          first four bytes contain the element number, the next (number-of-tags * 4) contain
          the tags, and the last (#node-number-list * 4) contain the node indices.
          Here is a pseudo C code to write elements-binary for triangles with the 2 standard
          tags (the physical group and elementary entity):
                  for(i = 0; i < number_of_triangles; i++){
                     int data[6] = {num_i, physical, elementary,
                                       node_i_1, node_i_2, node_i_3};
                     fwrite(data, sizeof(int), 6, file);
                  }
file-type
            is an integer equal to 0 in the ASCII file format.
data-size
            is an integer equal to the size of the floating point numbers used in the file (usually,
            data-size = sizeof(double)).
view-name
            is a string containing the name of the view (max. 256 characters).
nb-time-steps
          is an integer giving the number of time steps in the view.
nb-scalar-points
nb-vector-points
...       are integers giving the number of scalar points, vector points, . . . , in the view.
Chapter 10: Gmsh file formats                                                                    365
nb-text2d
nb-text3d
            are integers giving the number of 2D and 3D text strings in the view.
nb-text2d-chars
nb-text3d-chars
          are integers giving the total number of characters in the 2D and 3D strings.
time-step-values
          is a list of nb-time-steps double precision numbers giving the value of the time (or
          any other variable) for which an evolution was saved.
scalar-point-value
vector-point-value
...       are lists of double precision numbers giving the node coordinates and the values
          associated with the nodes of the nb-scalar-points scalar points, nb-vector-points
          vector points, . . . , for each of the time-step-values.
          For example, vector-triangle-value is defined as:
                 coord1-node1 coord1-node2 coord1-node3
                 coord2-node1 coord2-node2 coord2-node3
                 coord3-node1 coord3-node2 coord3-node3
                 comp1-node1-time1 comp2-node1-time1 comp3-node1-time1
                 comp1-node2-time1 comp2-node2-time1 comp3-node2-time1
                 comp1-node3-time1 comp2-node3-time1 comp3-node3-time1
                 comp1-node1-time2 comp2-node1-time2 comp3-node1-time2
                 comp1-node2-time2 comp2-node2-time2 comp3-node2-time2
                 comp1-node3-time2 comp2-node3-time2 comp3-node3-time2
                 ...
          The ordering of the nodes is given in Section 10.2 [Node ordering], page 352.
text2d      is a list of 4 double precision numbers:
                    coord1 coord2 style index
            where coord1 and coord2 give the X-Y position of the 2D string in screen coordinates
            (measured from the top-left corner of the window) and where index gives the start-
            ing index of the string in text2d-chars. If coord1 (respectively coord2) is negative,
            the position is measured from the right (respectively bottom) edge of the window. If
            coord1 (respectively coord2) is larger than 99999, the string is centered horizontally
            (respectively vertically). If style is equal to zero, the text is aligned bottom-left and
            displayed using the default font and size. Otherwise, style is converted into an inte-
            ger whose eight lower bits give the font size, whose eight next bits select the font (the
            index corresponds to the position in the font menu in the GUI), and whose eight next
            bits define the text alignment (0=bottom-left, 1=bottom-center, 2=bottom-right,
            3=top-left, 4=top-center, 5=top-right, 6=center-left, 7=center-center, 8=center-
            right).
text2d-chars
          is a list of nb-text2d-chars characters. Substrings are separated with the null ‘\0’
          character.
text3d      is a list of 5 double precision numbers
                    coord1 coord2 coord3 style index
            where coord1, coord2 and coord3 give the XYZ coordinates of the string in model
            (real world) coordinates, index gives the starting index of the string in text3d-chars,
            and style has the same meaning as in text2d.
366                                                                                   Gmsh 4.11.1
text3d-chars
          is a list of nb-text3d-chars chars. Substrings are separated with the null ‘\0’ char-
          acter.
      fprintf(file, "$PostFormat\n");
      fprintf(file, "%g %d %d\n", 1.4, 1, sizeof(double));
      fprintf(file, "$EndPostFormat\n");
      fprintf(file, "$View\n");
      fprintf(file, "%s %d "
        "%d %d %d %d %d %d %d %d %d "
        "%d %d %d %d %d %d %d %d %d "
        "%d %d %d %d %d %d %d %d %d "
        "%d %d %d %d %d %d %d %d %d "
        "%d %d %d %d %d %d %d %d %d "
        "%d %d %d %d\n",
        view-name, nb-time-steps,
        nb-scalar-points, nb-vector-points, nb-tensor-points,
        nb-scalar-lines, nb-vector-lines, nb-tensor-lines,
        nb-scalar-triangles, nb-vector-triangles, nb-tensor-triangles,
        nb-scalar-quadrangles, nb-vector-quadrangles, nb-tensor-quadrangles,
        nb-scalar-tetrahedra, nb-vector-tetrahedra, nb-tensor-tetrahedra,
        nb-scalar-hexahedra, nb-vector-hexahedra, nb-tensor-hexahedra,
        nb-scalar-prisms, nb-vector-prisms, nb-tensor-prisms,
        nb-scalar-pyramids, nb-vector-pyramids, nb-tensor-pyramids,
        nb-scalar-lines2, nb-vector-lines2, nb-tensor-lines2,
        nb-scalar-triangles2, nb-vector-triangles2, nb-tensor-triangles2,
        nb-scalar-quadrangles2, nb-vector-quadrangles2,
        nb-tensor-quadrangles2,
        nb-scalar-tetrahedra2, nb-vector-tetrahedra2, nb-tensor-tetrahedra2,
        nb-scalar-hexahedra2, nb-vector-hexahedra2, nb-tensor-hexahedra2,
        nb-scalar-prisms2, nb-vector-prisms2, nb-tensor-prisms2,
        nb-scalar-pyramids2, nb-vector-pyramids2, nb-tensor-pyramids2,
        nb-text2d, nb-text2d-chars, nb-text3d, nb-text3d-chars);
      fwrite(&one, sizeof(int), 1, file);
      fwrite(time-step-values, sizeof(double), nb-time-steps, file);
      fwrite(all-scalar-point-values, sizeof(double), ..., file);
      ...
      fprintf(file, "\n$EndView\n");
Chapter 10: Gmsh file formats                                                                   367
ENABLE_PROFILE
          Enable profiling compiler flags (default: OFF)
ENABLE_DINTEGRATION
          Enable discrete integration (needed for levelsets) (default: ON)
ENABLE_DOMHEX
          Enable experimental DOMHEX code (default: ON)
ENABLE_EIGEN
          Enable Eigen for linear algebra (instead of Blas/Lapack) (default: ON)
ENABLE_FLTK
          Enable FLTK graphical user interface (requires mesh/post) (default: ON)
ENABLE_GEOMETRYCENTRAL
          Enable geometry-central library (experimental) (default: ON)
ENABLE_GETDP
          Enable GetDP solver (linked as a library, experimental) (default: ON)
ENABLE_GMM
             Enable GMM linear solvers (simple alternative to PETSc) (default: ON)
ENABLE_GMP
             Enable GMP for Kbipack (advanced) (default: ON)
ENABLE_GRAPHICS
          Enable building graphics lib even without GUI (advanced) (default: OFF)
ENABLE_HXT
             Enable HXT library (for reparametrization and meshing) (default: ON)
ENABLE_KBIPACK
          Enable Kbipack (neeeded by homology solver) (default: ON)
ENABLE_MATHEX
          Enable Mathex expression parser (used by plugins and options) (default: ON)
ENABLE_MED
             Enable MED mesh and post file formats (default: ON)
ENABLE_MESH
          Enable mesh module (default: ON)
ENABLE_METIS
          Enable Metis mesh partitioner (default: ON)
ENABLE_MMG
             Enable Mmg mesh adaptation interface (default: ON)
ENABLE_MPEG_ENCODE
          Enable built-in MPEG movie encoder (default: ON)
ENABLE_MPI
             Enable MPI (experimental, not used for meshing) (default: OFF)
ENABLE_MSVC_STATIC_RUNTIME
          Enable static Visual C++ runtime (default: OFF)
ENABLE_MUMPS
          Enable MUMPS sparse direct linear solver (default: OFF)
Appendix A: Compiling the source code                                                   371
ENABLE_NETGEN
          Enable Netgen 3D frontal mesh generator (default: ON)
ENABLE_NUMPY
          Enable fullMatrix and numpy array conversion for private API (default: OFF)
ENABLE_PETSC4PY
          Enable petsc4py wrappers for petsc matrices for private API (default: OFF)
ENABLE_OCC
             Enable OpenCASCADE CAD kernel (default: ON)
ENABLE_OCC_CAF
          Enable OpenCASCADE CAF module (for STEP/IGES attributes) (default: ON)
ENABLE_OCC_STATIC
          Link OpenCASCADE static instead of dynamic libraries (requires ENABLE OCC)
          (default: OFF)
ENABLE_OCC_TBB
          Add TBB libraries in list of OCC libraries (default: OFF)
ENABLE_ONELAB
          Enable ONELAB solver interface (default: ON)
ENABLE_ONELAB_METAMODEL
          Enable ONELAB metamodels (experimental) (default: ON)
ENABLE_OPENACC
          Enable OpenACC (default: OFF)
ENABLE_OPENMP
          Enable OpenMP (default: ON)
ENABLE_OPTHOM
          Enable high-order mesh optimization tools (default: ON)
ENABLE_OS_SPECIFIC_INSTALL
          Enable OS-specific (e.g. app bundle) installation (default: OFF)
ENABLE_OSMESA
          Enable OSMesa for offscreen rendering (experimental) (default: OFF)
ENABLE_P4EST
          Enable p4est for enabling automatic mesh size field (experimental) (default: OFF)
ENABLE_PACKAGE_STRIP
          Strip symbols in install packages to reduce install size (default: ON)
ENABLE_PARSER
          Enable GEO file parser (required for .geo/.pos scripts) (default: ON)
ENABLE_PETSC
          Enable PETSc linear solvers (required for SLEPc) (default: OFF)
ENABLE_PLUGINS
          Enable post-processing plugins (default: ON)
ENABLE_POST
          Enable post-processing module (required by GUI) (default: ON)
ENABLE_POPPLER
          Enable Poppler for displaying PDF documents (experimental) (default: OFF)
372                                                                                Gmsh 4.11.1
ENABLE_PRIVATE_API
          Enable private API (default: OFF)
ENABLE_PRO
             Enable PRO extensions (default: ON)
ENABLE_QUADMESHINGTOOLS
          Enable QuadMeshingTools extensions (default: ON)
ENABLE_QUADTRI
          Enable QuadTri structured meshing extensions (default: ON)
ENABLE_REVOROPT
          Enable Revoropt (used for CVT remeshing) (default: OFF)
ENABLE_RPATH
          Use RPATH in dynamically linked targets (default: ON)
ENABLE_SLEPC
          Enable SLEPc eigensolvers (default: OFF)
ENABLE_SOLVER
          Enable built-in finite element solvers (required for reparametrization) (default: ON)
ENABLE_SYSTEM_CONTRIB
          Use system versions of contrib libraries, when possible (default: OFF)
ENABLE_TCMALLOC
          Enable libtcmalloc (fast malloc that does not release memory) (default: OFF)
ENABLE_TESTS
          Enable tests (default: ON)
ENABLE_TOUCHBAR
          Enable Apple Touch bar (default: ON)
ENABLE_VISUDEV
          Enable additional visualization capabilities for development purposes (default:
          OFF)
ENABLE_VOROPP
          Enable voro++ (for hex meshing, experimental) (default: ON)
ENABLE_WINSLOWUNTANGLER
          Enable WinslowUntangler extensions (requires ALGLIB) (default: ON)
ENABLE_WRAP_JAVA
          Generate SWIG Java wrappers for private API (default: OFF)
ENABLE_WRAP_PYTHON
          Generate SWIG Python wrappers for private API (not used by public API) (default:
          OFF)
ENABLE_ZIPPER
          Enable Zip file compression/decompression (default: OFF)
Appendix B: Information for developers                                                       373
      On Unix try ‘ldd gmsh’ (or ‘otool -L gmsh’ on macOS) to check if all the required shared
      libraries are installed on your system. If not, install them. If it still doesn’t work, recompile
      Gmsh from the source code.
 2. Gmsh keeps re-displaying its graphics when other windows partially hide the graphical
    window.
      Disable opaque move in your window manager.
 3. The graphics display very slowly.
      Are you are executing Gmsh from a remote host (via the network) without GLX? You
      should turn double buffering off (with the ‘-nodb’ command-line switch).
 4. There is an ugly “ghost triangulation” in the vector PostScript/PDF files generated by
    Gmsh!
      No, there isn’t. This “ghost triangulation” is due to the fact that most PostScript previewers
      nowadays antialias the graphic primitives when they display the page on screen. (For
      example, in gv, you can disable antialising with the ‘State->Antialias’ menu.) You should
      not see this ghost triangulation in the printed output (on paper).
 5. How can I save GIF, JPEG, ..., images?
      Just choose the appropriate format in ‘File->Export’. By default Gmsh guesses the format
      from the file extension, so you can just type ‘myfile.jpg’ in the dialog and Gmsh will
      automatically create a JPEG image file.
 6. How save high-resolution images?
      You can specify the dimension in the dialog (e.g. set the width of the image to 5000 pixels;
      leaving one dimension negative will rescale using the natural aspect ratio), or through the
      Print.Width and Print.Height options. The maximum image size is graphics hardware
      dependent.
 7. How can I save MPEG, AVI, ..., animations?
      You can create simple MPEG animations by choosing MPEG as the format in ‘File-
      >Export’: this allows you to loop over time steps or post-processing data sets, or to change
      parameters according to Print.Parameter. To create fully customized animations or to
      use different output formats (AVI, MP4, etc.) you should write a script. Have a look at
      Section 2.8 [t8], page 33 or examples/post processing/anim.script for some examples.
 8. Can I change values in input fields with the mouse in the GUI?
      Yes: dragging the mouse in a numeric input field slides the value! The left button moves
      one step per pixel, the middle by ‘10*step’, and the right button by ‘100*step’.
 9. Can I copy messages to the clipboard?
      Yes: selecting the content of an input field, or lines in the message console (‘Tools->Message
      Console’), copies the selected text to the clipboard.
      • you may save the serialized (“unrolled”) geometry in another file (using gmsh file.geo
        -0 or exporting to “.geo unrolled”), and use this new file for subsequent computations;
      • or you may set the Geometry.AutoCoherence option to 0. This will prevent any
        automatic duplicate check/replacement. If you still need to remove the duplicates
        entities, simply add Coherence; at strategic locations in your ‘.geo’ files (e.g. before
        the creation of curve loops, etc.).
 3. Why is my “.geo unrolled” file incomplete?
    “Unrolled GEO” files can only fully represent geometries created with the built-in geometry
    kernel. If you want to serialize a geometry created with the OpenCASCADE geometry
    kernel, you should use the native OpenCASCADE “.brep” format.
 4. How can I display only selected parts of my model?
    Use ‘Tools->Visibility’. This allows you to select elementary entities and physical groups,
    as well as mesh elements, in a variety of ways (in a list or tree browser, by tag, interactively,
    or per window).
 5. Can I edit STEP/IGES/BRep models?
    Yes: with the OpenCASCADE kernel (SetFactory("OpenCASCADE");), load the file (Merge
    "file.step"; or ShapeFromFile("file.step");) and add the relevant scripting com-
    mands after that to delete parts, create new parts or apply boolean operators. See e.g.
    examples/boolean/import.geo.
 6. Why are there surfaces missing when I export a STEP as an unrolled ‘.geo’ file?
    You should not export STEP models as ‘.geo’ files. By design, Gmsh never translates from
    one CAD format to another. The “unrolled GEO” feature is there for unrolling complex
    GEO scripts writted with the built-in geometry kernel. While it can indeed export a limited
    subset of geometrical entities created by other CAD kernels (e.g. OpenCASCADE), this
    feature is available for debugging purposes.
 7. How can I build modular geometries?
    Define common geometrical objects and options in separate files or using Macro, reusable
    in all your problem definition structures. Or use the features of your language of choice and
    the Gmsh API.
 8. Some files take much more time to load with Gmsh 4 compared to Gmsh 3: what’s hap-
    pening?
    In Gmsh 4, some operations (Color, Show, Hide, BoundingBox, Boundary, PointsOf,
    Periodic, In embedding constraints, ..) are now applied directly on the internal Gmsh
    model, instead of being handled at the level of the CAD kernel. This implies a synchro-
    nization between the CAD kernel and the Gmsh model. To minimize the number of syn-
    chronizations (which can become costly for large models), you should always create your
    geometry first; and use these commands once the geometry has been created.
      to adapt the mesh element sizes in your input file so that the surface mesh better matches
      the geometrical details of the model.
      If nothing works, file a bug report with the version of your operating system and the full
      geometry.
 3.   How can I only save tetrahedral elements (not triangles and lines)?
      By default, if physical groups are defined, the output mesh only contains those elements
      that belong to physical entities. So to save only 3D elements, simply define one (or more)
      physical volume(s) and don’t define any physical surfaces, physical curves or physical points.
 4.   How can I remove mesh nodes for geometrical construction points (centers of spheres, etc.)
      from output mesh file?
      By default Gmsh saves all the geometrical entities and their associated mesh. In particular,
      since each geometry point is meshed with a point element, defined by a mesh node, the
      output file will contain one 0-D mesh element and one mesh node for each geometry point.
      To remove such elements/nodes from the mesh, simply define physical groups for the entities
      you want to save (see previous question).
 5.   My 2D meshes of IGES files present gaps between surfaces
      IGES files do not contain the topology of the model, and tolerance problems can thus
      appear when the OpenCASCADE importer cannot identify two (close) curves as actually
      being identical.
      The best solution is to not use IGES and use STEP instead. If you really have to use
      IGES, check that you don’t have duplicate curves (e.g. by displaying their tags in the
      GUI with ‘Tools->Options->Geometry->Visibility->Curve labels’). If there are duplicates,
      try to change the geometrical tolerance and sew the faces (see options in ‘Tools->Options-
      >Geometry->General’).
 6.   The quality of the elements generated by the 3D algorithm is very bad.
      Use ‘Optimize quality’ in the mesh menu.
 7.   Non-recombined 3D extruded meshes sometimes fail.
      The swapping algorithm is not very clever. Try to change the surface mesh a bit, or
      recombine your mesh to generate prisms or hexahedra instead of tetrahedra.
 8.   Does Gmsh automatically couple unstructured tetrahedral meshes and structured hexahe-
      dral meshed using pyramids?
      Yes, but only if pyramids need to be created on a single side of the quadrangular surface
      mesh.
 9.   Can I explicitly assign region tags to extruded layers?
      No, this feature has been removed in Gmsh 2.0. You must use the standard entity tag
      instead.
10.   Did you remove the elliptic mesh generator in Gmsh 2.0?
      Yes. You can achieve the same result by using the transfinite algorithm with smoothing
      (e.g., with Mesh.Smoothing = 10).
11.   Does Gmsh support curved elements?
      Yes, just choose the appropriate order in the mesh menu after the mesh is completed.
      High-order optimization tools are also available in the mesh menu. You can select the
      order on the command line with e.g. -order 2, and activcate high-order optimization with
      -optimize_ho.
12.   Can I import an existing surface mesh in Gmsh and use it to build a 3D mesh?
      Yes, you can import a surface mesh in any one of the supported mesh file formats, define a
      volume, and mesh it. For an example see examples/simple geo/sphere-discrete.geo.
Appendix C: Frequently asked questions                                                            379
      set ‘Data source’ to point to the second view. (You might want to make the second view
      invisible, too. If you want to amplify or decrease the amount of deformation, just modify
      the ‘Displacement factor’ option.)
      Another solution is to use the ‘General transformation expressions’ (in ‘View->Options-
      >Offset’) on the field you want to display, with the displacement map selected as the data
      source.
      And yet another solution is to use the Warp plugin.
 7.   Can I color the arrows representing a vector field with data from a scalar field?
      Yes: load both the vector and the scalar fields (the two views must have the same number
      of elements) and, in the vector field options, select the scalar view in ‘Data source’.
 8.   Can I color isovalue surfaces with data from another scalar view?
      Yes, using either the CutMap plugin (with the ‘dView’ option) or the Evaluate plugin.
 9.   Is there a way to save animations?
      You can save simple MPEG animations directly from the ‘File->Export’ menu. For
      other formats you should write a script. Have a look at Section 2.8 [t8], page 33 or
      examples/post processing/anim.script for some examples.
10.   Is there a way to visualize only certain components of vector/tensor fields?
      Yes, by using either the “Force field” options in ‘Tools->Options->View->Visibility’, or by
      using ‘Tools->Plugins->MathEval’.
11.   Can I do arithmetic operations on a view? Can I perform operations involving different
      views?
      Yes, with the Evaluate plugin.
12.   Some plugins seem to create empty views. What’s wrong?
      There can be several reasons:
        • the plugin might be written for specific element types only (for example, only for scalar
           triangles or tetrahedra). In that case, you should transform your view before running
           the plugin (you can use Plugin(DecomposeinSimplex) to transform all quads, hexas,
           prisms and pyramids into triangles and tetrahedra).
        • the plugin might expect a mesh while all you provide is a point cloud. In 2D, you can
           use Plugin(Triangulate) to transform a point cloud into a triangulated surface. In
           3D you can use Plugin(Tetrahedralize).
        • the input parameters are out of range.
    In any case, you can automatically remove all empty views with ‘View->Remove->Empty
    Views’ in the GUI, or with Delete Empty Views; in a script.
13. How can I see “inside” a complicated post-processing view?
    Use ‘Tools->Clipping’.
    When viewing 3D scalar fields, you can also modify the colormap (‘Tools->Options->View-
    >Map’) to make the iso-surfaces “transparent”: either by holding Ctrl while dragging the
    mouse to draw the alpha channel by hand, or by using the a, Ctrl+a, p and Ctrl+p keyboard
    shortcuts.
    Yet another (destructive) option is to use the ExtractVolume option in the CutSphere or
    CutPlane plugins.
14. I am loading a valid 3D scalar view but Gmsh does not display anything!
    If your dataset is constant per element make sure you don’t use the ‘Iso-values’ interval
    type in ‘Tools->Options->View->Range’.
Appendix D: Version history                                                    383
4.10.4 (June 19, 2022): improved graphical window tooltips; small bug fixes.
4.10.2 (May 13, 2022): fixed regression introduced in 4.9 for recombined meshes
with boundary layers; new Geometry.OCCSafeUnbind option to disable boolean
optimization introduced in 4.10.0 (for backward compatibility); new HealShapes
command in .geo files; simplified calculation of OCC STL bounding boxes;
generalized Crack plugin; small bug fixes.
4.10.0 (April 25, 2022): more flexible homology/cohomology workflow in the API;
"Attractor" field is now just a synonym for the newer (and more efficient)
"Distance" field; periodic bsplines now use the same default multiplicities in
OCC as in the built-in kernel; model/isInside now also handles discrete
entities; speed-up repeated simple boolean operations; C++ api now throws
std::runtime_error on errors; small bug fixes.
4.9.5 (February 21, 2022): dynamic Gmsh library now also only exports public
symbols on macOS and Linux, like it does on Windows; better handling of
max. thread settings; small bug fixes.
4.9.1 (December 18, 2021): relax tolerance on curve parametrization match for
periodic meshing; enable extruded boundary layers on generic model entities;
activate IncludeBoundary by default in Restrict field; downgraded compiler for
official Linux releases to gcc 6 to improve compatibility with older systems;
small bug fixes (view tag generation with zero tag, model/setTag).
4.8.4 (April 28, 2021): set current model in gmsh/model/add; small bug fixes.
4.8.2 (March 27, 2021): fixed regression in OCC transforms; fixed cwrap API.
4.8.1 (March 21, 2021): improved performance when transforming many OCC
entities; fixed regression in high-order meshing of surfaces with singular
parametrizations; small bug fixes.
4.7.0 (November 5, 2020): API errors now throw exceptions with the last error
message (instead of an integer error code); API functions now print messages on
the terminal by default, and throw exceptions on all errors unless in
interactive mode; new API functions to retrieve "homogeneous" model-based data
(for improved Python performance), to set interpolation matrices for high-order
datasets, to assign "automatic" transfinite meshing constraints and to pass
native (C++, C, Python or Julia) mesh size callback; added option to save
high-order periodic nodes info; added support for scripted window splitting;
improved VTK reader; new MatrixOfInertia command; added support for Unicode
command line arguments on Windows; uniformized commands, options and field
option names to match the documented terminology (CharacteristicLength ->
MeshSize, geometry Line -> Curve, ...; old names are still accepted, but
deprecated); improved handling of complex periodic cases; removed bundled Mmg3D
and added support for stock Mmg 5; Gmsh now requires C++11 and CMake 3.1, and
uses Eigen by default instead of Blas/Lapack for dense linear algebra; small bug
fixes.
4.6.0 (June 22, 2020): new options to only generate initial 2D or 3D meshes
(without node insertion), and to only mesh non-meshed entities; added ability to
only remesh parts of discrete models; added support for mesh size fields and
embedded points and surfaces in HXT; improved reparametrization and partitioning
code; new OCC API functions to reduce the number of synchronizations for complex
models; new OCC spline surface interfaces; new functions and options to control
the first tag of entities, nodes and elements; fixed duplicated entities in STEP
output; improved mesh subdivision and high-order pipeline; MED output now
preserves node and element tags; small bug fixes.
4.5.6 (March 30, 2020): better calculation of OCC bounding boxes using STL; API
tutorials; small bug fixes.
4.5.5 (March 21, 2020): tooltips in GUI to help discovery of scripting options;
fixed MED IO of high-order elements; fixed OCC attribute search by bounding box;
fix parsing of mac-encoded scripts; new RecombineMesh command; added support for
extrusion of mixed-dimension entities with OCC; small bug fixes.
4.5.4 (February 29, 2020): periodic mesh optimization now ensures that the
master mesh is not modified; code cleanup; small bug fixes.
4.5.2 (January 30, 2020): periodic meshes now obey reorientation constraints;
physical group definitions now follow compound meshing constraints; small bug
fixes and improvements.
4.5.1 (December 28, 2019): new Min and Max commands in .geo files;
Mesh.MinimumCirclePoints now behaves the same with all geometry kernels; fixed
issue with UTF16-encoded home directories on Windows.
compounds, per-surface mesh algorithm and mesh size from boundary; renamed
plugin AnalyseCurvedMesh to AnalyseMeshQuality; fixed regression for built-in
kernel BSplines on non-flat geometries (Sphere, PolarSphere); small fixes and
improvements.
4.4.1 (July 25, 2019): small improvements (transfinite with degenerate curves,
renumbering for some mesh formats, empty MSH file sections, tunable accuracy of
compound meshes) and bug fixes (ellipse < pi, orientation and reclassification
of compound parts, serendip pyramids, periodic MeshAdapt robustness, invalidate
cache after mesh/addNodes).
4.4.0 (July 1, 2019): new STL remeshing workflow (with new ClassifySurfaces
command in .geo files); added API support for color options, mesh optimization,
recombination, smoothing and shape healing; exposed additional METIS options;
improved support for periodic entities (multiple curves with the same start/end
points, legacy MSH2 format, periodic surfaces with embedded entities); added
mesh renumbering also after interactive mesh modifications; improved support for
OpenCASCADE ellipse arcs; new interactive filter in visibility window; flatter
GUI; small bug fixes.
4.2.3 (April 3, 2019): added STL export by physical surface; added ability to
remove embedded entities; added handling of boundary entities in
addDiscreteEntity; small bug fixes.
4.2.2 (March 13, 2019): fixed regression in reading of extruded meshes; added
ability to export one solid per surface in STL format.
4.2.1 (March 7, 2019): fixed regression for STEP files without global compound
shape; added support for reading IGES labels and colors; improved search for
shared library in Python and Julia modules; improved Plugin(MeshVolume); updates
to the reference manual.
4.2.0 (March 5, 2019): new MSH4.1 revision of the MSH file format, with support
for size_t node and element tags (see the reference manual for detailed
changes); added support for reading STEP labels and colors with OCC CAF; changed
default "Geometry.OCCTargetUnit" value to none (i.e. use STEP file coordinates
as-is, without conversion); improved high-order mesh optimization; added ability
to import groups of nodes from MED files; enhanced Plugin(Distance) and
Plugin(SimplePartition); removed unmaintained plugins; removed default
dependency on PETSc; small improvements and bug fixes.
* Incompatible API changes: changed type of node and element tags from int to
  size_t to support (very) large meshes; changed logger/start,
  mesh/getPeriodicNodes and mesh/setElementsByType.
4.1.5 (February 14, 2019): improved OpenMP parallelization, STL remeshing, mesh
partitioning and high-order mesh optimization; bug fixes.
4.1.4 (February 3, 2019): improved ghost cell I/O; small improvements and bug
fixes.
4.1.3 (January 23, 2019): improved quad meshing; new options for automatic
full-quad meshes; save nodesets also for physical points (Abaqus, Tochnog);
small bug fixes.
4.1.1 (January 20, 2019): added support for general affine transformations with
OpenCASCADE kernel; improved handling of boolean tolerance (snap vertices);
faster crossfield calculation by default (e.g. for Frontal-Delauany for quads
algorithm); fixed face vertices for PyramidN; renamed ONELAB "Action" and
"Button" parameters "ONELAB/Action" and "ONELAB/Button"; added support for
actions on any ONELAB button; added API functions for selections in user
interface.
4.1.0 (January 13, 2019): improved ONELAB and Fltk support in API; improved
renumbering of mesh nodes/elements; major code refactoring.
4.0.7 (December 9, 2018): fixed small memory leaks; removed unused code.
4.0.5 (November 17, 2018): new automatic hybrid mesh generation (pyramid layer)
when 3D Delaunay algorithm is applied to a volume with quadrangles on boundary;
improved robustness of 2D MeshAdapt algorithm; bug fixes.
4.0.2 (September 26, 2018): added support for creating MED files with specific
MED (minor) version; small bug fixes.
4.0.0 (August 22, 2018): new C++, C, Python and Julia API; new MSH4 format; new
mesh partitioning code based on Metis 5; new 3D tetrahedralization algorithm as
Appendix D: Version history                                                  391
3.0.4 (July 28, 2017): moved vorometal code to plugin; OpenMP improvements; bug
fixes.
3.0.3 (June 27, 2017): new element quality measures; Block->Box; minor fixes.
3.0.2 (May 13, 2017): improved handling of meshing constraints and entity
numbering after boolean operations; improved handling of fast coarseness
transitions in MeshAdapt; new TIKZ export; small bug fixes.
3.0.1 (April 14, 2017): fixed OpenCASCADE plane surfaces with holes.
3.0.0 (April 13, 2017): new constructive solid geometry features and boolean
operations using OpenCASCADE; improved graphical user interface for interactive,
parametric geometry construction; new or modified commands in .geo files:
SetFactory, Circle, Ellipse, Wire, Surface, Sphere, Block, Torus, Rectangle,
Disk, Cylinder, Cone, Wedge, ThickSolid, ThruSections, Ruled ThruSections,
Fillet, Extrude, BooleanUnion, BooleanIntersection, BooleanDifference,
BooleanFragments, ShapeFromFile, Recursive Delete, Unique; "Surface" replaces
the deprecated "Ruled Surface" command; faster 3D tetrahedral mesh optimization
enabled by default; major code refactoring and numerous bug fixes.
2.16.0 (January 3, 2017): small improvements (list functions, second order hexes
for MED, GUI) and bug fixes.
2.14.1 (October 30, 2016): fixed regression in periodic meshes; small bug fixes
and code cleanups.
2.14.0 (October 9, 2016): new Tochnog file format export; added ability to
392                                                                 Gmsh 4.11.1
2.13.2 (August 18, 2016)): small improvements (scale labels, periodic and
high-order meshes) and bug fixes.
2.13.0 (July 11, 2016): new ONELAB 1.2 protocol with native support for lists;
new experimental 3D boundary recovery code and 3D refinement algorithm; better
adaptive visualization of quads and hexahedra; fixed several regressions
introduced in 2.12.
2.10.0 (July 21, 2015): improved periodic meshing constraints; new Physical
specification with both label and numeric id; images can now be used as glyphs
in post-processing views, using text annotations with the ‘file://’ prefix;
Views can be grouped and organized in subtrees; improved visibility browser
navigation; geometrical entities and post-processing views can now react to
double-clicks, via new generic DoubleClicked options; new Get/SetNumber and
Get/SetString for direct access to ONELAB variables; small bug fixes and code
cleanups.
2.9.2 (March 31, 2015): added support for extrusion of embedded points/curves;
improved hex-dominant algorithm; fixed crashes in quad algorithm; fix regression
in MED reader introduced in 2.9.0; new dark interface mode.
2.9.0 (March 12, 2015): improved robustness of spatial searches (extruded meshes,
geometry coherence); improved reproductibility of 2D and 3D meshes; added
support for high resolution ("retina") graphics; interactive graph point
commands; on-the-fly creation of onelab clients in scripts; general periodic
meshes using afine transforms; scripted selection of entities in bounding boxes;
extended string and list handling functions; many small improvements and bug
fixes.
Appendix D: Version history                                                    393
2.8.5 (Jul 9, 2014): improved stability and error handling, better Coherence
function, updated onelab API version and inline parameter definitions, new
background image modes, more robust Triangulate/Tetrahedralize plugins, new PGF
output, improved support for string~index variable names in parser, small
improvements and bug fixes all over the place.
2.8.3 (Sep 27, 2013): new quick access menu and multiple view selection in GUI;
enhanced animation creation; many small enhancements and bug fixes.
2.8.2 (Jul 16, 2013): improved high order tools interface; minor bug fixes.
2.8.1 (Jul 11, 2013): improved compound surfaces and transfinite arrangements.
2.8.0 (Jul 8, 2013): improved Delaunay point insertion; fixed mesh orientation
of plane surfaces; fixed mesh size prescribed at embedded points; improved
display of vectors at COG; new experimental text string display engines;
improved fullscreen mode; access time/step in transformations; new experimental
features: AdaptMesh and Surface In Volume; accept unicode file paths on Windows;
compilation and bug fixes.
2.7.1 (May 11, 2013): improved Delaunay point insertion; updated onelab; better
Abaqus and UNV export; small bug and compilation fixes.
2.6.0 (Jun 19, 2012): new quadrilateral meshing algorithms (Blossom and
Delaunay-Frontal for quads); new solver module based on ONELAB project (requires
FLTK 1.3); new tensor field visualization modes (eigenvectors, ellipsoid, etc.);
added support for interpolation schemes in .msh file; added support for MED3
format; rescale viewport around visible entities (shift+1:1 in GUI); unified
post-processing field export; new experimental stereo+camera visualization mode;
added experimental BAMG & Mmg3D support for anisotropic mesh generation; new OCC
cut & merge algorithm imported from Salome; new ability to connect extruded
meshes to tetrahedral grids using pyramids; new homology solver; Abaqus (INP)
mesh export; new Python and Java wrappers; bug fixes and small improvements all
over the place.
2.5.0 (Oct 15, 2010): new compound geometrical entities (for remeshing and/or
trans-patch meshing); improved mesh reclassification tool; new client/server
visualization mode; new ability to watch a pattern of files to merge; new
integrated MPEG export; new option to force the type of views dynamically;
bumped mesh version format to 2.2 (small change in the meaning of the partition
tags; this only affects partitioned (i.e. parallel) meshes); renamed several
post-processing plugins (as well as plugin options) to make them easier to
394                                                                 Gmsh 4.11.1
understand; many bug fixes and usability improvements all over the place.
2.4.2 (Sep 21, 2009): solver code refactoring + better IDE integration.
2.4.1 (Sep 1, 2009): fixed surface mesh orientation bug introduced in 2.4.0;
mesh and graphics code refactoring, small usability enhancements and bug fixes.
2.4.0 (Aug 22, 2009): switched build system to CMake; optionally copy
transfinite mesh constraints during geometry transformations; bumped mesh
version format to 2.1 (small change in the $PhysicalNames section, where the
group dimension is now required); ported most plugins to the new
post-processing API; switched from MathEval to MathEx and Flu_Tree_Browser to
Fl_Tree; small bug fixes and improvements all over the place.
2.3.1 (Mar 18, 2009): removed GSL dependency (Gmsh now simply uses Blas and
Lapack); new per-window visibility; added support for composite window printing
and background images; fixed string option affectation in parser; fixed surface
mesh orientation for OpenCASCADE models; fixed random triangle orientations in
Delaunay and Frontal algorithms.
2.3.0 (Jan 23, 2009): major graphics and GUI code refactoring; new
full-quad/hexa subdivision algorithm; improved automatic transfinite corner
selection (now also for volumes); improved visibility browser; new automatic
adaptive visualization for high-order simplices; modified arrow size, clipping
planes and transform options; many improvements and bug fixes all over the
place.
2.2.6 (Nov 21, 2008): better transfinite smoothing and automatic corner
selection; fixed high order meshing crashes on Windows and Linux; new uniform
mesh refinement (thanks Brian!); fixed various other small bugs.
2.2.5 (Oct 25, 2008): Gmsh now requires FLTK 1.1.7 or above; various small
improvements (STL and VTK mesh I/O, Netgen upgrade, Visual C++ support, Fields,
Mesh.{Msh,Stl,...}Binary changed to Mesh.Binary) and bug fixes (pyramid
interpolation, Chaco crashes).
2.2.4 (Aug 14, 2008): integrated Metis and Chaco mesh partitioners; variables
can now be deleted in geo files; added support for point datasets in model-based
postprocessing views; small bug fixes.
2.2.3 (Jul 14, 2008): enhanced clipping interface; API cleanup; fixed various
bugs (Plugin(Integrate), high order meshes, surface info crash).
2.2.2 (Jun 20, 2008): added geometrical transformations on volumes; fixed bug in
high order mesh generation.
2.2.1 (Jun 15, 2008): various small improvements (adaptive views, GUI, code
cleanup) and bug fixes (high order meshes, Netgen interface).
2.2.0 (Apr 19, 2008): new model-based post-processing backend; added MED I/O for
mesh and post-processing; fixed BDF vertex ordering for 2nd order elements;
replaced Mesh.ConstrainedBackgroundMesh with
Appendix D: Version history                                                 395
2.1.1 (Mar 1, 2008): small bug fixes (second order meshes, combine views, divide
and conquer crash, ...).
2.0.8 (Jul 13, 2007): unused vertices are not saved in mesh files anymore; new
plugin GUI; automatic GUI font size selection; renamed
Plugin(DecomposeInSimplex) into Plugin(MakeSimplex); reintroduced enhanced
Plugin(SphericalRaise); clarified meshing algo names; new option to save groups
of nodes in UNV meshes; new background mesh infrastructure; many small
improvements and small bug fixes.
2.0.7 (Apr 3, 2007): volumes can now be defined from external CAD surfaces;
Delaunay/Tetgen algorithm is now used by default when available; re-added
support for Plot3D structured mesh format; added ability to export external CAD
models as GEO files (this only works for the limited set of geometrical
primitives available in the GEO language, of course--so trying to convert e.g. a
trimmed NURBS from a STEP file into a GEO file will fail); "lateral" entities
are now added at the end of the list returned by extrusion commands; fixed
various bugs.
2.0.0 (Feb 5, 2007): new geometry and mesh databases, with support for STEP and
IGES import via OpenCASCADE; complete rewrite of geometry and mesh drawing
code; complete rewrite of mesh I/O layer (with new native binary MSH format and
support for import/export of I-deas UNV, Nastran BDF, STL, Medit MESH and VRML
1.0 files); added support for incomplete second order elements; new 2D and 3D
meshing algorithms; improved integration of Netgen and TetGen algorithms;
removed anisotropic meshing algorithm (as well as attractors); removed explicit
region number specification in extrusions; option changes in the graphical
interface are now applied instantaneously; added support for offscreen rendering
using OSMesa; added support for SVG output; added string labels for Physical
entities; lots of other improvements all over the place.
1.65 (May 15, 2006): new Plugin(ExtractEdges); fixed compilation errors with
gcc4.1; replaced Plugin(DisplacementRaise) and Plugin(SphericalRaise) with the
more flexible Plugin(Warp); better handling of discrete curves; new Status
command in parser; added option to renumber nodes in .msh files (to avoid holes
in the numbering sequence); fixed 2 special cases in quad->prism extrusion;
fixed saving of 2nd order hexas with negative volume; small bug fixes and
cleanups.
1.64 (Mar 18, 2006): Windows versions do no depend on Cygwin anymore; various
bug fixes and cleanups.
396                                                                 Gmsh 4.11.1
1.63 (Feb 01, 2006): post-processing views can now be exported as meshes;
improved background mesh handling (a lot faster, and more accurate); improved
support for input images; new Plugin(ExtractElements); small bug fixes and
enhancements.
1.62 (Jan 15, 2006): new option to draw color gradients in the background;
enhanced perspective projection mode; new "lasso" selection mode (same as
"lasso" zoom, but in selection mode); new "invert selection" button in the
visibility browser; new snapping grid when adding points in the GUI; nicer
normal smoothing; new extrude syntax (old syntax still available, but
deprecated); various small bug fixes and enhancements.
1.61 (Nov 29, 2005): added support for second order (curved) elements in
post-processor; new version (1.4) of post-processing file formats; new stippling
options for 2D plots; removed limit on allowed number of files on command line;
all "Combine" operations are now available in the parser; changed
View.ArrowLocation into View.GlyphLocation; optimized memory usage when loading
many (>1000) views; optimized loading and drawing of line meshes and 2D iso
views; optimized handling of meshes with large number of physical entities;
optimized vertex array creation for large post-processing views on
Windows/Cygwin; removed Discrete Line and Discrete Surface commands (the same
functionality can now be obtained by simply loading a mesh in .msh format);
fixed coloring by mesh partition; added option to light wireframe meshes and
views; new "mesh statistics" export format; new full-quad recombine option; new
Plugin(ModulusPhase); hexas and prisms are now always saved with positive
volume; improved interactive entity selection; new experimental Tetgen
integration; new experimental STL remeshing algorithm; various small bug fixes
and improvements.
1.60 (Mar 15, 2005): added support for discrete curves; new Window menu on Mac
OS X; generalized all octree-based plugins (CutGrid, StreamLines, Probe, etc.)
to handle all element types (and not only scalar and vector
triangles+tetrahedra); generalized Plugin(Evaluate), Plugin(Extract) and
Plugin(Annotate); enhanced clipping plane interface; new grid/axes/rulers for 3D
post-processing views (renamed the AbscissaName, NbAbscissa and AbscissaFormat
options to more general names in the process); better automatic positioning of
2D graphs; new manipulator dialog to specify rotations, translations and
scalings "by hand"; various small enhancements and bug fixes.
1.59 (Feb 06, 2005): added support for discrete (triangulated) surfaces, either
in STL format or with the new "Discrete Surface" command; added STL and Text
output format for post-processing views and STL output format for surface
meshes; all levelset-based plugins can now also compute isovolumes; generalized
Plugin(Evaluate) to handle external view data (based on the same or on a
different mesh); generalized Plugin(CutGrid); new plugins (Eigenvalues,
Gradient, Curl, Divergence); changed default colormap to match Matlab’s "Jet"
colormap; new transformation matrix option for views (for non-destructive
rotations, symmetries, etc.); improved solver interface to keep the GUI
responsive during solver calls; new C++ and Python solver examples; simplified
Tools->Visibility GUI; transfinite lines with "Progression" now allow negative
line numbers to reverse the progression; added ability to retrieve Gmsh’s
version number in the parser (to help write backward compatible scripts); fixed
Appendix D: Version history                                                 397
1.58 (Jan 01, 2005): fixed UNIX socket interface on Windows (broken by the TCP
solver patch in 1.57); bumped version number of default post-processing file
formats to 1.3 (the only small modification is the handling of the end-of-string
character for text2d and text3d objects in the ASCII format); new File->Rename
menu; new colormaps+improved colormap handling; new color+min/max options in
views; new GetValue() function to ask for values interactively in scripts;
generalized For/EndFor loops in parser; new plugins (Annotate, Remove, Probe);
new text attributes in views; renamed some shortcuts; fixed TeX output for large
scenes; new option dialogs for various output formats; fixed many small memory
leaks in parser; many small enhancements to polish the graphics and the user
interface.
1.57 (Dec 23, 2004): generalized displacement maps to display arbitrary view
types; the arrows representing a vector field can now also be colored by the
values from other scalar, vector or tensor fields; new adaptive high order
visualization mode; new options (Solver.SocketCommand, Solver.NameCommand,
View.ArrowSizeProportional, View.Normals, View.Tangents and General.ClipFactor);
fixed display of undesired solver plugin popups; enhanced interactive plugin
behavior; new plugins (HarmonicToTime, Integrate, Eigenvectors); tetrahedral
mesh file reading speedup (50% faster on large meshes); large memory footprint
reduction (up to 50%) for the visualization of triangular/tetrahedral meshes;
the solver interface now supports TCP/IP connections; new generalized raise mode
(allows one to use complex expressions to offset post-processing maps); upgraded
Netgen kernel to version 4.4; new optional TIME list in parsed views to specify
the values of the time steps; several bug fixes in the Elliptic mesh algorithm;
various other small bug fixes and enhancements.
1.56 (Oct 17, 2004): new post-processing option to draw a scalar view raised by
a displacement view without using Plugin(DisplacementRaise) (makes drawing
arbitrary scalar fields on deformed meshes much easier); better post-processing
menu (arbitrary number of views+scrollable+show view number); improved
view->combine; new horizontal post-processing scales; new option to draw the
mesh nodes per element; views can now also be saved in "parsed" format; fixed
various path problems on Windows; small bug fixes.
1.55 (Aug 21, 2004): added background mesh support for Triangle; meshes can now
be displayed using "smoothed" normals (like post-processing views); added GUI
for clipping planes; new interactive clipping/cutting plane definition;
reorganized the Options GUI; enhanced 3D iso computation; enhanced lighting;
many small bug fixes.
1.54 (Jul 03, 2004): integrated Netgen (3D mesh quality optimization +
alternative 3D algorithm); Extrude Surface now always automatically creates a
new volume (in the same way Extrude Point or Extrude Line create new lines and
surfaces, respectively); fixed UNV output; made the "Layers" region numbering
consistent between lines, surfaces and volumes; fixed home directory problem on
Win98; new Plugin(CutParametric); the default project file is now created in the
home directory if no current directory is defined (e.g., when double-clicking on
the icon on Windows/Mac); fixed the discrepancy between the orientation of
geometrical surfaces and the associated surface meshes; added automatic
398                                                                 Gmsh 4.11.1
1.53 (Jun 04, 2004): completed support for second order elements in the mesh
module (line, triangles, quadrangles, tetrahedra, hexahedra, prisms and
pyramids); various background mesh fixes and enhancements; major performance
improvements in mesh and post-processing drawing routines (OpenGL vertex arrays
for tri/quads); new Plugin(Evaluate) to evaluate arbitrary expressions on
post-processing views; generalized Plugin(Extract) to handle any combination of
components; generalized "Coherence" to handle transfinite surface/volume
attributes; plugin options can now be set in the option file (like all other
options); added "undo" capability during geometry creation; rewrote the contour
guessing routines so that entities can be selected in an arbitrary order; Mac
users can now double click on geo/msh/pos files in the Finder to launch Gmsh;
removed support for FLTK 1.0; rewrote most of the code related to quadrangles;
fixed 2d elliptic algorithm; removed all OpenGL display list code and options;
fixed light positioning; new BoundingBox command to set the bounding box
explicitly; added support for inexpensive "fake" transparency mode; many code
cleanups.
1.52 (May 06, 2004): new raster ("bitmap") PostScript/EPS/PDF output formats;
new Plugin(Extract) to extract a given component from a post-processing view;
new Plugin(CutGrid) and Plugin(StreamLines); improved mesh projection on
non-planar surfaces; added support for second order tetrahedral elements; added
interactive control of element order; refined mesh entity drawing selection (and
renamed most of the corresponding options); enhanced log scale in
post-processing; better font selection; simplified View.Raise{X,Y,Z} by removing
the scaling; various bug fixes (default postscript printing mode, drawing of 3D
arrows/cylinders on Linux, default home directory on Windows, default initial
file browser directory, extrusion of points with non-normalized axes of
rotation, computation of the scene bounding box in scripts, + the usual
documentation updates).
1.51 (Feb 29, 2004): initial support for visualizing mesh partitions; integrated
version 2.0 of the MSH mesh file format; new option to compute post-processing
ranges (min/max) per time step; Multiple views can now be combined into multi
time step ones (e.g. for programs that generate data one time step at a time);
new syntax: #var[] returns the size of the list var[]; enhanced "gmsh -convert";
temporary and error files are now created in the home directory to avoid file
permission issues; new 3D arrows; better lighting support; STL facets can now be
converted into individual geometrical surfaces; many other small improvements
and bug fixes (multi timestep tensors, color by physical entity, parser cleanup,
etc.).
1.50 (Dec 06, 2003): small changes to the visibility browser + made visibility
scriptable (new Show/Hide commands); fixed (rare) crash when deleting views;
split File->Open into File->Open and File->New to behave like most other
programs; Mac versions now use the system menu bar by default (if possible);
fixed bug leading to degenerate and/or duplicate tetrahedra in extruded meshes;
fixed crash when reloading sms meshes.
Appendix D: Version history                                                   399
1.49 (Nov 30, 2003): made Merge, Save and Print behave like Include (i.e., open
files in the same directory as the main project file if the path is relative);
new Plugin(DecomposeInSimplex); new option View.AlphaChannel to set the
transparency factor globally for a post-processing view; new "Combine Views"
command; various bug fixes and cleanups.
1.48 (Nov 23, 2003): new DisplacementRaise plugin to plot arbitrary fields on
deformed meshes; generalized CutMap, CutPlane, CutSphere and Skin plugins to
handle all kinds of elements and fields; new "Save View[n]" command to save
views from a script; many small bug fixes (configure tests for libpng, handling
of erroneous options, multi time step scalar prism drawings, copy of surface
mesh attributes, etc.).
1.47 (Nov 12, 2003): fixed extrusion of surfaces defined by only two curves; new
syntax to retrieve point coordinates and indices of entities created through
geometrical transformations; new PDF and compressed PostScript output formats;
fixed numbering of elements created with "Extrude Point/Line"; use $GMSH_HOME as
home directory if defined.
1.46 (Aug 23, 2003): fixed crash for very long command lines; new options for
setting the displacement factor and Triangle’s parameters + renamed a couple of
options to more sensible names (View.VectorType, View.ArrowSize); various small
bug fixes; documentation update.
1.45 (Jun 14, 2003): small bug fixes (min/max computation for tensor views,
missing physical points in read mesh, "jumping" geometry during interactive
manipulation of large models, etc.); variable definition speedup; restored
support for second order elements in one- and two-dimensional meshes;
documentation updates.
1.44 (Apr 21, 2003): new reference manual; added support for PNG output; fixed
small configure script bugs.
1.43 (Mar 28, 2003): fixed solver interface problem on Mac OS X; new option to
specify the interactive rotation center (default is now the pseudo "center of
gravity" of the object, instead of (0,0,0)).
1.42 (Mar 19, 2003): suppressed the automatic addition of a ".geo" extension if
the file given on the command line is not recognized; added missing Layer option
for Extrude Point; fixed various small bugs.
1.41 (Mar 04, 2003): Gmsh is now licensed under the GNU General Public License;
general code cleanup (indent).
1.40 (Feb 26, 2003): various small bug fixes (mainly GSL-related).
1.39 (Feb 23, 2003): removed all non-free routines; more build system work;
implemented Von-Mises tensor display for all element types; fixed small GUI
bugs.
1.38 (Feb 17, 2003): fixed custom range selection for 3D iso graphs; new build
system based on autoconf; new image reading code to import bitmaps as
400                                                                 Gmsh 4.11.1
post-processing views.
1.37 (Jan 25, 2003): generalized smoothing and cuts of post-processing views;
better Windows integration (solvers, external editors, etc.); small bug fixes.
1.36 (Nov 20, 2002): enhanced view duplication (one can now use "Duplicata
View[num]" in the input file); merged all option dialogs in a new general option
window; enhanced discoverability of the view option menus; new 3D point and line
display; many small bug fixes and enhancements ("Print" format in parser,
post-processing statistics, smooth normals, save window positions, restore
default options, etc.).
1.35 (Sep 11, 2002): graphical user interface upgraded to FLTK 1.1 (tooltips,
new file chooser with multiple selection, full keyboard navigation, cut/paste of
messages, etc.); colors can be now be directly assigned to mesh entities;
initial tensor visualization; new keyboard animation (right/left arrow for time
steps; up/down arrow for view cycling); new VRML output format for surface
meshes; new plugin for spherical elevation plots; new post-processing file
format (version 1.2) supporting quadrangles, hexahedra, prisms and pyramids;
transparency is now enabled by default for post-processing plots; many small bug
fixes (read mesh, ...).
1.34 (Feb 18, 2002): improved surface mesh of non-plane surfaces; fixed
orientation of elements in 2D anisotropic algorithm; minor user interface polish
and additions (mostly in post-processing options); various small bug fixes.
1.32 (Oct 04, 2001): new visibility browser; better floating point exception
checks; fixed infinite looping when merging meshes in project files; various
small clean ups (degenerate 2D extrusion, view->reload, ...).
1.31 (Nov 30, 2001): corrected ellipses; PostScript output update (better
shading, new combined PS/LaTeX output format); more interface polish; fixed
extra memory allocation in 2D meshes; Physical Volume handling in unv format;
various small fixes.
1.30 (Nov 16, 2001): interface polish; fix crash when extruding quadrangles.
1.29 (Nov 12, 2001): translations and rotations can now be combined in
extrusions; fixed coherence bug in Extrude Line; various small bug fixes and
additions.
1.28 (Oct 30, 2001): corrected the ’Using Progression’ attribute for tranfinite
meshes to actually match a real geometric progression; new Triangulate plugin;
new 2D graphs (space+time charts); better performance of geometrical
transformations (warning: the numbering of some automatically created entities
has changed); new text primitives in post-processing views (file format updated
to version 1.1); more robust mean plane computation and error checks; various
other small additions and clean-ups.
Appendix D: Version history                                                 401
1.27 (Oct 05, 2001): added ability to extrude curves with Layers/Recombine
attributes; new PointSize/LineWidth options; fixed For/EndFor loops in included
files; fixed error messages (line numbers+file names) in loops and functions;
made the automatic removal of duplicate geometrical entities optional
(Geometry.AutoCoherence=0); various other small bug fixes and clean-ups.
1.25 (Sep 01, 2001): fixed bug with mixed recombined/non-recombined extruded
meshes; Linux versions are now build with no optimization, due to bugs in gcc
2.95.X.
1.24 (Aug 30, 2001): fixed characteristic length interpolation for Splines;
fixed edge swapping bug in 3D initial mesh; fixed degenerated case in
geometrical extrusion (ruled surface with 3 borders); fixed generation of
degenerated hexahedra and prisms for recombined+extruded meshes; added BSplines
creation in the GUI; integrated Jonathan Shewchuk’s Triangle as an alternative
isotropic 2D mesh generator; added AngleSmoothNormals to control sharp edge
display with smoothed normals; fixed random crash for lighted 3D iso surfaces.
1.22 (Aug 03, 2001): fixed (yet another) bug for 2D mesh in the mean plane;
fixed surface coherence bug in extruded meshes; new double logarithmic scale,
saturate value and smoothed normals option for post-processing views; plugins
are now enabled by default; three new experimental statically linked plugins:
CutMap (extracts a given iso surface from a 3D scalar map), CutPlane (cuts a 3D
scalar map with a plane section), CutSphere (cuts a 3D scalar map with a
sphere); various other bug fixes, additions and clean-ups.
1.21 (Jul 25, 2001): fixed more memory leaks; added -opt command line option to
parse definitions directly from the command line; fixed missing screen refreshes
during contour/surface/volume selection; enhanced string manipulation functions
(Sprintf, StrCat, StrPrefix); many other small fixes and clean-ups.
1.20 (Jun 14, 2001): fixed various bugs (memory leaks, functions in included
files, solver command selection, ColorTable option, duplicate nodes in extruded
meshes (not finished yet), infinite loop on empty views, orientation of
recombined quadrangles, ...); reorganized the interface menus; added constrained
background mesh and mesh visibility options; added mesh quality histograms;
changed default mesh colors; reintegrated the old command-line extrusion mesh
generator.
402                                                                 Gmsh 4.11.1
1.19 (May 07, 2001): fixed seg. fault for scalar simplex post-processing; new
Solver menu; interface for GetDP solver through sockets; fixed multiple scale
alignment; added some options + full option descriptions.
1.18 (Apr 26, 2001): fixed many small bugs and incoherences in post-processing;
fixed broken background mesh in 1D mesh generation.
1.17 (Apr 17, 2001): corrected physical points saving; fixed parsing of DOS
files (carriage return problems); easier geometrical selections (cursor change);
plugin manager; enhanced variable arrays (sublist selection and affectation);
line loop check; New arrow display; reduced number of ’fatal’ errors + better
handling in interactive mode; fixed bug when opening meshes; enhanced File->Open
behavior for meshes and post-processing views.
1.16 (Feb 26, 2001): added single/double buffer selection (only useful for Unix
versions of Gmsh run from remote hosts without GLX); fixed a bug for recent
versions of the opengl32.dll on Windows, which caused OpenGL fonts not to show
up.
1.15 (Feb 23, 2001): added automatic visibility setting during entity selection;
corrected geometrical extrusion bug.
1.14 (Feb 17, 2001): corrected a few bugs in the GUI (most of them were
introduced in 1.13); added interactive color selection; made the option database
bidirectional (i.e. scripts now correctly update the GUI); default options can
now be saved and automatically reloaded at startup; made some changes to the
scripting syntax (PostProcessing.View[n] becomes View[n]; Offset0 becomes
OffsetX, etc.); corrected the handling of simple triangular surfaces with large
characteristic lengths in the 2D isotropic algorithm; added an ASCII to binary
post-processing view converter.
1.13 (Feb 09, 2001): added support for JPEG output on Windows.
1.10 (Feb 04, 2001): switched from Motif to FLTK for the GUI. Many small tweaks.
1.00 (Jan 15, 2001): added PPM and YUV output; corrected nested If/Endif;
Corrected several bugs for pixel output and enhanced GIF output (dithering,
transparency); slightly changed the post-processing file format to allow both
single and double precision numbers.
0.999 (Dec 20, 2000): added JPEG output and easy MPEG generation (see t8.geo in
the tutorial); clean up of export functions; small fixes; Linux versions are now
compiled with gcc 2.95.2, which should fix the problems encountered with
Mandrake 7.2.
Appendix D: Version history                                                    403
0.998 (Dec 19, 2000): corrected bug introduced in 0.997 in the generation of the
initial 3D mesh.
0.995 (Dec 11, 2000): totally rewritten geometrical database (performance has
been drastically improved for all geometrical transformations, and most notably
for extrusion). As a consequence, the internal numbering of geometrical entities
has changed: this will cause incompatibilities with old .geo files, and will
require a partial rewrite of your old .geo files if these files made use of
geometrical transformations. The syntax of the .geo file has also been
clarified. Many additions for scripting purposes. New extrusion mesh
generator. Preliminary version of the coupling between extruded and Delaunay
meshes. New option and procedural database. All interactive operations can be
scripted in the input files. See the last example in the tutorial for an
example. Many stability enhancements in the 2D and 3D mesh
algorithms. Performance boost of the 3D algorithm. Gmsh is still slow, but the
performance becomes acceptable. An average 1000 tetrahedra/second is obtained on
a 600Mhz computer for a mesh of one million tetrahedra. New anisotropic 2D mesh
algorithm. New (ASCII and binary) post-processing file format and clarified mesh
file format. New handling for interactive rotations (trackball mode). New
didactic interactive mesh construction (watch the Delaunay algorithm in real
time on complex geometries: that’s exciting ;-). And many, many bug fixes and
cleanups.
0.992 (Nov 13, 2000): corrected recombined extrusion; corrected ellipses; added
simple automatic animation of post-processing maps; fixed various bugs.
0.991 (Oct 24, 2000): fixed a serious allocation bug in 2D algorithm, which
caused random crashes. All users should upgrade to 0.991.
0.989 (Sep 01, 2000): added ability to reload previously saved meshes; some new
command line options; reorganization of the scale menu; GIF output.
0.987: fixed bug with smoothing (leading to the possible generation of erroneous
3d meshes); corrected bug for mixed 3D meshes; moved the ’toggle view link’
option to Opt->Postprocessing_Options.
0.986: fixed overlay problems; SGI version should now also run on 32 bits
machines; fixed small 3d mesh bug.
0.985: corrected colormap bug on HP, SUN, SGI and IBM versions; corrected small
initialization bug in postscript output.
404                                                                 Gmsh 4.11.1
0.982: lighting for mesh and post-processing; corrected 2nd order mesh on non
plane surfaces; added example 13.
Appendix E: Copyright and credits                                           405
                         Christophe Geuzaine
                       <cgeuzaine at uliege.be>
and
                       Jean-Francois Remacle
               <jean-francois.remacle at uclouvain.be>
Thanks to the following folks who have contributed by providing fresh ideas on
theoretical or programming topics, who have sent patches, requests for changes
or improvements, or who gave us access to exotic machines for testing Gmsh: Juan
Abanto, Olivier Adam, Guillaume Alleon, Laurent Champaney, Pascal Dupuis,
Patrick Dular, Philippe Geuzaine, Johan Gyselinck, Francois Henrotte, Benoit
Meys, Nicolas Moes, Osamu Nakamura, Chad Schmutzer, Jean-Luc Fl’ejou, Xavier
Dardenne, Christophe Prud’homme, Sebastien Clerc, Jose Miguel Pasini, Philippe
Lussou, Jacques Kools, Bayram Yenikaya, Peter Hornby, Krishna Mohan Gundu,
Christopher Stott, Timmy Schumacher, Carl Osterwisch, Bruno Frackowiak, Philip
Kelleners, Romuald Conty, Renaud Sizaire, Michel Benhamou, Tom De Vuyst, Kris
Van den Abeele, Simon Vun, Simon Corbin, Thomas De-Soza, Marcus Drosson, Antoine
406                                                                 Gmsh 4.11.1
Dechaume, Jose Paulo Moitinho de Almeida, Thomas Pinchard, Corrado Chisari, Axel
Hackbarth, Peter Wainwright, Jiri Hnidek, Thierry Thomas, Konstantinos Poulios,
Laurent Van Miegroet, Shahrokh Ghavamian, Geordie McBain, Jose Paulo Moitinho de
Almeida, Guillaume Demesy, Wendy Merks-Swolfs, Cosmin Stefan Deaconu, Nigel
Nunn, Serban Georgescu, Julien Troufflard, Michele Mocciola, Matthijs Sypkens
Smit, Sauli Ruuska, Romain Boman, Fredrik Ekre, Mark Burton, Max Orok, Paul
Cristini, Isuru Fernando, Jose Paulo Moitinho de Almeida, Sophie Le Bras,
Alberto Escrig, Samy Mukadi, Peter Johnston, Bruno de Sousa Alves, Stefan
Bruens, Luca Verzeroli, Tristan Seidlhofer, Ding Jiaming, Joost Gevaert, Marcus
Calhoun-Lopez, Michel Zou, Sir Sunsheep, Mariano Forti, Walter Steffe, Nico
Schloemer, Simon Tournier, Alexandru Dadalau, Thomas Ulrich, Matthias Diener,
Jamie Border; Kenneth Jansen.
Special thanks to Bill Spitzak, Michael Sweet, Matthias Melcher, Greg Ercolano
and others for the Fast Light Tool Kit on which Gmsh’s GUI is based. See
http://www.fltk.org for more info on this excellent object-oriented,
cross-platform toolkit. Special thanks also to EDF for funding the original
OpenCASCADE and MED integration in 2006-2007. Gmsh development was also
financially supported by the PRACE project funded in part by the EU’s Horizon
2020 Research and Innovation programme (2014-2020) under grant agreement 823767.
The AVL tree code (src/common/avl.{cpp,h}) and the YUV image code
(src/graphics/gl2yuv.{cpp,h}) are copyright (C) 1988-1993, 1995 The Regents of
the University of California. Permission to use, copy, modify, and distribute
this software and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in supporting
documentation, and that the name of the University of California not be used in
advertising or publicity pertaining to distribution of the software without
specific, written prior permission. The University of California makes no
representations about the suitability of this software for any purpose. It is
provided "as is" without express or implied warranty.
The GIF and PPM routines (src/graphics/gl2gif.cpp) are based on code copyright
(C) 1989, 1991, Jef Poskanzer. Permission to use, copy, modify, and distribute
this software and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in supporting
documentation. This software is provided "as is" without express or implied
warranty.
The Fast & memory efficient hashtable based on robin hood hashing
408                                                                 Gmsh 4.11.1
* contrib/ANN copyright (C) 1997-2005 University of Maryland and Sunil Arya and
  David Mount;
* contrib/MathEx based in part on the work of the SSCILIB Library, copyright (C)
  2000-2003 Sadao Massago;
* contrib/voro++ from Voro++ Copyright (c) 2008, The Regents of the University
  of California, through Lawrence Berkeley National Laboratory (subject to
  receipt of any required approvals from the U.S. Dept. of Energy). All rights
  reserved;
Appendix F License
Gmsh is provided under the terms of the GNU General Public License
(GPL), Version 2 or later, with the following exception:
  Note that people who make modified versions of Gmsh are not
  obligated to grant this special exception for their modified
  versions; it is their choice whether to do so. The GNU General
  Public License gives permission to release a modified version
  without this exception; this exception also makes it possible to
  release a modified version which carries forward this exception.
End of exception.
Preamble
  The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation’s software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
  Also, for each author’s protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors’ reputations.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
    b) You must cause any work that   you distribute or publish, that in
    whole or in part contains or is   derived from the Program or any
    part thereof, to be licensed as   a whole at no charge to all third
    parties under the terms of this   License.
  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
  5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Appendix F: License                                                      413
  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients’ exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
    <one line to give the program’s name and a brief idea of what it does.>
    Copyright (C) <year> <name of author>
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307      USA
Also add information on how to contact you by electronic and paper mail.
The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than ‘show w’ and ‘show c’; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
Concept index                                                                                                                                                                             417
Concept index
2                                                                                                 F
2D plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117      FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
                                                                                                  File format, mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
                                                                                                  File formats. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
3                                                                                                 File, comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3D plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117      Frequently asked questions . . . . . . . . . . . . . . . . . . . . . . 375
                                                                                                  Functions, built-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
A
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
                                                                                                  G
API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123   General commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
                                                                                                  Geometry, boolean operations . . . . . . . . . . . . . . . . . . . 107
                                                                                                  Geometry, difference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
B                                                                                                 Geometry, extrusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Background mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10                Geometry, fragments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Binary operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93             Geometry, intersection . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Bindings, keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80               Geometry, scripting commands . . . . . . . . . . . . . . . . . . 102
Bindings, mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79              Geometry, transformations . . . . . . . . . . . . . . . . . . . . . . 108
Boolean operations, geometry . . . . . . . . . . . . . . . . . . . 107                            Geometry, union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Bugs, reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5           Graphical user interface . . . . . . . . . . . . . . . . . . . . . . . . . . 77
                                                                                                  Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
                                                                                                  GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
C
Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383         H
Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Command-line options . . . . . . . . . . . . . . . . . . . . . . . . . . . 83                     History, versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Commands, general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Concepts, index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
                                                                                                  I
Conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96         Index, concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89      Index, syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Contributors, list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405              Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 405          Internet address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Credits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405     Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Curves, elementary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102                 Issues, reporting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Curves, physical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
                                                                                                  K
D                                                                                                 Keyboard, shortcuts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Developer, information . . . . . . . . . . . . . . . . . . . . . . . . . . 373                    Keywords, index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
                                                                                                  L
E                                                                                                 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 409
Elementary curves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102                 Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Elementary points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102                 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Elementary surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Elementary volumes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Evaluation order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94             M
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15       Macros, user-defined . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Expressions, affectation . . . . . . . . . . . . . . . . . . . . . . . . . . 97                   Mesh size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Expressions, color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93             Mesh, background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Expressions, definition . . . . . . . . . . . . . . . . . . . . . . . . . . . 89                  Mesh, element size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Expressions, floating point . . . . . . . . . . . . . . . . . . . . . . . 89                      Mesh, extrusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Expressions, identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . 97                 Mesh, file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Expressions, lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91           Mesh, scripting commands . . . . . . . . . . . . . . . . . . . . . . 111
Expressions, string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92              Mesh, transfinite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Extrusion, geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106                   Mouse, actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Extrusion, mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111               MSH4 file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
418                                                                                                                                                                       Gmsh 4.11.1
N                                                                                                 Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Nodes, ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352             Running Gmsh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Numbers, real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
                                                                                                  S
O                                                                                                 Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
                                                                                                  Scripting commands, geometry . . . . . . . . . . . . . . . . . . 102
Operator precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
                                                                                                  Scripting commands, Mesh . . . . . . . . . . . . . . . . . . . . . . 111
Operators, definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
                                                                                                  Scripting commands, Post-processing . . . . . . . . . . . . 117
Options, command line . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
                                                                                                  Shortcuts, keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Options, post-processing . . . . . . . . . . . . . . . . . . . . . . . . 280
                                                                                                  Size, elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Order, evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94              Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7      Surfaces, elementary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
                                                                                                  Surfaces, physical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
P                                                                                                 Symmetry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
                                                                                                  Syntax, index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Physical curves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Physical points. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Physical surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104             T
Physical volumes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
                                                                                                  Ternary operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117   Transfinite, mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Plugins, post-processing . . . . . . . . . . . . . . . . . . . . . . . . . 317                    Transformations, geometry . . . . . . . . . . . . . . . . . . . . . . 108
Points, elementary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102                Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Points, physical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102            Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Post-processing plugins . . . . . . . . . . . . . . . . . . . . . . . . . 317
Post-processing, options . . . . . . . . . . . . . . . . . . . . . . . . . 280
Post-processing, scripting commands . . . . . . . . . . . . 117                                   U
Precedence, operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94                  Unary operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Programming, API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Programming, notes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
                                                                                                  V
                                                                                                  Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      383
Q                                                                                                 Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   117
Questions, frequently asked . . . . . . . . . . . . . . . . . . . . . 375                         Volumes, elementary . . . . . . . . . . . . . . . . . . . . . . . . . . . .                   105
                                                                                                  Volumes, physical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               105
R
Real numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89           W
Reporting bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5          Web site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Syntax index                                                                                                                                                                                        419
Syntax index
!                                                                                                       -ignore_periocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94    -info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
!= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94     -link int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
                                                                                                        -listen string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
                                                                                                        -log filename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
%                                                                                                       -match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94    -merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
                                                                                                        -minterpreter string . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
                                                                                                        -n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
&                                                                                                       -new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
                                                                                                        -nodb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
&& . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
                                                                                                        -noenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
                                                                                                        -nolocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
(                                                                                                       -nopopup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
                                                                                                        -nt int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
                                                                                                        -numsubedges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
                                                                                                        -o file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
*                                                                                                       -open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
                                                                                                        -optimize[_netgen] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94    -optimize_ho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
*= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97     -optimize_threshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
                                                                                                        -option file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
+                                                                                                       -order int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
                                                                                                        -part int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94    -part_[no_]ghosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94     -part_[no_]physicals . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
+= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97     -part_[no_]topo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
                                                                                                        -part_split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
-                                                                                                       -part_topo_pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
                                                                                                        -part_weight [tri,quad,tet,hex,pri,pyr,trih]
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93,    94         int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
-, -parse_and_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                       86   -pid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   94   -preserve_numbering_msh2 . . . . . . . . . . . . . . . . . . . . . . 84
-= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   97   -pyinterpreter string . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   83   -rand value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-1, -2, -3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           83   -reclassify angle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
-a, -g, -m, -s, -p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                     86   -refine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
-algo string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               84   -reparam angle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
-aniso_max value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                   85
                                                                                                        -run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-barycentric_refine . . . . . . . . . . . . . . . . . . . . . . . . . . . .                        83
                                                                                                        -save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-bg file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         86
                                                                                                        -save_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
-bgm file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          85
                                                                                                        -save_parametric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
-bin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     83
                                                                                                        -save_topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
-camera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         86
                                                                                                        -setnumber name value . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       85
                                                                                                        -setstring name value . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-clcurv value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                85
                                                                                                        -smooth int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
-clextend value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                  84
                                                                                                        -smooth_ratio value . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-clmax value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               84
                                                                                                        -stereo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-clmin value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               84
                                                                                                        -string "string" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-clscale value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 84
                                                                                                        -swapangle value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-combine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           85
                                                                                                        -theme string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-convert files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 86
                                                                                                        -tol value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
-cpu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     86
-display string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                  86   -v int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-epslc1d value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 85   -version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-fontsize int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                85   -watch pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-format string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 83
-gamepad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           86
-help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      87   /
-help_options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                87   / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
-ho_[min,max,nlayers] . . . . . . . . . . . . . . . . . . . . . . . . .                            84   /*, */ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
420                                                                                                                                                                          Gmsh 4.11.1
gmsh/option/getString . . . . . . . . . . . . . . . . . . . . . . . . 127                         L
gmsh/option/setColor . . . . . . . . . . . . . . . . . . . . . . . . . 127                        Laplacian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
gmsh/option/setNumber . . . . . . . . . . . . . . . . . . . . . . . . 126                         Line ( expression ) = { expression, expression
gmsh/option/setString . . . . . . . . . . . . . . . . . . . . . . . . 127                             }; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
gmsh/parser/clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214                   Log ( expression ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
gmsh/parser/getNames . . . . . . . . . . . . . . . . . . . . . . . . . 213                        Log10 ( expression ). . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
gmsh/parser/getNumber . . . . . . . . . . . . . . . . . . . . . . . . 213                         LonLat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
gmsh/parser/getString . . . . . . . . . . . . . . . . . . . . . . . . 213
gmsh/parser/parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
gmsh/parser/setNumber . . . . . . . . . . . . . . . . . . . . . . . . 213                         M
gmsh/parser/setString . . . . . . . . . . . . . . . . . . . . . . . . 213                         Macro string | string-expression . . . . . . . . . . . . . 96
gmsh/plugin/run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208                 MathEval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
gmsh/plugin/setNumber . . . . . . . . . . . . . . . . . . . . . . . . 208                         MathEvalAniso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
gmsh/plugin/setString . . . . . . . . . . . . . . . . . . . . . . . . 208                         Max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
gmsh/view/add. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201              Max ( expression, expression ) . . . . . . . . . . . . . . . . 95
gmsh/view/addAlias . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205                    MaxEigenHessian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
gmsh/view/addHomogeneousModelData. . . . . . . . . . . 202                                        Mean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
gmsh/view/addListData . . . . . . . . . . . . . . . . . . . . . . . . 203                         Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
gmsh/view/addListDataString . . . . . . . . . . . . . . . . . 204                                 Merge string-expression ; . . . . . . . . . . . . . . . . . . . . . 100
gmsh/view/addModelData . . . . . . . . . . . . . . . . . . . . . . . 202                          Mesh expression ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
gmsh/view/combine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205                   Mesh.Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
gmsh/view/getHomogeneousModelData. . . . . . . . . . . 203                                        Mesh.Algorithm3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
gmsh/view/getIndex . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201                    Mesh.AlgorithmSwitchOnFailure . . . . . . . . . . . . . . . 255
gmsh/view/getListData . . . . . . . . . . . . . . . . . . . . . . . . 203                         Mesh.AllowSwapAngle . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
gmsh/view/getListDataStrings . . . . . . . . . . . . . . . . 204                                  Mesh.AngleSmoothNormals . . . . . . . . . . . . . . . . . . . . . . 255
gmsh/view/getModelData . . . . . . . . . . . . . . . . . . . . . . . 202                          Mesh.AngleToleranceFacetOverlap . . . . . . . . . . . . . 255
gmsh/view/getTags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202                   Mesh.AnisoMax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
gmsh/view/option/copy . . . . . . . . . . . . . . . . . . . . . . . . 207                         Mesh.BdfFieldFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
                                                                                                  Mesh.Binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
gmsh/view/option/getColor . . . . . . . . . . . . . . . . . . . . 207
                                                                                                  Mesh.BoundaryLayerFanElements . . . . . . . . . . . . . . . 256
gmsh/view/option/getNumber. . . . . . . . . . . . . . . . . . . 206
                                                                                                  Mesh.CgnsConstructTopology. . . . . . . . . . . . . . . . . . . 256
gmsh/view/option/getString. . . . . . . . . . . . . . . . . . . 207
                                                                                                  Mesh.CgnsExportCPEX0045 . . . . . . . . . . . . . . . . . . . . . . 256
gmsh/view/option/setColor . . . . . . . . . . . . . . . . . . . . 207
                                                                                                  Mesh.CgnsExportStructured . . . . . . . . . . . . . . . . . . . . 256
gmsh/view/option/setNumber. . . . . . . . . . . . . . . . . . . 206
                                                                                                  Mesh.CgnsImportIgnoreBC . . . . . . . . . . . . . . . . . . . . . . 256
gmsh/view/option/setString. . . . . . . . . . . . . . . . . . . 207                               Mesh.CgnsImportIgnoreSolution . . . . . . . . . . . . . . . 256
gmsh/view/probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205                 Mesh.CgnsImportOrder . . . . . . . . . . . . . . . . . . . . . . . . . 256
gmsh/view/remove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201                  Mesh.Clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
gmsh/view/setInterpolationMatrices . . . . . . . . . 204                                          Mesh.Color.Eight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
gmsh/view/setVisibilityPerWindow . . . . . . . . . . . . 206                                      Mesh.Color.Eighteen . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
gmsh/view/write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206                 Mesh.Color.Eleven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
gmsh/write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126          Mesh.Color.Fifteen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
GMSH_MAJOR_VERSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97                   Mesh.Color.Five . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
GMSH_MINOR_VERSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97                   Mesh.Color.Four . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
GMSH_PATCH_VERSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97                   Mesh.Color.Fourteen . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309        Mesh.Color.Hexahedra . . . . . . . . . . . . . . . . . . . . . . . . . 273
                                                                                                  Mesh.Color.Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
                                                                                                  Mesh.Color.Nine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
H                                                                                                 Mesh.Color.Nineteen . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
HealShapes; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110           Mesh.Color.Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Hide { : } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110        Mesh.Color.NodesSup . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Homology ( { expression-list } ) { {                                                              Mesh.Color.Normals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
    expression-list } , { expression-list } };                                                    Mesh.Color.One . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117   Mesh.Color.Prisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Hypot ( expression, expression ) . . . . . . . . . . . . . . 95                                   Mesh.Color.Pyramids . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
                                                                                                  Mesh.Color.Quadrangles . . . . . . . . . . . . . . . . . . . . . . . 273
                                                                                                  Mesh.Color.Seven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
I                                                                                                 Mesh.Color.Seventeen . . . . . . . . . . . . . . . . . . . . . . . . . 275
                                                                                                  Mesh.Color.Six . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
If ( expression ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97                Mesh.Color.Sixteen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Include string-expression ; . . . . . . . . . . . . . . . . . . . 101                             Mesh.Color.Tangents . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Intersect Curve { expression-list } Surface {                                                     Mesh.Color.Ten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
    expression } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109                  Mesh.Color.Tetrahedra . . . . . . . . . . . . . . . . . . . . . . . . 273
IntersectAniso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309                Mesh.Color.Thirteen . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
                                                                                                  Mesh.Color.Three . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
428                                                                                                                                                             Gmsh 4.11.1
string += { expression-list }; . . . . . . . . . . . . . . . . 98                                  U
string += expression ; . . . . . . . . . . . . . . . . . . . . . . . . . . 98                      UnsplitWindow; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
string -= { expression-list }; . . . . . . . . . . . . . . . . 98
string -= expression ; . . . . . . . . . . . . . . . . . . . . . . . . . . 98
string /= expression ; . . . . . . . . . . . . . . . . . . . . . . . . . . 98                      V
string = { }; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98           View "string " { string < ( expression-list ) > {
string = expression ; . . . . . . . . . . . . . . . . . . . . . . . . . . . 97                         expression-list }; ... }; . . . . . . . . . . . . . . . . 119
string = string-expression ; . . . . . . . . . . . . . . . . . . . 99                              View.AbscissaRangeType . . . . . . . . . . . . . . . . . . . . . . . 285
string [ { expression-list } ] *= {                                                                View.AdaptVisualizationGrid . . . . . . . . . . . . . . . . . 285
    expression-list };. . . . . . . . . . . . . . . . . . . . . . . . . 98                         View.AngleSmoothNormals . . . . . . . . . . . . . . . . . . . . . . 285
string [ { expression-list } ] += {                                                                View.ArrowSizeMax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
    expression-list };. . . . . . . . . . . . . . . . . . . . . . . . . 98                         View.ArrowSizeMin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
string [ { expression-list } ] -= {                                                                View.Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
    expression-list };. . . . . . . . . . . . . . . . . . . . . . . . . 98                         View.AutoPosition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
string [ { expression-list } ] /= {                                                                View.Axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
    expression-list };. . . . . . . . . . . . . . . . . . . . . . . . . 99                         View.AxesAutoPosition . . . . . . . . . . . . . . . . . . . . . . . . 285
string [ { expression-list } ] = {                                                                 View.AxesFormatX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
    expression-list };. . . . . . . . . . . . . . . . . . . . . . . . . 98                         View.AxesFormatY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
string-option = string-expression ; . . . . . . . . . . . 99                                       View.AxesFormatZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
string [] += Str( string-expression-list ) ;                                                       View.AxesLabelX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99   View.AxesLabelY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
string [] = { expression-list }; . . . . . . . . . . . . . . . 98                                  View.AxesLabelZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
string [] = Str( string-expression-list ) ; . . . 99                                               View.AxesMaxX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Structured . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313           View.AxesMaxY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Surface ( expression ) = { expression-list } <                                                     View.AxesMaxZ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
    In Sphere { expression }, Using Point {                                                        View.AxesMikado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
    expression-list } >;. . . . . . . . . . . . . . . . . . . . . . 104                            View.AxesMinX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Surface Loop ( expression ) = { expression-list                                                    View.AxesMinY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
    } < Using Sewing >; . . . . . . . . . . . . . . . . . . . . . . . . 104                        View.AxesMinZ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Symmetry { expression-list } { transform-list }                                                    View.AxesTicsX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109    View.AxesTicsY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
SyncModel; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101           View.AxesTicsZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
SystemCall string-expression ; . . . . . . . . . . . . . . . 101                                   View.Boundary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
                                                                                                   View.CenterGlyphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
                                                                                                   View.Clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
T                                                                                                  View.Closed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
                                                                                                   View.Color.Axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Tan ( expression ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96                  View.Color.Background2D . . . . . . . . . . . . . . . . . . . . . . 297
Tanh ( expression ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96                   View.Color.Hexahedra . . . . . . . . . . . . . . . . . . . . . . . . . 296
Threshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314          View.Color.Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
ThruSections ( expression ) = { expression-list                                                    View.Color.Normals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
    }; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106     View.Color.Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
ThruSections { expression-list } . . . . . . . . . . . . . 107                                     View.Color.Prisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Torus ( expression ) = { expression-list };                                                        View.Color.Pyramids . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105   View.Color.Quadrangles . . . . . . . . . . . . . . . . . . . . . . . 296
TotalMemory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97           View.Color.Tangents . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Transfinite Curve { expression-list-or-all } =                                                     View.Color.Tetrahedra . . . . . . . . . . . . . . . . . . . . . . . . 296
    expression < Using Progression | Bump                                                          View.Color.Text2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
    expression >; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113                    View.Color.Text3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Transfinite Surface { expression-list-or-all }                                                     View.Color.Triangles . . . . . . . . . . . . . . . . . . . . . . . . . 296
    < = { expression-list } > < Left | Right |                                                     View.Color.Trihedra . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
    Alternate | AlternateRight | AlternateLeft                                                     View.ColormapAlpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
    > ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113      View.ColormapAlphaPower . . . . . . . . . . . . . . . . . . . . . . 287
Transfinite Volume { expression-list } < = {                                                       View.ColormapBeta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
    expression-list } > ; . . . . . . . . . . . . . . . . . . . . . 114                            View.ColormapBias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108          View.ColormapCurvature . . . . . . . . . . . . . . . . . . . . . . . 287
TransformMesh { expression-list } {                                                                View.ColormapInvert . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
    transform-list };. . . . . . . . . . . . . . . . . . . . . . . . . 114                         View.ColormapNumber . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
TransformMesh { expression-list }; . . . . . . . . . . 114                                         View.ColormapRotation . . . . . . . . . . . . . . . . . . . . . . . . 287
TransfQuadTri { expression-list } ;. . . . . . . . . . 114                                         View.ColormapSwap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Translate { expression-list } { transform-list                                                     View.ColorTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
    } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109    View.ComponentMap0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
                                                                                                   View.ComponentMap1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
                                                                                                   View.ComponentMap2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Syntax index                                                                                                                                                                           433