Skip to content
Snippets Groups Projects
Forked from gmsh / gmsh
19920 commits behind the upstream repository.
gmsh.html 14.36 KiB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>

<title>Gmsh: a three-dimensional finite element mesh generator with
built-in pre- and post-processing facilities</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 

<meta name="keywords" content="free finite element mesh generator, 
delaunay triangulation, automatic, maillages, mailleur, 3D, mesh adaptation,
finite element postprocessing, CAD">

<meta name="Autor-Handle" content="Christophe.Geuzaine@advalvas.be">

<link href="/general.css" rel="stylesheet">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">

</head>

<body>

<h1 align="center">Gmsh: a three-dimensional finite element mesh
generator with built-in pre- and post-processing facilities</h1>
<p>
<h3 align="center">Christophe Geuzaine and Jean-François Remacle</h3>
<p>
<h3 align=center>Version <a href="doc/VERSIONS">1.41</a>, ? March 2003</h3>
<p>
<center>
  <a href="#Description">Description</a> |
  <a href="#Documentation">Documentation</a> |
  <a href="#Mailing lists">Mailing lists</a> |
  <a href="#Download"><b>Download</b></a> |
  <a href="#Credits">Credits</a> |
  <a href="#Screenshots">Screenshots</a> |
  <a href="#Links">Links</a>
</center>

<h2><a name="Description"></a>Description</h2>

Gmsh (pronounced "<em>Gnu-mesh</em>") is a <a
href="http://www.gnu.org/copyleft/gpl-faq.html">free</a> automatic
three-dimensional finite element mesh generator, primarily Delaunay,
with built-in pre- and post-processing facilities. Its primal design
goal is to provide a simple meshing tool for academic test cases with
parametric input and up to date visualization capabilities. One of the
strengths of Gmsh is its ability to respect a characteristic length
field for the generation of adapted meshes on lines, surfaces and
volumes. These adapted meshes can be mixed with simple structured
(transfinite, elliptic, etc.)  meshes in order to augment the
flexibility.

Gmsh is structured around four modules: <a
href="#geometry">geometry</a>, <a href="#mesh">mesh</a>, <a
href="#solver">solver</a> and <a
href="#post-processing">post-processing</a>. The specification of any
input to these modules is done either interactively, or in text data
files (interactive specifications generate language bits in the input
file, and vice versa). The accessibility of most features in the ASCII
text file makes it possible to automate all treatments (loops, tests
and external access methods permit advanced scripting capabilities). A
brief description of the four modules is given hereafter.

<h3><a name="geometry"></a>Geometry: geometrical entity definition</h3>

Geometries are created in a bottom-up flow by successively defining
points, oriented curves (segments, circles, ellipses, splines, etc.),
oriented surfaces (plane surfaces, ruled surfaces, etc.) and
volumes. Compound groups of geometrical entities can be defined, based
on these elementary parametrized geometric entities. Data can be
defined either interactively thanks to the menu system, or directly in
the ASCII input files.  The scripting possibilities (with loops,
tests, arrays of variables, etc.) allow fully parametrized definitions
of all geometrical entities.

<h3><a name="mesh"></a>Mesh: finite element mesh generation</h3>

A finite element mesh is a tessellation of a given subset of
R<sup>3</sup> by elementary geometrical elements of various shapes (in
this case lines, triangles, quadrangles, tetrahedra, prisms, hexahedra
and pyramids), arranged in such a way that if two of them intersect,
they do so along a face, an edge or a node, and never otherwise. All
the finite element meshes produced by Gmsh as unstructured, even if
they were generated in a structured way. This implies that the
elementary geometrical elements are defined only by an ordered list of
their vertices (which allows the orientation of all their lower order
geometrical entities) but no predefined relation is assumed between
any two elementary elements.
<p>
The mesh generation is performed in the same order as the geometry
creation: curves are discretized first; the mesh of the curves is then
used to mesh the surfaces; then the mesh of the surfaces is used to
mesh the volumes. This automatically assures the continuity of the
mesh when, for example, two surfaces share a common curve. Every
meshing step is constrained by the characteristic length field, which
can be uniform, specified by characteristic length associated to
elementary geometrical entities, or associated to another mesh (the
background mesh).
<p>
For each meshing step (i.e. the discretization of lines, surfaces and
volumes), all structured mesh directives are executed first, and serve
as additional constraints for the unstructured parts. The implemented
Delaunay algorithm is subdivided in the following five steps for
surface/volume discretization:
<p>
<ol>
<li>trivial meshing of a box including the convex polygon/polyhedron
defined by the boundary nodes resulting from the discretization of the
curves/surfaces;

