| [Top] | [Contents] | [Index] | [ ? ] |
Christophe Geuzaine and Jean-François Remacle
Gmsh is an automatic 3D finite element mesh generator with build-in pre- and post-processing facilities. This is the Gmsh Reference Manual for Gmsh 2.3 (March, 29 2009).
Copying conditions Terms and conditions of use 1. Overview What is Gmsh? 2. How to read this reference manual? Which parts of this manual should you read (if any)? 3. Running Gmsh on your system How can you run Gmsh on your machine? 4. General tools Description of general commands and options 5. Geometry module Description of all Geometry commands 6. Mesh module Description of all Mesh commands 7. Solver module Description of all Solver commands 8. Post-processing module Description of all Post-Processing commands 9. File formats Input and output file formats A. Tutorial A step-by-step tutorial B. Options List of all available options C. Programming notes Notes for developers D. Random tips and tricks Tips and tricks to make your life easier E. Frequently asked questions The Gmsh FAQ F. Version history Changelog G. Copyright and credits Copyright information and list of contributors H. License Complete copy of the license Concept index Index of concepts Syntax index Index of reserved keywords in the Gmsh language
-- The Detailed Node Listing ---
Overview
How to read this reference manual?
2.1 Syntactic rules used in the manual
Running Gmsh on your system
3.1 Interactive mode 3.2 Non-interactive mode 3.3 Command-line options 3.4 Mouse actions 3.5 Keyboard shortcuts
General tools
4.1 Comments 4.2 Expressions 4.3 Operators 4.4 Built-in functions 4.5 User-defined functions 4.6 Loops and conditionals 4.7 General commands 4.8 General options
Expressions
4.2.1 Floating point expressions 4.2.2 Character expressions 4.2.3 Color expressions
Geometry module
5.1 Geometry commands 5.2 Geometry options
Geometry commands
5.1.1 Points 5.1.2 Lines 5.1.3 Surfaces 5.1.4 Volumes 5.1.5 Extrusions 5.1.6 Transformations 5.1.7 Miscellaneous
Mesh module
6.1 Choosing the right unstructured algorithm 6.2 Elementary vs. physical entities 6.3 Mesh commands 6.4 Mesh options
Mesh commands
6.3.1 Characteristic lengths 6.3.2 Structured grids 6.3.3 Miscellaneous
Solver module
7.1 Solver options 7.2 Solver example
Post-processing module
8.1 Post-processing commands 8.2 Post-processing plugins 8.3 Post-processing options
File formats
9.1 MSH ASCII file format 9.2 MSH binary file format 9.3 Node ordering 9.4 Legacy formats
Legacy formats
9.4.1 MSH file format version 1.0 (Legacy) 9.4.2 POS ASCII file format (Legacy) 9.4.3 POS binary file format (Legacy)
Tutorial
A.1 `t1.geo' A.2 `t2.geo' A.3 `t3.geo' A.4 `t4.geo' A.5 `t5.geo' A.6 `t6.geo' A.7 `t7.geo' A.8 `t8.geo' A.9 `t9.geo'
Options
B.1 General options list B.2 Geometry options list B.3 Mesh options list B.4 Solver options list B.5 Post-processing options list
Programming notes
C.1 Main code structure C.2 Coding style C.3 Option handling
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh is "free software"; this means that everyone is free to use it and to redistribute it on a free basis. Gmsh is not in the public domain; it is copyrighted and there are restrictions on its distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of Gmsh that they might get from you.
Specifically, we want to make sure that you have the right to give away copies of Gmsh, that you receive source code or else can get it if you want it, that you can change Gmsh or use pieces of Gmsh in new free programs, and that you know you can do these things.
To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies of Gmsh, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights.
Also, for our own protection, we must make certain that everyone finds out that there is no warranty for Gmsh. If Gmsh is modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation.
The precise conditions of the license for Gmsh are found in the General Public License that accompanies the source code (see section H. License). Further information about this license is available from the GNU Project webpage http://www.gnu.org/copyleft/gpl-faq.html. Detailed copyright information can be found in G. Copyright and credits.
The source code and various pre-compiled versions of Gmsh (for Unix, Windows and Mac OS) can be downloaded from the webpage http://geuz.org/gmsh/.
If you use Gmsh, we would appreciate that you mention it in your work. References, as well as the latest news about Gmsh development, are always available on http://geuz.org/gmsh/. Please send all Gmsh-related questions to the public Gmsh mailing list at gmsh@geuz.org.
If you want to integrate Gmsh into a closed-source software, or want to sell a modified closed-source version of Gmsh, please contact one of the authors. You can purchase a version of Gmsh under a different license, with "no strings attached" (for example allowing you to take parts of Gmsh and integrate them into your own proprietary code).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh is an automatic three-dimensional finite element mesh generator with built-in pre- and post-processing facilities. Its design goal is to provide a simple meshing tool for academic problems with parametric input and advanced visualization capabilities.
Gmsh is built around four modules: geometry, mesh, solver and post-processing. All geometrical, mesh, solver and post-processing instructions are prescribed either interactively using the graphical user interface (GUI) or in text files using Gmsh's own scripting language. Interactive actions generate language bits in the input files, and vice versa. This makes it possible to automate all treatments, using loops, conditionals and external system calls. A brief description of the four modules is given hereafter.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh uses a boundary representation ("BRep") to describe geometries. Models are created in a bottom-up flow by successively defining points, oriented lines (line segments, circles, ellipses, splines, ...), oriented surfaces (plane surfaces, ruled surfaces, triangulated surfaces, ...) and volumes. Compound groups of geometrical entities (called "physical groups") can also be defined, based on these elementary geometric entities. Gmsh's scripting language allows all geometrical entities to be fully parametrized.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A finite element mesh is a tessellation of a given subset of the three-dimensional space by elementary geometrical elements of various shapes (in Gmsh's case: lines, triangles, quadrangles, tetrahedra, prisms, hexahedra and pyramids), arranged in such a way that if two of them intersect, they do so along a face, an edge or a node, and never otherwise. All the finite element meshes produced by Gmsh are considered as "unstructured", even if they were generated in a "structured" way (e.g., by extrusion). This implies that the elementary geometrical elements are defined only by an ordered list of their nodes but that no predefined order relation is assumed between any two elements.
The mesh generation is performed in the same bottom-up flow as the geometry creation: lines are discretized first; the mesh of the lines is then used to mesh the surfaces; then the mesh of the surfaces is used to mesh the volumes. In this process, the mesh of an entity is only constrained by the mesh of its boundary(1). This automatically assures the conformity of the mesh when, for example, two surfaces share a common line. But this also implies that the discretization of an "isolated" (n-1)-th dimensional entity inside an n-th dimensional entity does not constrain the n-th dimensional mesh. Every meshing step is constrained by the characteristic length field, which can be uniform, specified by characteristic lengths associated with points in the geometry, or defined by general "fields" (a scalar field defined on another mesh using post-processing view, threshold fields associated with point or line "attractors", etc.).
For each meshing step, all structured mesh directives are executed first, and serve as additional constraints for the unstructured parts (2).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
External solvers can be interfaced with Gmsh through Unix or TCP/IP sockets, which permits to launch external computations and to collect and process the results directly from within Gmsh's post-processing module. The default solver interfaced with Gmsh is GetDP (http://www.geuz.org/getdp/). Examples on how to interface solvers written in C, C++, Perl and Python are available in the source distribution (in the `utils/solvers/' directory).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh can load and manipulate multiple post-processing scalar, vector or tensor maps along with the geometry and the mesh. Scalar fields are represented by iso-value lines/surfaces or color maps, while vector fields are represented by three-dimensional arrows or displacement maps. Post-processing functions include section computation, offset, elevation, boundary and component extraction, color map and range modification, animation, vector graphic output, etc. All the post-processing options can be accessed either interactively or through the input script files. Scripting permits to automate all post-processing operations, as for example to create animations. User-defined operations can also be performed on post-processing views through dynamically loadable plugins.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh is a (relatively) small program, and was principally developed "in academia, to solve academic problems"... Nevertheless, over the years, many people outside universities have found Gmsh useful in their day-to-day jobs. Here is a tentative list of what Gmsh does best:
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Due to its historical background and limited developer manpower, Gmsh has also some (a lot of?) weaknesses:
If you have the skills and some free time, feel free to join the project! We gladly accept any code contributions (see section C. Programming notes) to remedy the aforementioned (and all other) shortcomings...
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If you think you have found a bug in Gmsh, you can report it by electronic mail to the Gmsh mailing list at gmsh@geuz.org. Please send as precise a description of the problem as you can, including sample input files that produce the bug. Don't forget to mention both the version of Gmsh and the version of your operation system (see section 3.3 Command-line options to see how to get this information).
See E. Frequently asked questions, and the `TODO.txt' file in the distribution to see which problems we already know about.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh can be used at three levels:
You can skip most of this reference manual if you only want to use Gmsh at the first level (i.e., interactively with the GUI). Just read the next chapter (see section 3. Running Gmsh on your system) to learn how to launch Gmsh on your system, then go play with the GUI and run the tutorial files (see section A. Tutorial) bundled in the distribution. Screencasts that show how to use the GUI are available here: http://www.geuz.org/gmsh/screencasts/.
The aim of the reference manual is to explain everything you need to use Gmsh at the second level, i.e., using the built-in scripting language. A Gmsh script file is an ASCII text file that contains instructions in Gmsh's built-in scripting language. Such a file is interpreted by Gmsh's parser, and can be given any extension (or no extension at all). By convention, Gmsh uses the `.geo' extension for geometry scripts, and the `.pos' extension for parsed post-processing datasets. Once you master the tutorial (read the source files: they are heavily commented!), start reading chapter 4. General tools, then proceed with the next four chapters, which detail the syntax of the geometry, mesh, solver and post-processing scripting commands. You will see that most of the interactive actions in the GUI have a direct equivalent in the scripting language. If you want to use Gmsh as a pre- or post-processor for your own software, you will also want to learn about the non-scripting input/output files that Gmsh can read/write. In addition to Gmsh's native "MSH" file format (see section 9. File formats), Gmsh can read/write many standard mesh files, depending on how it was built: check the `File->Save As' menu for a list of available formats.
Finally, to use Gmsh at the third level (i.e., to link the Gmsh library with your own code), you will need to learn the internal Gmsh Application Programming Interface (API). No complete documentation of this API is available yet; a good starting point is C. Programming notes, which gives a short introduction to Gmsh's internal source code structure. Then have a look e.g. at `utils/misc/driver.cpp' in the source code.
2.1 Syntactic rules used in the manual
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here are the rules we tried to follow when writing this reference manual. Note that metasyntactic variable definitions stay valid throughout the manual (and not only in the sections where the definitions appear).
this.
:) after a metasyntactic variable separates the variable
from its definition.
< > pairs.
|.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
3.1 Interactive mode 3.2 Non-interactive mode 3.3 Command-line options 3.4 Mouse actions 3.5 Keyboard shortcuts
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To launch Gmsh in interactive mode, just double-click on the Gmsh icon, or type
> gmsh |
at your shell prompt in a terminal. 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 (see section A. Tutorial), select the `File->Open' menu, and choose `t1.geo' in the input field. When using a terminal, you can specify the file name directly on the command line, i.e.:
> gmsh t1.geo |
To perform the mesh generation, go to the mesh module (by selecting `Mesh' in the module menu) and choose the dimension in the context-dependent buttons (`1D' will mesh all the lines; `2D' will mesh all the surfaces--as well as all the lines if `1D' was not called before; `3D' will mesh all the volumes--and all the surfaces if `2D' was not called before). To save the resulting mesh in the current mesh format click on the `Save' button, or select the appropriate format and file name with the `File->Save As' menu. The default mesh file name is based on the name of the current active model, with an appended extension depending on the mesh format(3).
To create a new geometry or to modify an existing geometry, select 'Geometry' in the module menu, and follow the context-dependent buttons. For example, to create a spline, select `Elementary', `Add', `New' and `Spline'. You will then be asked to select a list of points, and to type e to finish the selection (or q to abort it). Once the interactive command is completed, a text string is automatically added at the end of the current script file. You can edit the script file by hand at any time by pressing the `Edit' button in the `Geometry' menu and then reloading the model by pressing `Reload'. For example, it is often faster to define variables and points directly in the script file, and then use the GUI to define the lines, the surfaces and the volumes interactively.
Several files can be loaded simultaneously in Gmsh. The first one defines the active model and the others are `merged' into this model. You can merge such files with the `File->Merge' menu, or by directly specifying the names of the files on the command line. For example, to merge the post-processing views contained in the files `view1.pos' and `view5.msh' together with the geometry of the first tutorial `t1.geo', you can type the following command:
> gmsh t1.geo view1.pos view5.msh |
In the Post-Processing module (select `Post-Processing' in the module menu), three buttons will appear, respectively labeled `A scalar map', `Nodal scalar map' and `Element 1 vector'. In this example the views contain several time steps: you can loop through them with the small "remote-control" icons at the bottom of the graphic window. A mouse click on the view name will toggle the visibility of the selected view, while a click on the arrow button on the right will provide access to the view's options.
Note that all the options specified interactively can also be directly specified in the script files. You can save the current options of the current active model with the `File->Save Options' menu. This will create a new option file with the same filename as the active model, but with an extra `.opt' extension added. The next time you open this model, the associated options will be automatically loaded, too. To save the current options as your default preferences for all future Gmsh sessions, use the `File->Save Default Options' menu instead. Finally, you can also save the current options in an arbitrary file by choosing the `Gmsh options' format in `File->Save As'.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh can be run non-interactively in `batch' mode, without GUI(4). For example, to mesh the first tutorial in batch mode, just type:
> gmsh t1.geo -2 |
To mesh the same example, but with the background mesh available in the file `bgmesh.pos', type:
> gmsh t1.geo -2 -bgm bgmesh.pos |
For the list of all command-line options, see 3.3 Command-line options.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Geometry options:
-0
-tol float
Mesh options:
-1, -2, -3
-part int
-saveall
-o file
-format string
-bin
-algo string
-smooth int
-optimize[_netgen]
-order int
-clscale float
-clmin float
-clmax float
-clcurv
-rand float
-bgm file
Post-processing options:
-noview
-link int
-combine
Display options:
-nodb
-fontsize int
-theme string
-display string
Other options:
-
-a, -g, -m, -s, -p
-pid
-listen
-v int
-nopopup
-string "string"
-option file
-convert files
-version
-info
-help
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In the following, for a 2 button mouse, Middle button = Shift+Left button. For a 1 button mouse, Middle button = Shift+Left button and Right button = Alt+Left button.
Move the mouse:
Left button:
Ctrl+Left button: Start a lasso zoom or a lasso selection/unselection
Middle button:
Ctrl+Middle button: Orthogonalize display
Right button:
Ctrl+Right button: Reset to default viewpoint
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(On Mac Ctrl is replaced by Cmd (the `Apple key') in the shortcuts below.)
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This chapter describes the general commands and options that can be used in Gmsh's script files. By "general", we mean "not specifically related to one of the geometry, mesh, solver or post-processing modules". Commands peculiar to these modules will be introduced in 5. Geometry module, 6. Mesh module, 7. Solver module, and 8. Post-processing module, respectively.
4.1 Comments 4.2 Expressions 4.3 Operators 4.4 Built-in functions 4.5 User-defined functions 4.6 Loops and conditionals 4.7 General commands 4.8 General options
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh script files support both C and C++ style comments:
/* and */ pairs is ignored;
// is ignored.
These commands won't have the described effects inside double quotes or inside keywords. Also note that `white space' (spaces, tabs, new line characters) is ignored inside all expressions.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The two constant types used in Gmsh scripts are real and string (there is no integer type). These types have the same meaning and syntax as in the C or C++ programming languages.
4.2.1 Floating point expressions 4.2.2 Character expressions 4.2.3 Color expressions
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Floating point expressions (or, more simply, "expressions") are denoted by the metasyntactic variable expression (remember the definition of the syntactic rules in 2.1 Syntactic rules used in the manual), and are evaluated during the parsing of the script file:
expression:
real |
string |
string [ expression ] |
# string [ ] |
( expression ) |
operator-unary-left expression |
expression operator-unary-right |
expression operator-binary expression |
expression operator-ternary-left expression operator-ternary-right expression |
built-in-function |
real-option |
GetValue("string", expression)
|
Such expressions are used in most of Gmsh's scripting commands. The third and fourth cases in this definition permit to extract one item from a list (see below) and get the size of a list, respectively. The operators operator-unary-left, operator-unary-right, operator-binary, operator-ternary-left and operator-ternary-right are defined in 4.3 Operators. For the definition of built-in-functions, see 4.4 Built-in functions. The various real-options are listed in B. Options.
The last case in the definition allows to ask the user for a value
interactively. For example, inserting GetValue("Value of parameter
alpha?", 5.76) in an input file will query the user for the value of a
certain parameter alpha, assuming the default value is 5.76. If the
option General.NoPopup is set (see section B.1 General options list), no
question is asked and the default value is automatically used.
List of expressions are also widely used, and are defined as:
expression-list: expression-list-item <, expression-list-item> ... |
with
expression-list-item:
expression |
expression : expression |
expression : expression : expression |
string [ ] |
string [ { expression-list } ] |
Point { expression } |
transform |
extrude
|
The second case in this last definition permits to create a list containing the range of numbers comprised between two expressions, with a unit incrementation step. The third case also permits to create a list containing the range of numbers comprised between two expressions, but with a positive or negative incrementation step equal to the third expression. The fourth case permits to reference an expression list. The fifth case permits to reference an expression sublist (whose elements are those corresponding to the indices provided by the expression-list). The sixth case permits to retrieve the coordinates of a given geometry point (see section 5.1.1 Points). The last two cases permit to retrieve the indices of entities created through geometrical transformations and extrusions (see 5.1.6 Transformations, and 5.1.5 Extrusions).
To see the practical use of such expressions, have a look at the first
couple of examples in A. Tutorial. Note that, in order to lighten the
syntax, you can always omit the braces {} enclosing an
expression-list if this expression-list only contains a single
item. Also note that a braced expression-list can be preceded by a
minus sign in order to change the sign of all the
expression-list-items.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Character expressions are defined as:
char-expression: "string" | Today | StrPrefix ( char-expression ) | StrRelative ( char-expression ) | StrCat ( char-expression , char-expression ) | Sprintf ( char-expression , expression-list ) | Sprintf ( char-expression ) Sprintf ( char-option ) |
The third and fourth cases in this definition permit to take the
prefix (e.g. to remove the extension) or the relative path of a string. The
fifth case permits to concatenate two character expressions, and the sixth
and seventh are equivalent to the sprintf C function (where
char-expression is a format string that can contain floating point
formatting characters: %e, %g, etc.). The last case permits to
use the value of a char-option as a char-expression. The
various char-options are listed in B. Options.
Character expressions are mostly used to specify non-numeric options and input/output file names. See A.8 `t8.geo', for an interesting usage of char-expressions in an animation script.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Colors expressions are hybrids between fixed-length braced expression-lists and strings:
color-expression:
string |
{ expression, expression, expression } |
{ expression, expression, expression, expression } |
color-option
|
The first case permits to use the X Windows names to refer to colors,
e.g., Red, SpringGreen, LavenderBlush3, ...
(see `Common/Colors.h' in the source code for a complete list). The
second case permits to define colors by using three expressions to
specify their red, green and blue components (with values comprised
between 0 and 255). The third case permits to define colors by using
their red, green and blue color components as well as their alpha
channel. The last case permits to use the value of a color-option
as a color-expression. The various color-options are
listed in B. Options.
See A.3 `t3.geo', for an example of the use of color expressions.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh's operators are similar to the corresponding operators in C and C++. Here is the list of the unary, binary and ternary operators currently implemented.
operator-unary-left:
-
!
operator-unary-right:
++
--
operator-binary:
^
*
/
%
+
-
==
!=
>
>=
<
<=
&&
||
|| is evaluated even if the first one is true).
operator-ternary-left:
?
:
The evaluation priorities are summarized below(5) (from stronger to
weaker, i.e., * has a highest evaluation priority than +).
Parentheses () may be used anywhere to change the order of
evaluation:
(), [], ., #
^
!, ++, --, - (unary)
*, /, %
+, -
<, >, <=, >=
==, !=
&&
||
?:
=, +=, -=, *=, /=
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A built-in function is composed of an identifier followed by a pair of parentheses containing an expression-list (the list of its arguments)(6). Here is the list of the built-in functions currently implemented:
build-in-function:
Acos ( expression )
Asin ( expression )
Atan ( expression )
Atan2 ( expression, expression )
Ceil ( expression )
Cos ( expression )
Cosh ( expression )
Exp ( expression )
Fabs ( expression )
Fmod ( expression, expression )
Floor ( expression )
Hypot ( expression, expression )
Log ( expression )
Log10 ( expression )
Modulo ( expression, expression )
Fmod( expression, expression ).
Rand ( expression )
Sqrt ( expression )
Sin ( expression )
Sinh ( expression )
Tan ( expression )
Tanh ( expression )
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
User-defined functions take no arguments, and are evaluated as if a file
containing the function body was included at the location of the Call
statement.
Function string
Function
string', and can contain any Gmsh command.
Return
Call string;
See A.5 `t5.geo', for an example of a user-defined function. A shortcoming of Gmsh's scripting language is that all variables are "public". Variables defined inside the body of a function will thus be available outside, too!
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Loops and conditionals are defined as follows, and can be imbricated:
For ( expression : expression )
For ( expression :
expression )' and the matching EndFor are executed.
For ( expression : expression : expression )
For ( expression : expression :
expression )' and the matching EndFor are executed.
For string In { expression : expression }
For string In {
expression : expression }' and the matching EndFor are
executed.
For string In { expression : expression : expression }
For string In { expression :
expression : expression }' and the matching EndFor are
executed.
EndFor
For command.
If ( expression )
If ( expression )' and the matching
Endif is evaluated if expression is non-zero.
EndIf
If command.
See A.5 `t5.geo', for an example of For and If commands. Gmsh
does not provide any Else (or similar) command at the time of this
writing.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The following commands can be used anywhere in a Gmsh script:
string = expression;
Pi
GMSH_MAJOR_VERSION
GMSH_MINOR_VERSION
GMSH_PATCH_VERSION
MPI_Size
MPI_Rank
newp
newp permits to know the highest number already attributed (plus
one). This is mostly useful when writing user-defined functions
(see section 4.5 User-defined functions) or general geometric primitives, when one
does not know a priori which numbers are already attributed, and
which ones are still available.
newl
news
newv
newll
newsl
newreg
newreg returns
the maximum of newp, newl, news, newv,
newll, newsl and all physical entity numbers(7).
string [ ] = { };
string[] with an
empty list.
string [ ] = { expression-list };
string[] with the
list expression-list, or affects expression-list to an
existing expression list identifier. (Remember the remark we made when
we defined expression-lists: the braces enclosing an
expression-list are optional if the list only contains a single
item.)
string [ { expression-list } ] = { expression-list };
real-option = expression;
char-option = char-expression;
color-option = color-expression;
string | real-option += expression;
string | real-option -= expression;
string | real-option *= expression;
string | real-option /= expression;
string [ ] += { expression-list };
string [ { expression-list } ] += { expression-list };
string [ { expression-list } ] -= { expression-list };
string [ { expression-list } ] *= { expression-list };
string [ { expression-list } ] /= { expression-list };
Exit;
Printf ( char-expression , expression-list );
Printf is equivalent to the printf C function:
char-expression is a format string that can contain formatting
characters (%f, %e, etc.). Note that all expressions
are evaluated as floating point values in Gmsh (see section 4.2 Expressions), so
that only valid floating point formatting characters make sense in
char-expression. See A.5 `t5.geo', for an example of the use of
Printf.
Printf ( char-expression , expression-list ) > char-expression;
Printf above, but output the expression in a file.
Printf ( char-expression , expression-list ) >> char-expression;
Printf above, but appends the expression at the end of
the file.
Merge char-expression;
Draw;
BoundingBox;
BoundingBox { expression, expression, expression, expression, expression, expression };
Delete Model;
Delete Physicals;
Delete Variables;
Delete string;
Mesh expression;
Print char-expression;
Print.Format (see section B.1 General options list). If the
path in char-expression is not absolute, char-expression is
appended to the path of the current file.
Sleep expression;
System char-expression;
Include char-expression;
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The list of all the general char-options, real-options and color-options (in that order--check the default values to see the actual types) is given in B.1 General options list. Most of these options are accessible in the GUI, but not all of them. When running Gmsh interactively, changing an option in the script file will modify the option in the GUI in real time. This permits for example to resize the graphical window in a script, or to interact with animations in the script and in the GUI at the same time.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh's geometry module provides a simple CAD engine, using a boundary
representation ("BRep") approach: you need to first define points
(using the Point command: see below), then lines (using
Line, Circle, Spline, ..., commands or by
extruding points), then surfaces (using for example the Plane
Surface or Ruled Surface commands, or by extruding lines), and
finally volumes (using the Volume command or by extruding
surfaces).
These geometrical entities are called "elementary" in Gmsh's jargon, and are assigned identification numbers when they are created:
Elementary geometrical entities can then be manipulated in various
ways, for example using the Translate, Rotate,
Scale or Symmetry commands. They can be deleted with the
Delete command, provided that no higher-dimension entity
references them.
Compound groups of elementary geometrical entities can also be defined and are called "physical" entities. These physical entities cannot be modified by geometry commands: their only purpose is to assemble elementary entities into larger groups, possibly modifying their orientation, so that they can be referred to by the mesh module as single entities. As is the case with elementary entities, each physical point, physical line, physical surface or physical volume must be assigned a unique identification number. See 6. Mesh module, for more information about how physical entities affect the way meshes are saved.
5.1 Geometry commands 5.2 Geometry options
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The next subsections describe all the available geometry commands. These commands can be used anywhere in a Gmsh script file. Note that the following general syntax rule is followed for the definition of geometrical entities: "If an expression defines a new entity, it is enclosed between parentheses. If an expression refers to a previously defined entity, it is enclosed between braces."
5.1.1 Points 5.1.2 Lines 5.1.3 Surfaces 5.1.4 Volumes 5.1.5 Extrusions 5.1.6 Transformations 5.1.7 Miscellaneous
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Point ( expression ) = { expression, expression, expression <, expression > };
Physical Point ( expression | char-expression ) = { expression-list };
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
BSpline ( expression ) = { expression-list };
Circle ( expression ) = { expression, expression, expression };
CatmullRom ( expression ) = { expression-list };
CatmullRom is a synonym for Spline.
Ellipse ( expression ) = { expression, expression, expression, expression };
Line ( expression ) = { expression, expression };
Spline ( expression ) = { expression-list };
Line Loop ( expression ) = { expression-list };
Line Loop command. (Line loops are used to
create surfaces: see 5.1.3 Surfaces.)
Physical Line ( expression | char-expression ) = { expression-list };
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Plane Surface ( expression ) = { expression-list };
Ruled Surface ( expression ) = { expression-list } < In Sphere { expression } >;
In Sphere argument forces the surface to be a
spherical patch (the extra parameter gives the identification number of
the center of the sphere).
Surface Loop ( expression ) = { expression-list };
Physical Surface ( expression | char-expression ) = { expression-list };
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Volume ( expression ) = { expression-list };
Physical Volume ( expression | char-expression ) = { expression-list };
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Lines, surfaces and volumes can also be created through extrusion of points, lines and surfaces, respectively. Here is the syntax of the geometrical extrusion commands (go to 6.3.2 Structured grids, to see how these commands can be extended in order to also extrude the mesh):
extrude:
Extrude { expression-list } { extrude-list }
Extrude { { expression-list }, { expression-list }, expression } { extrude-list }
Extrude { { expression-list }, { expression-list }, { expression-list }, expression } { extrude-list }
with
extrude-list:
Point | Line | Surface { expression-list }; ...
|
As explained in 4.2.1 Floating point expressions, extrude can be used in an expression, in which case it returns a list of identification numbers. By default, the list contains the "top" of the extruded entity at index 0 and the extruded entity at index 1, followed by the "sides" of the extruded entity at indices 2, 3, etc. For example:
Point(1) = {0,0,0};
Point(2) = {1,0,0};
Line(1) = {1, 2};
out[] = Extrude{0,1,0}{ Line{1}; };
Printf("top line = %g", out[0]);
Printf("surface = %g", out[1]);
Printf("side lines = %g and %g", out[2], out[3]);
|
This behaviour can be changed with the
Geometry.ExtrudeReturnLateralEntities option (see section B.2 Geometry options list).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Geometrical transformations can be applied to elementary entities, or to
copies of elementary entities (using the Duplicata command: see
below). The syntax of the transformation commands is:
transform:
Dilate { { expression-list }, expression } { transform-list }
Rotate { { expression-list }, { expression-list }, expression } { transform-list }
Symmetry { expression-list } { transform-list }
Translate { expression-list } { transform-list }
Boundary { transform-list }
with
transform-list:
Point | Line | Surface | Volume { expression-list }; ... |
Duplicata { Point | Line | Surface | Volume { expression-list }; ... } |
transform
|
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here is a list of all other geometry commands currently available:
Coherence;
Coherence command automatically after each geometrical
transformation, unless Geometry.AutoCoherence is set to zero
(see section B.2 Geometry options list).
Delete { Point | Line | Surface | Volume { expression-list }; ... }
Delete has no effect (the line will have to be deleted before the
point can).
Hide { Point | Line | Surface | Volume { expression-list }; ... }
General.VisibilityMode is set to 0 or 1.
Hide char-expression;
General.VisibilityMode is
set to 0 or 1 (char-expression can for example be
"*").
Show { Point | Line | Surface | Volume { expression-list }; ... }
General.VisibilityMode is set to 0 or 1.
Show char-expression;
General.VisibilityMode is
set to 0 or 1 (char-expression can for example be
"*").
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The list of all the options that control the behavior of geometry commands, as well as the way geometrical entities are handled in the GUI, is give in B.2 Geometry options list.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh's mesh module regroups several 1D, 2D and 3D meshing algorithms, all producing grids conforming in the sense of finite elements (see section 1.2 Mesh: finite element mesh generation):
Recombine Surface is used: see
6.3.3 Miscellaneous). The 3D unstructured
algorithms generate tetrahedra.
Recombine commands (see 6.3.2 Structured grids, and
6.3.3 Miscellaneous). The 3D structured algorithms
generate tetrahedra, hexahedra, prisms and pyramids, depending on the
type of the surface meshes they are based on.
All meshes can be subdivided to generate fully quadrangular or fully
hexahedral meshes with the Mesh.SubdivisionAlgorihm option
(see section B.3 Mesh options list). However, beware that the quality of
subdivided elements initially generated with an unstructured
algorithm can be quite poor.
6.1 Choosing the right unstructured algorithm 6.2 Elementary vs. physical entities 6.3 Mesh commands 6.4 Mesh options
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh currently provides a choice between three 2D unstructured algorithms and between two 3D unstructured algorithms. Each algorithm has its own advantages and disadvantages.
For all 2D unstructured algorithms a Delaunay mesh that contains all the points of the 1D mesh is initially constructed using a divide-and-conquer algorithm(8). Missing edges are recovered using edge swaps(9). After this initial step three different algorithms can be applied to generate the final mesh:
These algorithms can be ranked as follows:
Robustness Performance Element quality MeshAdapt 1 3 2 Delaunay 2 1 2 Frontal 3 2 1 |
For very complex curved surfaces the "MeshAdapt" algorithm is the best choice. When high element quality is important, the "Frontal" algorithm should be tried. For very large meshes of plane surfaces the "Delaunay" algorithm is the fatest.
In 3D two unstructured algorithms are available:
The "Tetgen+Delaunay" algorithm is the most robust and the fastest. However, this algorithm will sometimes modify the surface mesh, and is thus not suitable for producing hybrid structured/unstructured grids. In that case the "Netgen" algorithm should be preferred. The quality of the elements produced by both algorithms is comparable. If element quality is important the mesh optimizer(s) should be applied.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If only elementary geometrical entities are defined (or if the
Mesh.SaveAll option is set; see B.3 Mesh options list), the
grid produced by the mesh module will be saved "as is". That is, all
the elements in the grid will be saved using the identification number
of the elementary entities they discretize as their elementary region
number (and 0 as their physical region number(15); 9. File formats). This can sometimes be
inconvenient:
To remedy these problems, the geometry module (see section 5. Geometry module) introduces the notion of "physical" entities (also called "physical groups"). The purpose of physical entities is to assemble elementary entities into larger, possibly overlapping groups, and to control the orientation of the elements in these groups. The introduction of physical entities in large models usually greatly facilitates the manipulation of the model (e.g., using `Tools->Visibility' in the GUI) and the interfacing with external solvers.
In the MSH file format (see section 9. File formats), if physical entities are defined, the output mesh only contains those elements that belong to physical entities. Other file formats each treat physical entities in slightly different ways, depending on their capability to define groups.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The mesh module commands mostly permit to modify the characteristic lengths and specify structured grid parameters. The actual mesh "actions" (i.e., "mesh the lines", "mesh the surfaces" and "mesh the volumes") cannot be specified in the script files. They have to be given either in the GUI or on the command line (see 3. Running Gmsh on your system, and 3.3 Command-line options).
6.3.1 Characteristic lengths 6.3.2 Structured grids 6.3.3 Miscellaneous
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
There are three ways to specify the size of the mesh elements for a given geometry:
Mesh.CharacteristicLengthFromPoints is set (it is by
default), you can simply specify characteristic lengths at the
geometrical points of the model (with the Point command: see
5.1.1 Points). The size of the mesh elements will then be computed by
linearly interpolating these characteristic lengths on the initial mesh
(see 1.2 Mesh: finite element mesh generation). This might sometimes lead to over-refinement in some
areas, so that you may have to add "dummy" geometrical entities in the
model in order to get the desired element sizes.
This method works with all the algorithms implemented in the mesh module. The final element sizes are of course constrained by the structured algorithms for which the element sizes are explicitly specified (e.g., transfinite and extruded grids: see 6.3.2 Structured grids).
Mesh.CharacteristicLengthFromCurvature is set (it is
not by default), the mesh will be adapted with respect to the curvature
of the geometrical entities.
PostView field specifies an explicit background mesh in the
form of a scalar post-processing view (see 8.1 Post-processing commands, and 9. File formats) in which the nodal values are the
target element sizes. This method is very general but it requires a
first (usually rough) mesh and a way to compute the target sizes on this
mesh (usually through an error estimation procedure, in an iterative
process of mesh adaptation).
(Note that you can also load a background mesh directly from the command
line using the -bgm option (see section 3.3 Command-line options), or in
the GUI by selecting `Apply as background mesh' in the post-processing
view option menu.)
Box field specifies the size of the elements inside and outside
of a parallelipipedic region.
Threshold field specifies the size of the mesh according to the
distance to some geometrical entities. These entities can for example be
geometry points and lines specified by an Attractor field.
MathEval field specifies the size of the mesh using an explicit
mathematical function.
Min field specifies the size as the minimum of the sizes
computed using other fields
Fields are supported by all the algorithms except those based on Netgen. The list of available fields with their options is given below.
The three aforementioned methods can be used simultaneously, in which case the smallest element size is selected at any given point.
All element sizes are further constrained by the
Mesh.CharacteristicLengthMin, Mesh.CharacteristicLengthMax
and Mesh.CharacteristicLengthFactor options (see section B.3 Mesh options list)
Here are the mesh commands that are related to the specification of characteristic lengths:
Characteristic Length { expression-list } = expression;
Field[expression] = string;
Field[expression].string = char-expression | expression | expression-list;
Background Field = expression;
Min or Max field (see below).
Here is the list of all available fields with their associated options:
Attractor
EdgesList
{}
FacesList
{}
NNodesByEdge
20
NodesList
{}
Box
VIn
0
VOut
0
XMax
0
XMin
0
YMax
0
YMin
0
ZMax
0
ZMin
0
Curvature
Delta
0
IField
1
Gradient
Delta
0
IField
1
Kind
0
Laplacian
Delta
0.1
IField
1
LonLat
IField
1
MathEval
F
"F2 + Sin(z)"
Max
FieldsList
{}
MaxEigenHessian
Delta
0
IField
1
Mean
Delta
0.0001
IField
0
Min
FieldsList
{}
Param
FX
""
FY
""
FZ
""
IField
1
PostView
CropNegativeValues
1
IView
0
Restrict
EdgesList
{}
FacesList
{}
IField
1
RegionsList
{}
Structured
FileName
""
TextFormat
0
Threshold
DistMax
10
DistMin
1
IField
0
LcMax
1
LcMin
0.1
Sigmoid
0
StopAtDistMax
0
UTM
IField
1
Zone
0
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Extrude { expression-list } { extrude-list layers }
layers:
Layers { expression } |
Layers { { expression-list }, { expression-list } } |
Recombine; ...
|
In the first Layers form, expression gives the number of
elements to be created in the (single) layer. In the second form, the
first expression-list defines how many elements should be created
in each extruded layer, and the second expression-list gives the
normalized height of each layer (the list should contain a sequence of
n numbers 0 < h1 < h2 < ... < hn <= 1). See
A.3 `t3.geo', for an example.
For line extrusions, the Recombine option will recombine triangles
into quadrangles when possible. For surface extrusions, the
Recombine option will recombine tetrahedra into prisms, hexahedra or
pyramids.
Please note that, starting with Gmsh 2.0, region numbers cannot be
specified explicitly anymore in Layers commands. Instead, as with
all other geometry commands, you must use the automatically created
entity identifier created by the extrusion command. For example, the
following extrusion command will return the id of the new "top"
surface in num[0] and the id of the new volume in num[1]:
num[] = Extrude {0,0,1} { Surface{1}; Layers{10}; };
|
Extrude { { expression-list }, { expression-list }, expression } { extrude-list layers }
Extrude { { expression-list }, { expression-list }, { expression-list }, expression } { extrude-list layers }
Extrude { Surface { expression-list }; layers }
Transfinite Line { expression-list } | "*" = expression < Using Progression | Bump expression >;
Using Progression expression' instructs the
transfinite algorithm to distribute the nodes following a geometric
progression (Progression 2 meaning for example that each line element
in the series will be twice as long as the preceding one). The optional
argument `Using Bump expression' instructs the transfinite
algorithm to distribute the nodes with a refinement at both ends of the
line.
Transfinite Surface { expression-list } | "*" < = { expression-list } > < Left | Right | Alternate > ;
Transfinite Volume { expression-list } | "*" < = { expression-list } > ;
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here is a list of all other mesh commands currently available:
Coherence Mesh;
Color color-expression { Point | Line | Surface | Volume { expression-list }; ... }
Hide { Point | Line | Surface | Volume { expression-list }; ... }
General.VisibilityMode is set to 0 or 2.
Hide char-expression;
General.VisibilityMode is set to 0 or 2
(char-expression can for example be "*").
Recombine Surface { expression-list } | "*" < = expression >;
Save char-expression;
Mesh.Format (see section B.3 Mesh options list). If the path in
char-expression is not absolute, char-expression is appended
to the path of the current file.
Show { Point | Line | Surface | Volume { expression-list }; ... }
General.VisibilityMode is set to 0 or 2.
Show char-expression;
General.VisibilityMode is set to 0 or 2
(char-expression can for example be "*").
Smoother Surface { expression-list } = expression;
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The list of all the options that control the behavior of mesh commands, as well as the way meshes are displayed in the GUI, is given in B.3 Mesh options list.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Five external solvers can be interfaced simultaneously with Gmsh.
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 one of the five available solvers (e.g.,
Solver.Name0, Solver.Executable0, ...; see B.4 Solver options list), and set the corresponding "client-server" option to
zero (e.g., Solver.ClientServer0 = 0). This doesn't require any
modification to be made to the solver.
If you want the solver to interact with Gmsh (for error messages, option
definitions, post-processing, etc.), you need to include
`GmshSocket.h' in your code and add the appropriate function calls
inside your program. You can then proceed as in the previous case, but
this time you should set the client-server option to 1 (e.g.,
Solver.ClientServer0 = 1), so that Gmsh and the solver can
communicate through a Unix socket. See 7.2 Solver example, for an
example of how to interface a C++ solver. Bindings for solvers written
in other languages (C, Perl and Python) are available in the source
distribution.
7.1 Solver options 7.2 Solver example
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The list of all the solver options is given in B.4 Solver options list.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here is a small example of how to interface a C++ solver with Gmsh. The following listing reproduces the `utils/solvers/c++/solver.cpp' file from the Gmsh source distribution (C, Perl and Python examples are also available).
// This is a dummy C++ client solver for Gmsh: it does not solve
// anything, but shows how to program your own solver to interact with
// the Gmsh solver module.
//
// To compile this solver, type something like:
//
// g++ solver.cpp -o solver.exe
//
// To run it, merge the contents of the file solver.opt into your
// default Gmsh option file, or launch Gmsh with the command:
//
// gmsh -option solver.opt
//
// You will then see a new button labeled "My C++ solver" in Gmsh's
// solver menu.
#include <math.h>
#include "GmshSocket.h"
typedef enum { send_options, run_code } action;
int main(int argc, char *argv[])
{
action what_to_do = run_code;
char *name = 0, *option = 0, *socket = 0;
// parse command line
int i = 0;
while(i < argc) {
if(argv[i][0] == '-') {
if(!strcmp(argv[i] + 1, "socket")) {
i++;
if(argv[i]) socket = argv[i++];
}
else if(!strcmp(argv[i] + 1, "options")) {
i++;
what_to_do = send_options;
}
else if(!strcmp(argv[i] + 1, "run")) {
i++;
what_to_do = run_code;
if(argv[i]) option = argv[i++];
}
}
else
name = argv[i++];
}
if(!socket) {
printf("No socket specified: running non-interactively...\n");
exit(1);
}
// connect to Gmsh
GmshClient client;
if(client.Connect(socket) < 0){
printf("Unable to connect to Gmsh\n");
exit(1);
}
client.Start();
if(what_to_do == send_options) {
// send the available options for this computation
client.Option(1, "FormulationH");
client.Option(1, "ConvTest");
client.Option(1, "Blablabli");
}
else if(what_to_do == run_code){
// do the computation and merge some views
for(int i = 0; i < 10; i++){
client.Info("Computing curve...");
// fake computation for 500ms:
#if !defined(WIN32) || defined(__CYGWIN__)
usleep(500 * 1000);
#else
Sleep(500);
#endif
client.Info("Done computing curve");
FILE *file = fopen("solver.pos", "w");
if(!file)
client.Error("Unable to open output file");
else {
fprintf(file, "View.Type = 2;\n");
fprintf(file, "View.Axes = 3;\n");
fprintf(file, "Delete View[0];\n");
fprintf(file, "View \"%s\"{\n", option);
for(int j = 0; j < 100; j++)
fprintf(file, "SP(%d,0,0){%g};\n", j,sin(j*i*M_PI/10.));
fprintf(file, "};\n");
fclose(file);
client.MergeFile("solver.pos");
}
}
client.Info("Done!");
}
client.Stop();
client.Disconnect();
}
To define the above solver as the second external solver in Gmsh, you then
need to define the following options (either merge them in your Gmsh option
file, or use the -option command-line option--see 3.3 Command-line options):
Solver.Name1 = "My C++ Solver"; Solver.Executable1 = "solver.exe"; Solver.OptionCommand1 = "-options"; Solver.FirstOption1 = "My options"; Solver.FirstButton1 = "Run !"; Solver.FirstButtonCommand1 = "-run %s"; Solver.ClientServer1 = 1; Solver.MergeViews1 = 1; Solver.PopupMessages1 = 1;
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh's post-processing module can handle multiple scalar, vector or tensor datasets along with the geometry and the mesh. The datasets can be given in several formats: in human-readable "parsed" format (these are just part of a standard input script, but are usually put in separate files with a `.pos' extension), in native MSH files (ASCII or binary files with `.msh' extensions: see 9. File formats), or in standard third-party formats (like MED: http://www.code-aster.org/outils/med/).
Once loaded into Gmsh, scalar fields can be displayed as iso-value lines
and surfaces or color maps, whereas vector fields can be represented
either by three-dimensional arrows or by displacement maps. (Tensor
fields are currently displayed as Von-Mises effective stresses. To
display other (combinations of) components, use Plugin(Extract):
see 8.2 Post-processing plugins.)
In Gmsh's jargon, each dataset is called a "view". Each view is given
a name, and can be manipulated either individually (each view has its
own button in the GUI and can be referred to by its index in a script)
or globally (see the PostProcessing.Link option in
B.5 Post-processing options list).
By default, Gmsh treats all post-processing views as three-dimensional plots, i.e., draws the scalar, vector and tensor primitives (points, lines, triangles, tetrahedra, etc.) in 3D space. But Gmsh can also represent each post-processing view containing scalar points as two-dimensional ("X-Y") plots, either space- or time-oriented:
Although visualization is usually mostly an interactive task, Gmsh exposes 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 e.g., A.8 `t8.geo', and A.9 `t9.geo').
The two following sections summarize all available post-processing commands and options. Most options apply to both 2D and 3D plots (colormaps, point/line sizes, interval types, time step selection, etc.), but some are peculiar to 3D (lightning, element selection, etc.) or 2D plots (abscissa labels, etc.). Note that 2D plots can be positioned explicitly inside the graphical window, or be automatically positioned in order to avoid overlaps.
Sample post-processing files in human-readable "parsed" format and in
the native MSH file format are available in the `tutorial'
directory of Gmsh's distribution (`.pos' and `.msh'
files). The "parsed" format is defined in the next section (cf. the
View command); the MSH format is defined in 9. File formats.
8.1 Post-processing commands 8.2 Post-processing plugins 8.3 Post-processing options
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Alias View[expression];
Note that Alias creates a logical duplicate of the view without
actually duplicating the data in memory. This is very useful when you want
multiple simultaneous renderings of the same large dataset (usually with
different display options), but you cannot afford to store all copies in
memory. If what you really want is multiple physical copies of the data,
just merge the file containing the post-processing view multiple times.
AliasWithOptions View[expression];
Combine ElementsByViewName;
Combine ElementsFromAllViews | Combine Views;
Combine ElementsFromVisibleViews;
Combine TimeStepsByViewName | Combine TimeSteps;
Combine TimeStepsFromAllViews;
Combine TimeStepsFromVisibleViews;
Delete View[expression];
Delete Empty Views;
Background Mesh View[expression];
Plugin (string) . Run;
Plugin (string) . string = expression | char-expression;
Save View[expression] char-expression;
View "string" { string < ( expression-list ) > { expression-list }; ... };
"string". This
is an easy and quite powerful way to import post-processing data: all
the values are expressions, you can embed datasets directly into
your geometrical descriptions (see, e.g., A.4 `t4.geo'), the data can be
easily generated "on-the-fly" (there is no header containing a
priori information on the size of the dataset). The syntax is also very
permissive, which makes it ideal for testing purposes.
However this "parsed format" is read by Gmsh's script parser, which makes it inefficient if there are many elements in the dataset. Also, there is no connectivity information in parsed views and all the elements are independent (all fields can be discontinuous), so a lot of information can be duplicated. For large datasets, you should thus use the mesh-based post-processing file format described in 9. File formats, or use one of the standard formats like MED.
More explicitly, the syntax for a parsed View is the following
View "string" {
type ( list-of-coords ) { list-of-values }; ...
< TIME { expression-list }; >
< INTERPOLATION_SCHEME { val-coef-matrix } { val-exp-matrix }
< { geo-coef-matrix } { geo-exp-matrix } > ; >
};
|
where the 47 object types that can be displayed are:
type #list-of-coords #list-of-values -------------------------------------------------------------------- Scalar point SP 3 1 * nb-time-steps Vector point VP 3 3 * nb-time-steps Tensor point TP 3 9 * nb-time-steps Scalar line SL 6 2 * nb-time-steps Vector line VL 6 6 * nb-time-steps Tensor line TL 6 18 * nb-time-steps Scalar triangle ST 9 3 * nb-time-steps Vector triangle VT 9 9 * nb-time-steps Tensor triangle TT 9 27 * nb-time-steps Scalar quadrangle SQ 12 4 * nb-time-steps Vector quadrangle VQ 12 12 * nb-time-steps Tensor quadrangle TQ 12 36 * nb-time-steps Scalar tetrahedron SS 12 4 * nb-time-steps Vector tetrahedron VS 12 12 * nb-time-steps Tensor tetrahedron TS 12 36 * nb-time-steps Scalar hexahedron SH 24 8 * nb-time-steps Vector hexahedron VH 24 24 * nb-time-steps Tensor hexahedron TH 24 72 * nb-time-steps Scalar prism SI 18 6 * nb-time-steps Vector prism VI 18 18 * nb-time-steps Tensor prism TI 18 54 * nb-time-steps Scalar pyramid SY 15 5 * nb-time-steps Vector pyramid VY 15 15 * nb-time-steps Tensor pyramid TY 15 45 * nb-time-steps 2nd order scalar line SL2 9 3 * nb-time-steps 2nd order vector line VL2 9 9 * nb-time-steps 2nd order tensor line TL2 9 27 * nb-time-steps 2nd order scalar triangle ST2 18 6 * nb-time-steps 2nd order vector triangle VT2 18 18 * nb-time-steps 2nd order tensor triangle TT2 18 54 * nb-time-steps 2nd order scalar quadrangle SQ2 27 9 * nb-time-steps 2nd order vector quadrangle VQ2 27 27 * nb-time-steps 2nd order tensor quadrangle TQ2 27 81 * nb-time-steps 2nd order scalar tetrahedron SS2 30 10 * nb-time-steps 2nd order vector tetrahedron VS2 30 30 * nb-time-steps 2nd order tensor tetrahedron TS2 30 90 * nb-time-steps 2nd order scalar hexahedron SH2 81 27 * nb-time-steps 2nd order vector hexahedron VH2 81 81 * nb-time-steps 2nd order tensor hexahedron TH2 81 243* nb-time-steps 2nd order scalar prism SI2 54 18 * nb-time-steps 2nd order vector prism VI2 54 54 * nb-time-steps 2nd order tensor prism TI2 54 162* nb-time-steps 2nd order scalar pyramid SY2 42 14 * nb-time-steps 2nd order vector pyramid VY2 42 42 * nb-time-steps 2nd order tensor pyramid TY2 42 126* nb-time-steps 2D text T2 3 arbitrary 3D text T3 4 arbitrary |
The coordinates are given `by node', i.e.,
(coord1, coord2, coord3) for a point,
(coord1-node1, coord2-node1, coord3-node1, coord1-node2, coord2-node2, coord3-node2) for a line,
(coord1-node1, coord2-node1, coord3-node1, coord1-node2, coord2-node2, coord3-node2, coord1-node3, coord2-node3, coord3-node3) for a triangle,
The ordering of the nodes is given in 9.3 Node ordering.
The values are given by time step, by node and by component, i.e.:
comp1-node1-time1, comp2-node1-time1, comp3-node1-time1, comp1-node2-time1, comp2-node2-time1, comp3-node2-time1, comp1-node3-time1, comp2-node3-time1, comp3-node3-time1, comp1-node1-time2, comp2-node1-time2, comp3-node1-time2, comp1-node2-time2, comp2-node2-time2, comp3-node2-time2, comp1-node3-time2, comp2-node3-time2, comp3-node3-time2, ... |
For the 2D text objects, the two first expressions in list-of-coords give the X-Y position of the string in screen coordinates, measured from the top-left corner of the window. If the first (respectively second) expression is negative, the position is measured from the right (respectively bottom) edge of the window. If the value of the first (respectively second) expression is larger than 99999, the string is centered horizontally (respectively vertically). If the third expression is equal to zero, the text is aligned bottom-left and displayed using the default font and size. Otherwise, the third expression is converted into an integer whose eight lower bits give the font size, whose eight next bits select the font (the index corresponds to the position in the font menu in the GUI), and whose eight next bits define the text alignment (0=bottom-left, 1=bottom-center, 2=bottom-right, 3=top-left, 4=top-center, 5=top-right, 6=center-left, 7=center-center, 8=center-right).
For the 3D text objects, the three first expressions in list-of-coords give the XYZ position of the string in model (real world) coordinates. The fourth expression has the same meaning as the third expression in 2D text objects.
For both 2D and 3D text objects, the list-of-values can contain an arbitrary number of char-expressions.
The optional TIME list can contain a list of expressions giving the
value of the time (or any other variable) for which an evolution was saved.
The optional INTERPOLATION_SCHEME lists can contain the
interpolation matrices used for high-order adaptive visualization.
Let us assume that the approximation of the view's value over an element is written as a linear combination of d basis functions f[j], j=0, ..., d-1 (the coefficients being stored in list-of-values). If f[j] = p[0] F[j][0] + p[1] F[j][1] + p[2] F[j][2] + ..., with p[i] = u^P[i][0] v^P[i][1] w^P[i][2] (u, v and w being the coordinates of the element's parameter space), then val-coef-matrix denotes the d x d matrix F and val-exp-matrix denotes the d x 3 matrix P.
In the same way, let us also assume that the coordinates x, y and z of the element are obtained through a geometrical mapping from parameter space as a linear combination of m basis functions g[j], j=0, ..., m-1 (the coefficients being stored in list-of-coords).
If g[j] = q[0] G[j][0] + q[1] G[j][1] + q[2] G[j][2] + ..., with q[i] = u^Q[i][0] v^Q[i][1] w^Q[i][2], then val-coef-matrix denotes the m x m matrix G and val-exp-matrix denotes the m x 3 matrix Q.
Here are for example the interpolation matrices for a first order quadrangle:
INTERPOLATION_SCHEME
{
{1/4,-1/4, 1/4,-1/4},
{1/4, 1/4,-1/4,-1/4},
{1/4, 1/4, 1/4, 1/4},
{1/4,-1/4,-1/4, 1/4}
}
{
{0, 0, 0},
{1, 0, 0},
{0, 1, 0},
{1, 1, 0}
};
|
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Post-processing plugins permit to extend the functionality of Gmsh's post-processing module. The difference between regular post-processing options (see section B.5 Post-processing options list) and post-processing plugins is that regular post-processing options only change the way the data is displayed, while post-processing plugins either create new post-processing views, or modify the data stored in a view (in a destructive, non-reversible way).
Plugins are available in the GUI by right-clicking on a view button (or by clicking on the black arrow next to the view button) and then selecting the `Plugin' submenu.
Here is the list of the plugins that are shipped by default with Gmsh:
Plugin(Annotate)
Plugin(Annotate) is executed in-place.
String options:
Text
"My Text"
Font
"Helvetica"
Align
"Left"
X
50
Y
30
Z
0
ThereD
0
FontSize
14
iView
-1
Plugin(Curl)
Plugin(Curl) creates one new view.
Numeric options:
iView
-1
Plugin(CutGrid)
Plugin(CutGrid) creates one new view.
Numeric options:
X0
0
Y0
0
Z0
0
X1
1
Y1
0
Z1
0
X2
0
Y2
1
Z2
0
nPointsU
20
nPointsV
20
ConnectPoints
1
iView
-1
Plugin(CutMap)
Plugin(CutMap) creates as many views as there are time steps in `iView'.
Numeric options:
A
0
dTimeStep
-1
dView
-1
ExtractVolume
0
RecurLevel
4
TargetError
0
iView
-1
Plugin(CutParametric)
Plugin(CutParametric) creates one new view.
String options:
X
"0 + 1 * Cos(u)"
Y
"0 + 1 * Sin(u)"
Z
"0"
MinU
0
MaxU
6.2832
nPointsU
360
ConnectPoints
0
iView
-1
Plugin(CutPlane)
Plugin(CutPlane) creates one new view.
Numeric options:
A
1
B
0
C
0
D
-0.01
ExtractVolume
0
RecurLevel
4
TargetError
0
iView
-1
Plugin(CutSphere)
Plugin(CutSphere) creates one new view.
Numeric options:
Xc
0
Yc
0
Zc
0
R
0.25
ExtractVolume
0
RecurLevel
4
iView
-1
Plugin(Divergence)
Plugin(Divergence) creates one new view.
Numeric options:
iView
-1
Plugin(Eigenvalues)
Plugin(Eigenvalues) creates three new scalar views.
Numeric options:
iView
-1
Plugin(Eigenvectors)
Plugin(Eigenvectors) creates three new vector views.
Numeric options:
ScaleByEigenvalues
1
iView
-1
Plugin(Evaluate)
- the usual mathematical functions (Log, Sqrt, Sin, Cos, Fabs, ...) and operators (+, -, *, /, ^);
- the symbols x, y and z, to retrieve the coordinates of the current node;
- the symbols Time and TimeStep, to retrieve the current time and time step values;
- the symbol v, to retrieve the `Component'-th component of the field in `iView' at the `TimeStep'-th time step;
- the symbols v0, v1, v2, ..., v8, to retrieve each component of the field in `iView' at the `TimeStep'-th time step;
- the symbol w, to retrieve the `Component'-th component of the field in `ExternalView' at the `ExternalTimeStep'-th time step. If `ExternalView' and `iView' are based on different spatial grids, or if their data types are different, `ExternalView' is interpolated onto `iView';
- the symbols w0, w1, w2, ..., w8, to retrieve each component of the field in `ExternalView' at the `ExternalTimeStep'-th time step.
If `TimeStep' < 0, the plugin automatically loops over all the time steps in `iView' and evaluates `Expression' for each one. If `ExternalTimeStep' < 0, the plugin uses `TimeStep' instead. If `Component' < 0, the plugin automatically loops over all the components in the view and evaluates `Expression' for each one. If `iView' < 0, the plugin is run on the current view. If `ExternalView' < 0, the plugin uses `iView' instead.
Plugin(Evaluate) is executed in-place.
String options:
Expression
"v0*Sin(x)"
Component
-1
TimeStep
-1
ExternalView
-1
ExternalTimeStep
-1
iView
-1
Plugin(Extract)
Plugin(Extract) creates one new view.
String options:
Expression0
"Sqrt(v0^2+v1^2+v2^2)"
Expression1
""
Expression2
""
Expression3
""
Expression4
""
Expression5
""
Expression6
""
Expression7
""
Expression8
""
TimeStep
-1
iView
-1
Plugin(ExtractElements)
Plugin(ExtractElements) creates one new view.
Numeric options:
MinVal
0
MaxVal
1
TimeStep
0
iView
-1
Plugin(FieldView)
Numeric options:
Component
-1
iView
-1
iField
-1
Plugin(FiniteElement)
String options:
Equation
"Laplace"
BC1
"Dirichlet"
BC2
"Dirichlet"
Parameter
1
Volume
1
Surface1
2
Value1
0
Surface2
3
Value2
1
Plugin(GSHHS)
InFileName
"gshhs_c.b"
OutFileName
"earth.geo"
Format
"gshhs"
Coordinate
"cartesian"
iField
-1
UTMZone
0
UTMEquatorialRadius
6.37814e+06
UTMPolarRadius
6.35675e+06
radius
6.37101e+06
WritePolarSphere
1
MinStraitsFactor
1
Plugin(Gradient)
Plugin(Gradient) creates one new view.
Numeric options:
iView
-1
Plugin(HarmonicToTime)
Plugin(HarmonicToTime) creates one new view.
Numeric options:
RealPart
0
ImaginaryPart
1
nSteps
20
iView
-1
Plugin(Integrate)
Plugin(Integrate) creates one new view.
Numeric options:
iView
-1
Plugin(Lambda2)
Plugin(Lambda2) creates one new view.
Numeric options:
Eigenvalue
2
iView
-1
Plugin(LongitudeLatitude)
Plugin(LongituteLatitude) is executed in place.
Numeric options:
iView
-1
Plugin(MakeSimplex)
Plugin(MakeSimplex) is executed in-place.
Numeric options:
iView
-1
Plugin(ModulusPhase)
Plugin(ModulusPhase) is executed in-place.
Numeric options:
RealPart
0
ImaginaryPart
1
iView
-1
Plugin(Probe)
Plugin(Probe) creates one new view.
Numeric options:
X
0
Y
0
Z
0
iView
-1
Plugin(Remove)
Plugin(Remove) is executed in-place.
Numeric options:
Text2D
1
Text3D
1
Points
0
Lines
0
Triangles
0
Quadrangles
0
Tetrahedra
0
Hexahedra
0
Prisms
0
Pyramids
0
Scalar
1
Vector
1
Tensor
1
iView
-1
Plugin(Skin)
Plugin(Skin) creates one new view.
Numeric options:
iView
-1
Plugin(Smooth)
Plugin(Smooth) is executed in-place.
Numeric options:
iView
-1
Plugin(SphericalRaise)
Plugin(SphericalRaise) is executed in-place.
Numeric options:
Xc
0
Yc
0
Zc
0
Raise
1
Offset
0
TimeStep
0
iView
-1
Plugin(StreamLines)
Plugin(StreamLines) creates one new view. This view contains multi-step vector points if `dView' < 0, or single-step scalar lines if `dView' >= 0.
Numeric options:
X0
0
Y0
0
Z0
0
X1
1
Y1
0
Z1
0
X2
0
Y2
1
Z2
0
nPointsU
10
nPointsV
1
MaxIter
100
DT
0.1
TimeStep
0
dView
-1
iView
-1
Plugin(Transform)
Plugin(Transform) is executed in-place.
Numeric options:
A11
1
A12
0
A13
0
A21
0
A22
1
A23
0
A31
0
A32
0
A33
1
Tx
0
Ty
0
Tz
0
SwapOrientation
0
iView
-1
Plugin(Triangulate)
Plugin(Triangulate) creates one new view.
Numeric options:
iView
-1
Plugin(Warp)
Plugin(Warp) is executed in-place.
Numeric options:
Factor
1
TimeStep
0
SmoothingAngle
180
dView
-1
iView
-1
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
General post-processing option names have the form
`PostProcessing.string'. Options peculiar to post-processing
views take two forms.
View.string', before any view is loaded;
View[n].string' (n = 0, 1, 2,
...), after the n-th view is loaded.
The list of all post-processing and view options is given in B.5 Post-processing options list. See A.8 `t8.geo', and A.9 `t9.geo', for some examples.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This chapter describes Gmsh's native "MSH" file format, used to store meshes and associated post-processing datasets. The MSH format exists in two flavors: ASCII and binary. The format has a version number (currently: 2.0) that is independent of Gmsh's main version number.
(Remember that for small post-processing datasets you can also use human-readable "parsed" post-processing views, as described in 8.1 Post-processing commands. Such "parsed" views do not require an underlying mesh, and can therefore be easier to use in some cases.)
9.1 MSH ASCII file format 9.2 MSH binary file format 9.3 Node ordering 9.4 Legacy formats
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The MSH ASCII file format contains one mandatory section giving
information about the file ($MeshFormat), followed by several
optional sections defining the nodes ($Nodes), elements
($Elements), region names ($PhysicalName) and
post-processing datasets ($NodeData, $ElementData,
$ElementNodeData).
Any section with an unrecognized header is simply ignored: you can thus
add comments in a `.msh' file by putting them e.g. inside a
$Comments/$EndComments section.
Sections can be repeated in the same file, and post-processing sections can be put into separate files (e.g. one file per time step).
The format is defined as follows:
$MeshFormat version-number file-type data-size $EndMeshFormat $Nodes number-of-nodes node-number x-coord y-coord z-coord ... $EndNodes $Elements number-of-elements elm-number elm-type number-of-tags < tag > ... node-number-list ... $EndElements $PhysicalNames number-of-names physical-number "physical-name" ... $EndPhysicalNames $NodeData number-of-string-tags < "string-tag" > ... number-of-real-tags < real-tag > ... number-of-integer-tags < integer-tag > ... node-number value ... ... $EndNodeData $ElementData number-of-string-tags < "string-tag" > ... number-of-real-tags < real-tag > ... number-of-integer-tags < integer-tag > ... elm-number value ... ... $EndElementData $ElementNodeData number-of-string-tags < "string-tag" > ... number-of-real-tags < real-tag > ... number-of-integer-tags < integer-tag > ... elm-number number-of-nodes-per-element value ... ... $ElementEndNodeData |
where
version-number
file-type
data-size
number-of-nodes
node-number
x-coord y-coord z-coord
number-of-elements
elm-number
elm-type
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
number-of-tags
node-number-list
number-of-string-tags
number-of-real-tags
number-of-integer-tags
number-of-nodes-per-elements
value
NodeData (respectively ElementData) views,
there are ncomp values per node (resp. per element), where
ncomp is the number of field components. For
ElementNodeData views, there are ncomp times
number-of-nodes-per-elements values per element.
Below is a small example (a mesh consisting of two quadrangles with an associated nodal scalar dataset; the comments are not part of the actual file!):
$MeshFormat
2.0 0 8
$EndMeshFormat
$Nodes
6 six mesh nodes:
1 0.0 0.0 0.0 node #1: coordinates (0.0, 0.0, 0.0)
2 1.0 0.0 0.0 node #2: coordinates (1.0, 0.0, 0.0)
3 1.0 1.0 0.0 etc.
4 0.0 1.0 0.0
5 2.0 0.0 0.0
6 2.0 1.0 0.0
$EndNodes
$Elements
2 two elements:
1 3 2 99 2 1 2 3 4 quad #1: type 3, physical 99, elementary 2, nodes 1 2 3 4
2 3 2 99 2 2 5 6 3 quad #2: type 3, physical 99, elementary 2, nodes 2 5 6 3
$EndElements
$NodeData
1 one string tag:
"A scalar view" the name of the view ("A scalar view")
1 one real tag:
0.0 the time value (0.0)
3 three integer tags:
0 the time step (0; time steps always start at 0)
1 1-component (scalar) field
6 six associated nodal values
1 0.0 value associated with node #1 (0.0)
2 0.1 value associated with node #2 (0.1)
3 0.2 etc.
4 0.0
5 0.2
6 0.4
$EndNodeData
|
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The binary file format is similar to the ASCII format described above:
$MeshFormat version-number file-type data-size one-binary $EndMeshFormat $Nodes number-of-nodes nodes-binary $EndNodes $Elements number-of-elements element-header-binary elements-binary element-header-binary elements-binary ... $EndElements [ all other sections are identical to ASCII, except that node-number, elm-number, number-of-nodes-per-element and values are written in binary format ] |
where
version-number
file-type
data-size
one-binary
Here is a pseudo C code to write one-binary:
int one = 1; fwrite(&one, sizeof(int), 1, file); |
number-of-nodes
nodes-binary
Here is a pseudo C code to write nodes-binary:
for(i = 0; i < number_of_nodes; i++){
fwrite(&num_i, sizeof(int), 1, file);
double xyz[3] = {node_i_x, node_i_y, node_i_z};
fwrite(&xyz, sizeof(double), 3, file);
}
|
number-of-elements
element-header-binary
Here is a pseudo C code to write element-header-binary:
int header[3] = {elm_type, num_elm_follow, num_tags};
fwrite(&header, sizeof(int), 3, file);
|
elements-binary
Here is a pseudo C code to write elements-binary for triangles with the 3 standard tags (the physical and elementary regions, and the mesh partition):
for(i = 0; i < number_of_triangles; i++){
int data[7] = {num_i, physical, elementary, partition,
node_i_1, node_i_2, node_i_3};
fwrite(data, sizeof(int), 7, file);
}
|
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
For all mesh and post-processing file formats, the reference elements are defined as follows.
Line: Line3: Line4:
0----------1 --> u 0-----2----1 0----2----3----1
|
Triangle: Triangle6: Triangle9/10: Triangle12/15: v ^ 2 | | \ 2 2 2 9 8 |`\ |`\ | \ | \ | `\ | `\ 7 6 10 (14) 7 | `\ 5 `4 | \ | \ | `\ | `\ 8 (9) 5 11 (12) (13) 6 | `\ | `\ | \ | \ 0----------1 --> u 0-----3----1 0---3---4---1 0---3---4---5---1 |
Quadrangle: Quadrangle8: Quadrangle9:
v
^
|
3-----------2 3-----6-----2 3-----6-----2
| | | | | | |
| | | | | | |
| +---- | --> u 7 5 7 8 5
| | | | | |
| | | | | |
0-----------1 0-----4-----1 0-----4-----1
|
Tetrahedron: Tetrahedron10:
v
.
,/
/
2 2
,/|`\ ,/|`\
,/ | `\ ,/ | `\
,/ '. `\ ,6 '. `5
,/ | `\ ,/ 8 `\
,/ | `\ ,/ | `\
0-----------'.--------1 --> u 0--------4--'.--------1
`\. | ,/ `\. | ,/
`\. | ,/ `\. | ,9
`\. '. ,/ `7. '. ,/
`\. |/ `\. |/
`3 `3
`\.
` w
|
Hexahedron: Hexahedron20: Hexahedron27:
v
3----------2 3----13----2 3----13----2
|\ ^ |\ |\ |\ |\ |\
| \ | | \ | 15 | 14 |15 24 | 14
| \ | | \ 9 \ 11 \ 9 \ 20 11 \
| 7------+---6 | 7----19+---6 | 7----19+---6
| | +-- |-- | -> u | | | | |22 | 26 | 23|
0---+---\--1 | 0---+-8----1 | 0---+-8----1 |
\ | \ \ | \ 17 \ 18 \ 17 25 \ 18
\ | \ \ | 10 | 12| 10 | 21 12|
\| w \| \| \| \| \|
4----------5 4----16----5 4----16----5
|
Prism: Prism15: Prism18:
w
^
|
3 3 3
,/|`\ ,/|`\ ,/|`\
,/ | `\ 12 | 13 12 | 13
,/ | `\ ,/ | `\ ,/ | `\
4------+------5 4------14-----5 4------14-----5
| | | | 8 | | 8 |
| ,/|`\ | | | | | ,/|`\ |
| ,/ | `\ | | | | | 15 | 16 |
|,/ | `\| | | | |,/ | `\|
,| | `\ 10 | 11 10-----17-----11
,/ | 0 | `\ | 0 | | 0 |
u | ,/ `\ | v | ,/ `\ | | ,/ `\ |
| ,/ `\ | | ,6 `7 | | ,6 `7 |
|,/ `\| |,/ `\| |,/ `\|
1-------------2 1------9------2 1------9------2
|
Pyramid: Pyramid13: Pyramid14:
4 4 4
,/|\ ,/|\ ,/|\
,/ .'|\ ,/ .'|\ ,/ .'|\
,/ | | \ ,/ | | \ ,/ | | \
,/ .' | `. ,/ .' | `. ,/ .' | `.
,/ | '. \ ,7 | 12 \ ,7 | 12 \
,/ .' w | \ ,/ .' | \ ,/ .' | \
,/ | ^ | \ ,/ 9 | 11 ,/ 9 | 11
0----------.'--|-3 `. 0--------6-.'----3 `. 0--------6-.'----3 `.
`\ | | `\ \ `\ | `\ \ `\ | `\ \
`\ .' +----`\ - \ -> v `5 .' 10 \ `5 .' 13 10 \
`\ | `\ `\ \ `\ | `\ \ `\ | `\ \
`\.' `\ `\` `\.' `\` `\.' `\`
1----------------2 1--------8-------2 1--------8-------2
`\
u
|
The nodes of a curved element are numbered in the following order:
The numbering for face and volume internal nodes is recursive, i.e., the numbering follows that of the nodes of an embedded face/volume. The higher order nodes are assumed to be equispaced on the element.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section describes Gmsh's older native file formats. Future versions of Gmsh will continue to support these formats, but we recommend that you do not use them in new aplications.
9.4.1 MSH file format version 1.0 (Legacy) 9.4.2 POS ASCII file format (Legacy) 9.4.3 POS binary file format (Legacy)
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The MSH file format version 1.0 is Gmsh's old native mesh file format, now superseded by the format described in 9.1 MSH ASCII file format. It is defined as follows:
$NOD number-of-nodes node-number x-coord y-coord z-coord ... $ENDNOD $ELM number-of-elements elm-number elm-type reg-phys reg-elem number-of-nodes node-number-list ... $ENDELM |
where
number-of-nodes
node-number
x-coord y-coord z-coord
number-of-elements
elm-number
elm-type
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
reg-phys
reg-elem
number-of-nodes
node-number-list
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The POS ASCII file is Gmsh's old native post-processing format, now superseded by the format described in 9.1 MSH ASCII file format. It is defined as follows:
$PostFormat
1.4 file-type data-size
$EndPostFormat
$View
view-name nb-time-steps
nb-scalar-points nb-vector-points nb-tensor-points
nb-scalar-lines nb-vector-lines nb-tensor-lines
nb-scalar-triangles nb-vector-triangles nb-tensor-triangles
nb-scalar-quadrangles nb-vector-quadrangles nb-tensor-quadrangles
nb-scalar-tetrahedra nb-vector-tetrahedra nb-tensor-tetrahedra
nb-scalar-hexahedra nb-vector-hexahedra nb-tensor-hexahedra
nb-scalar-prisms nb-vector-prisms nb-tensor-prisms
nb-scalar-pyramids nb-vector-pyramids nb-tensor-pyramids
nb-scalar-lines2 nb-vector-lines2 nb-tensor-lines2
nb-scalar-triangles2 nb-vector-triangles2 nb-tensor-triangles2
nb-scalar-quadrangles2 nb-vector-quadrangles2 nb-tensor-quadrangles2
nb-scalar-tetrahedra2 nb-vector-tetrahedra2 nb-tensor-tetrahedra2
nb-scalar-hexahedra2 nb-vector-hexahedra2 nb-tensor-hexahedra2
nb-scalar-prisms2 nb-vector-prisms2 nb-tensor-prisms2
nb-scalar-pyramids2 nb-vector-pyramids2 nb-tensor-pyramids2
nb-text2d nb-text2d-chars nb-text3d nb-text3d-chars
time-step-values
< scalar-point-value > ... < vector-point-value > ...
< tensor-point-value > ...
< scalar-line-value > ... < vector-line-value > ...
< tensor-line-value > ...
< scalar-triangle-value > ... < vector-triangle-value > ...
< tensor-triangle-value > ...
< scalar-quadrangle-value > ... < vector-quadrangle-value > ...
< tensor-quadrangle-value > ...
< scalar-tetrahedron-value > ... < vector-tetrahedron-value > ...
< tensor-tetrahedron-value > ...
< scalar-hexahedron-value > ... < vector-hexahedron-value > ...
< tensor-hexahedron-value > ...
< scalar-prism-value > ... < vector-prism-value > ...
< tensor-prism-value > ...
< scalar-pyramid-value > ... < vector-pyramid-value > ...
< tensor-pyramid-value > ...
< scalar-line2-value > ... < vector-line2-value > ...
< tensor-line2-value > ...
< scalar-triangle2-value > ... < vector-triangle2-value > ...
< tensor-triangle2-value > ...
< scalar-quadrangle2-value > ... < vector-quadrangle2-value > ...
< tensor-quadrangle2-value > ...
< scalar-tetrahedron2-value > ... < vector-tetrahedron2-value > ...
< tensor-tetrahedron2-value > ...
< scalar-hexahedron2-value > ... < vector-hexahedron2-value > ...
< tensor-hexahedron2-value > ...
< scalar-prism2-value > ... < vector-prism2-value > ...
< tensor-prism2-value > ...
< scalar-pyramid2-value > ... < vector-pyramid2-value > ...
< tensor-pyramid2-value > ...
< text2d > ... < text2d-chars > ...
< text3d > ... < text3d-chars > ...
$EndView
|
where
file-type
data-size
view-name
nb-time-steps
nb-scalar-points
nb-vector-points
...
nb-text2d
nb-text3d
nb-text2d-chars
nb-text3d-chars
time-step-values
scalar-point-value
vector-point-value
...
For example, vector-triangle-value is defined as:
coord1-node1 coord1-node2 coord1-node3 coord2-node1 coord2-node2 coord2-node3 coord3-node1 coord3-node2 coord3-node3 comp1-node1-time1 comp2-node1-time1 comp3-node1-time1 comp1-node2-time1 comp2-node2-time1 comp3-node2-time1 comp1-node3-time1 comp2-node3-time1 comp3-node3-time1 comp1-node1-time2 comp2-node1-time2 comp3-node1-time2 comp1-node2-time2 comp2-node2-time2 comp3-node2-time2 comp1-node3-time2 comp2-node3-time2 comp3-node3-time2 ... |
The ordering of the nodes is given in 9.3 Node ordering.
text2d
coord1 coord2 style index |
text2d-chars
\0' character.
text3d
coord1 coord2 coord3 style index |
text3d-chars
\0' character.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The POS binary file format is the same as the POS ASCII file format described in 9.4.2 POS ASCII file format (Legacy), except that:
Here is a pseudo C code to write a post-processing file in binary format:
int one = 1; fprintf(file, "$PostFormat\n"); fprintf(file, "%g %d %d\n", 1.4, 1, sizeof(double)); fprintf(file, "$EndPostFormat\n"); fprintf(file, "$View\n"); fprintf(file, "%s %d " "%d %d %d %d %d %d %d %d %d " "%d %d %d %d %d %d %d %d %d " "%d %d %d %d %d %d %d %d %d " "%d %d %d %d %d %d %d %d %d " "%d %d %d %d %d %d %d %d %d " "%d %d %d %d\n", view-name, nb-time-steps, nb-scalar-points, nb-vector-points, nb-tensor-points, nb-scalar-lines, nb-vector-lines, nb-tensor-lines, nb-scalar-triangles, nb-vector-triangles, nb-tensor-triangles, nb-scalar-quadrangles, nb-vector-quadrangles, nb-tensor-quadrangles, nb-scalar-tetrahedra, nb-vector-tetrahedra, nb-tensor-tetrahedra, nb-scalar-hexahedra, nb-vector-hexahedra, nb-tensor-hexahedra, nb-scalar-prisms, nb-vector-prisms, nb-tensor-prisms, nb-scalar-pyramids, nb-vector-pyramids, nb-tensor-pyramids, nb-scalar-lines2, nb-vector-lines2, nb-tensor-lines2, nb-scalar-triangles2, nb-vector-triangles2, nb-tensor-triangles2, nb-scalar-quadrangles2, nb-vector-quadrangles2, nb-tensor-quadrangles2, nb-scalar-tetrahedra2, nb-vector-tetrahedra2, nb-tensor-tetrahedra2, nb-scalar-hexahedra2, nb-vector-hexahedra2, nb-tensor-hexahedra2, nb-scalar-prisms2, nb-vector-prisms2, nb-tensor-prisms2, nb-scalar-pyramids2, nb-vector-pyramids2, nb-tensor-pyramids2, nb-text2d, nb-text2d-chars, nb-text3d, nb-text3d-chars); fwrite(&one, sizeof(int), 1, file); fwrite(time-step-values, sizeof(double), nb-time-steps, file); fwrite(all-scalar-point-values, sizeof(double), ..., file); ... fprintf(file, "\n$EndView\n"); |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The nine following examples introduce new features gradually, starting with `t1.geo'. The files corresponding to these examples are available in the `tutorial' directory of the Gmsh distribution.
To learn how to run Gmsh on your computer, see 3. Running Gmsh on your system. Screencasts that show how to use the GUI are available on http://www.geuz.org/gmsh/screencasts/.
A.1 `t1.geo' A.2 `t2.geo' A.3 `t3.geo' A.4 `t4.geo' A.5 `t5.geo' A.6 `t6.geo' A.7 `t7.geo' A.8 `t8.geo' A.9 `t9.geo'
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
/*********************************************************************
*
* Gmsh tutorial 1
*
* Variables, elementary entities (points, lines, surfaces), physical
* entities (points, lines, surfaces)
*
*********************************************************************/
// The simplest construction in Gmsh's scripting language is the
// `affectation'. The following command defines a new variable `lc':
lc = 0.009;
// This variable can then be used in the definition of Gmsh's simplest
// `elementary entity', a `Point'. A Point is defined by a list of
// four numbers: three coordinates (X, Y and Z), and a characteristic
// length (lc) that sets the target element size at the point:
Point(1) = {0, 0, 0, lc};
// The distribution of the mesh element sizes is then obtained by
// interpolation of these characteristic lengths throughout the
// geometry. Another method to specify characteristic lengths is to
// use a background mesh (see `t7.geo' and `bgmesh.pos').
// We can then define some additional points as well as our first
// curve. Curves are Gmsh's second type of elementery entities, and,
// amongst curves, straight lines are the simplest. A straight line is
// defined by a list of point numbers. In the commands below, for
// example, the line 1 starts at point 1 and ends at point 2:
Point(2) = {.1, 0, 0, lc} ;
Point(3) = {.1, .3, 0, lc} ;
Point(4) = {0, .3, 0, lc} ;
Line(1) = {1,2} ;
Line(2) = {3,2} ;
Line(3) = {3,4} ;
Line(4) = {4,1} ;
// The third elementary entity is the surface. In order to define a
// simple rectangular surface from the four lines defined above, a
// line loop has first to be defined. A line loop is a list of
// connected lines, a sign being associated with each line (depending
// on the orientation of the line):
Line Loop(5) = {4,1,-2,3} ;
// We can then define the surface as a list of line loops (only one
// here, since there are no holes--see `t4.geo'):
Plane Surface(6) = {5} ;
// At this level, Gmsh knows everything to display the rectangular
// surface 6 and to mesh it. An optional step is needed if we want to
// associate specific region numbers to the various elements in the
// mesh (e.g. to the line segments discretizing lines 1 to 4 or to the
// triangles discretizing surface 6). This is achieved by the
// definition of `physical entities'. Physical entities will group
// elements belonging to several elementary entities by giving them a
// common number (a region number), and specifying their orientation.
// We can for example group the points 1 and 2 into the physical
// entity 1:
Physical Point(1) = {1,2} ;
// Consequently, two punctual elements will be saved in the output
// mesh file, both with the region number 1. The mechanism is
// identical for line or surface elements:
MyLine = 99;
Physical Line(MyLine) = {1,2,4} ;
Physical Surface("My fancy surface label") = {6} ;
// All the line elements created during the meshing of lines 1, 2 and
// 4 will be saved in the output mesh file with the region number 99;
// and all the triangular elements resulting from the discretization
// of surface 6 will be given an automatic region number (100,
// associated with the label "My fancy surface label").
// Note that if no physical entities are defined, then all the
// elements in the mesh will be saved "as is", with their default
// orientation.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
/*********************************************************************
*
* Gmsh tutorial 2
*
* Includes, geometrical transformations, extruded geometries,
* elementary entities (volumes), physical entities (volumes)
*
*********************************************************************/
// We first include the previous tutorial file, in order to use it as
// a basis for this one:
Include "t1.geo";
// We can then add new points and lines in the same way as we did in
// `t1.geo':
Point(5) = {0, .4, 0, lc};
Line(5) = {4, 5};
// But Gmsh also provides tools to tranform (translate, rotate, etc.)
// elementary entities or copies of elementary entities. For example,
// the point 3 can be moved by 0.05 units to the left with:
Translate {-0.05, 0, 0} { Point{3}; }
// The resulting point can also be duplicated and translated by 0.1
// along the y axis:
tmp[] = Translate {0, 0.1, 0} { Duplicata{ Point{3}; } } ;
// In this case, we assigned the result of the Translate command to a
// list, so that we can retrieve the number of the newly created point
// and use it to create new lines and a new surface:
Line(7) = {3,tmp[0]};
Line(8) = {tmp[0],5};
Line Loop(10) = {5,-8,-7,3};
Plane Surface(11) = {10};
// Of course, these transformation commands not only apply to points,
// but also to lines and surfaces. We can for example translate a copy
// of surface 6 by 0.12 units along the z axis and define some
// additional lines and surfaces with:
h = 0.12;
Translate {0, 0, h} { Duplicata{ Surface{6}; } }
Line(106) = {1,8};
Line(107) = {2,12};
Line(108) = {3,16};
Line(109) = {4,7};
Line Loop(110) = {1,107,-103,-106}; Plane Surface(111) = {110};
Line Loop(112) = {2,107,104,-108}; Plane Surface(113) = {112};
Line Loop(114) = {3,109,-105,-108}; Plane Surface(115) = {114};
Line Loop(116) = {4,106,-102,-109}; Plane Surface(117) = {116};
// Volumes are the fourth type of elementary entities in Gmsh. In the
// same way one defines line loops to build surfaces, one has to
// define surface loops (i.e. `shells') to build volumes. The
// following volume does not have holes and thus consists of a single
// surface loop:
Surface Loop(118) = {117,-6,111,-113,101,115};
Volume(119) = {118};
// Another way to define a volume is by extruding a surface. The
// following command extrudes the surface 11 along the z axis and
// automatically creates a new volume:
Extrude {0, 0, h} { Surface{11}; }
// All these geometrical transformations automatically generate new
// elementary entities. The following command permits to manually
// assign a characteristic length to some of the new points:
Characteristic Length {tmp[0], 2, 12, 3, 16, 6, 22} = lc * 4;
// Note that, if the transformation tools are handy to create complex
// geometries, it is also sometimes useful to generate the `flat'
// geometry, with an explicit list of all elementary entities. This
// can be achieved by selecting the `File->Save as->Gmsh unrolled
// geometry' menu or by typing
//
// > gmsh t2.geo -0
//
// on the command line.
// To save all the tetrahedra discretizing the volumes 119 and 120
// with a common region number, we finally define a physical
// volume:
Physical Volume (1) = {119,120};
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
/*********************************************************************
*
* Gmsh tutorial 3
*
* Extruded meshes, options
*
*********************************************************************/
// Again, we start by including the first tutorial:
Include "t1.geo";
// As in `t2.geo', we plan to perform an extrusion along the z axis.
// But here, instead of only extruding the geometry, we also want to
// extrude the 2D mesh. This is done with the same `Extrude' command,
// but by specifying element 'Layers' (2 layers in this case, the
// first one with 8 subdivisions and the second one with 2
// subdivisions, both with a height of h/2):
h = 0.1;
Extrude {0,0,h} {
Surface{6}; Layers{ {8,2}, {0.5,1} };
}
// The extrusion can also be performed with a rotation instead of a
// translation, and the resulting mesh can be recombined into prisms
// (we use only one layer here, with 7 subdivisions). All rotations
// are specified by an axis direction ({0,1,0}), an axis point
// ({-0.1,0,0.1}) and a rotation angle (-Pi/2):
Extrude { {0,1,0} , {-0.1,0,0.1} , -Pi/2 } {
Surface{122}; Layers{7}; Recombine;
}
// Note that a translation ({-2*h,0,0}) and a rotation ({1,0,0},
// {0,0.15,0.25}, Pi/2) can also be combined:
out[] = Extrude { {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , Pi/2 } {
Surface{news-1}; Layers{10}; Recombine;
};
// In this last extrusion command we retrieved the volume number
// programatically by saving the output of the command into a
// list. This list will contain the "top" of the extruded surface (in
// out[0]) as well as the newly created volume (in out[1]).
// We can then define a new physical volume to save all the tetrahedra
// with a common region number (101):
Physical Volume(101) = {1, 2, out[1]};
// Let us now change some options... Since all interactive options are
// accessible in Gmsh's scripting language, we can for example define
// a global characteristic length factor or redefine some colors
// directly in the input file:
Mesh.CharacteristicLengthFactor = 4;
General.Color.Text = White;
Geometry.Color.Points = Orange;
Mesh.Color.Points = {255,0,0};
// Note that all colors can be defined literally or numerically, i.e.
// `Mesh.Color.Points = Red' is equivalent to `Mesh.Color.Points =
// {255,0,0}'; and also note that, as with user-defined variables, the
// options can be used either as right or left hand sides, so that the
// following command will set the surface color to the same color as
// the points:
Geometry.Color.Surfaces = Geometry.Color.Points;
// You can click on the `?' button in the status bar of the graphic
// window to see the current values of all options. To save all the
// options in a file, you can use the `File->Save as->Gmsh options'
// menu. To save the current options as the default options for all
// future Gmsh sessions, you should use the `Tools->Options->Save as
// defaults' button.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
/*********************************************************************
*
* Gmsh tutorial 4
*
* Built-in functions, holes, strings, mesh color
*
*********************************************************************/
// As usual, we start by defining some variables, some points and some
// lines:
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;
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};
// Gmsh provides other curve primitives than stright lines: splines,
// B-splines, circle arcs, ellipse arcs, etc. Here we define a new
// circle arc, starting at point 14 and ending at point 16, with the
// circle's center being the point 15:
Circle(3) = {14,15,16};
// Note that, in Gmsh, circle arcs should always be smaller than
// Pi. We can then define additional lines and circles, as well as a
// new surface:
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};
// But we still need to define the exterior surface. Since this
// surface has a hole, its definition now requires two lines loops:
Line Loop(23) = {11,-12,13,14,1,2,-3,4,5,6,7,-8,9,10};
Plane Surface(24) = {23,21};
// Finally, we can add some comments by embedding a post-processing
// view containing some strings, and change the color of some mesh
// entities:
View "comments" {
// 10 pixels from the left and 15 pixels from the top of the graphic
// window:
T2(10,15,0){StrCat("File created on ", Today)};
// 10 pixels from the left and 10 pixels from the bottom of the
// graphic window:
T2(10,-10,0){"Copyright (C) My Company"};
// in the model, at (X,Y,Z) = (0.0,0.11,0.0):
T3(0,0.11,0,0){"Hole"};
};
Color Grey50{ Surface{ 22 }; }
Color Purple{ Surface{ 24 }; }
Color Red{ Line{ 1:14 }; }
Color Yellow{ Line{ 15:20 }; }
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
/*********************************************************************
*
* Gmsh tutorial 5
*
* Characteristic lengths, arrays of variables, functions, loops
*
*********************************************************************/
// Again, we start be defining some characteristic lengths:
lcar1 = .1;
lcar2 = .0005;
lcar3 = .055;
// If we wanted to change these lengths globally (without changing the
// above definitions), we could give a global scaling factor for all
// characteristic lengths on the command line with the `-clscale'
// option (or with `Mesh.CharacteristicLengthFactor' in an option
// file). For example, with:
//
// > gmsh t5.geo -clscale 1
//
// this input file produces a mesh of approximately 3,000 nodes and
// 15,000 tetrahedra. With
//
// > gmsh t5.geo -clscale 0.2
//
// the mesh counts approximately 600,000 nodes and 3.6 million
// tetrahedra.
// We proceed by defining some elementary entities describing a
// truncated cube:
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};
// Instead of using included files, we now use a user-defined function
// in order to carve some holes in the cube:
Function CheeseHole
// In the following commands we use the reserved variable name
// `newp', which automatically selects a new point number. This
// number is chosen as the highest current point number, plus
// one. (Note that, analogously to `newp', the variables `newc',
// `news', `newv' and `newreg' select the highest number amongst
// currently defined curves, surfaces, volumes and `any entities
// other than points', respectively.)
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};
// We need non-plane surfaces to define the spherical holes. Here we
// use ruled surfaces, which can have 3 or 4 sides:
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};
// We then store the surface loops identification numbers in list
// for later reference (we will need these to define the final
// volume):
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
// We can use a `For' loop to generate five holes in the cube:
x = 0 ; y = 0.75 ; z = 0 ; r = 0.09 ;
For t In {1:5}
x += 0.166 ;
z += 0.166 ;
Call CheeseHole ;
// We define a physical volume for each hole:
Physical Volume (t) = thehole ;
// We also print some variables on the terminal (note that, since
// all variables are treated internally as floating point numbers,
// the format string should only contain valid floating point format
// specifiers):
Printf("Hole %g (center = {%g,%g,%g}, radius = %g) has number %g!",
t, x, y, z, r, thehole) ;
EndFor
// We can then define the surface loop for the exterior surface of the
// cube:
theloops[0] = newreg ;
Surface Loop(theloops[0]) = {35,31,29,37,33,23,39,25,27} ;
// The volume of the cube, without the 5 holes, is now defined by 6
// surface loops (the exterior surface and the five interior loops).
// To reference an array of variables, its identifier is followed by
// '[]':
Volume(186) = {theloops[]} ;
// We finally define a physical volume for the elements discretizing
// the cube, without the holes (whose elements were already tagged
// with numbers 1 to 5 in the `For' loop):
Physical Volume (10) = 186 ;
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
/*********************************************************************
*
* Gmsh tutorial 6
*
* Transfinite meshes
*
*********************************************************************/
// Let's use the geometry from the first tutorial as a basis for this
// one
Include "t1.geo";
// Delete the left line and create replace it with 3 new ones
Delete{ Surface{6}; Line{4}; }
p1 = newp; Point(p1) = {-0.05, 0.05, 0, lc};
p2 = newp; Point(p2) = {-0.05, 0.1, 0, lc};
l1 = newl; Line(l1) = {1, p1};
l2 = newl; Line(l2) = {p1, p2};
l3 = newl; Line(l3) = {p2, 4};
// Create surface
Line Loop(1) = {2, -1, l1, l2, l3, -3};
Plane Surface(1) = {1};
// Put 20 points with a refinement toward the extremities on curve 2
Transfinite Line{2} = 20 Using Bump 0.05;
// Put 20 points total on combination of curves l1, l2 and l3
Transfinite Line{l1} = 6;
Transfinite Line{l2} = 6;
Transfinite Line{l3} = 10;
// Put 30 points following a geometric progression on curve 1
// (reversed) and on curve 3
Transfinite Line{-1,3} = 30 Using Progression 1.2;
// Define the Surface as transfinite, by specifying the four corners
// of the transfinite interpolation
Transfinite Surface{1} = {1,2,3,4};
// (Note that the list on the right hand side refers to points, not
// curves. When the surface has only 3 or 4 points on its boundary the
// list can be omitted. The way triangles are generated can be
// controlled by appending "Left", "Right" or "Alternate" after the
// list.)
// Recombine the triangles into quads
Recombine Surface{1};
// Apply an elliptic smoother to the grid
Mesh.Smoothing = 100;
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
/********************************************************************* * * Gmsh tutorial 7 * * Background mesh * *********************************************************************/ // Characteristic lengths can be specified very accuractely by // providing a background mesh, i.e., a post-processing view that // contains the target mesh sizes. // Merge the first tutorial Merge "t1.geo"; // Merge a post-processing view containing the target mesh sizes Merge "bgmesh.pos"; // Apply the view as the current background mesh Background Mesh View[0];
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
/*********************************************************************
*
* Gmsh tutorial 8
*
* Post-processing, scripting, animations, options
*
*********************************************************************/
// We first include `t1.geo' as well as some post-processing views:
Include "t1.geo" ;
Include "view1.pos" ;
Include "view1.pos" ;
Include "view4.pos" ;
// We then set some general options:
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 ;
// We also set some options for each post-processing view:
v0 = PostProcessing.NbViews-4;
v1 = v0+1;
v2 = v0+2;
v3 = v0+3;
View[v0].IntervalsType = 2 ;
View[v0].OffsetZ = 0.05 ;
View[v0].RaiseZ = 0 ;
View[v0].Light = 1 ;
View[v0].ShowScale = 0;
View[v0].SmoothNormals = 1;
View[v1].IntervalsType = 1 ;
View[v1].ColorTable = { Green, Blue } ;
View[v1].NbIso = 10 ;
View[v1].ShowScale = 0;
View[v2].Name = "Test..." ;
View[v2].Axes = 1;
View[v2].Color.Axes = Black;
View[v2].IntervalsType = 2 ;
View[v2].Type = 2;
View[v2].IntervalsType = 2 ;
View[v2].AutoPosition = 0;
View[v2].PositionX = 85;
View[v2].PositionY = 50;
View[v2].Width = 200;
View[v2].Height = 130;
View[v3].Visible = 0;
// We then loop from 1 to 255 with a step of 1. (To use a different
// step, just add a third argument in the list. For example, `For num
// In {0.5:1.5:0.1}' would increment num from 0.5 to 1.5 with a step
// of 0.1.)
t = 0 ;
//For num In {1:1}
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 < View[v0].NbTimeStep-1) ? t+1 : 0 ;
View[v0].RaiseZ += 0.01/View[v0].Max * t ;
If (num == 3)
// We want to create 320x240 frames when num == 3:
General.GraphicsWidth = 320 ;
General.GraphicsHeight = 240 ;
EndIf
// It is possible to nest loops:
For num2 In {1:50}
General.RotationX += 10 ;
General.RotationY = General.RotationX / 3 ;
General.RotationZ += 0.1 ;
Sleep 0.01; // sleep for 0.01 second
Draw; // draw the scene
If (num == 3)
// The `Print' command saves the graphical window; the `Sprintf'
// function permits to create the file names on the fly:
Print Sprintf("t8-%02g.gif", num2);
Print Sprintf("t8-%02g.jpg", num2);
EndIf
EndFor
If(num == 3)
// Here we could make a system call to generate a movie. For example,
// with whirlgif:
//
// System "whirlgif -minimize -loop -o t8.gif t8-*.gif";
// with mpeg_encode:
//
// System "mpeg_encode t8.par";
// with mencoder:
//
// System "mencoder 'mf://*.jpg' -mf fps=5 -o t8.mpg -ovc lavc
// -lavcopts vcodec=mpeg1video:vhq";
// System "mencoder 'mf://*.jpg' -mf fps=5 -o t8.mpg -ovc lavc
// -lavcopts vcodec=mpeg4:vhq";
// with ffmpeg:
//
// System "ffmpeg -hq -r 5 -b 800 -vcodec mpeg1video
// -i t8-%02d.jpg t8.mpg"
// System "ffmpeg -hq -r 5 -b 800 -i t8-%02d.jpg t8.asf"
EndIf
EndFor
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
/********************************************************************* * * Gmsh tutorial 9 * * Post-processing plugins (levelsets, sections, annotations) * *********************************************************************/ // Plugins can be added to Gmsh in order to extend its // capabilities. For example, post-processing plugins can modify a // view, or create a new view based on previously loaded // views. Several default plugins are statically linked with Gmsh, // e.g. CutMap, CutPlane, CutSphere, Skin, Transform or Smooth. // Plugins can be controlled in the same way as other options: either // from the graphical interface (right click on the view button, then // `Plugins'), or from the command file. // Let us for example include a three-dimensional scalar view: Include "view3.pos" ; // We then set some options for the `CutMap' plugin (which extracts an // isovalue surface from a 3D scalar view), and run it: Plugin(CutMap).A = 0.67 ; // iso-value level Plugin(CutMap).iView = 0 ; // source view is View[0] Plugin(CutMap).Run ; // We also set some options for the `CutPlane' plugin (which computes // a section of a 3D view), and then run it: Plugin(CutPlane).A = 0 ; Plugin(CutPlane).B = 0.2 ; Plugin(CutPlane).C = 1 ; Plugin(CutPlane).D = 0 ; Plugin(CutPlane).Run ; // Add a title Plugin(Annotate).Text = "A nice title" ; // By convention, a value greater than 99999 represents the center (we // could also use `General.GraphicsWidth/2', but that would only center // the string for the current window size): Plugin(Annotate).X = 1.e5; Plugin(Annotate).Y = 50 ; Plugin(Annotate).Font = "Times-BoldItalic" ; Plugin(Annotate).FontSize = 28 ; Plugin(Annotate).Align = "Center" ; Plugin(Annotate).Run ; Plugin(Annotate).Text = "(and a small subtitle)" ; Plugin(Annotate).Y = 70 ; Plugin(Annotate).Font = "Times-Roman" ; Plugin(Annotate).FontSize = 12 ; Plugin(Annotate).Run ; // We finish by setting some options: View[0].Light = 1; View[0].IntervalsType = 1; View[0].NbIso = 6; View[0].SmoothNormals = 1; View[1].IntervalsType = 2; View[2].IntervalsType = 2;
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This appendix lists all the available options. Gmsh's default behavior
is to save some of these options in a per-user "session resource" file
(General.SessionFileName) every time Gmsh is shut down. This
permits for example to automatically remember the size and location of
the windows or which fonts to use. Other options can be saved in a
per-user "option" file (General.OptionsFileName), automatically
loaded by Gmsh every time it starts up, by using the `File->Save Default
Options' menu.
B.1 General options list B.2 Geometry options list B.3 Mesh options list B.4 Solver options list B.5 Post-processing options list
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
General.AxesFormatX
"%.3g"General.OptionsFileName
General.AxesFormatY
"%.3g"General.OptionsFileName
General.AxesFormatZ
"%.3g"General.OptionsFileName
General.AxesLabelX
""General.OptionsFileName
General.AxesLabelY
""General.OptionsFileName
General.AxesLabelZ
""General.OptionsFileName
General.BackgroundImageFileName
""General.OptionsFileName
General.DefaultFileName
"untitled.geo"General.OptionsFileName
General.Display
""-
General.ErrorFileName
".gmsh-errors"General.OptionsFileName
General.FileName
""-
General.FltkTheme
""General.OptionsFileName
General.GraphicsFont
"Helvetica"General.OptionsFileName
General.OptionsFileName
".gmsh-options"General.SessionFileName
General.SessionFileName
".gmshrc"-
General.TextEditor
"open -t %s"General.OptionsFileName
General.TmpFileName
".gmsh-tmp"General.SessionFileName
General.WebBrowser
"open %s"General.OptionsFileName
General.AlphaBlending
1General.OptionsFileName
General.Antialiasing
0General.OptionsFileName
General.ArrowHeadRadius
0.12General.OptionsFileName
General.ArrowStemLength
0.56General.OptionsFileName
General.ArrowStemRadius
0.02General.OptionsFileName
General.Axes
0General.OptionsFileName
General.AxesMikado
0General.OptionsFileName
General.AxesAutoPosition
1General.OptionsFileName
General.AxesMaxX
1General.OptionsFileName
General.AxesMaxY
1General.OptionsFileName
General.AxesMaxZ
1General.OptionsFileName
General.AxesMinX
0General.OptionsFileName
General.AxesMinY
0General.OptionsFileName
General.AxesMinZ
0General.OptionsFileName
General.AxesTicsX
5General.OptionsFileName
General.AxesTicsY
5General.OptionsFileName
General.AxesTicsZ
5General.OptionsFileName
General.BackgroundGradient
1General.OptionsFileName
General.BackgroundImagePositionX
100000General.OptionsFileName
General.BackgroundImagePositionY
100000General.OptionsFileName
General.Clip0A
1-
General.Clip0B
0-
General.Clip0C
0-
General.Clip0D
0-
General.Clip1A
0-
General.Clip1B
1-
General.Clip1C
0-
General.Clip1D
0-
General.Clip2A
0-
General.Clip2B
0-
General.Clip2C
1-
General.Clip2D
0-
General.Clip3A
-1-
General.Clip3B
0-
General.Clip3C
0-
General.Clip3D
0-
General.Clip4A
0-
General.Clip4B
-1-
General.Clip4C
0-
General.Clip4D
0-
General.Clip5A
0-
General.Clip5B
0-
General.Clip5C
-1-
General.Clip5D
0-
General.ClipFactor
5-
General.ClipOnlyDrawIntersectingVolume
0General.OptionsFileName
General.ClipOnlyVolume
0General.OptionsFileName
General.ClipPositionX
650General.SessionFileName
General.ClipPositionY
150General.SessionFileName
General.ClipWholeElements
0General.OptionsFileName
General.ColorScheme
1General.OptionsFileName
General.ConfirmOverwrite
1General.OptionsFileName
General.ContextPositionX
650General.SessionFileName
General.ContextPositionY
150General.SessionFileName
General.DoubleBuffer
1General.OptionsFileName
General.DrawBoundingBoxes
0General.OptionsFileName
General.ExpertMode
0General.OptionsFileName
General.FastRedraw
0General.OptionsFileName
General.FieldPositionX
650General.SessionFileName
General.FieldPositionY
550General.SessionFileName
General.FieldHeight
300General.SessionFileName
General.FieldWidth
300General.SessionFileName
General.FileChooserPositionX
200General.SessionFileName
General.FileChooserPositionY
200General.SessionFileName
General.FontSize
-1General.OptionsFileName
General.GraphicsFontSize
17General.OptionsFileName
General.GraphicsHeight
600General.SessionFileName
General.GraphicsPositionX
50General.SessionFileName
General.GraphicsPositionY
50General.SessionFileName
General.GraphicsWidth
600General.SessionFileName
General.InitialModule
0General.OptionsFileName
General.Light0
1General.OptionsFileName
General.Light0X
0.65General.OptionsFileName
General.Light0Y
0.65General.OptionsFileName
General.Light0Z
1General.OptionsFileName
General.Light0W
0General.OptionsFileName
General.Light1
0General.OptionsFileName
General.Light1X
0.5General.OptionsFileName
General.Light1Y
0.3General.OptionsFileName
General.Light1Z
1General.OptionsFileName
General.Light1W
0General.OptionsFileName
General.Light2
0General.OptionsFileName
General.Light2X
0.5General.OptionsFileName
General.Light2Y
0.3General.OptionsFileName
General.Light2Z
1General.OptionsFileName
General.Light2W
0General.OptionsFileName
General.Light3
0General.OptionsFileName
General.Light3X
0.5General.OptionsFileName
General.Light3Y
0.3General.OptionsFileName
General.Light3Z
1General.OptionsFileName
General.Light3W
0General.OptionsFileName
General.Light4
0General.OptionsFileName
General.Light4X
0.5General.OptionsFileName
General.Light4Y
0.3General.OptionsFileName
General.Light4Z
1General.OptionsFileName
General.Light4W
0General.OptionsFileName
General.Light5
0General.OptionsFileName
General.Light5X
0.5General.OptionsFileName
General.Light5Y
0.3General.OptionsFileName
General.Light5Z
1General.OptionsFileName
General.Light5W
0General.OptionsFileName
General.LineWidth
1General.OptionsFileName
General.ManipulatorPositionX
650General.SessionFileName
General.ManipulatorPositionY
150General.SessionFileName
General.MaxX
0-
General.MaxY
0-
General.MaxZ
0-
General.MenuPositionX
800General.SessionFileName
General.MenuPositionY
50General.SessionFileName
General.MessageAutoScroll
1General.OptionsFileName
General.MessagePositionX
650General.SessionFileName
General.MessagePositionY
490General.SessionFileName
General.MessageHeight
300General.SessionFileName
General.MessageWidth
400General.SessionFileName
General.MinX
0-
General.MinY
0-
General.MinZ
0-
General.MouseHoverMeshes
0General.OptionsFileName
General.MouseSelection
1General.OptionsFileName
General.NonModalWindows
1General.SessionFileName
General.NoPopup
0General.OptionsFileName
General.OptionsPositionX
650General.SessionFileName
General.OptionsPositionY
150General.SessionFileName
General.Orthographic
1General.OptionsFileName
General.PluginPositionX
650General.SessionFileName
General.PluginPositionY
550General.SessionFileName
General.PluginHeight
300General.SessionFileName
General.PluginWidth
300General.SessionFileName
General.PointSize
3General.OptionsFileName
General.PolygonOffsetAlwaysOn
0General.OptionsFileName
General.PolygonOffsetFactor
0.5General.OptionsFileName
General.PolygonOffsetUnits
1General.OptionsFileName
General.QuadricSubdivisions
6General.OptionsFileName
General.RotationX
0-
General.RotationY
0-
General.RotationZ
0-
General.RotationCenterGravity
1General.OptionsFileName
General.RotationCenterX
0-
General.RotationCenterY
0-
General.RotationCenterZ
0-
General.SaveOptions
0General.SessionFileName
General.SaveSession
1General.SessionFileName
General.ScaleX
1-
General.ScaleY
1-
General.ScaleZ
1-
General.Shininess
0.4General.OptionsFileName
General.ShininessExponent
40General.OptionsFileName
General.SmallAxes
1General.OptionsFileName
General.SmallAxesPositionX
-60General.OptionsFileName
General.SmallAxesPositionY
-40General.OptionsFileName
General.SmallAxesSize
30General.OptionsFileName
General.SolverPositionX
650General.SessionFileName
General.SolverPositionY
150General.SessionFileName
General.StatisticsPositionX
650General.SessionFileName
General.StatisticsPositionY
150General.SessionFileName
General.SystemMenuBar
1General.SessionFileName
General.Terminal
0General.OptionsFileName
General.Tooltips
1General.OptionsFileName
General.Trackball
1General.OptionsFileName
General.TrackballQuaternion0
0-
General.TrackballQuaternion1
0-
General.TrackballQuaternion2
0-
General.TrackballQuaternion3
1-
General.TranslationX
0-
General.TranslationY
0-
General.TranslationZ
0-
General.VectorType
4General.OptionsFileName
General.Verbosity
4General.OptionsFileName
General.VisibilityPositionX
650General.SessionFileName
General.VisibilityPositionY
150General.SessionFileName
General.ZoomFactor
4General.OptionsFileName
General.Color.Background
{255,255,255}General.OptionsFileName
General.Color.BackgroundGradient
{128,147,255}General.OptionsFileName
General.Color.Foreground
{85,85,85}General.OptionsFileName
General.Color.Text
{0,0,0}General.OptionsFileName
General.Color.Axes
{0,0,0}General.OptionsFileName
General.Color.SmallAxes
{0,0,0}General.OptionsFileName
General.Color.AmbientLight
{25,25,25}General.OptionsFileName
General.Color.DiffuseLight
{255,255,255}General.OptionsFileName
General.Color.SpecularLight
{255,255,255}General.OptionsFileName
Print.CompositeWindows
0General.OptionsFileName
Print.EpsBackground
1General.OptionsFileName
Print.EpsBestRoot
1General.OptionsFileName
Print.EpsCompress
0General.OptionsFileName
Print.EpsLineWidthFactor
0.5General.OptionsFileName
Print.EpsOcclusionCulling
1General.OptionsFileName
Print.EpsPointSizeFactor
1General.OptionsFileName
Print.EpsPS3Shading
0General.OptionsFileName
Print.EpsQuality
1General.OptionsFileName
Print.Format
10General.OptionsFileName
Print.GeoLabels
1General.OptionsFileName
Print.GifDither
0General.OptionsFileName
Print.GifInterlace
0General.OptionsFileName
Print.GifSort
1General.OptionsFileName
Print.GifTransparent
0General.OptionsFileName
Print.JpegQuality
100General.OptionsFileName
Print.JpegSmoothing
0General.OptionsFileName
Print.PostElementary
1General.OptionsFileName
Print.PostElement
0General.OptionsFileName
Print.PostGamma
0General.OptionsFileName
Print.PostEta
0General.OptionsFileName
Print.PostRho
0General.OptionsFileName
Print.PostDisto
0General.OptionsFileName
Print.TexAsEquation
0General.OptionsFileName
Print.Text
1General.OptionsFileName
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Geometry.AutoCoherence
1General.OptionsFileName
Geometry.Clip
0-
Geometry.ExtrudeReturnLateralEntities
1General.OptionsFileName
Geometry.ExtrudeSplinePoints
5General.OptionsFileName
Geometry.HighlightOrphans
0General.OptionsFileName
Geometry.Light
1General.OptionsFileName
Geometry.LightTwoSide
1General.OptionsFileName
Geometry.Lines
1General.OptionsFileName
Geometry.LineNumbers
0General.OptionsFileName
Geometry.LineSelectWidth
2General.OptionsFileName
Geometry.LineType
0General.OptionsFileName
Geometry.LineWidth
2General.OptionsFileName
Geometry.Normals
0General.OptionsFileName
Geometry.NumSubEdges
20General.OptionsFileName
Geometry.OCCFixSmallEdges
1General.OptionsFileName
Geometry.OCCFixSmallFaces
1General.OptionsFileName
Geometry.OCCSewFaces
0General.OptionsFileName
Geometry.OffsetX
0-
Geometry.OffsetY
0-
Geometry.OffsetZ
0-
Geometry.OldCircle
0General.OptionsFileName
Geometry.OldNewReg
1General.OptionsFileName
Geometry.Points
1General.OptionsFileName
Geometry.PointNumbers
0General.OptionsFileName
Geometry.PointSelectSize
5General.OptionsFileName
Geometry.PointSize
4General.OptionsFileName
Geometry.PointType
0General.OptionsFileName
Geometry.ScalingFactor
1General.OptionsFileName
Geometry.SnapX
0.1General.OptionsFileName
Geometry.SnapY
0.1General.OptionsFileName
Geometry.SnapZ
0.1General.OptionsFileName
Geometry.Surfaces
0General.OptionsFileName
Geometry.SurfaceNumbers
0General.OptionsFileName
Geometry.SurfaceType
2General.OptionsFileName
Geometry.Tangents
0General.OptionsFileName
Geometry.Tolerance
1e-06General.OptionsFileName
Geometry.Transform
0-
Geometry.TransformXX
1-
Geometry.TransformXY
0-
Geometry.TransformXZ
0-
Geometry.TransformYX
0-
Geometry.TransformYY
1-
Geometry.TransformYZ
0-
Geometry.TransformZX
0-
Geometry.TransformZY
0-
Geometry.TransformZZ
1-
Geometry.Volumes
0General.OptionsFileName
Geometry.VolumeNumbers
0General.OptionsFileName
Geometry.Color.Points
{90,90,90}General.OptionsFileName
Geometry.Color.Lines
{0,0,255}General.OptionsFileName
Geometry.Color.Surfaces
{128,128,128}General.OptionsFileName
Geometry.Color.Volumes
{255,255,0}General.OptionsFileName
Geometry.Color.Selection
{255,0,0}General.OptionsFileName
Geometry.Color.HighlightZero
{255,0,0}General.OptionsFileName
Geometry.Color.HighlightOne
{255,150,0}General.OptionsFileName
Geometry.Color.HighlightTwo
{255,255,0}General.OptionsFileName
Geometry.Color.Tangents
{255,255,0}General.OptionsFileName
Geometry.Color.Normals
{255,0,0}General.OptionsFileName
Geometry.Color.Projection
{0,255,0}General.OptionsFileName
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Mesh.Algorithm
1General.OptionsFileName
Mesh.Algorithm3D
1General.OptionsFileName
Mesh.AngleSmoothNormals
30General.OptionsFileName
Mesh.AllowSwapAngle
10General.OptionsFileName
Mesh.BdfFieldFormat
1General.OptionsFileName
Mesh.Binary
0General.OptionsFileName
Mesh.ChacoArchitecture
1General.OptionsFileName
Mesh.ChacoEigensolver
1General.OptionsFileName
Mesh.ChacoEigTol
0.001General.OptionsFileName
Mesh.ChacoGlobalMethod
1General.OptionsFileName
Mesh.ChacoHypercubeDim
2General.OptionsFileName
Mesh.ChacoLocalMethod
1General.OptionsFileName
Mesh.ChacoMeshDim1
4General.OptionsFileName
Mesh.ChacoMeshDim2
1General.OptionsFileName
Mesh.ChacoMeshDim3
1General.OptionsFileName
Mesh.ChacoPartitionSection
1General.OptionsFileName
Mesh.ChacoSeed
7.65432e+06General.OptionsFileName
Mesh.ChacoVMax
250General.OptionsFileName
Mesh.ChacoParamINTERNAL_VERTICES
0General.OptionsFileName
Mesh.ChacoParamREFINE_MAP
1General.OptionsFileName
Mesh.ChacoParamREFINE_PARTITION
0General.OptionsFileName
Mesh.ChacoParamTERMINAL_PROPOGATION
0General.OptionsFileName
Mesh.CharacteristicLengthExtendFromBoundary
1General.OptionsFileName
Mesh.CharacteristicLengthFactor
1General.OptionsFileName
Mesh.CharacteristicLengthMin
0General.OptionsFileName
Mesh.CharacteristicLengthMax
1e+22General.OptionsFileName
Mesh.CharacteristicLengthFromCurvature
0General.OptionsFileName
Mesh.CharacteristicLengthFromPoints
1General.OptionsFileName
Mesh.Clip
0-
Mesh.ColorCarousel
1General.OptionsFileName
Mesh.CpuTime
0-
Mesh.DrawSkinOnly
0General.OptionsFileName
Mesh.Dual
0General.OptionsFileName
Mesh.ElementOrder
1General.OptionsFileName
Mesh.Explode
1General.OptionsFileName
Mesh.Format
1General.OptionsFileName
Mesh.Hexahedra
1General.OptionsFileName
Mesh.LabelsFrequency
100General.OptionsFileName
Mesh.LabelType
0General.OptionsFileName
Mesh.LcIntegrationPrecision
1e-09General.OptionsFileName
Mesh.Light
1General.OptionsFileName
Mesh.LightLines
1General.OptionsFileName
Mesh.LightTwoSide
1General.OptionsFileName
Mesh.Lines
0General.OptionsFileName
Mesh.LineNumbers
0General.OptionsFileName
Mesh.LineWidth
1General.OptionsFileName
Mesh.MeshOnlyVisible
0General.OptionsFileName
Mesh.MetisAlgorithm
1General.OptionsFileName
Mesh.MetisEdgeMatching
3General.OptionsFileName
Mesh.MetisRefinementAlgorithm
3General.OptionsFileName
Mesh.MinimumCirclePoints
7General.OptionsFileName
Mesh.MinimumCurvePoints
3General.OptionsFileName
Mesh.MshFileVersion
2General.OptionsFileName
Mesh.NbHexahedra
0-
Mesh.NbNodes
0-
Mesh.NbPartitions
4General.OptionsFileName
Mesh.NbPrisms
0-
Mesh.NbPyramids
0-
Mesh.NbQuadrangles
0-
Mesh.NbTetrahedra
0-
Mesh.NbTriangles
0-
Mesh.Normals
0General.OptionsFileName
Mesh.NumSubEdges
2General.OptionsFileName
Mesh.Optimize
0General.OptionsFileName
Mesh.OptimizeNetgen
0General.OptionsFileName
Mesh.Partitioner
2General.OptionsFileName
Mesh.Points
0General.OptionsFileName
Mesh.PointNumbers
0General.OptionsFileName
Mesh.PointSize
4General.OptionsFileName
Mesh.PointType
0General.OptionsFileName
Mesh.Prisms
1General.OptionsFileName
Mesh.Pyramids
1General.OptionsFileName
Mesh.Quadrangles
1General.OptionsFileName
Mesh.QualityInf
0General.OptionsFileName
Mesh.QualitySup
0General.OptionsFileName
Mesh.QualityType
2General.OptionsFileName
Mesh.RadiusInf
0General.OptionsFileName
Mesh.RadiusSup
0General.OptionsFileName
Mesh.RandomFactor
1e-09General.OptionsFileName
Mesh.RefineSteps
10General.OptionsFileName
Mesh.ReverseAllNormals
0General.OptionsFileName
Mesh.SaveAll
0-
Mesh.SaveParametric
0-
Mesh.SaveGroupsOfNodes
0-
Mesh.ScalingFactor
1General.OptionsFileName
Mesh.SecondOrderExperimental
0General.OptionsFileName
Mesh.SecondOrderIncomplete
1General.OptionsFileName
Mesh.SecondOrderLinear
0General.OptionsFileName
Mesh.Smoothing
1General.OptionsFileName
Mesh.SmoothInternalEdges
0General.OptionsFileName
Mesh.SmoothNormals
0General.OptionsFileName
Mesh.SubdivisionAlgorithm
0General.OptionsFileName
Mesh.SurfaceEdges
1General.OptionsFileName
Mesh.SurfaceFaces
0General.OptionsFileName
Mesh.SurfaceNumbers
0General.OptionsFileName
Mesh.Tangents
0General.OptionsFileName
Mesh.Tetrahedra
1General.OptionsFileName
Mesh.ToleranceEdgeLength
0General.OptionsFileName
Mesh.Triangles
1General.OptionsFileName
Mesh.VolumeEdges
1General.OptionsFileName
Mesh.VolumeFaces
0General.OptionsFileName
Mesh.VolumeNumbers
0General.OptionsFileName
Mesh.Voronoi
0General.OptionsFileName
Mesh.ZoneDefinition
0General.OptionsFileName
Mesh.Color.Points
{0,0,255}General.OptionsFileName
Mesh.Color.PointsSup
{255,0,255}General.OptionsFileName
Mesh.Color.Lines
{0,0,0}General.OptionsFileName
Mesh.Color.Triangles
{160,150,255}General.OptionsFileName
Mesh.Color.Quadrangles
{130,120,225}General.OptionsFileName
Mesh.Color.Tetrahedra
{160,150,255}General.OptionsFileName
Mesh.Color.Hexahedra
{130,120,225}General.OptionsFileName
Mesh.Color.Prisms
{232,210,23}General.OptionsFileName
Mesh.Color.Pyramids
{217,113,38}General.OptionsFileName
Mesh.Color.Tangents
{255,255,0}General.OptionsFileName
Mesh.Color.Normals
{255,0,0}General.OptionsFileName
Mesh.Color.Zero
{255,120,0}General.OptionsFileName
Mesh.Color.One
{255,160,0}General.OptionsFileName
Mesh.Color.Two
{255,200,0}General.OptionsFileName
Mesh.Color.Three
{255,240,0}General.OptionsFileName
Mesh.Color.Four
{228,255,0}General.OptionsFileName
Mesh.Color.Five
{188,255,0}General.OptionsFileName
Mesh.Color.Six
{148,255,0}General.OptionsFileName
Mesh.Color.Seven
{108,255,0}General.OptionsFileName
Mesh.Color.Eight
{68,255,0}General.OptionsFileName
Mesh.Color.Nine
{0,255,52}General.OptionsFileName
Mesh.Color.Ten
{0,255,132}General.OptionsFileName
Mesh.Color.Eleven
{0,255,192}General.OptionsFileName
Mesh.Color.Twelve
{0,216,255}General.OptionsFileName
Mesh.Color.Thirteen
{0,176,255}General.OptionsFileName
Mesh.Color.Fourteen
{0,116,255}General.OptionsFileName
Mesh.Color.Fifteen
{0,76,255}General.OptionsFileName
Mesh.Color.Sixteen
{24,0,255}General.OptionsFileName
Mesh.Color.Seventeen
{84,0,255}General.OptionsFileName
Mesh.Color.Eighteen
{104,0,255}General.OptionsFileName
Mesh.Color.Nineteen
{184,0,255}General.OptionsFileName
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Solver.SocketName
".gmshsock"General.OptionsFileName
Solver.Name0
"GetDP"General.OptionsFileName
Solver.Help0
"A General environment for the treatment of
Discrete Problems.
Copyright (C) 1997-2009
Patrick Dular and Christophe Geuzaine.
Visit http://www.geuz.org/getdp/ for more info"General.OptionsFileName
Solver.Executable0
"getdp"General.OptionsFileName
Solver.Extension0
".pro"General.OptionsFileName
Solver.MeshName0
""General.OptionsFileName
Solver.MeshCommand0
"-msh %s"General.OptionsFileName
Solver.SocketCommand0
"-socket %s"General.OptionsFileName
Solver.NameCommand0
"%s"General.OptionsFileName
Solver.OptionCommand0
""General.OptionsFileName
Solver.FirstOption0
"Resolution"General.OptionsFileName
Solver.SecondOption0
"PostOperation"General.OptionsFileName
Solver.ThirdOption0
""General.OptionsFileName
Solver.FourthOption0
""General.OptionsFileName
Solver.FifthOption0
""General.OptionsFileName
Solver.FirstButton0
"Pre"General.OptionsFileName
Solver.FirstButtonCommand0
"-pre %s"General.OptionsFileName
Solver.SecondButton0
"Cal"General.OptionsFileName
Solver.SecondButtonCommand0
"-cal"General.OptionsFileName
Solver.ThirdButton0
"Pos"General.OptionsFileName
Solver.ThirdButtonCommand0
"-pos %s"General.OptionsFileName
Solver.FourthButton0
""General.OptionsFileName
Solver.FourthButtonCommand0
""General.OptionsFileName
Solver.FifthButton0
""General.OptionsFileName
Solver.FifthButtonCommand0
""General.OptionsFileName
Solver.Name1
""General.OptionsFileName
Solver.Help1
""General.OptionsFileName
Solver.Executable1
""General.OptionsFileName
Solver.Extension1
""General.OptionsFileName
Solver.MeshName1
""General.OptionsFileName
Solver.MeshCommand1
""General.OptionsFileName
Solver.SocketCommand1
"-socket %s"General.OptionsFileName
Solver.NameCommand1
"%s"General.OptionsFileName
Solver.OptionCommand1
""General.OptionsFileName
Solver.FirstOption1
""General.OptionsFileName
Solver.SecondOption1
""General.OptionsFileName
Solver.ThirdOption1
""General.OptionsFileName
Solver.FourthOption1
""General.OptionsFileName
Solver.FifthOption1
""General.OptionsFileName
Solver.FirstButton1
""General.OptionsFileName
Solver.FirstButtonCommand1
""General.OptionsFileName
Solver.SecondButton1
""General.OptionsFileName
Solver.SecondButtonCommand1
""General.OptionsFileName
Solver.ThirdButton1
""General.OptionsFileName
Solver.ThirdButtonCommand1
""General.OptionsFileName
Solver.FourthButton1
""General.OptionsFileName
Solver.FourthButtonCommand1
""General.OptionsFileName
Solver.FifthButton1
""General.OptionsFileName
Solver.FifthButtonCommand1
""General.OptionsFileName
Solver.Name2
""General.OptionsFileName
Solver.Help2
""General.OptionsFileName
Solver.Executable2
""General.OptionsFileName
Solver.Extension2
""General.OptionsFileName
Solver.MeshName2
""General.OptionsFileName
Solver.MeshCommand2
""General.OptionsFileName
Solver.SocketCommand2
"-socket %s"General.OptionsFileName
Solver.NameCommand2
"%s"General.OptionsFileName
Solver.OptionCommand2
""General.OptionsFileName
Solver.FirstOption2
""General.OptionsFileName
Solver.SecondOption2
""General.OptionsFileName
Solver.ThirdOption2
""General.OptionsFileName
Solver.FourthOption2
""General.OptionsFileName
Solver.FifthOption2
""General.OptionsFileName
Solver.FirstButton2
""General.OptionsFileName
Solver.FirstButtonCommand2
""General.OptionsFileName
Solver.SecondButton2
""General.OptionsFileName
Solver.SecondButtonCommand2
""General.OptionsFileName
Solver.ThirdButton2
""General.OptionsFileName
Solver.ThirdButtonCommand2
""General.OptionsFileName
Solver.FourthButton2
""General.OptionsFileName
Solver.FourthButtonCommand2
""General.OptionsFileName
Solver.FifthButton2
""General.OptionsFileName
Solver.FifthButtonCommand2
""General.OptionsFileName
Solver.Name3
""General.OptionsFileName
Solver.Help3
""General.OptionsFileName
Solver.Executable3
""General.OptionsFileName
Solver.Extension3
""General.OptionsFileName
Solver.MeshName3
""General.OptionsFileName
Solver.MeshCommand3
""General.OptionsFileName
Solver.SocketCommand3
"-socket %s"General.OptionsFileName
Solver.NameCommand3
"%s"General.OptionsFileName
Solver.OptionCommand3
""General.OptionsFileName
Solver.FirstOption3
""General.OptionsFileName
Solver.SecondOption3
""General.OptionsFileName
Solver.ThirdOption3
""General.OptionsFileName
Solver.FourthOption3
""General.OptionsFileName
Solver.FifthOption3
""General.OptionsFileName
Solver.FirstButton3
""General.OptionsFileName
Solver.FirstButtonCommand3
""General.OptionsFileName
Solver.SecondButton3
""General.OptionsFileName
Solver.SecondButtonCommand3
""General.OptionsFileName
Solver.ThirdButton3
""General.OptionsFileName
Solver.ThirdButtonCommand3
""General.OptionsFileName
Solver.FourthButton3
""General.OptionsFileName
Solver.FourthButtonCommand3
""General.OptionsFileName
Solver.FifthButton3
""General.OptionsFileName
Solver.FifthButtonCommand3
""General.OptionsFileName
Solver.Name4
""General.OptionsFileName
Solver.Help4
""General.OptionsFileName
Solver.Executable4
""General.OptionsFileName
Solver.Extension4
""General.OptionsFileName
Solver.MeshName4
""General.OptionsFileName
Solver.MeshCommand4
""General.OptionsFileName
Solver.SocketCommand4
"-socket %s"General.OptionsFileName
Solver.NameCommand4
"%s"General.OptionsFileName
Solver.OptionCommand4
""General.OptionsFileName
Solver.FirstOption4
""General.OptionsFileName
Solver.SecondOption4
""General.OptionsFileName
Solver.ThirdOption4
""General.OptionsFileName
Solver.FourthOption4
""General.OptionsFileName
Solver.FifthOption4
""General.OptionsFileName
Solver.FirstButton4
""General.OptionsFileName
Solver.FirstButtonCommand4
""General.OptionsFileName
Solver.SecondButton4
""General.OptionsFileName
Solver.SecondButtonCommand4
""General.OptionsFileName
Solver.ThirdButton4
""General.OptionsFileName
Solver.ThirdButtonCommand4
""General.OptionsFileName
Solver.FourthButton4
""General.OptionsFileName
Solver.FourthButtonCommand4
""General.OptionsFileName
Solver.FifthButton4
""General.OptionsFileName
Solver.FifthButtonCommand4
""General.OptionsFileName
Solver.AlwaysListen
0General.OptionsFileName
Solver.ClientServer0
1General.OptionsFileName
Solver.ClientServer1
0General.OptionsFileName
Solver.ClientServer2
0General.OptionsFileName
Solver.ClientServer3
0General.OptionsFileName
Solver.ClientServer4
0General.OptionsFileName
Solver.MergeViews0
1General.OptionsFileName
Solver.MergeViews1
1General.OptionsFileName
Solver.MergeViews2
1General.OptionsFileName
Solver.MergeViews3
1General.OptionsFileName
Solver.MergeViews4
1General.OptionsFileName
Solver.Plugins
0General.OptionsFileName
Solver.PopupMessages0
1General.OptionsFileName
Solver.PopupMessages1
1General.OptionsFileName
Solver.PopupMessages2
1General.OptionsFileName
Solver.PopupMessages3
1General.OptionsFileName
Solver.PopupMessages4
1General.OptionsFileName
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
PostProcessing.AnimationDelay
0.25General.OptionsFileName
PostProcessing.AnimationCycle
0General.OptionsFileName
PostProcessing.CombineRemoveOriginal
1General.OptionsFileName
PostProcessing.Format
0General.OptionsFileName
PostProcessing.HorizontalScales
1General.OptionsFileName
PostProcessing.Link
0General.OptionsFileName
PostProcessing.NbViews
0-
PostProcessing.Plugins
1General.OptionsFileName
PostProcessing.Smoothing
0General.OptionsFileName
View.AxesFormatX
"%.3g"General.OptionsFileName
View.AxesFormatY
"%.3g"General.OptionsFileName
View.AxesFormatZ
"%.3g"General.OptionsFileName
View.AxesLabelX
""General.OptionsFileName
View.AxesLabelY
""General.OptionsFileName
View.AxesLabelZ
""General.OptionsFileName
View.FileName
""-
View.Format
"%.3g"General.OptionsFileName
View.GeneralizedRaiseX
"v0"General.OptionsFileName
View.GeneralizedRaiseY
"v1"General.OptionsFileName
View.GeneralizedRaiseZ
"v2"General.OptionsFileName
View.Name
""-
View.Stipple0
"1*0x1F1F"General.OptionsFileName
View.Stipple1
"1*0x3333"General.OptionsFileName
View.Stipple2
"1*0x087F"General.OptionsFileName
View.Stipple3
"1*0xCCCF"General.OptionsFileName
View.Stipple4
"2*0x1111"General.OptionsFileName
View.Stipple5
"2*0x0F0F"General.OptionsFileName
View.Stipple6
"1*0xCFFF"General.OptionsFileName
View.Stipple7
"2*0x0202"General.OptionsFileName
View.Stipple8
"2*0x087F"General.OptionsFileName
View.Stipple9
"1*0xFFFF"General.OptionsFileName
View.AdaptVisualizationGrid
0General.OptionsFileName
View.AngleSmoothNormals
30General.OptionsFileName
View.ArrowSizeMax
60General.OptionsFileName
View.ArrowSizeMin
0General.OptionsFileName
View.AutoPosition
1General.OptionsFileName
View.Axes
0General.OptionsFileName
View.AxesMikado
0General.OptionsFileName
View.AxesAutoPosition
1General.OptionsFileName
View.AxesMaxX
1General.OptionsFileName
View.AxesMaxY
1General.OptionsFileName
View.AxesMaxZ
1General.OptionsFileName
View.AxesMinX
0General.OptionsFileName
View.AxesMinY
0General.OptionsFileName
View.AxesMinZ
0General.OptionsFileName
View.AxesTicsX
5General.OptionsFileName
View.AxesTicsY
5General.OptionsFileName
View.AxesTicsZ
5General.OptionsFileName
View.Boundary
0General.OptionsFileName
View.CenterGlyphs
0General.OptionsFileName
View.Clip
0-
View.ColormapAlpha
1General.OptionsFileName
View.ColormapAlphaPower
0General.OptionsFileName
View.ColormapBeta
0General.OptionsFileName
View.ColormapBias
0General.OptionsFileName
View.ColormapCurvature
0General.OptionsFileName
View.ColormapInvert
0General.OptionsFileName
View.ColormapNumber
2General.OptionsFileName
View.ColormapRotation
0General.OptionsFileName
View.ColormapSwap
0General.OptionsFileName
View.CustomMax
0-
View.CustomMin
0-
View.DisplacementFactor
1General.OptionsFileName
View.DrawHexahedra
1General.OptionsFileName
View.DrawLines
1General.OptionsFileName
View.DrawPoints
1General.OptionsFileName
View.DrawPrisms
1General.OptionsFileName
View.DrawPyramids
1General.OptionsFileName
View.DrawQuadrangles
1General.OptionsFileName
View.DrawScalars
1General.OptionsFileName
View.DrawSkinOnly
0General.OptionsFileName
View.DrawStrings
1General.OptionsFileName
View.DrawTensors
1General.OptionsFileName
View.DrawTetrahedra
1General.OptionsFileName
View.DrawTriangles
1General.OptionsFileName
View.DrawVectors
1General.OptionsFileName
View.Explode
1General.OptionsFileName
View.ExternalView
-1General.OptionsFileName
View.FakeTransparency
0General.OptionsFileName
View.GeneralizedRaiseFactor
1General.OptionsFileName
View.GeneralizedRaiseView
-1General.OptionsFileName
View.GlyphLocation
1General.OptionsFileName
View.Height
200General.OptionsFileName
View.IntervalsType
2General.OptionsFileName
View.Light
1General.OptionsFileName
View.LightLines
1General.OptionsFileName
View.LightTwoSide
1General.OptionsFileName
View.LineType
0General.OptionsFileName
View.LineWidth
1General.OptionsFileName
View.MaxRecursionLevel
0General.OptionsFileName
View.Max
0-
View.MaxX
0-
View.MaxY
0-
View.MaxZ
0-
View.Min
0-
View.MinX
0-
View.MinY
0-
View.MinZ
0-
View.NbIso
15General.OptionsFileName
View.NbTimeStep
1-
View.NormalRaise
0-
View.Normals
0General.OptionsFileName
View.OffsetX
0-
View.OffsetY
0-
View.OffsetZ
0-
View.PointSize
3General.OptionsFileName
View.PointType
0General.OptionsFileName
View.PositionX
100General.OptionsFileName
View.PositionY
50General.OptionsFileName
View.RaiseX
0-
View.RaiseY
0-
View.RaiseZ
0-
View.RangeType
1General.OptionsFileName
View.SaturateValues
0General.OptionsFileName
View.ScaleType
1General.OptionsFileName
View.ShowElement
0General.OptionsFileName
View.ShowScale
1General.OptionsFileName
View.ShowTime
1General.OptionsFileName
View.SmoothNormals
0General.OptionsFileName
View.Stipple
0General.OptionsFileName
View.Tangents
0General.OptionsFileName
View.TargetError
0.01General.OptionsFileName
View.TensorType
1General.OptionsFileName
View.TimeStep
0-
View.TransformXX
1-
View.TransformXY
0-
View.TransformXZ
0-
View.TransformYX
0-
View.TransformYY
1-
View.TransformYZ
0-
View.TransformZX
0-
View.TransformZY
0-
View.TransformZZ
1-
View.Type
1-
View.UseGeneralizedRaise
0General.OptionsFileName
View.VectorType
4General.OptionsFileName
View.Visible
1-
View.Width
300General.OptionsFileName
View.Color.Points
{0,0,0}General.OptionsFileName
View.Color.Lines
{0,0,0}General.OptionsFileName
View.Color.Triangles
{0,0,0}General.OptionsFileName
View.Color.Quadrangles
{0,0,0}General.OptionsFileName
View.Color.Tetrahedra
{0,0,0}General.OptionsFileName
View.Color.Hexahedra
{0,0,0}General.OptionsFileName
View.Color.Prisms
{0,0,0}General.OptionsFileName
View.Color.Pyramids
{0,0,0}General.OptionsFileName
View.Color.Tangents
{255,255,0}General.OptionsFileName
View.Color.Normals
{255,0,0}General.OptionsFileName
View.Color.Text2D
{0,0,0}General.OptionsFileName
View.Color.Text3D
{0,0,0}General.OptionsFileName
View.Color.Axes
{0,0,0}General.OptionsFileName
View.ColorTable
General.OptionsFileName
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh is written in C++, the scripting language is parsed using Lex and Yacc (actually, Flex and Bison), and the GUI relies on OpenGL for the 3D graphics and FLTK (http://www.fltk.org) for the widget set. Gmsh's build system is based on autoconf. Practical notes on how to compile Gmsh's source code are included in the distribution. See E. Frequently asked questions, for more information.
C.1 Main code structure C.2 Coding style C.3 Option handling
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gmsh's code is structured in several libraries, roughly separated between the three main core modules (`Geo', `Mesh', `Post') and associated utility libraries (`Common', `Numeric') on one hand, and graphics (`Graphics') and interface (`Fltk', `Parser') libraries on the other.
The geometry and mesh modules are based on an object-oriented model class (`Geo/GModel.h'), built upon abstract geometrical entity classes (`Geo/GVertex.h', `Geo/GEdge.h', `Geo/GFace.h' and `Geo/GRegion.h'). Concrete implementation of the geometrical entity classes are provided for each supported CAD kernel (e.g. `Geo/gmshVertex.h' for geometry points in Gmsh's native CAD format, or `Geo/OCCVertex.h' for geometry points from OpenCascade). The post-processing module is based on the concept of views (`Post/PView.h') and abstract data containers (derived from `Post/PViewData.h').
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If you plan to contribute code to the Gmsh project, here are some easy rules to make the code easy to read/debug/maintain:
-Wall to
FLAGS in the `variables' file);
Msg:: class to print information, errors, ...;
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To add a new option in Gmsh:
CTX class (`Common/Context.h') if
it's a classical option, or in the PViewOptions class
(`Post/PViewOptions.h') if it's a post-processing view-dependent
option;
opt_XXX) and a
default value for this option;
opt_XXX in `Common/Options.cpp' (and
add the prototype in `Common/Options.h');
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
install-info /usr/info/gmsh.info /usr/info/dir.
You will then be able to access the documentation with the command
info gmsh. Note that particular sections (`nodes') can be accessed
directly. For example, info gmsh surfaces or info gmsh surf
will take you directly to 5.1.3 Surfaces.