Skip to content
Snippets Groups Projects
Commit 3ed7168d authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

better definition for holes (suggested by gkmohan@gmail.com)
parent 25681f01
No related branches found
No related tags found
No related merge requests found
\input texinfo.tex @c -*-texinfo-*- \input texinfo.tex @c -*-texinfo-*-
@c $Id: gmsh.texi,v 1.132 2004-09-18 01:12:16 geuzaine Exp $ @c $Id: gmsh.texi,v 1.133 2004-10-04 01:07:43 geuzaine Exp $
@c @c
@c Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle @c Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
@c @c
...@@ -328,7 +328,7 @@ hexahedra and pyramids), arranged in such a way that if two of them ...@@ -328,7 +328,7 @@ 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 intersect, they do so along a face, an edge or a node, and never
otherwise. All the finite element meshes produced by Gmsh are considered as otherwise. All the finite element meshes produced by Gmsh are considered as
``unstructured'', even if they were generated in a ``structured'' way ``unstructured'', even if they were generated in a ``structured'' way
(e.g.@: by extrusion). This implies that the elementary geometrical elements (e.g., by extrusion). This implies that the elementary geometrical elements
are defined only by an ordered list of their nodes but that no predefined are defined only by an ordered list of their nodes but that no predefined
order relation is assumed between any two elements. order relation is assumed between any two elements.
...@@ -414,7 +414,7 @@ displacement maps. Post-processing functions include section computation, ...@@ -414,7 +414,7 @@ displacement maps. Post-processing functions include section computation,
offset, elevation, boundary and component extraction, color map and range offset, elevation, boundary and component extraction, color map and range
modification, animation, vector graphic output, etc. All post-processing modification, animation, vector graphic output, etc. All post-processing
options can be accessed either interactively or through the input ASCII text options can be accessed either interactively or through the input ASCII text
files. Scripting permits to automate all post-processing operations, e.g.@: files. Scripting permits to automate all post-processing operations, e.g.,
for the creation of animations. User-defined operations can also be for the creation of animations. User-defined operations can also be
performed on post-processing views through dynamically loadable plugins. performed on post-processing views through dynamically loadable plugins.
...@@ -441,7 +441,7 @@ parameterize these geometries. Gmsh's scripting language enables all ...@@ -441,7 +441,7 @@ parameterize these geometries. Gmsh's scripting language enables all
commands and command arguments to depend on previous calculations (see commands and command arguments to depend on previous calculations (see
@ref{Expressions}, and @ref{Geometry commands}); @ref{Expressions}, and @ref{Geometry commands});
@item @item
generate 1D, 2D and 3D simplicial (i.e.@: using line segments, triangles and generate 1D, 2D and 3D simplicial (i.e., using line segments, triangles and
tetrahedra) finite element meshes. The performance of the 1D and 2D tetrahedra) finite element meshes. The performance of the 1D and 2D
algorithms is pretty good; the 3D algorithm is still experimental and slow algorithms is pretty good; the 3D algorithm is still experimental and slow
(see @ref{Mesh module}, and @ref{Tutorial}); (see @ref{Mesh module}, and @ref{Tutorial});
...@@ -544,7 +544,7 @@ that metasyntactic variable definitions stay valid throughout the manual ...@@ -544,7 +544,7 @@ that metasyntactic variable definitions stay valid throughout the manual
@item @item
Keywords and literal symbols are printed like @code{this}. Keywords and literal symbols are printed like @code{this}.
@item @item
Metasyntactic variables (i.e.@: text bits that are not part of the syntax, Metasyntactic variables (i.e., text bits that are not part of the syntax,
but stand for other text bits) are printed like @var{this}. but stand for other text bits) are printed like @var{this}.
@item @item
A colon (@code{:}) after a metasyntactic variable separates the variable A colon (@code{:}) after a metasyntactic variable separates the variable
...@@ -751,7 +751,7 @@ Character expressions are defined as: ...@@ -751,7 +751,7 @@ Character expressions are defined as:
@end example @end example
@noindent The second case in this definition permits to take the @noindent The second case in this definition permits to take the
prefix of a string (e.g.@: for removing the extension from a file name). The prefix of a string (e.g., for removing the extension from a file name). The
third case permits to concatenate two character expressions, and the fourth third case permits to concatenate two character expressions, and the fourth
is an equivalent of the @code{sprintf} C function (where is an equivalent of the @code{sprintf} C function (where
@var{char-expression} is a format string that can contain floating point @var{char-expression} is a format string that can contain floating point
...@@ -898,7 +898,7 @@ argument. ...@@ -898,7 +898,7 @@ argument.
The evaluation priorities are summarized below@footnote{The affectation The evaluation priorities are summarized below@footnote{The affectation
operators are introduced in @ref{General commands}.} (from stronger to operators are introduced in @ref{General commands}.} (from stronger to
weaker, i.e.@: @code{*} has a highest evaluation priority than @code{+}). weaker, i.e., @code{*} has a highest evaluation priority than @code{+}).
Parentheses @code{()} may be used anywhere to change the order of Parentheses @code{()} may be used anywhere to change the order of
evaluation: evaluation:
...@@ -1455,7 +1455,9 @@ point of the arc; the second @var{expression} gives the identification ...@@ -1455,7 +1455,9 @@ point of the arc; the second @var{expression} gives the identification
number of the center of the ellipse; the third @var{expression} gives the number of the center of the ellipse; the third @var{expression} gives the
identification number of any point located on the major axis of the ellipse; identification number of any point located on the major axis of the ellipse;
the last @var{expression} gives the identification number of the end point the last @var{expression} gives the identification number of the end point
of the arc. (A deprecated synonym for @code{Ellipse} is @code{Ellipsis}.) of the arc.
(A deprecated synonym for @code{Ellipse} is @code{Ellipsis}.)
@item Line ( @var{expression} ) = @{ @var{expression}, @var{expression} @}; @item Line ( @var{expression} ) = @{ @var{expression}, @var{expression} @};
Creates a straight line segment. The @var{expression} inside the parentheses Creates a straight line segment. The @var{expression} inside the parentheses
...@@ -1524,9 +1526,14 @@ plane surface's identification number; the @var{expression-list} on the ...@@ -1524,9 +1526,14 @@ plane surface's identification number; the @var{expression-list} on the
right hand side should contain the identification numbers of all the line right hand side should contain the identification numbers of all the line
loops defining the surface. The first line loop defines the exterior loops defining the surface. The first line loop defines the exterior
boundary of the surface; all other line loops define holes in the surface. boundary of the surface; all other line loops define holes in the surface.
A line loop defining a hole should not have any lines in common with the
exterior line loop (in which case it is not a hole, and the two surfaces
should be defined separately). Likewise, a line loop defining a hole should
not have any lines in common with another line loop defining a hole in the
same surface (in which case the two line loops should be combined).
@item Ruled Surface ( @var{expression} ) = @{ @var{expression-list} @}; @item Ruled Surface ( @var{expression} ) = @{ @var{expression-list} @};
Creates a ruled surface, i.e.@: a surface that can be interpolated using Creates a ruled surface, i.e., a surface that can be interpolated using
transfinite interpolation. The @var{expression} inside the parentheses is transfinite interpolation. The @var{expression} inside the parentheses is
the ruled surface's identification number; the @var{expression-list} on the the ruled surface's identification number; the @var{expression-list} on the
right hand side should the identification number of a single line loop, right hand side should the identification number of a single line loop,
...@@ -1572,8 +1579,15 @@ Creates a volume. The @var{expression} inside the parentheses is the ...@@ -1572,8 +1579,15 @@ Creates a volume. The @var{expression} inside the parentheses is the
volume's identification number; the @var{expression-list} on the right hand volume's identification number; the @var{expression-list} on the right hand
side should contain the identification numbers of all the surface loops side should contain the identification numbers of all the surface loops
defining the volume. The first surface loop defines the exterior boundary of defining the volume. The first surface loop defines the exterior boundary of
the volume; all other surface loops define holes in the volume. (A the volume; all other surface loops define holes in the volume. A surface
deprecated synonym for @code{Volume} is @code{Complex Volume}.) 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).
(A deprecated synonym for @code{Volume} is @code{Complex Volume}.)
@item Physical Volume ( @var{expression} ) = @{ @var{expression-list} @}; @item Physical Volume ( @var{expression} ) = @{ @var{expression-list} @};
Creates a physical volume. The @var{expression} inside the parentheses is Creates a physical volume. The @var{expression} inside the parentheses is
...@@ -1693,7 +1707,7 @@ Here is a list of all other geometry commands currently available: ...@@ -1693,7 +1707,7 @@ Here is a list of all other geometry commands currently available:
@ftable @code @ftable @code
@item Coherence; @item Coherence;
Removes all duplicate elementary geometrical entities (e.g.@: points having Removes all duplicate elementary geometrical entities (e.g., points having
identical coordinates). Note that Gmsh executes the @code{Coherence} command identical coordinates). Note that Gmsh executes the @code{Coherence} command
automatically after each geometrical transformation, unless automatically after each geometrical transformation, unless
@code{Geometry.AutoCoherence} is set to zero (@pxref{Geometry options}). @code{Geometry.AutoCoherence} is set to zero (@pxref{Geometry options}).
...@@ -1772,6 +1786,10 @@ triangles by default, but quadrangles can be obtained by using the ...@@ -1772,6 +1786,10 @@ triangles by default, but quadrangles can be obtained by using the
tetrahedra, hexahedra, prisms and pyramids, depending on the type of the tetrahedra, hexahedra, prisms and pyramids, depending on the type of the
surface meshes they are based on. surface meshes they are based on.
@c todo: explain what happens if we have a degenerate geometry (incorrect
@c holes with surfaces in contact with the exterior shell, intersecting
@c primitives, etc.)
@menu @menu
* Elementary vs physical entities:: * Elementary vs physical entities::
* Mesh commands:: * Mesh commands::
...@@ -1812,7 +1830,7 @@ overlapping groups, and to control the orientation of the elements in these ...@@ -1812,7 +1830,7 @@ overlapping groups, and to control the orientation of the elements in these
groups. If physical entities are defined, the output mesh only contains groups. If physical entities are defined, the output mesh only contains
those elements that belong to physical entities. The introduction of such those elements that belong to physical entities. The introduction of such
physical entities in large models usually greatly facilitates the physical entities in large models usually greatly facilitates the
manipulation of the model (e.g.@: using `Tools->Visibility' in the GUI) and manipulation of the model (e.g., using `Tools->Visibility' in the GUI) and
the interfacing with external solvers. the interfacing with external solvers.
@c ------------------------------------------------------------------------- @c -------------------------------------------------------------------------
...@@ -1868,7 +1886,7 @@ element sizes. ...@@ -1868,7 +1886,7 @@ element sizes.
This method works with all the algorithms implemented in the mesh This method works with all the algorithms implemented in the mesh
module. The final element sizes are of course constrained by the structured module. The final element sizes are of course constrained by the structured
algorithms for which the element sizes are explicitly specified (e.g.@: algorithms for which the element sizes are explicitly specified (e.g.,
transfinite and extruded grids: see @ref{Structured grids}). transfinite and extruded grids: see @ref{Structured grids}).
@item @item
You can use geometrical ``attractors'', an elaborate version of the method You can use geometrical ``attractors'', an elaborate version of the method
...@@ -1984,7 +2002,9 @@ progression (@code{Progression 2} meaning for example that each line element ...@@ -1984,7 +2002,9 @@ progression (@code{Progression 2} meaning for example that each line element
in the series will be twice as long as the preceding one). The optional in the series will be twice as long as the preceding one). The optional
argument `@code{Using Bump @var{expression}}' instructs the transfinite argument `@code{Using Bump @var{expression}}' instructs the transfinite
algorithm to distribute the nodes with a refinement at both ends of the algorithm to distribute the nodes with a refinement at both ends of the
line. (A deprecated synonym for @code{Progression} is @code{Power}.) line.
(A deprecated synonym for @code{Progression} is @code{Power}.)
@item Transfinite Surface @{ @var{expression} @} = @{ @var{expression-list} @}; @item Transfinite Surface @{ @var{expression} @} = @{ @var{expression-list} @};
Selects the surface @var{expression} to be meshed with the 2D transfinite Selects the surface @var{expression} to be meshed with the 2D transfinite
...@@ -2086,20 +2106,20 @@ Five external solvers can be interfaced simultaneously with Gmsh. ...@@ -2086,20 +2106,20 @@ Five external solvers can be interfaced simultaneously with Gmsh.
If you just want to start a solver from the solver module, with no further If you just want to start a solver from the solver module, with no further
interactions between the solver and Gmsh, just edit the options relative to interactions between the solver and Gmsh, just edit the options relative to
one of the five available solvers (e.g.@: @code{Solver.Name0}, one of the five available solvers (e.g., @code{Solver.Name0},
@code{Solver.Executable0}, @dots{}; see @ref{Solver options}), and set the @code{Solver.Executable0}, @dots{}; see @ref{Solver options}), and set the
corresponding ``client-server'' option to zero corresponding ``client-server'' option to zero
(e.g.@: @code{Solver.ClientServer0 = 0}). This doesn't require any (e.g., @code{Solver.ClientServer0 = 0}). This doesn't require any
modification to be made to the solver. modification to be made to the solver.
If you want the solver to interact with Gmsh (for error messages, option If you want the solver to interact with Gmsh (for error messages, option
definitions, post-processing, etc.), you need to link your solver with the definitions, post-processing, etc.), you need to link your solver with the
@file{GmshClient.c} file and add the appropriate function calls inside your @file{GmshClient.c} file and add the appropriate function calls inside your
program. You can then proceed as in the previous case, but this time you program. You can then proceed as in the previous case, but this time you
should set the client-server option to 1 (e.g.@: @code{Solver.ClientServer0 should set the client-server option to 1 (e.g., @code{Solver.ClientServer0
= 1}), so that Gmsh and the solver can communicate through a Unix = 1}), so that Gmsh and the solver can communicate through a Unix
socket. See @ref{Solver example}, for an example of how to interface a C socket. See @ref{Solver example}, for an example of how to interface a C
solver. Bindings for solvers written in other languages (e.g.@: Perl) are solver. Bindings for solvers written in other languages (e.g., Perl) are
available on @value{GMSH-WEB}. available on @value{GMSH-WEB}.
@menu @menu
...@@ -2197,7 +2217,7 @@ and the abscissa is the time step. ...@@ -2197,7 +2217,7 @@ and the abscissa is the time step.
Although visualization is usually mostly an interactive task, Gmsh exposes Although visualization is usually mostly an interactive task, Gmsh exposes
all the post-processing commands and options to the user in its scripting all the post-processing commands and options to the user in its scripting
language to permit a complete automation of the post-processing process (see language to permit a complete automation of the post-processing process (see
e.g.@: @ref{t8.geo}, and @ref{t9.geo}). e.g., @ref{t8.geo}, and @ref{t9.geo}).
The two following sections summarize all available post-processing commands The two following sections summarize all available post-processing commands
and options. Most options apply to both 2D and 3D plots (colormaps, and options. Most options apply to both 2D and 3D plots (colormaps,
...@@ -2258,7 +2278,7 @@ Saves the the @var{expression}-th post-processing view in a file named ...@@ -2258,7 +2278,7 @@ Saves the the @var{expression}-th post-processing view in a file named
Creates a new post-processing view, named @code{"@var{string}"}. This is the Creates a new post-processing view, named @code{"@var{string}"}. This is the
easiest way to create a post-processing view, but also the least efficient easiest way to create a post-processing view, but also the least efficient
(the view is read through Gmsh's script parser, which can become quite slow (the view is read through Gmsh's script parser, which can become quite slow
if the view is large---e.g.@: with more than 100,000 elements). Though, if the view is large---e.g., with more than 100,000 elements). Though,
this ``parsed'' post-processing format (explained in detail in @ref{Gmsh this ``parsed'' post-processing format (explained in detail in @ref{Gmsh
parsed post-processing file format}) is very powerful for testing proposes, parsed post-processing file format}) is very powerful for testing proposes,
since all the values are @var{expressions}. Two other formats, better since all the values are @var{expressions}. Two other formats, better
...@@ -2490,7 +2510,7 @@ example with: ...@@ -2490,7 +2510,7 @@ example with:
Note that, even if it is often handy to define the variables and the points Note that, even if it is often handy to define the variables and the points
directly in the ASCII input files (you can use any text editor for this directly in the ASCII input files (you can use any text editor for this
purpose, e.g.@: Wordpad on Windows, or Emacs on Unix), it is almost always purpose, e.g., Wordpad on Windows, or Emacs on Unix), it is almost always
simpler to define the lines, the surfaces and the volumes interactively. To simpler to define the lines, the surfaces and the volumes interactively. To
do so, just follow the context dependent buttons in the Geometry module. For 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 example, to create a spline, select `Geometry' in the module menu, and then
...@@ -2502,7 +2522,7 @@ automatically added at the end of the currently opened project file. ...@@ -2502,7 +2522,7 @@ automatically added at the end of the currently opened project file.
Gmsh's second operating mode is the non-interactive mode. In this mode, Gmsh's second operating mode is the non-interactive mode. In this mode,
there is no graphical user interface, and all operations are performed there is no graphical user interface, and all operations are performed
without any user interaction@footnote{If you compile Gmsh without the without any user interaction@footnote{If you compile Gmsh without the
graphical user interface, i.e.@: with @code{./configure --disable-gui}, this graphical user interface, i.e., with @code{./configure --disable-gui}, this
is the only mode you have access to.}. To mesh the first tutorial in is the only mode you have access to.}. To mesh the first tutorial in
non-interactive mode, just type: non-interactive mode, just type:
...@@ -3138,7 +3158,7 @@ the same for all other kinds of values. ...@@ -3138,7 +3158,7 @@ the same for all other kinds of values.
For relatively small data sets Gmsh provides an additional post-processing For relatively small data sets Gmsh provides an additional post-processing
format, which is read by Gmsh's script parser. You can thus, for example, format, which is read by Gmsh's script parser. You can thus, for example,
embed small post-processing views directly into your geometrical embed small post-processing views directly into your geometrical
descriptions (see e.g.@: @ref{t4.geo}). This format is also useful for descriptions (see e.g., @ref{t4.geo}). This format is also useful for
testing purposes: its syntax is very permissive, and you can easily generate testing purposes: its syntax is very permissive, and you can easily generate
it by hand or on the fly. The format of the parsed post-processing file is it by hand or on the fly. The format of the parsed post-processing file is
the following: the following:
...@@ -3383,14 +3403,14 @@ to make the code easy to read/debug/maintain: ...@@ -3383,14 +3403,14 @@ to make the code easy to read/debug/maintain:
@enumerate @enumerate
@item @item
please enable full warnings for your compiler (e.g.@: add @code{-Wall} to please enable full warnings for your compiler (e.g., add @code{-Wall} to
@code{FLAGS} in the @file{variables} file); @code{FLAGS} in the @file{variables} file);
@item @item
always use the @code{Msg()} function to print information, errors, @dots{}; always use the @code{Msg()} function to print information, errors, @dots{};
@item @item
indent your files using @file{utils/misc/indent.sh}; indent your files using @file{utils/misc/indent.sh};
@item @item
if working on Windows, don't leave tabs in your files (e.g.@: untabify them if working on Windows, don't leave tabs in your files (e.g., untabify them
with @file{utils/misc/untabify.sh}). with @file{utils/misc/untabify.sh}).
@end enumerate @end enumerate
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment