diff --git a/Makefile b/Makefile
index a8e59d270fa8d7b08597b91accf8ddb3f71dd6eb..6f7bd18ace54062db04d45dea2b42f43dc794049 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.279 2003-03-28 02:43:19 geuzaine Exp $
+# $Id: Makefile,v 1.280 2003-04-14 22:46:58 geuzaine Exp $
 #
 # Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 #
@@ -82,6 +82,18 @@ parser:
 utilities:
 	cd utils && ${MAKE}
 
+doc-info:
+	cd doc/texinfo && ${MAKE} info
+	cp doc/texinfo/gmsh.info* doc/
+
+doc-ps:
+	cd doc/texinfo && ${MAKE} ps
+	cp doc/texinfo/gmsh.ps doc/
+
+doc-pdf:
+	cd doc/texinfo && ${MAKE} pdf
+	cp doc/texinfo/gmsh.pdf doc/
+
 purge:
 	for i in . bin lib utils archives demos tutorial doc ${GMSH_DIRS}; \
         do (cd $$i && rm -f *~ *~~ .gmsh-tmp .gmsh-errors gmon.out); \
@@ -211,13 +223,11 @@ package-mac:
         "    <key>CFBundleGetInfoString</key><string>Gmsh ${GMSH_RELEASE},"\
               "(c) C. Geuzaine and J.-F. Remacle, 1997-2003</string>\n"\
         "    <key>CFBundleIdentifier</key><string>org.geuz.Gmsh</string>\n"\
-        "    <key>NSHelpFile</key><string>tutorial.html</string>\n"\
         "  </dict>\n"\
         "</plist>" > gmsh-${GMSH_RELEASE}/Gmsh.app/Contents/Info.plist
 	strip bin/gmsh
 	cp bin/gmsh gmsh-${GMSH_RELEASE}/Gmsh.app/Contents/MacOS/Gmsh
 	cp Fltk/MacIcons.icns gmsh-${GMSH_RELEASE}/Gmsh.app/Contents/Resources/gmsh.icns
-	cp tutorial/tutorial.html gmsh-${GMSH_RELEASE}/Gmsh.app/Contents/Resources
 	cp -R doc/gmsh.1 tutorial demos gmsh-${GMSH_RELEASE}
 	cp doc/FORMATS gmsh-${GMSH_RELEASE}/FORMATS.txt
 	cp doc/VERSIONS gmsh-${GMSH_RELEASE}/VERSIONS.txt
diff --git a/doc/Makefile b/doc/Makefile
index 3b9937d01a7295efd3acdb27aa7b936c2a088533..d476920bc6bb71140c513881454b72f9f37690d0 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.7 2003-03-21 00:52:47 geuzaine Exp $
+# $Id: Makefile,v 1.8 2003-04-14 22:46:58 geuzaine Exp $
 #
 # Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 #
@@ -24,5 +24,5 @@ all:
 	cd texinfo && ${MAKE} all
 
 clean:
-	rm -f *~ .*~
+	rm -f *~ .*~ gmsh.ps gmsh.pdf gmsh.info*
 	cd texinfo && ${MAKE} clean