<li>creation of the initial mesh by insertion of all the nodes on the
curves/surfaces thanks to the Bowyer algorithm;

<li>boundary restoration to force all the edges/faces of the
curves/surfaces to be present in the initial mesh;

<li>suppression of all the unwanted triangles/tetrahedra (in
particular those containing the nodes of the initial box);

<li>insertion of new nodes by the Bowyer algorithm until the
characteristic size of each simplex is lower or equal to the
characteristic length field evaluated at the center of its
circumscribed circle/sphere.
</ol>

<h3><a name="solver"></a>Solver: external solver interface</h3>

External solvers can be interfaced with Gmsh through a socket
mechanism, which permits to easily launch computations either locally
or on remote computers, and to collect and exploit the simulation
results within Gmsh. The default solver interfaced with Gmsh is <a
href="/getdp/">GetDP</a>. Check the <a href="#mysolver">solver
examples</a> to see how to define your own solver (be sure to also
read the answer to the question 6.1 in the <a
HREF="/gmsh/doc/FAQ">FAQ</a>).

<h3><a name="post-processing"></a>Post-processing: scalar and vector field visualization</h3>
Multiple post-processing scalar or vector maps can be loaded and
manipulated (globally or individually) along with the geometry and the
mesh. Scalar fields are represented by iso-value curves/surfaces or
color maps and vector fields by three-dimensional arrows or
displacement maps. Post-processing functions include arbitrary section
computation, offset, elevation, boundary extraction, color map and
range modification, animation, <a href="/gl2ps/">vector graphic
output</a>, etc. All post-processing options can be accessed either
interactively or through the input ASCII text files. Scripting permits
to automate all the post-processing operations (e.g. for the creation
of complex animations).


<h2><a name="Documentation"></a>Documentation</h2>

<ul>
  <li><a href="/gmsh/doc/tutorial.html">Online tutorial</a>
      (Please <b>read</b> this tutorial before sending any question to the mailing list!)
  <li><a href="/gmsh/doc/FAQ">Frequently asked questions (FAQ)</a>
  <li><a href="/gmsh/doc/VERSIONS">Version history</a>
  <li><a href="/gmsh/doc/FORMATS">Mesh and post-processing file formats</a>
  <li><a href="/gmsh/doc/CONTRIBUTORS">List of contributors</a>
  <li><a href="/gmsh/doc/KEYWORDS">List of reserved keywords</a>
  <li><a href="/gmsh/doc/README.txt">For Windows versions only</a>
  <li><a name="mysolver"></a>Interactive solver examples: 
      <a href="/gmsh/doc/mysolver.tgz">C solver</a>, 
      <a href="/gmsh/doc/myperlsolver.tgz">Perl solver</a>
<!--
  <li><a href="/gmsh/doc/BUGS">List of open bugs</a>
-->
</ul>

<form method=GET action="http://www.geuz.org/search/search-geuz.cgi">
<input size=30 name="q" value="">&nbsp;
<input type="submit" value="Search!">
<input type=HIDDEN name="ul" value="/gmsh/">
<input type=HIDDEN name="ps" value=10>
</form>

<h2><a name="Mailing lists"></a>Mailing lists</h2>

<ul>
  <li><a href="/mailman/listinfo/gmsh/">gmsh</a> is the public mailing
     list for Gmsh users. You should send all questions, bug reports,
     requests or pleas for changes related to Gmsh to this list. The
     list is archived <a href="/pipermail/gmsh/">here</a>

  <li><a href="/mailman/listinfo/gmsh-announce/">gmsh-announce</a> is
     a moderated (i.e. "read-only") list for announcements about
     significant Gmsh events. You should subscribe to this list to get
     information about software releases, important bug fixes and
     other Gmsh-specific news. The list is archived <a
     href="/pipermail/gmsh-announce/">here</a>.