diff --git a/tutorial/README b/tutorial/README
deleted file mode 100644
index 9203cf2cafdac1a82f1840a496e110cd3102a4b8..0000000000000000000000000000000000000000
--- a/tutorial/README
+++ /dev/null
@@ -1,102 +0,0 @@
-$Id: README,v 1.20 2003-03-07 18:28:28 geuzaine Exp $
-
-Here are the examples in the Gmsh tutorial. These examples are
-commented (both C and C++-style comments can be used in Gmsh input
-files) and should introduce new features gradually, starting with
-t1.geo.
-
-[NOTE: This tutorial does not explain the mesh and post-processing
-file formats. See the FORMATS file for this.]
-
-There are two ways to actually run these examples with Gmsh. (The
-operations to run Gmsh may vary according to your operating system. In
-the following examples, we will assume that you're working with a
-UNIX-like shell.) The first working mode of Gmsh is the interactive
-graphical mode. To launch Gmsh in interactive mode, just type
-
-> gmsh
-
-at the prompt on the command line. This will open two windows: the
-graphic window (with a status bar at the bottom) and the menu window
-(with a menu bar and some context dependent buttons). To open the
-first tutorial file, select the 'File->Open' menu, and choose 't1.geo'
-in the input field. To perform the mesh generation, go to the mesh
-module (by selecting 'Mesh' in the module menu) and choose the
-required dimension in the context-dependent buttons ('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, choose 'Save' in the
-context-dependent buttons, or select the appropriate format with the
-'File->Save as' menu. The default mesh file name is based on the name
-of the first input file on the command line (or 'untitled' if there
-wasn't any input file given), with an appended extension depending on
-the mesh format.
-
-[NOTE: Nearly all the interactive commands have shortcuts. Select
-'Help->Shortcuts' in the menu bar to learn about these shortcuts.]
-
-Instead of opening the tutorial with the 'File->Open' menu, it is
-often more convenient to put the file name on the command line, for
-example with:
-
-> gmsh t1.geo
-
-[NOTE: Even if it is often handy to define the variables and the
-points directly in the input files (you may use any text editor for
-this purpose, e.g. Wordpad on Windows, or Emacs on Unix), it is almost
-always more simple to define the curves, the surfaces and the volumes
-interactively. To do so, just follow the context dependent buttons in
-the Geometry module. For example, to create a spline, select
-'Geometry' in the module menu, and then select 'Elementary, Add, New,
-Spline'. You will then be asked (in the status bar of the graphic
-window) to select a list of points, and to click 'e' to finish the
-selection (or 'q' to abort it). Once the interactive command is
-completed, a string is automatically added at the end of the currently
-opened project file.]
-
-The second operating mode for Gmsh is the non-interactive mode. In
-this mode, there is no graphical user interface, and all operations
-are performed without any interaction. To mesh the first tutorial in
-non-interactive mode, just type:
-
-> gmsh t1.geo -2
-
-To mesh the same example, but with the background mesh available in the
-file 'bgmesh.pos', just type:
-
-> gmsh t1.geo -2 -bgm bgmesh.pos
-
-[NOTE: You should read the notes in the file 'bgmesh.pos' if you
-intend to use background meshes.]
-
-Several files can be loaded simultaneously in Gmsh. The first one
-defines the project, while the others are appended ("merged") to this
-project. You can merge such files with the 'File->Merge' menu, or by
-directly specifying the names of the files on the command line. This
-is most useful for post-processing purposes. For example, to merge the
-post-processing views contained in the files 'view1.pos' and
-'view2.pos' together with the first tutorial 't1.geo', you can type
-the following command:
-
-> gmsh t1.geo view1.pos view2.pos
-
-In the Post-Processing module (select 'Post_Processing' in the module
-menu), two view buttons will appear, respectively labeled "a scalar
-map" and "a vector map". A mouse click on the 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. If you want the
-modifications made to one view to affect also all the other views,
-select the 'Apply next changes to all views' or 'Force same options
-for all views' option in the 'Tools->Options->Post-processing' menu.
-
-[NOTE: All the options specified interactively can also be directly
-specified in the ASCII input files. All available options, with their
-current values, can be saved into a file by selecting 'File->Save
-as->Gmsh options', or simply viewed by pressing the '?' button in the
-status bar. To save the current options as your default preferences
-for all future Gmsh sessions, use the 'Tools->Options->Save' button.]
-
-
-OK, that's all, folks. Enjoy the tutorial.
-
diff --git a/tutorial/tutorial.html b/tutorial/tutorial.html
deleted file mode 100644
index 1edf1cf84b90359ab85cd537eb0c03d09a24091e..0000000000000000000000000000000000000000
--- a/tutorial/tutorial.html
+++ /dev/null
@@ -1,1286 +0,0 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Gmsh tutorial</TITLE>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" VLINK="#9900DD">
-<A NAME="top">
-<H1>Contents</H1>
-<OL>
-  <LI><A HREF="#file1">README</A>
-  <LI><A HREF="#file2">t1.geo</A>
-  <LI><A HREF="#file3">t2.geo</A>
-  <LI><A HREF="#file4">t3.geo</A>
-  <LI><A HREF="#file5">t4.geo</A>
-  <LI><A HREF="#file6">t5.geo</A>
-  <LI><A HREF="#file7">t6.geo</A>
-  <LI><A HREF="#file8">t7.geo</A>
-  <LI><A HREF="#file9">t8.geo</A>
-  <LI><A HREF="#file10">t9.geo</A>
-</OL>
-<HR>
-<A NAME="file1">
-<H1>README 1/10</H1>
-[<A HREF="#top">top</A>][prev][<A HREF="#file2">next</A>]
-<PRE>
-$Id: tutorial.html,v 1.43 2003-03-28 16:22:31 geuzaine Exp $
-
-Here are the examples in the Gmsh tutorial. These examples are
-commented (both C and C++-style comments can be used in Gmsh input
-files) and should introduce new features gradually, starting with
-t1.geo.
-
-[NOTE: This tutorial does not explain the mesh and post-processing
-file formats. See the FORMATS file for this.]
-
-There are two ways to actually run these examples with Gmsh. (The
-operations to run Gmsh may vary according to your operating system. In
-the following examples, we will assume that you're working with a
-UNIX-like shell.) The first working mode of Gmsh is the interactive
-graphical mode. To launch Gmsh in interactive mode, just type
-
-&gt; gmsh
-
-at the prompt on the command line. This will open two windows: the
-graphic window (with a status bar at the bottom) and the menu window
-(with a menu bar and some context dependent buttons). To open the
-first tutorial file, select the 'File-&gt;Open' menu, and choose 't1.geo'
-in the input field. To perform the mesh generation, go to the mesh
-module (by selecting 'Mesh' in the module menu) and choose the
-required dimension in the context-dependent buttons ('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, choose 'Save' in the
-context-dependent buttons, or select the appropriate format with the
-'File-&gt;Save as' menu. The default mesh file name is based on the name
-of the first input file on the command line (or 'untitled' if there
-wasn't any input file given), with an appended extension depending on
-the mesh format.
-
-[NOTE: Nearly all the interactive commands have shortcuts. Select
-'Help-&gt;Shortcuts' in the menu bar to learn about these shortcuts.]
-
-Instead of opening the tutorial with the 'File-&gt;Open' menu, it is
-often more convenient to put the file name on the command line, for
-example with:
-
-&gt; gmsh t1.geo
-
-[NOTE: Even if it is often handy to define the variables and the
-points directly in the input files (you may use any text editor for
-this purpose, e.g. Wordpad on Windows, or Emacs on Unix), it is almost
-always more simple to define the curves, the surfaces and the volumes
-interactively. To do so, just follow the context dependent buttons in
-the Geometry module. For example, to create a spline, select
-'Geometry' in the module menu, and then select 'Elementary, Add, New,
-Spline'. You will then be asked (in the status bar of the graphic
-window) to select a list of points, and to click 'e' to finish the
-selection (or 'q' to abort it). Once the interactive command is
-completed, a string is automatically added at the end of the currently
-opened project file.]
-
-The second operating mode for Gmsh is the non-interactive mode. In
-this mode, there is no graphical user interface, and all operations
-are performed without any interaction. To mesh the first tutorial in
-non-interactive mode, just type:
-
-&gt; gmsh t1.geo -2
-
-To mesh the same example, but with the background mesh available in the
-file 'bgmesh.pos', just type:
-
-&gt; gmsh t1.geo -2 -bgm bgmesh.pos
-
-[NOTE: You should read the notes in the file 'bgmesh.pos' if you
-intend to use background meshes.]
-
-Several files can be loaded simultaneously in Gmsh. The first one
-defines the project, while the others are appended (&quot;merged&quot;) to this
-project. You can merge such files with the 'File-&gt;Merge' menu, or by
-directly specifying the names of the files on the command line. This
-is most useful for post-processing purposes. For example, to merge the
-post-processing views contained in the files 'view1.pos' and
-'view2.pos' together with the first tutorial 't1.geo', you can type
-the following command:
-
-&gt; gmsh t1.geo view1.pos view2.pos
-
-In the Post-Processing module (select 'Post_Processing' in the module
-menu), two view buttons will appear, respectively labeled &quot;a scalar
-map&quot; and &quot;a vector map&quot;. A mouse click on the 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. If you want the
-modifications made to one view to affect also all the other views,
-select the 'Apply next changes to all views' or 'Force same options
-for all views' option in the 'Tools-&gt;Options-&gt;Post-processing' menu.
-
-[NOTE: All the options specified interactively can also be directly
-specified in the ASCII input files. All available options, with their
-current values, can be saved into a file by selecting 'File-&gt;Save
-as-&gt;Gmsh options', or simply viewed by pressing the '?' button in the
-status bar. To save the current options as your default preferences
-for all future Gmsh sessions, use the 'Tools-&gt;Options-&gt;Save' button.]
-
-
-OK, that's all, folks. Enjoy the tutorial.
-
-</PRE>
-<HR>
-<A NAME="file2">
-<H1>t1.geo 2/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file1">prev</A>][<A HREF="#file3">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 1
- * 
- *  Variables, Elementary entities (Points, Lines, Surfaces), Physical
- *  entities (Points, Lines, Surfaces), Background mesh
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// All geometry description in Gmsh is made by means of a special
-</FONT></I><I><FONT COLOR="#B22222">// language (looking somewhat similar to C). The simplest construction
-</FONT></I><I><FONT COLOR="#B22222">// of this language is the 'affectation'. 
-</FONT></I>
-<I><FONT COLOR="#B22222">// The following command (all commands end with a semi colon) defines
-</FONT></I><I><FONT COLOR="#B22222">// a variable called 'lc' and affects the value 0.007 to 'lc':
-</FONT></I>
-lc = 0.007 ;
-
-<I><FONT COLOR="#B22222">// This newly created variable can be used to define the first Gmsh
-</FONT></I><I><FONT COLOR="#B22222">// elementary entity, a 'Point'. A Point is defined by a list of four
-</FONT></I><I><FONT COLOR="#B22222">// numbers: its three coordinates (x, y and z), and a characteristic
-</FONT></I><I><FONT COLOR="#B22222">// length which sets the target mesh size at the point:
-</FONT></I>
-Point(1) = {0,  0,  0, 9.e-1 * lc} ;
-
-<I><FONT COLOR="#B22222">// The mesh size is defined as the length of the segments for lines,
-</FONT></I><I><FONT COLOR="#B22222">// the radii of the circumscribed circles for triangles and the radii
-</FONT></I><I><FONT COLOR="#B22222">// of the circumscribed spheres for tetrahedra, respectively. The
-</FONT></I><I><FONT COLOR="#B22222">// actual distribution of the mesh sizes is obtained by interpolation
-</FONT></I><I><FONT COLOR="#B22222">// of the characteristic lengths prescribed at the points. There are
-</FONT></I><I><FONT COLOR="#B22222">// also other possibilities to specify characteristic lengths:
-</FONT></I><I><FONT COLOR="#B22222">// attractors (see t7.geo) and background meshes (see bgmesh.pos).
-</FONT></I>
-<I><FONT COLOR="#B22222">// As can be seen in the previous definition, more complex expressions
-</FONT></I><I><FONT COLOR="#B22222">// can be constructed from variables. Here, the product of the
-</FONT></I><I><FONT COLOR="#B22222">// variable 'lc' by the constant 9.e-1 is given as the fourth argument
-</FONT></I><I><FONT COLOR="#B22222">// of the list defining the point.
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// The following general syntax rule is applied for the definition of
-</FONT></I><I><FONT COLOR="#B22222">// all geometrical entities:
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">//    &quot;If a number defines a new entity, it is enclosed between
-</FONT></I><I><FONT COLOR="#B22222">//    parentheses. If a number refers to a previously defined entity,
-</FONT></I><I><FONT COLOR="#B22222">//    it is enclosed between braces.&quot;
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// Three additional points are then defined:
-</FONT></I>
-Point(2) = {.1, 0,  0, lc} ;
-Point(3) = {.1, .3, 0, lc} ;
-Point(4) = {0,  .3, 0, lc} ;
-
-<I><FONT COLOR="#B22222">// The second elementary geometrical entity in Gmsh is the
-</FONT></I><I><FONT COLOR="#B22222">// curve. Amongst curves, straight lines are the simplest. A straight
-</FONT></I><I><FONT COLOR="#B22222">// line is defined by a list of point numbers. For example, line 1
-</FONT></I><I><FONT COLOR="#B22222">// starts at point 1 and ends at point 2:
-</FONT></I>
-Line(1) = {1,2} ;
-Line(2) = {3,2} ;
-Line(3) = {3,4} ;
-Line(4) = {4,1} ;
-
-<I><FONT COLOR="#B22222">// The third elementary entity is the surface. In order to define a
-</FONT></I><I><FONT COLOR="#B22222">// simple rectangular surface from the four lines defined above, a
-</FONT></I><I><FONT COLOR="#B22222">// line loop has first to be defined. A line loop is a list of
-</FONT></I><I><FONT COLOR="#B22222">// connected lines, a sign being associated with each line (depending
-</FONT></I><I><FONT COLOR="#B22222">// on the orientation of the line).
-</FONT></I>
-Line Loop(5) = {4,1,-2,3} ;
-
-<I><FONT COLOR="#B22222">// The surface is then defined as a list of line loops (only one
-</FONT></I><I><FONT COLOR="#B22222">// here):
-</FONT></I>
-Plane Surface(6) = {5} ;
-
-<I><FONT COLOR="#B22222">// At this level, Gmsh knows everything to display the rectangular
-</FONT></I><I><FONT COLOR="#B22222">// surface 6 and to mesh it. But a supplementary step is needed in
-</FONT></I><I><FONT COLOR="#B22222">// order to assign region numbers to the various elements in the mesh
-</FONT></I><I><FONT COLOR="#B22222">// (the points, the lines and the triangles discretizing points 1 to
-</FONT></I><I><FONT COLOR="#B22222">// 4, lines 1 to 4 and surface 6). This is achieved by the definition
-</FONT></I><I><FONT COLOR="#B22222">// of Physical entities. Physical entities will group elements
-</FONT></I><I><FONT COLOR="#B22222">// belonging to several elementary entities by giving them a common
-</FONT></I><I><FONT COLOR="#B22222">// number (a region number), and specifying their orientation.
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// For example, the two points 1 and 2 can be grouped into the
-</FONT></I><I><FONT COLOR="#B22222">// physical entity 1:
-</FONT></I>
-Physical Point(1) = {1,2} ;
-
-<I><FONT COLOR="#B22222">// Consequently, two punctual elements will be saved in the output
-</FONT></I><I><FONT COLOR="#B22222">// files, both with the region number 1. The mechanism is identical
-</FONT></I><I><FONT COLOR="#B22222">// for line or surface elements:
-</FONT></I>
-Physical Line(10) = {1,2,4} ;
-MySurface = 100;
-Physical Surface(MySurface) = {6} ;
-
-<I><FONT COLOR="#B22222">// All the line elements which will be created during the mesh of
-</FONT></I><I><FONT COLOR="#B22222">// lines 1, 2 and 4 will be saved in the output file with the region
-</FONT></I><I><FONT COLOR="#B22222">// number 10; and all the triangular elements resulting from the
-</FONT></I><I><FONT COLOR="#B22222">// discretization of surface 6 will be given the region number 100.
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// If no physical groups are defined, all the elements in the mesh are
-</FONT></I><I><FONT COLOR="#B22222">// directly saved with their default orientation and with a region
-</FONT></I><I><FONT COLOR="#B22222">// number equal to their elementary region number. For a description
-</FONT></I><I><FONT COLOR="#B22222">// of the mesh and post-processing formats, see the FORMATS file.
-</FONT></I></PRE>
-<HR>
-<A NAME="file3">
-<H1>t2.geo 3/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file2">prev</A>][<A HREF="#file4">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 2
- * 
- *  Includes, Geometrical transformations, Extruded geometries,
- *  Elementary entities (Volumes), Physical entities (Volumes)
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// The first tutorial file will serve as a basis to construct this
-</FONT></I><I><FONT COLOR="#B22222">// one. It can be included with:
-</FONT></I>
-Include &quot;t1.geo&quot; ;
-
-<I><FONT COLOR="#B22222">// There are several possibilities to build a more complex geometry
-</FONT></I><I><FONT COLOR="#B22222">// from the one previously defined in 't1.geo'.
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// New points, lines and surfaces can first be directly defined in the
-</FONT></I><I><FONT COLOR="#B22222">// same way as in 't1.geo':
-</FONT></I>
-Point(5) = {0, .4, 0, lc} ;
-Line(5) = {4, 5} ;
-
-<I><FONT COLOR="#B22222">// But Gmsh also provides geometrical transformation mechanisms to
-</FONT></I><I><FONT COLOR="#B22222">// move (translate, rotate, ...), add (translate, rotate, ...) or
-</FONT></I><I><FONT COLOR="#B22222">// extrude (translate, rotate) elementary geometrical entities. For
-</FONT></I><I><FONT COLOR="#B22222">// example, the point 3 can be moved by 0.05 units on the left with:
-</FONT></I>
-Translate {-0.05,0,0} { Point{3} ; }
-
-<I><FONT COLOR="#B22222">// The resulting point can also be duplicated and translated by 0.1
-</FONT></I><I><FONT COLOR="#B22222">// along the y axis:
-</FONT></I>
-Translate {0,0.1,0} { Duplicata{ Point{3} ; } }
-
-<I><FONT COLOR="#B22222">// Of course, translation, rotation and extrusion commands not only
-</FONT></I><I><FONT COLOR="#B22222">// apply to points, but also to lines and surfaces. The following
-</FONT></I><I><FONT COLOR="#B22222">// command extrudes surface 6 defined in 't1.geo', as well as a new
-</FONT></I><I><FONT COLOR="#B22222">// surface 11, along the z axis by 'h':
-</FONT></I>
-h = 0.12 ;
-Extrude Surface { 6, {0, 0, h} } ;
-
-Line(7) = {3, 6} ; Line(8) = {6,5} ; Line Loop(10) = {5,-8,-7,3};
-
-Plane Surface(11) = {10};
-
-Extrude Surface { 11, {0, 0, h} } ;
-
-<I><FONT COLOR="#B22222">// All these geometrical transformations automatically generate new
-</FONT></I><I><FONT COLOR="#B22222">// elementary entities. The following commands permit to specify
-</FONT></I><I><FONT COLOR="#B22222">// manually a characteristic length for some of the automatically
-</FONT></I><I><FONT COLOR="#B22222">// created points:
-</FONT></I>
-Characteristic Length{6,22,2,3,16,12} = lc * 2 ;
-
-<I><FONT COLOR="#B22222">// If the transformation tools are handy to create complex geometries,
-</FONT></I><I><FONT COLOR="#B22222">// it is sometimes useful to generate the flat geometry, consisting
-</FONT></I><I><FONT COLOR="#B22222">// only of the explicit list elementary entities. This can be achieved
-</FONT></I><I><FONT COLOR="#B22222">// by selecting the 'File-&gt;Save as-&gt;Gmsh unrolled geometry' menu or by
-</FONT></I><I><FONT COLOR="#B22222">// typing
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// &gt; gmsh t2.geo -0
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// on the command line.
-</FONT></I>
-<I><FONT COLOR="#B22222">// Volumes are the fourth type of elementary entities in Gmsh. In the
-</FONT></I><I><FONT COLOR="#B22222">// same way one defines line loops to build surfaces, one has to
-</FONT></I><I><FONT COLOR="#B22222">// define surface loops to build volumes. The following volumes are
-</FONT></I><I><FONT COLOR="#B22222">// very simple, without holes (and thus consist of only one surface
-</FONT></I><I><FONT COLOR="#B22222">// loop):
-</FONT></I>
-Surface Loop(145) = {121,11,131,135,139,144};
-Volume(146) = {145};
-
-Surface Loop(146) = {121,6,109,113,117,122};
-Volume(147) = {146};
-
-<I><FONT COLOR="#B22222">// To save all volumic (tetrahedral) elements of volume 146 and 147
-</FONT></I><I><FONT COLOR="#B22222">// with the associate region number 1, a Physical Volume must be
-</FONT></I><I><FONT COLOR="#B22222">// defined:
-</FONT></I>
-Physical Volume (1) = {146,147} ;
-
-<I><FONT COLOR="#B22222">// Congratulations! You've created your first fully unstructured
-</FONT></I><I><FONT COLOR="#B22222">// tetrahedral 3D mesh!
-</FONT></I></PRE>
-<HR>
-<A NAME="file4">
-<H1>t3.geo 4/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file3">prev</A>][<A HREF="#file5">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 3
- * 
- *  Extruded meshes, Options
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// Again, the first tutorial example is included:
-</FONT></I>
-Include &quot;t1.geo&quot; ;
-
-<I><FONT COLOR="#B22222">// As in 't2.geo', an extrusion along the z axis will be performed:
-</FONT></I>
-h = 0.1 ;
-
-<I><FONT COLOR="#B22222">// But contrary to 't2.geo', not only the geometry will be extruded,
-</FONT></I><I><FONT COLOR="#B22222">// but also the 2D mesh. This is done with the same Extrude command,
-</FONT></I><I><FONT COLOR="#B22222">// but by specifying the number of layers (here, there will be four
-</FONT></I><I><FONT COLOR="#B22222">// layers, of respectively 8, 4, 2 and 1 elements in depth), with
-</FONT></I><I><FONT COLOR="#B22222">// volume numbers 9000 to 9003 and respective heights equal to h/4:
-</FONT></I>
-Extrude Surface { 6, {0,0,h} } { 
-  Layers { {8,4,2,1}, {9000:9003}, {0.25,0.5,0.75,1} } ; 
-} ;
-
-<I><FONT COLOR="#B22222">// The extrusion can also performed with a rotation instead of a
-</FONT></I><I><FONT COLOR="#B22222">// translation, and the resulting mesh can be recombined into prisms
-</FONT></I><I><FONT COLOR="#B22222">// (wedges) if the surface elements are triangles, or hexahedra if the
-</FONT></I><I><FONT COLOR="#B22222">// surface elements are quadrangles. All rotations are specified by an
-</FONT></I><I><FONT COLOR="#B22222">// axis direction ({0,1,0}), an axis point ({-0.1,0,0.1}) and a
-</FONT></I><I><FONT COLOR="#B22222">// rotation angle (-Pi/2):
-</FONT></I>
-Extrude Surface { 122, {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { 
-  Recombine ; Layers { 7, 9004, 1 } ; 
-};
-
-<I><FONT COLOR="#B22222">// A translation ({-2*h,0,0}) and a rotation ({1,0,0} , {0,0.15,0.25},
-</FONT></I><I><FONT COLOR="#B22222">// Pi/2) can be combined:
-</FONT></I>
-Extrude Surface {news-1, {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , Pi/2}{ 
-  Layers {10,9004,1}; Recombine; 
-};
-
-Physical Volume(101) = {9000:9004};
-
-<I><FONT COLOR="#B22222">// All interactive options can also be set directly in the input file.
-</FONT></I><I><FONT COLOR="#B22222">// For example, the following lines define a global characteristic
-</FONT></I><I><FONT COLOR="#B22222">// length factor, redefine some background colors, disable the display
-</FONT></I><I><FONT COLOR="#B22222">// of the axes, and select an initial viewpoint in XYZ mode (disabling
-</FONT></I><I><FONT COLOR="#B22222">// the interactive trackball-like rotation mode):
-</FONT></I>
-Mesh.CharacteristicLengthFactor = 4;
-General.Color.Background = {120,120,120};
-General.Color.Foreground = {255,255,255};
-General.Color.Text = White;
-Geometry.Color.Points = Orange;
-General.Axes = 0;
-General.Trackball = 0;
-General.RotationCenterGravity = 0;
-General.RotationCenterX = 0;
-General.RotationCenterY = 0;
-General.RotationCenterZ = 0;
-General.RotationX = 10;
-General.RotationY = 70;
-General.TranslationX = -0.2;
-
-<I><FONT COLOR="#B22222">// Note: all colors can be defined literally or numerically, i.e.
-</FONT></I><I><FONT COLOR="#B22222">// 'General.Color.Background = Red' is equivalent to
-</FONT></I><I><FONT COLOR="#B22222">// 'General.Color.Background = {255,0,0}'. As with user-defined
-</FONT></I><I><FONT COLOR="#B22222">// variables, the options can be used either as right hand or left
-</FONT></I><I><FONT COLOR="#B22222">// hand sides, so that
-</FONT></I>
-Geometry.Color.Surfaces = Geometry.Color.Points;
-
-<I><FONT COLOR="#B22222">// will assign the color of the surfaces in the geometry to the same
-</FONT></I><I><FONT COLOR="#B22222">// color as the points.
-</FONT></I>
-<I><FONT COLOR="#B22222">// A click on the '?'  button in the status bar of the graphic window
-</FONT></I><I><FONT COLOR="#B22222">// will dump all current options to the terminal. To save all
-</FONT></I><I><FONT COLOR="#B22222">// available options to a file, use the 'File-&gt;Save as-&gt;Gmsh options'
-</FONT></I><I><FONT COLOR="#B22222">// menu. To save the current options as the default options for all
-</FONT></I><I><FONT COLOR="#B22222">// future Gmsh sessions, use the 'Tools-&gt;Options-&gt;Save' button.
-</FONT></I></PRE>
-<HR>
-<A NAME="file5">
-<H1>t4.geo 5/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file4">prev</A>][<A HREF="#file6">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 4
- * 
- *  Built-in functions, Holes, Strings, Mesh color
- *
- *********************************************************************/</FONT></I>
-
-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 ;
-
-ccos = ( -h5*R1 + e2 * Hypot(h5,Hypot(e2,R1)) ) / (h5^2 + e2^2) ;
-ssin = Sqrt(1-ccos^2) ;
-
-Lc1 = 0.01 ;
-Lc2 = 0.003 ;
-
-<I><FONT COLOR="#B22222">// A whole set of operators can be used, which can be combined in all
-</FONT></I><I><FONT COLOR="#B22222">// the expressions. These operators are defined in a similar way to
-</FONT></I><I><FONT COLOR="#B22222">// their C or C++ equivalents (with the exception of '^'):
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">//   '-' (in both unary and binary versions, i.e. as in '-1' and '1-2')
-</FONT></I><I><FONT COLOR="#B22222">//   '!' (the negation)
-</FONT></I><I><FONT COLOR="#B22222">//   '+'
-</FONT></I><I><FONT COLOR="#B22222">//   '*'
-</FONT></I><I><FONT COLOR="#B22222">//   '/'
-</FONT></I><I><FONT COLOR="#B22222">//   '%' (the rest of the integer division)
-</FONT></I><I><FONT COLOR="#B22222">//   '&lt;'
-</FONT></I><I><FONT COLOR="#B22222">//   '&gt;'
-</FONT></I><I><FONT COLOR="#B22222">//   '&lt;='
-</FONT></I><I><FONT COLOR="#B22222">//   '&gt;='
-</FONT></I><I><FONT COLOR="#B22222">//   '=='
-</FONT></I><I><FONT COLOR="#B22222">//   '!='
-</FONT></I><I><FONT COLOR="#B22222">//   '&amp;&amp;' (and)
-</FONT></I><I><FONT COLOR="#B22222">//   '||' (or)
-</FONT></I><I><FONT COLOR="#B22222">//   '||' (or)
-</FONT></I><I><FONT COLOR="#B22222">//   '^' (power)
-</FONT></I><I><FONT COLOR="#B22222">//   '?' ':' (the ternary operator)
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// Grouping is done, as usual, with parentheses.
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// In addition to these operators, all C mathematical functions can
-</FONT></I><I><FONT COLOR="#B22222">// also be used (note the first capital letter), i.e.
-</FONT></I><I><FONT COLOR="#B22222">// 
-</FONT></I><I><FONT COLOR="#B22222">//   Exp(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Log(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Log10(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Sqrt(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Sin(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Asin(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Cos(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Acos(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Tan(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Atan(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Atan2(x,y)
-</FONT></I><I><FONT COLOR="#B22222">//   Sinh(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Cosh(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Tanh(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Fabs(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Floor(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Ceil(x)
-</FONT></I><I><FONT COLOR="#B22222">//   Fmod(x,y)
-</FONT></I><I><FONT COLOR="#B22222">// 
-</FONT></I><I><FONT COLOR="#B22222">// as well as a series of other functions:
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">//   Hypot(x,y)   computes Sqrt(x^2+y^2)
-</FONT></I><I><FONT COLOR="#B22222">//   Rand(x)      generates a random number in [0,x]
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// The only predefined constant in Gmsh is Pi.
-</FONT></I>
-Point(1) = { -e1-e2, 0.0  , 0.0 , Lc1};
-Point(2) = { -e1-e2, h1   , 0.0 , Lc1};
-Point(3) = { -e3-r , h1   , 0.0 , Lc2};
-Point(4) = { -e3-r , h1+r , 0.0 , Lc2};
-Point(5) = { -e3   , h1+r , 0.0 , Lc2};
-Point(6) = { -e3   , h1+h2, 0.0 , Lc1};
-Point(7) = {  e3   , h1+h2, 0.0 , Lc1};
-Point(8) = {  e3   , h1+r , 0.0 , Lc2};
-Point(9) = {  e3+r , h1+r , 0.0 , Lc2};
-Point(10)= {  e3+r , h1   , 0.0 , Lc2};
-Point(11)= {  e1+e2, h1   , 0.0 , Lc1};
-Point(12)= {  e1+e2, 0.0  , 0.0 , Lc1};
-Point(13)= {  e2   , 0.0  , 0.0 , Lc1};
-
-Point(14)= {  R1 / ssin , h5+R1*ccos, 0.0 , Lc2};
-Point(15)= {  0.0       , h5        , 0.0 , Lc2};
-Point(16)= { -R1 / ssin , h5+R1*ccos, 0.0 , Lc2};
-Point(17)= { -e2        , 0.0       , 0.0 , Lc1};
-
-Point(18)= { -R2  , h1+h3   , 0.0 , Lc2};
-Point(19)= { -R2  , h1+h3+h4, 0.0 , Lc2};
-Point(20)= {  0.0 , h1+h3+h4, 0.0 , Lc2};
-Point(21)= {  R2  , h1+h3+h4, 0.0 , Lc2};
-Point(22)= {  R2  , h1+h3   , 0.0 , Lc2};
-Point(23)= {  0.0 , h1+h3   , 0.0 , Lc2};
-
-Point(24)= {  0 , h1+h3+h4+R2, 0.0 , Lc2};
-Point(25)= {  0 , h1+h3-R2,    0.0 , Lc2};
-
-Line(1)  = {1 ,17};
-Line(2)  = {17,16};
-
-<I><FONT COLOR="#B22222">// All curves are not straight lines... Circles are defined by a list
-</FONT></I><I><FONT COLOR="#B22222">// of three point numbers, which represent the starting point, the
-</FONT></I><I><FONT COLOR="#B22222">// center and the end point, respectively. All circles have to be
-</FONT></I><I><FONT COLOR="#B22222">// defined in the trigonometric (counter-clockwise) sense.  Note that
-</FONT></I><I><FONT COLOR="#B22222">// the 3 points should not be aligned (otherwise the plane in which
-</FONT></I><I><FONT COLOR="#B22222">// the circle lies has to be defined, by 'Circle(num) =
-</FONT></I><I><FONT COLOR="#B22222">// {start,center,end} Plane {nx,ny,nz}').
-</FONT></I>
-Circle(3) = {14,15,16};
-Line(4)  = {14,13};
-Line(5)  = {13,12};
-Line(6)  = {12,11};
-Line(7)  = {11,10};
-Circle(8) = { 8, 9,10};
-Line(9)  = { 8, 7};
-Line(10) = { 7, 6};
-Line(11) = { 6, 5};
-Circle(12) = { 3, 4, 5};
-Line(13) = { 3, 2};
-Line(14) = { 2, 1};
-Line(15) = {18,19};
-Circle(16) = {21,20,24};
-Circle(17) = {24,20,19};
-Circle(18) = {18,23,25};
-Circle(19) = {25,23,22};
-Line(20) = {21,22};
-
-Line Loop(21) = {17,-15,18,19,-20,16};
-Plane Surface(22) = {21};
-
-<I><FONT COLOR="#B22222">// The surface is made of two line loops, i.e. it has one hole:
-</FONT></I>
-Line Loop(23) = {11,-12,13,14,1,2,-3,4,5,6,7,-8,9,10};
-Plane Surface(24) = {23,21};
-
-Physical Surface(1) = {22};
-Physical Surface(2) = {24};
-
-<I><FONT COLOR="#B22222">// You can add some comments by simply embedding a post-processing
-</FONT></I><I><FONT COLOR="#B22222">// view with some strings...
-</FONT></I>
-View &quot;comments&quot; {
-  T2(10,15,0){&quot;File created on Fri Oct 18 23:50:20 2002&quot;};
-  T2(10,-10,0){&quot;Copyright (C) My Company&quot;};
-  T3(0,0.11,0,0){&quot;Hole&quot;};
-};
-
-<I><FONT COLOR="#B22222">// This will put the strings
-</FONT></I><I><FONT COLOR="#B22222">// - &quot;File ...&quot; 10 pixels from the left and 15 pixels from the top of
-</FONT></I><I><FONT COLOR="#B22222">//   the graphic window;
-</FONT></I><I><FONT COLOR="#B22222">// - &quot;Copyright ...&quot; 10 pixels from the left and 10 pixels from the
-</FONT></I><I><FONT COLOR="#B22222">//   bottom of the graphic window; and
-</FONT></I><I><FONT COLOR="#B22222">// - &quot;Hole&quot; in your model, at (x,y,z)=(0.0,0.11,0.0).
-</FONT></I>
-<I><FONT COLOR="#B22222">// You can also change the color of the mesh entities for each
-</FONT></I><I><FONT COLOR="#B22222">// curve/surface:
-</FONT></I>
-Color White{ Surface{ 22 } ; }
-Color Purple{ Surface{ 24 } ; }
-Color Red{ Line{ 1:14 } ; }
-Color Yellow{ Line{ 15:20 } ; }
-</PRE>
-<HR>
-<A NAME="file6">
-<H1>t5.geo 6/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file5">prev</A>][<A HREF="#file7">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 5
- * 
- *  Characteristic lengths, Arrays of variables, Functions, Loops
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// This defines some characteristic lengths:
-</FONT></I>
-lcar1 = .1;
-lcar2 = .0005;
-lcar3 = .075;
-
-<I><FONT COLOR="#B22222">// In order to change these lengths globally (without changing the
-</FONT></I><I><FONT COLOR="#B22222">// file), a global scaling factor for all characteristic lengths can
-</FONT></I><I><FONT COLOR="#B22222">// be specified on the command line with the option '-clscale' (or
-</FONT></I><I><FONT COLOR="#B22222">// with the option Mesh.CharacteristicLengthFactor). For example,
-</FONT></I><I><FONT COLOR="#B22222">// with:
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// &gt; gmsh t5 -clscale 1
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// this example produces a mesh of approximately 2000 nodes and
-</FONT></I><I><FONT COLOR="#B22222">// 10,000 tetrahedra (in 3 seconds on an alpha workstation running at
-</FONT></I><I><FONT COLOR="#B22222">// 666MHz). With 
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// &gt; gmsh t5 -clscale 0.2
-</FONT></I><I><FONT COLOR="#B22222">//
-</FONT></I><I><FONT COLOR="#B22222">// (i.e. with all characteristic lengths divided by 5), the mesh
-</FONT></I><I><FONT COLOR="#B22222">// counts approximately 170,000 nodes and one million tetrahedra
-</FONT></I><I><FONT COLOR="#B22222">// (and the computation takes 16 minutes on the same machine :-( So
-</FONT></I><I><FONT COLOR="#B22222">// there is still a lot of work to do to achieve decent performance
-</FONT></I><I><FONT COLOR="#B22222">// with Gmsh...)
-</FONT></I>
-Point(1) = {0.5,0.5,0.5,lcar2}; Point(2) = {0.5,0.5,0,lcar1};
-Point(3) = {0,0.5,0.5,lcar1};   Point(4) = {0,0,0.5,lcar1}; 
-Point(5) = {0.5,0,0.5,lcar1};   Point(6) = {0.5,0,0,lcar1};
-Point(7) = {0,0.5,0,lcar1};     Point(8) = {0,1,0,lcar1};
-Point(9) = {1,1,0,lcar1};       Point(10) = {0,0,1,lcar1};
-Point(11) = {0,1,1,lcar1};      Point(12) = {1,1,1,lcar1};
-Point(13) = {1,0,1,lcar1};      Point(14) = {1,0,0,lcar1};
-
-Line(1) = {8,9};    Line(2) = {9,12};  Line(3) = {12,11};
-Line(4) = {11,8};   Line(5) = {9,14};  Line(6) = {14,13};
-Line(7) = {13,12};  Line(8) = {11,10}; Line(9) = {10,13};
-Line(10) = {10,4};  Line(11) = {4,5};  Line(12) = {5,6};
-Line(13) = {6,2};   Line(14) = {2,1};  Line(15) = {1,3};
-Line(16) = {3,7};   Line(17) = {7,2};  Line(18) = {3,4};
-Line(19) = {5,1};   Line(20) = {7,8};  Line(21) = {6,14};
-
-Line Loop(22) = {11,19,15,18};       Plane Surface(23) = {22};
-Line Loop(24) = {16,17,14,15};       Plane Surface(25) = {24};
-Line Loop(26) = {-17,20,1,5,-21,13}; Plane Surface(27) = {26};
-Line Loop(28) = {4,1,2,3};           Plane Surface(29) = {28};
-Line Loop(30) = {7,-2,5,6};          Plane Surface(31) = {30};
-Line Loop(32) = {6,-9,10,11,12,21};  Plane Surface(33) = {32};
-Line Loop(34) = {7,3,8,9};           Plane Surface(35) = {34};
-Line Loop(36) = {10,-18,16,20,-4,8}; Plane Surface(37) = {36};
-Line Loop(38) = {-14,-13,-12,19};    Plane Surface(39) = {38};
-
-<I><FONT COLOR="#B22222">// Instead of using included files, one can also define functions. In
-</FONT></I><I><FONT COLOR="#B22222">// the following function, the reserved variable 'newp' is used, which
-</FONT></I><I><FONT COLOR="#B22222">// automatically selects a new point number. This number is chosen as
-</FONT></I><I><FONT COLOR="#B22222">// the highest current point number, plus one. Analogously to 'newp',
-</FONT></I><I><FONT COLOR="#B22222">// there exists a variable 'newreg' which selects the highest number
-</FONT></I><I><FONT COLOR="#B22222">// of all entities other than points, plus one.
-</FONT></I>
-<I><FONT COLOR="#B22222">// Note: there are no local variables. This will be changed in a
-</FONT></I><I><FONT COLOR="#B22222">// future version of Gmsh.
-</FONT></I>
-Function CheeseHole 
-
-  p1 = newp; Point(p1) = {x,  y,  z,  lcar3} ;
-  p2 = newp; Point(p2) = {x+r,y,  z,  lcar3} ;
-  p3 = newp; Point(p3) = {x,  y+r,z,  lcar3} ;
-  p4 = newp; Point(p4) = {x,  y,  z+r,lcar3} ;
-  p5 = newp; Point(p5) = {x-r,y,  z,  lcar3} ;
-  p6 = newp; Point(p6) = {x,  y-r,z,  lcar3} ;
-  p7 = newp; Point(p7) = {x,  y,  z-r,lcar3} ;
-
-  c1 = newreg; Circle(c1) = {p2,p1,p7};
-  c2 = newreg; Circle(c2) = {p7,p1,p5};
-  c3 = newreg; Circle(c3) = {p5,p1,p4};
-  c4 = newreg; Circle(c4) = {p4,p1,p2};
-  c5 = newreg; Circle(c5) = {p2,p1,p3};
-  c6 = newreg; Circle(c6) = {p3,p1,p5};
-  c7 = newreg; Circle(c7) = {p5,p1,p6};
-  c8 = newreg; Circle(c8) = {p6,p1,p2};
-  c9 = newreg; Circle(c9) = {p7,p1,p3};
-  c10 = newreg; Circle(c10) = {p3,p1,p4};
-  c11 = newreg; Circle(c11) = {p4,p1,p6};
-  c12 = newreg; Circle(c12) = {p6,p1,p7};
-
-<I><FONT COLOR="#B22222">// All surfaces are not plane... Here is the way to define ruled
-</FONT></I><I><FONT COLOR="#B22222">// surfaces (which have 3 or 4 borders):
-</FONT></I>
-  l1 = newreg; Line Loop(l1) = {c5,c10,c4};   Ruled Surface(newreg) = {l1};
-  l2 = newreg; Line Loop(l2) = {c9,-c5,c1};   Ruled Surface(newreg) = {l2};
-  l3 = newreg; Line Loop(l3) = {-c12,c8,c1};  Ruled Surface(newreg) = {l3};
-  l4 = newreg; Line Loop(l4) = {c8,-c4,c11};  Ruled Surface(newreg) = {l4};
-  l5 = newreg; Line Loop(l5) = {-c10,c6,c3};  Ruled Surface(newreg) = {l5};
-  l6 = newreg; Line Loop(l6) = {-c11,-c3,c7}; Ruled Surface(newreg) = {l6};
-  l7 = newreg; Line Loop(l7) = {c2,c7,c12};   Ruled Surface(newreg) = {l7};
-  l8 = newreg; Line Loop(l8) = {-c6,-c9,c2};  Ruled Surface(newreg) = {l8};
-
-<I><FONT COLOR="#B22222">// Warning: surface meshes are generated by projecting a 2D mesh in
-</FONT></I><I><FONT COLOR="#B22222">// the mean plane of the surface. This gives nice results only if the
-</FONT></I><I><FONT COLOR="#B22222">// surface curvature is small enough. Otherwise you will have to cut
-</FONT></I><I><FONT COLOR="#B22222">// the surface in pieces.
-</FONT></I>
-<I><FONT COLOR="#B22222">// Arrays of variables can be manipulated in the same way as classical
-</FONT></I><I><FONT COLOR="#B22222">// variables. Warning: accessing an uninitialized element in an array
-</FONT></I><I><FONT COLOR="#B22222">// will produce an unpredictable result. Note that whole arrays can
-</FONT></I><I><FONT COLOR="#B22222">// also be instantly initialized (e.g. l[]={1,2,7} is valid).
-</FONT></I>
-  theloops[t] = newreg ; 
-
-  Surface Loop(theloops[t]) = {l8+1, l5+1, l1+1, l2+1, -(l3+1), -(l7+1), l6+1, l4+1};
-
-  thehole = newreg ; 
-  Volume(thehole) = theloops[t] ;
-
-Return
-
-
-x = 0 ; y = 0.75 ; z = 0 ; r = 0.09 ;
-
-<I><FONT COLOR="#B22222">// A For loop is used to generate five holes in the cube:
-</FONT></I>
-For t In {1:5}
-
-  x += 0.166 ; 
-  z += 0.166 ; 
-
-<I><FONT COLOR="#B22222">// This command calls the function CheeseHole. Note that, instead of
-</FONT></I><I><FONT COLOR="#B22222">// defining a function, we could have defined a file containing the
-</FONT></I><I><FONT COLOR="#B22222">// same code, and used the Include command to include this file.
-</FONT></I>
-  Call CheeseHole ;
-
-<I><FONT COLOR="#B22222">// A physical volume is defined for each cheese hole
-</FONT></I>
-  Physical Volume (t) = thehole ;
- 
-<I><FONT COLOR="#B22222">// The Printf function permits to print the value of variables on the
-</FONT></I><I><FONT COLOR="#B22222">// terminal, in a way similar to the 'printf' C function:
-</FONT></I>
-  Printf(&quot;The cheese hole %g (center = {%g,%g,%g}, radius = %g) has number %g!&quot;,
-	 t, x, y, z, r, thehole) ;
-
-<I><FONT COLOR="#B22222">// Note: All Gmsh variables are treated internally as double precision
-</FONT></I><I><FONT COLOR="#B22222">// numbers. The format string should thus only contain valid double
-</FONT></I><I><FONT COLOR="#B22222">// precision number format specifiers (see the C or C++ language
-</FONT></I><I><FONT COLOR="#B22222">// reference for more details).
-</FONT></I>
-EndFor
-
-<I><FONT COLOR="#B22222">// This is the surface loop for the exterior surface of the cube:
-</FONT></I>
-theloops[0] = newreg ;
-
-Surface Loop(theloops[0]) = {35,31,29,37,33,23,39,25,27} ;
-
-<I><FONT COLOR="#B22222">// The volume of the cube, without the 5 cheese holes, is defined by 6
-</FONT></I><I><FONT COLOR="#B22222">// surface loops (the exterior surface and the five interior loops).
-</FONT></I><I><FONT COLOR="#B22222">// To reference an array of variables, its identifier is followed by
-</FONT></I><I><FONT COLOR="#B22222">// '[]':
-</FONT></I>
-Volume(186) = {theloops[]} ;
-
-<I><FONT COLOR="#B22222">// This physical volume assigns the region number 10 to the tetrahedra
-</FONT></I><I><FONT COLOR="#B22222">// paving the cube (but not the holes, whose elements were tagged from
-</FONT></I><I><FONT COLOR="#B22222">// 1 to 5 in the 'For' loop)
-</FONT></I>
-Physical Volume (10) = 186 ;
-
-</PRE>
-<HR>
-<A NAME="file7">
-<H1>t6.geo 7/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file6">prev</A>][<A HREF="#file8">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 6
- * 
- *  Transfinite meshes
- *
- *********************************************************************/</FONT></I>
-
-r_int  = 0.05 ;
-r_ext  = 0.051 ;
-r_far  = 0.125 ;
-r_inf  = 0.4 ;
-phi1   = 30. * (Pi/180.) ;
-angl   = 45. * (Pi/180.) ;
-
-nbpt_phi   = 5 ; nbpt_int   = 20 ;
-nbpt_arc1  = 10 ; nbpt_arc2  = 10 ;
-nbpt_shell = 10 ; nbpt_far   = 25 ; nbpt_inf = 15 ;
-
-lc0 = 0.1 ; lc1 = 0.1 ; lc2 = 0.3 ;
-
-Point(1) = {0,     0, 0, lc0} ;
-Point(2) = {r_int, 0, 0, lc0} ;
-Point(3) = {r_ext, 0, 0, lc1} ;
-Point(4) = {r_far, 0, 0, lc2} ;
-Point(5) = {r_inf, 0, 0, lc2} ;
-Point(6) = {0, 0,  r_int, lc0} ;
-Point(7) = {0, 0,  r_ext, lc1} ;
-Point(8) = {0, 0,  r_far, lc2} ;
-Point(9) = {0, 0,  r_inf, lc2} ;
-
-Point(10) = {r_int*Cos(phi1), r_int*Sin(phi1), 0, lc0} ;
-Point(11) = {r_ext*Cos(phi1), r_ext*Sin(phi1), 0, lc1} ;
-Point(12) = {r_far*Cos(phi1), r_far*Sin(phi1), 0, lc2} ;
-Point(13) = {r_inf*Cos(phi1), r_inf*Sin(phi1), 0, lc2} ;
-
-Point(14) = {r_int/2,           0,   0,               lc2} ;
-Point(15) = {r_int/2*Cos(phi1), r_int/2*Sin(phi1), 0, lc2} ;
-Point(16) = {r_int/2,           0,                 r_int/2, lc2} ;
-Point(17) = {r_int/2*Cos(phi1), r_int/2*Sin(phi1), r_int/2, lc2} ;
-Point(18) = {0, 0,  r_int/2, lc2} ;
-Point(19) = {r_int*Cos(angl),           0,                         r_int*Sin(angl), lc2} ;
-Point(20) = {r_int*Cos(angl)*Cos(phi1), r_int*Cos(angl)*Sin(phi1), r_int*Sin(angl), lc2} ;
-Point(21) = {r_ext*Cos(angl),           0,                         r_ext*Sin(angl), lc2} ;
-Point(22) = {r_ext*Cos(angl)*Cos(phi1), r_ext*Cos(angl)*Sin(phi1), r_ext*Sin(angl), lc2} ;
-Point(23) = {r_far*Cos(angl),           0,                         r_far*Sin(angl), lc2} ;
-Point(24) = {r_far*Cos(angl)*Cos(phi1), r_far*Cos(angl)*Sin(phi1), r_far*Sin(angl), lc2} ;
-Point(25) = {r_inf,           0,                r_inf, lc2} ;
-Point(26) = {r_inf*Cos(phi1), r_inf*Sin(phi1),  r_inf, lc2} ;
-
-Circle(1) = {2,1,19};   Circle(2) = {19,1,6};   Circle(3) = {3,1,21};
-Circle(4) = {21,1,7};   Circle(5) = {4,1,23};   Circle(6) = {23,1,8};   
-Line(7) = {5,25};   Line(8) = {25,9};
-Circle(9) = {10,1,20};  Circle(10) = {20,1,6};  Circle(11) = {11,1,22};
-Circle(12) = {22,1,7};  Circle(13) = {12,1,24}; Circle(14) = {24,1,8};
-Line(15) = {13,26}; Line(16) = {26,9};
-Circle(17) = {19,1,20}; Circle(18) = {21,1,22}; Circle(19) = {23,1,24};
-Circle(20) = {25,1,26}; Circle(21) = {2,1,10};  Circle(22) = {3,1,11};  
-Circle(23) = {4,1,12};  Circle(24) = {5,1,13};
-
-Line(25) = {1,14};  Line(26) = {14,2};  Line(27) = {2,3};   Line(28) = {3,4};
-Line(29) = {4,5};   Line(30) = {1,15};  Line(31) = {15,10}; Line(32) = {10,11};
-Line(33) = {11,12}; Line(34) = {12,13}; Line(35) = {14,15}; Line(36) = {14,16};
-Line(37) = {15,17}; Line(38) = {16,17}; Line(39) = {18,16}; Line(40) = {18,17};
-Line(41) = {1,18};  Line(42) = {18,6};  Line(43) = {6,7};   Line(44) = {16,19};
-Line(45) = {19,21}; Line(46) = {21,23}; Line(47) = {23,25}; Line(48) = {17,20};
-Line(49) = {20,22}; Line(50) = {22,24}; Line(51) = {24,26}; Line(52) = {7,8};
-Line(53) = {8,9};
-
-Line Loop(54) = {39,-36,-25,41};  Ruled Surface(55) = {54};
-Line Loop(56) = {44,-1,-26,36};   Ruled Surface(57) = {56};
-Line Loop(58) = {3,-45,-1,27};    Ruled Surface(59) = {58};
-Line Loop(60) = {5,-46,-3,28};    Ruled Surface(61) = {60};
-Line Loop(62) = {7,-47,-5,29};    Ruled Surface(63) = {62};
-Line Loop(64) = {-2,-44,-39,42};  Ruled Surface(65) = {64};
-Line Loop(66) = {-4,-45,2,43};    Ruled Surface(67) = {66};
-Line Loop(68) = {-6,-46,4,52};    Ruled Surface(69) = {68};
-Line Loop(70) = {-8,-47,6,53};    Ruled Surface(71) = {70};
-Line Loop(72) = {-40,-41,30,37};  Ruled Surface(73) = {72};
-Line Loop(74) = {48,-9,-31,37};   Ruled Surface(75) = {74};
-Line Loop(76) = {49,-11,-32,9};   Ruled Surface(77) = {76};
-Line Loop(78) = {-50,-11,33,13};  Ruled Surface(79) = {78};
-Line Loop(80) = {-51,-13,34,15};  Ruled Surface(81) = {80};
-Line Loop(82) = {10,-42,40,48};   Ruled Surface(83) = {82};
-Line Loop(84) = {12,-43,-10,49};  Ruled Surface(85) = {84};
-Line Loop(86) = {14,-52,-12,50};  Ruled Surface(87) = {86};
-Line Loop(88) = {16,-53,-14,51};  Ruled Surface(89) = {88};
-Line Loop(90) = {-30,25,35};      Ruled Surface(91) = {90};
-Line Loop(92) = {-40,39,38};      Ruled Surface(93) = {92};
-Line Loop(94) = {37,-38,-36,35};  Ruled Surface(95) = {94};
-Line Loop(96) = {-48,-38,44,17};  Ruled Surface(97) = {96};
-Line Loop(98) = {18,-49,-17,45};  Ruled Surface(99) = {98};
-Line Loop(100) = {19,-50,-18,46}; Ruled Surface(101) = {100};
-Line Loop(102) = {20,-51,-19,47}; Ruled Surface(103) = {102};
-Line Loop(104) = {-2,17,10};      Ruled Surface(105) = {104};
-Line Loop(106) = {-9,-21,1,17};   Ruled Surface(107) = {106};
-Line Loop(108) = {-4,18,12};      Ruled Surface(109) = {108};
-Line Loop(110) = {-11,-22,3,18};  Ruled Surface(111) = {110};
-Line Loop(112) = {-13,-23,5,19};  Ruled Surface(113) = {112};
-Line Loop(114) = {-6,19,14};      Ruled Surface(115) = {114};
-Line Loop(116) = {-15,-24,7,20};  Ruled Surface(117) = {116};
-Line Loop(118) = {-8,20,16};      Ruled Surface(119) = {118};
-Line Loop(120) = {-31,-35,26,21}; Ruled Surface(121) = {120};
-Line Loop(122) = {32,-22,-27,21}; Ruled Surface(123) = {122};
-Line Loop(124) = {33,-23,-28,22}; Ruled Surface(125) = {124};
-Line Loop(126) = {34,-24,-29,23}; Ruled Surface(127) = {126};
-
-Surface Loop(128) = {93,-73,-55,95,-91};         Volume(129) = {128}; <I><FONT COLOR="#B22222">// int
-</FONT></I>Surface Loop(130) = {107,-75,-97,95,57,121};     Volume(131) = {130}; <I><FONT COLOR="#B22222">// int b
-</FONT></I>Surface Loop(132) = {105,-65,-97,-83,-93};       Volume(133) = {132}; <I><FONT COLOR="#B22222">// int h
-</FONT></I>Surface Loop(134) = {99,-111,77,123,59,107};     Volume(135) = {134}; <I><FONT COLOR="#B22222">// shell b
-</FONT></I>Surface Loop(136) = {99,-109,67,105,85};         Volume(137) = {136}; <I><FONT COLOR="#B22222">// shell h
-</FONT></I>Surface Loop(138) = {113,79,-101,-111,-125,-61}; Volume(139) = {138}; <I><FONT COLOR="#B22222">// ext b
-</FONT></I>Surface Loop(140) = {115,-69,-101,-87,-109};     Volume(141) = {140}; <I><FONT COLOR="#B22222">// ext h
-</FONT></I>Surface Loop(142) = {103,-117,-81,113,127,63};   Volume(143) = {142}; <I><FONT COLOR="#B22222">// inf b
-</FONT></I>Surface Loop(144) = {89,-119,71,103,115};        Volume(145) = {144}; <I><FONT COLOR="#B22222">// inf h
-</FONT></I>
-<I><FONT COLOR="#B22222">// Transfinite line commands explicitly specify the number of points
-</FONT></I><I><FONT COLOR="#B22222">// and their distribution. 'Progression 2' means that each line
-</FONT></I><I><FONT COLOR="#B22222">// element in the series will be twice as long as the preceding one.
-</FONT></I>
-Transfinite Line{35,21,22,23,24,38,17,18,19,20}   = nbpt_phi ;
-Transfinite Line{31,26,48,44,42}                  = nbpt_int Using Progression 0.88;
-Transfinite Line{41,37,36,9,11,1,3,13,5,15,7}     = nbpt_arc1 ;
-Transfinite Line{30,25,40,39,10,2,12,4,14,6,16,8} = nbpt_arc2 ;
-Transfinite Line{32,27,49,45,43}                  = nbpt_shell ;
-Transfinite Line{33,28,46,50,52}                  = nbpt_far Using Progression 1.2 ;
-Transfinite Line{34,29,51,47,53}                  = nbpt_inf Using Progression 1.05;
-
-<I><FONT COLOR="#B22222">// 2D transfinite entities are defined in respect to points. The
-</FONT></I><I><FONT COLOR="#B22222">// ordering of the points defines the ordering of the mesh elements.
-</FONT></I><I><FONT COLOR="#B22222">// A transfinite surface can have either 3 or 4 sides.
-</FONT></I>
-Transfinite Surface{55} = {1,14,16,18};
-Transfinite Surface{57} = {14,2,19,16};
-Transfinite Surface{59} = {2,3,21,19};
-Transfinite Surface{61} = {3,4,23,21};
-Transfinite Surface{63} = {4,5,25,23};
-Transfinite Surface{73} = {1,15,17,18};
-Transfinite Surface{75} = {15,10,20,17};
-Transfinite Surface{77} = {10,11,22,20};
-Transfinite Surface{79} = {11,12,24,22};
-Transfinite Surface{81} = {12,13,26,24};
-Transfinite Surface{65} = {18,16,19,6};
-Transfinite Surface{67} = {6,19,21,7};
-Transfinite Surface{69} = {7,21,23,8};
-Transfinite Surface{71} = {8,23,25,9};
-Transfinite Surface{83} = {17,18,6,20};
-Transfinite Surface{85} = {20,6,7,22};
-Transfinite Surface{87} = {22,7,8,24};
-Transfinite Surface{89} = {24,8,9,26};
-Transfinite Surface{91} = {1,14,15};
-Transfinite Surface{95} = {15,14,16,17};
-Transfinite Surface{93} = {18,16,17};
-Transfinite Surface{121} = {15,14,2,10};
-Transfinite Surface{97} = {17,16,19,20};
-Transfinite Surface{123} = {10,2,3,11};
-Transfinite Surface{99} = {20,19,21,22};
-Transfinite Surface{107} = {10,2,19,20};
-Transfinite Surface{105} = {6,20,19};
-Transfinite Surface{109} = {7,22,21};
-Transfinite Surface{111} = {11,3,21,22};
-Transfinite Surface{101} = {22,21,23,24};
-Transfinite Surface{125} = {11,3,4,12};
-Transfinite Surface{115} = {8,24,23};
-Transfinite Surface{113} = {24,12,4,23};
-Transfinite Surface{127} = {12,13,5,4};
-Transfinite Surface{103} = {24,23,25,26};
-Transfinite Surface{119} = {9,26,25};
-Transfinite Surface{117} = {13,5,25,26};
-
-<I><FONT COLOR="#B22222">// As with Extruded meshes, the Recombine command tells Gmsh to
-</FONT></I><I><FONT COLOR="#B22222">// recombine the simplices into quadrangles, prisms or hexahedra when
-</FONT></I><I><FONT COLOR="#B22222">// possible. A colon in a list acts as in the 'For' loop: all surfaces
-</FONT></I><I><FONT COLOR="#B22222">// having numbers between 55 and 127 are considered.
-</FONT></I>
-Recombine Surface {55:127};
-
-<I><FONT COLOR="#B22222">// 3D transfinite entities are defined in respect to points. The
-</FONT></I><I><FONT COLOR="#B22222">// ordering of the points defines the ordering of the mesh elements.
-</FONT></I><I><FONT COLOR="#B22222">// A transfinite volume can have either 6 or 8 faces.
-</FONT></I>
-Transfinite Volume{129} = {1,14,15,18,16,17};
-Transfinite Volume{131} = {17,16,14,15,20,19,2,10};
-Transfinite Volume{133} = {18,17,16,6,20,19};
-Transfinite Volume{135} = {10,2,19,20,11,3,21,22};
-Transfinite Volume{137} = {6,20,19,7,22,21};
-Transfinite Volume{139} = {11,3,4,12,22,21,23,24};
-Transfinite Volume{141} = {7,22,21,8,24,23};
-Transfinite Volume{143} = {12,4,5,13,24,23,25,26};
-Transfinite Volume{145} = {8,24,23,9,26,25};
-
-VolInt           = 1000 ;
-SurfIntPhi0      = 1001 ;
-SurfIntPhi1      = 1002 ;
-SurfIntZ0        = 1003 ;
-
-VolShell         = 2000 ;
-SurfShellInt     = 2001 ;
-SurfShellExt     = 2002 ;
-SurfShellPhi0    = 2003 ;
-SurfShellPhi1    = 2004 ;
-SurfShellZ0      = 2005 ;
-LineShellIntPhi0 = 2006 ;
-LineShellIntPhi1 = 2007 ;
-LineShellIntZ0   = 2008 ;
-PointShellInt    = 2009 ;
-
-VolExt           = 3000 ;
-VolInf           = 3001 ;
-SurfInf          = 3002 ;
-SurfExtInfPhi0   = 3003 ;
-SurfExtInfPhi1   = 3004 ;
-SurfExtInfZ0     = 3005 ;
-SurfInfRight     = 3006 ;
-SurfInfTop       = 3007 ;
-
-Physical Volume  (VolInt)           = {129,131,133} ;
-Physical Surface (SurfIntPhi0)      = {55,57,65} ;
-Physical Surface (SurfIntPhi1)      = {73,75,83} ;
-Physical Surface (SurfIntZ0)        = {91,121} ;
-
-Physical Volume  (VolShell)         = {135,137} ;
-Physical Surface (SurfShellInt)     = {105,107} ;
-Physical Surface (SurfShellExt)     = {109,111} ;
-Physical Surface (SurfShellPhi0)    = {59,67} ;
-Physical Surface (SurfShellPhi1)    = {77,85} ;
-Physical Surface (SurfShellZ0)      = {123} ;
-Physical Line    (LineShellIntPhi0) = {1,2} ;
-Physical Line    (LineShellIntPhi1) = {9,10} ;
-Physical Line    (LineShellIntZ0)   = 21 ;
-Physical Point   (PointShellInt)    = 6 ;
-
-Physical Volume  (VolExt)           = {139,141} ;
-Physical Volume  (VolInf)           = {143,145} ;
-Physical Surface (SurfExtInfPhi0)   = {61,63,69,71} ;
-Physical Surface (SurfExtInfPhi1)   = {79,87,81,89} ;
-Physical Surface (SurfExtInfZ0)     = {125,127} ;
-Physical Surface (SurfInfRight)     = {117} ;
-Physical Surface (SurfInfTop)       = {119} ;
-</PRE>
-<HR>
-<A NAME="file8">
-<H1>t7.geo 8/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file7">prev</A>][<A HREF="#file9">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 7
- * 
- *  Anisotropic meshes, Attractors
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// The anisotropic 2D mesh generator can be selected with:
-</FONT></I>
-Mesh.Algorithm = 2 ;
-
-<I><FONT COLOR="#B22222">// One can force a 4 step Laplacian smoothing of the mesh with:
-</FONT></I>
-Mesh.Smoothing = 4 ;
-
-lc = .1;
-
-Point(1) = {0.0,0.0,0,lc};
-Point(2) = {1.2,-0.2,0,lc};
-Point(3) = {1,1,0,lc};
-Point(4) = {0,1,0,lc};
-
-Line(1) = {3,2};
-Line(2) = {2,1};
-Line(3) = {1,4};
-Line(4) = {4,3};
-
-Line Loop(5) = {1,2,3,4};
-Plane Surface(6) = {5};
-
-Point(5) = {0.1,0.2,0,lc};
-Point(11) = {0.4,0.7,-1,lc};
-Point(12) = {0.5,0.5,0,lc};
-Point(22) = {0.9,0.9,1,lc};
-
-Line(5) = {11,22};
-
-Spline(7) = {4,5,12,2};
-
-<I><FONT COLOR="#B22222">// Isotropic and anisotropic attractors can be defined on points and
-</FONT></I><I><FONT COLOR="#B22222">// lines:
-</FONT></I>
-Attractor Point{1} = {0.01, 0.01, 2};
-
-Attractor Line{5} = {0.3, 0.01, 2};
-
-Attractor Line{7} = {0.1, 0.02, 8};
-
-</PRE>
-<HR>
-<A NAME="file9">
-<H1>t8.geo 9/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file8">prev</A>][<A HREF="#file10">next</A>]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 8
- * 
- *  Post-Processing, Scripting, Animations, Options
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// The first example is included, as well as some post-processing maps
-</FONT></I><I><FONT COLOR="#B22222">// (for the format of the post-processing maps, see the FORMATS file):
-</FONT></I>
-Include &quot;t1.geo&quot; ;
-Include &quot;view1.pos&quot; ;
-Include &quot;view1.pos&quot; ;
-Include &quot;view4.pos&quot; ;
-
-<I><FONT COLOR="#B22222">// Some general options are set (all the options specified
-</FONT></I><I><FONT COLOR="#B22222">// interactively can be directly specified in the ascii input
-</FONT></I><I><FONT COLOR="#B22222">// files. The current options can be saved into a file by selecting
-</FONT></I><I><FONT COLOR="#B22222">// 'File-&gt;Save as-&gt;Gmsh options').
-</FONT></I>
-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 ;
-
-<I><FONT COLOR="#B22222">// Some options are also specified for each post-processing view:
-</FONT></I>
-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 = &quot;Test...&quot; ;
-View[v2].IntervalsType = 2 ;
-View[v2].Type = 2;
-View[v2].IntervalsType = 2 ;
-View[v2].AutoPosition = 0;
-View[v2].PositionX = 85;
-View[v2].PositionY = 50;
-View[v2].Width = 200;
-View[v2].Height = 130;
-
-View[v3].Type = 3;
-View[v3].RangeType = 2;
-View[v3].IntervalsType = 4 ;
-View[v3].ShowScale = 0;
-View[v3].Grid = 0;
-View[v3].CustomMin = View[v2].CustomMin;
-View[v3].CustomMax = View[v2].CustomMax;
-View[v3].AutoPosition = 0;
-View[v3].PositionX = View[v2].PositionX;
-View[v3].PositionY = View[v2].PositionY;
-View[v3].Width = View[v2].Width;
-View[v3].Height = View[v2].Height;
-
-<I><FONT COLOR="#B22222">// We loop from 1 to 255 with a step of 1 (to use a step different
-</FONT></I><I><FONT COLOR="#B22222">// from 1, just add a third argument in the list. For example, 'For
-</FONT></I><I><FONT COLOR="#B22222">// num In {0.5:1.5:0.1}' would increment num from 0.5 to 1.5 with a
-</FONT></I><I><FONT COLOR="#B22222">// step of 0.1).
-</FONT></I>
-t = 0 ;
-
-For num In {1:255}
-
-  View[v0].TimeStep = t ;
-  View[v1].TimeStep = t ;
-  View[v2].TimeStep = t ;
-  View[v3].TimeStep = t ;
-
-  t = (View[v0].TimeStep &lt; View[v0].NbTimeStep-1) ? t+1 : 0 ;
-  
-  View[v0].RaiseZ += 0.01*t ;
-
-  If (num == 3)
-    <I><FONT COLOR="#B22222">// We want to create 320x240 frames when num==3:
-</FONT></I>    General.GraphicsWidth = 320 ; 
-    General.GraphicsHeight = 240 ;
-  EndIf
-
-  <I><FONT COLOR="#B22222">// It is possible to nest loops:
-</FONT></I>  For num2 In {1:50}
-
-    General.RotationX += 10 ;
-    General.RotationY = General.RotationX / 3 ;
-    General.RotationZ += 0.1 ;
- 
-    Sleep 0.01; <I><FONT COLOR="#B22222">// sleep for 0.01 second
-</FONT></I>    Draw; <I><FONT COLOR="#B22222">// draw the scene
-</FONT></I>
-    If ((num == 3) &amp;&amp; (num2 &lt; 10))
-      <I><FONT COLOR="#B22222">// The Sprintf function permits to create complex strings using
-</FONT></I>      <I><FONT COLOR="#B22222">// variables (since all Gmsh variables are treated internally as
-</FONT></I>      <I><FONT COLOR="#B22222">// double precision numbers, the format should only contain valid
-</FONT></I>      <I><FONT COLOR="#B22222">// double precision number format specifiers):
-</FONT></I>      Print Sprintf(&quot;t8-0%g.gif&quot;, num2);
-      Print Sprintf(&quot;t8-0%g.jpg&quot;, num2);
-    EndIf
-
-    If ((num == 3) &amp;&amp; (num2 &gt;= 10))
-       Print Sprintf(&quot;t8-%g.gif&quot;, num2);
-       Print Sprintf(&quot;t8-%g.jpg&quot;, num2);
-    EndIf
-
-  EndFor
-
-  If(num == 3)
-    <I><FONT COLOR="#B22222">// We could make a system call to generate the mpeg (uncomment the
-</FONT></I>    <I><FONT COLOR="#B22222">// following of mpeg_encode is installed on your computer)
-</FONT></I>
-    <I><FONT COLOR="#B22222">// System &quot;mpeg_encode t8.par&quot; ;
-</FONT></I>  EndIf
-
-EndFor
-
-
-<I><FONT COLOR="#B22222">// Here is the list of available scripting commands:
-</FONT></I><I><FONT COLOR="#B22222">//  
-</FONT></I><I><FONT COLOR="#B22222">//  Merge string;                (to merge a file)
-</FONT></I><I><FONT COLOR="#B22222">//  MergeWithBoundingBox string; (to merge a file and force the recalculation
-</FONT></I><I><FONT COLOR="#B22222">//                                of the scene's bounding box)
-</FONT></I><I><FONT COLOR="#B22222">//  Draw;                        (to redraw the scene)
-</FONT></I><I><FONT COLOR="#B22222">//  Save string;                 (to save the mesh)
-</FONT></I><I><FONT COLOR="#B22222">//  Print string;                (to print the graphic window in the format
-</FONT></I><I><FONT COLOR="#B22222">//                                defined in Print.Format)
-</FONT></I><I><FONT COLOR="#B22222">//  Sleep expr;                  (to sleep during expr seconds)
-</FONT></I><I><FONT COLOR="#B22222">//  Delete View[int];            (to free the view int)
-</FONT></I><I><FONT COLOR="#B22222">//  Delete Meshes;               (to free all meshes)
-</FONT></I><I><FONT COLOR="#B22222">//  Duplicata View[int];         (to duplicate the view int)
-</FONT></I><I><FONT COLOR="#B22222">//  System string;               (to execute a system call)
-</FONT></I></PRE>
-<HR>
-<A NAME="file10">
-<H1>t9.geo 10/10</H1>
-[<A HREF="#top">top</A>][<A HREF="#file9">prev</A>][next]
-<PRE>
-<I><FONT COLOR="#B22222">/********************************************************************* 
- *
- *  Gmsh tutorial 9
- * 
- *  Post-Processing, Plugins
- *
- *********************************************************************/</FONT></I>
-
-<I><FONT COLOR="#B22222">// Plugins can be added to Gmsh in order to extend its
-</FONT></I><I><FONT COLOR="#B22222">// capabilities. For example, post-processing plugins can modify a
-</FONT></I><I><FONT COLOR="#B22222">// view, or create a new view based on previously loaded
-</FONT></I><I><FONT COLOR="#B22222">// views. Several default plugins are statically linked into Gmsh,
-</FONT></I><I><FONT COLOR="#B22222">// e.g. CutMap, CutPlane, CutSphere, Skin, Transform or Smooth.
-</FONT></I>
-<I><FONT COLOR="#B22222">// Let's load a three-dimensional scalar view
-</FONT></I>
-Include &quot;view3.pos&quot; ;
-
-<I><FONT COLOR="#B22222">// Plugins can be controlled in the same way as other options in
-</FONT></I><I><FONT COLOR="#B22222">// Gmsh. For example, the CutMap plugin (which extracts an isovalue
-</FONT></I><I><FONT COLOR="#B22222">// surface from a 3D scalar view) can either be called from the
-</FONT></I><I><FONT COLOR="#B22222">// graphical interface (right click on the view button, then
-</FONT></I><I><FONT COLOR="#B22222">// Plugins-&gt;CutMap), or from the command file:
-</FONT></I>
-Plugin(CutMap).A = 0.67 ; <I><FONT COLOR="#B22222">// iso-value level
-</FONT></I>Plugin(CutMap).iView = 0 ; <I><FONT COLOR="#B22222">// source view is View[0]
-</FONT></I>Plugin(CutMap).Run ; 
-
-<I><FONT COLOR="#B22222">// The following runs the CutPlane plugin:
-</FONT></I>
-Plugin(CutPlane).A = 0 ; 
-Plugin(CutPlane).B = 0.2 ; 
-Plugin(CutPlane).C = 1 ; 
-Plugin(CutPlane).D = 0 ; 
-Plugin(CutPlane).Run ; 
-
-View[0].Light = 1;
-View[0].IntervalsType = 2;
-View[0].NbIso = 6;
-View[0].SmoothNormals = 1;
-
-View[1].IntervalsType = 2;
-
-View[2].IntervalsType = 2;
-Draw;
-</PRE>
-<HR>
-<ADDRESS>Generated by <A HREF="http://www.iki.fi/~mtr/genscript/">GNU enscript 1.6.1</A>.</ADDRESS>
-</BODY>
-</HTML>
diff --git a/utils/gmsh.spec b/utils/gmsh.spec
index 04a98f770dc2166163e802c02d29dadf8960cef5..3665f1ad00b33cddeb99710a98f39ad3bb5b579b 100644
--- a/utils/gmsh.spec
+++ b/utils/gmsh.spec
@@ -32,24 +32,31 @@ and/or post-processor.
 %build
 make distrib-unix
 make utilities
+make doc-pdf
+make doc-info
 rm -rf CVS */CVS */*/CVS
 
 %install
 rm -rf $RPM_BUILD_ROOT
 mkdir -p $RPM_BUILD_ROOT/usr/bin
 mkdir -p $RPM_BUILD_ROOT/usr/share/man/man1
+mkdir -p $RPM_BUILD_ROOT/usr/share/info
 
 install -m 755 bin/gmsh $RPM_BUILD_ROOT/usr/bin/gmsh
 install -m 755 bin/dxf2geo $RPM_BUILD_ROOT/usr/bin/dxf2geo
 install -m 644 doc/gmsh.1 $RPM_BUILD_ROOT/usr/share/man/man1/gmsh.1
+install -m 644 doc/texinfo/gmsh.info* $RPM_BUILD_ROOT/usr/share/info/
+
+%post
+/sbin/install-info /usr/share/info/gmsh.info /usr/share/info/dir
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(-,root,root)
-%doc doc/COPYING doc/FORMATS doc/VERSIONS doc/FAQ doc/CONTRIBUTORS demos tutorial
+%doc doc/gmsh.pdf doc/COPYING doc/FORMATS doc/VERSIONS doc/FAQ doc/CONTRIBUTORS demos tutorial
 /usr/bin/gmsh
 /usr/bin/dxf2geo
 /usr/share/man/man1/gmsh*
-
+/usr/share/info/gmsh*