</ul>

<h2><a name="Download"></a>Download</h2>

Gmsh is freely available under the terms of the <a
href="/gmsh/doc/COPYING">GNU General Public License</a>. Pre-compiled
binaries (dynamically linked with OpenGL<a href="#opengl-footnote"
name="opengl-footmark"><sup>1</sup></a>) are available for Windows,
Mac OS X and Linux. The tutorial and demo files are included in the
archives.

<ul>
<li><a href="/gmsh/bin/gmsh-1.41.0-Windows.zip">Windows zip archive (95/98/NT/XP)</a>
<li><a href="/gmsh/bin/gmsh-1.41.0-1.i386.rpm">Linux RPM (i386, Red Hat >= 6.2 and compatible)</a>
<li><a href="/gmsh/bin/gmsh-1.41.0-Linux.tgz">Linux tarball (i386, glibc 2.1)</a> 
<li><a href="/gmsh/bin/gmsh-1.41.0-MacOSX.tgz">Mac OS X tarball (Mac OS X 10.2)</a>
<li><a href="/gmsh/bin/gmsh-1.41.0-source.tgz">Source tarball</a>
    <a href="#build-footnote" name="build-footmark"><sup>2</sup></a>
<!--
<li><a href="/gmsh/bin/gmsh-1.41.0-OSF1.tgz">Compaq Tru64 tarball (OSF 4.0)</a>
<li><a href="/gmsh/bin/gmsh-1.41.0-SunOS.tgz">Sun tarball (SunOS 5.8)</a>
<li><a href="/gmsh/bin/gmsh-1.41.0-AIX.tgz">IBM tarball (AIX)</a>
<li><a href="/gmsh/bin/gmsh-1.41.0-IRIX.tgz">SGI IRIX tarball (IRIX 6.5)</a>
<li><a href="/gmsh/bin/gmsh-1.41.0-HP-UX.tgz">HP tarball (HPUX 10.20)</a>
-->
</ul>
<p>
Older versions are still available <A href="/gmsh/bin/">here</a>.

<p>
<a name="opengl-footnote"></a><a
href="#opengl-footmark"><sup>1</sup></a>You need the OpenGL libraries
installed on your system (and in the path of the library loader). A
free replacement for OpenGL can be found at <A
href="http://mesa3d.sourceforge.net">http://mesa3d.sourceforge.net</A>.
Remember that you may have to reconfigure the loader (ldconfig under
Linux) or modify the LD_LIBRARY_PATH/SHLIB_PATH/etc. environment
variable in order for Gmsh to find the libraries.
<p>
<a name="build-footnote"></a><a
href="#build-footmark"><sup>2</sup></a>You need the <a
href="http://sources.redhat.com/gsl/">GSL</a> and <a
href="http://www.fltk.org/">FLTK (1.1.x)</a> libraries and header
files properly installed on your system in order to compile
Gmsh. Non-graphical versions can be compiled without FLTK. Compiling
the Windows version requires <a
href="http://www.cygwin.com">Cygwin</a>.

<h2><a name="Credits"></a>Credits</h2>

Gmsh is developed by <a HREF="mailto:remacle@gce.ucl.ac.be">Jean-François Remacle</a>
(currently with the <a href="http://www.ucl.ac.be">Catholic University of Louvain</a>)
and <a HREF="mailto:geuzaine@acm.caltech.edu">Christophe Geuzaine</a>
(currently with the <a href="http://www.caltech.edu">California Institute of Technology</a>).
Please use <a HREF="mailto:gmsh@geuz.org">gmsh@geuz.org</a> instead of our personal
e-mails to send questions or bug reports.


<h2><a name="Screenshots"></a>Screenshots</h2>

Everybody loves screenshots... So here are some:
<a href="/gmsh/gallery/screenshot1.gif">screenshot 1</a> 
(<a href="/gmsh/gallery/screenshot1-small.gif">small</a>),
<a href="/gmsh/gallery/screenshot2.gif">screenshot 2</a>
(<a href="/gmsh/gallery/screenshot2-small.gif">small</a>),
<a href="/gmsh/gallery/screenshot3.gif">screenshot 3</a>
(<a href="/gmsh/gallery/screenshot3-small.gif">small</a>),
<a href="/gmsh/gallery/screenshot4.gif">screenshot 4</a>
(<a href="/gmsh/gallery/screenshot4-small.gif">small</a>).

<p>
Some other pictures made with Gmsh:
<ul>
<li>Part of a shoulder bone:
    <a href="/gmsh/gallery/shoulder1.gif">pict1</a>,
    <a href="/gmsh/gallery/shoulder2.gif">pict2</a>,
    <a href="/gmsh/gallery/shoulder3.gif">pict3</a>,
    <a href="/gmsh/gallery/shoulder4.gif">pict4</a>,
    <a href="/gmsh/gallery/shoulder5.gif">pict5</a>,
    <a href="/gmsh/gallery/shoulder6.gif">pict6</a>
    (J. Fatemi).
<li>Parts of a magnetron: 
    <a href="/gmsh/gallery/magnetron1.gif">pict1</a>,
    <a href="/gmsh/gallery/magnetron2.gif">pict2</a>,
    <a href="/gmsh/gallery/magnetron3.gif">pict3</a>,
    <a href="/gmsh/gallery/magnetron4.gif">pict4</a>
    (P. Lefèvre).
<li>A circuit breaker: 
    <a href="/gmsh/gallery/breaker.gif">pict1</a>
    (S. K. Choi).
<li>A mechanical part in the demo files: 
    <a href="/gmsh/gallery/piece1.gif">pict1</a>, 
    <a href="/gmsh/gallery/piece2.gif">pict2</a>, 
    <a href="/gmsh/gallery/piece3.gif">pict3</a>.
<li>The log-periodic antenna in the demo files:
    <a href="/gmsh/gallery/antenna.gif">pict1</a>.
<li>An electrical machine:
    <a href="/gmsh/gallery/machine.gif">pict1</a>
    (J. Gyselinck).
<li>Breads: 
    <a href="/gmsh/gallery/tresse1.gif">pict1</a>,
    <a href="/gmsh/gallery/tresse2.gif">pict2</a>
    (D. Colignon).
<li>Mach number on a F16:
    <a href="/gmsh/gallery/f16-1.gif">pict1</a>,
    <a href="/gmsh/gallery/f16-2.gif">pict2</a>,
    <a href="/gmsh/gallery/f16-3.gif">pict3</a>,
    <a href="/gmsh/gallery/f16-5.gif">pict4</a>
    (P. Geuzaine).
<li>Stream lines:
    <a href="/gmsh/gallery/f16_stream.jpg">F16</a>,
    <a href="/gmsh/gallery/f18_stream.jpg">F18</a>
    <!-- a href="/gmsh/gallery/valve.jpg">valve</a -->
    (P. Geuzaine).
<li>An example of on-screen information display:
    <a href="/gmsh/gallery/infodisplay1.gif">pict1</a>, 
    <a href="/gmsh/gallery/infodisplay2.gif">pict2</a>.
<li>2D colormap:
    <a href="/gmsh/gallery/blob.gif">pict1</a>.
<li>Structured and unstructured mesh of an extruded geometry:
    <a href="/gmsh/gallery/spirale.gif">pict1</a>.
<li>Some didactic animations about computational electromagnetics at 
    <a href="http://elap.montefiore.ulg.ac.be/elm/demos_en.html">ELAP</a>.
</ul>


<h2><a name="Links"></a>Links</h2>

Check out <a href="/getdp/">GetDP</a>, a scientific computation
software for the numerical solution of integro-differential equations,
using finite element and integral type methods.

<p>
The mesh database that will be used by Gmsh in the future has its
own homepage: take a look at <a href="http://www.scorec.rpi.edu/AOMD/">AOMD,
the Algorithm Oriented Mesh Database</a>.

<p>
Back to <a href="/">geuz.org</a>

</body>
</html>