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

- merged FAQ into the reference manual

- moved TODO to bug tracking database
parent 834f6b00
No related branches found
No related tags found
No related merge requests found
...@@ -9,4 +9,4 @@ Compound Line(1000)={1}; ...@@ -9,4 +9,4 @@ Compound Line(1000)={1};
Compound Line(2000)={2}; Compound Line(2000)={2};
Compound Line(3000)={3}; Compound Line(3000)={3};
Compound Line(4000)={4}; Compound Line(4000)={4};
Compound Surface(1000)={5}; Compound Surface(-1000)={5};
$Id: FAQ.txt,v 1.6 2009-08-14 08:25:37 geuzaine Exp $
This is the Gmsh FAQ
********************************************************************
Section 1: The basics
* 1.1 What is Gmsh?
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.
* 1.2 What are the terms and conditions of use?
Gmsh is distributed under the terms of the GNU General Public
License. See the file 'doc/LICENSE' for more information, or go to the
GNU foundation's web site at http://www.gnu.org.
* 1.3 What does 'Gmsh' mean?
Nothing... The name was derived from a previous version called "msh"
(a shortcut for "mesh"), with the "g" prefix added to differentiate
it. The default mesh file format used by Gmsh still uses the ".msh"
extention.
In English people tend to pronounce 'Gmsh' as "gee-mesh".
* 1.4 Where can I find more information?
http://www.geuz.org/gmsh/ is the primary location to obtain
information about Gmsh. You will for example find a complete reference
manual as well as a searchable archive of the Gmsh mailing list
(gmsh@geuz.org) on this webpage.
********************************************************************
Section 2: Installation
* 2.1 Which OSes does Gmsh run on?
Gmsh is known to run on Windows 2000/XP/Vista, Mac OS X, Linux and
most Unix variants.
* 2.2 Are there additional requirements to run Gmsh?
You should have the OpenGL libraries installed on your system, and in
the path of the library loader. A free replacement for OpenGL can be
found at http://www.mesa3d.org.
* 2.3 How do I compile Gmsh from the source code?
You need cmake (http://www.cmake.org) and a C++ compiler. See the
README.txt file in the top-level source directory for more
information.
* 2.4 Where does Gmsh save its configuration files?
Gmsh will attempt to save temporary files and persistent configuration
options first in the $GMSH_HOME directory, then in the $HOME, $TMP or
$TEMP directories (in that order) if the $GMSH_HOME environment
variable is not defined. If none of these variables are defined, Gmsh
will try to save/load its configuration files from the current working
directory.
********************************************************************
Section 3: General problems
* 3.1 Gmsh (from a binary distribution) complains about missing
libraries.
On Windows, if your system complains about missing OPENGL32.DLL or
GLU32.DLL libraries, then OpenGL is not properly installed on your
machine. You can download OpenGL from Microsoft's web site, or
directly from http://www.opengl.org.
On Unix try 'ldd gmsh' (or 'otool -L gmsh' on Mac OS X) to check if
all the required shared libraries are installed on your system. If
not, install them. If it still doesn't work, recompile Gmsh from the
sources.
* 3.2 Gmsh keeps re-displaying its graphics when other windows
partially hide the graphical window.
Disable opaque move in your window manager.
* 3.3 The graphics display very slowly.
Are you are executing Gmsh from a remote host (via the network)
without GLX? You should turn double buffering off (with the '-nodb'
command line option).
* 3.4 There is an ugly "ghost triangulation" in the vector
PostScript/PDF files generated by Gmsh!
No, there isn't. This "ghost triangulation" is due to the fact that
most PostScript previewers nowadays antialias the graphic primitives
when they display the page on screen. (For example, in gv, you can
disable antialising with the 'State->Antialias' menu.) You should not
see this ghost triangulation in the printed output (on paper).
* 3.5 How can I save GIF, JPEG, ..., images?
Just choose the appropriate format in 'File->Save As'. By default Gmsh
guesses the format from the file extension, so you can just choose
"myfile.jpg" in the dialog.
* 3.6 How can I save MPEG, AVI, ..., animations?
See question 7.9.
********************************************************************
Section 4: Geometry module
* 4.1 Does Gmsh support NURBS curves/surfaces?
Yes, but only via STEP, IGES or BREP model import (not in .geo
files). Gmsh has to be compiled with OpenCascade support for this to
work.
* 4.2 Gmsh is very slow when I use many transformations (Translate,
Rotate, Symmetry, Extrude, etc. ). What's wrong?
The default behavior of Gmsh is to check and suppress all duplicate
entities (points, lines and surfaces) each time a transformation
command is issued. This can slow down things a lot if many
transformations are performed. There are two solutions to this
problem:
- you may save the unrolled geometry in another file (e.g. with gmsh
file.geo -0), and use this new file for subsequent computations;
- or you may set the 'Geometry.AutoCoherence' option to 0. This will
prevent any automatic duplicate check/replacement. If you still need
to remove the duplicates entities, simply add 'Coherence;' at
strategic locations in your geo files (e.g. before the creation of
line loops, etc.).
* 4.3 How can I display only selected parts of my model?
Use 'Tools->Visibility'. This allows you to select elementary entities
and physical groups, as well as mesh elements, in a variety of ways
(in a list or tree browser, by identification number, interactively,
or per window).
* 4.4 Can I edit STEP/IGES/BRep models?
Not yet. At the moment you can only change characteristic lengths,
define volumes and physical groups, or delete entities. The easiest
way to do this is to merge the model in a .geo file using 'Merge
"file.step";' and add the relevant scripting command after that. We
plan to add more advanced editing features in the future (to delete
entities, to create "mixed" surfaces and volumes, to export in .geo
format, etc.).
********************************************************************
Section 5: Mesh module
* 5.1 What should I do when the 2D unstructured algorithm fails?
Verify that the curves in the model do not self-intersect. If
Mesh.RandomFactor * size(triangle)/size(model) approaches machine
accuracy, increase Mesh.RandomFactor.
If everything fails send us a bug report with the version of your
operating system and the full geometry.
* 5.2 What should I do when the 3D unstructured algorithm fails?
Verify that the surfaces in your model do not self-intersect or
partially overlap. If they don't, try the other 3D algorithms
(Tool->Options->Mesh->General->3D algorithm) or try to adapt the
characteristic lengths in your input file so that the surface mesh
better matches the geometrical details of the model.
If nothing works, send us a bug report (including your geometry).
* 5.3 The quality of the elements generated by the 3D algorithm is
very bad.
Use 'Optimize quality' in the mesh menu.
* 5.4 Non-recombined 3D extruded meshes sometimes fail.
The swapping algorithm is not very clever at the moment. Try to change
the surface mesh a bit, or recombine your mesh to generate prisms or
hexahedra instead of tetrahedra.
* 5.5 Does Gmsh automatically couple unstructured tetrahedral meshes
and structured hexahedral meshed using pyramids?
No. We need your help to implement this.
* 5.6 Can I explicitly assign region numbers to extruded layers?
No, this feature has been removed in Gmsh 2.0. You must use the
standard entity number instead.
* 5.7 Did you remove the elliptic mesh generator in Gmsh 2.0?
Yes. You can achieve the same result by using the transfinite
algorithm with smoothing (e.g., with "Mesh.Smoothing = 10").
* 5.8 Does Gmsh support curved elements?
Yes, Gmsh can generate both 1st order and 2nd order elements. To
generate second order elements, click on 'Second order' in the mesh
menu after the mesh is completed. To always generate 2nd order
elements, select 'Generate second order elements' in the mesh option
panel. From the command line, you can also use '-order 2'.
* 5.9 Can I import an existing surface mesh in Gmsh and use it to
build a 3D mesh?
Yes, you can import a surface mesh in any one of the supported mesh
file formats, define a volume, and mesh it. For an example see
'demos/sphere-discrete.geo'.
* 5.10 How do I define boundary conditions or material properties in
Gmsh?
By design, Gmsh does not try to incorporate every possible definition
of boundary conditions or material properties--this is a job best left
to the solver. Instead, Gmsh provides a simple mechanism to tag groups
of elements, and it is up to the solver to interpret these tags as
boundary conditions, materials, etc. Associating tags with elements in
Gmsh is done by defining Physical entities (Physical Points, Physical
Lines, Physical Surfaces and Physical Volumes). See the reference
manual as well as the tutorials (in particular 'tutorial/t1.geo') for
a detailed description and some examples.
* 5.11 How can I display only the mesh associated with selected
geometrical entities?
See question 4.3.
* 5.12 How can I "explore" a mesh (for example, to see inside a
complex structure)?
You can use 'Tools->Clipping Planes' to clip the region of
interest. You can define up to 6 clipping planes in Gmsh (i.e., enough
to define a "cube" inside your model) and each plane can clip either
the geometry, the mesh, the post-processing views, or any combination
of the above. The clipping planes are defined using the four
coefficients A,B,C,D of the equation A*x+B*y+C*y+D=0, which can be
adjusted interactively by dragging the mouse in the input
fields.
* 5.13 What is the signification of Rho, Eta and Gamma in
Tools->Statistics?
They measure the quality of the tetrahedra in a mesh:
Gamma ~ inscribed_radius / circumscribed_radius
Eta ~ volume^(2/3) / sum_edge_length^2
Rho ~ min_edge_length / max_edge_length
For the exact definitions, see Geo/MElement.cpp. The graphs plot the
the number of elements vs. the quality measure.
* 5.14 Why don't the vertex and/or elememt numbers on the screen match
the numbers in the mesh file?
Gmsh reindexes the mesh vertices and elements so that they are
numbered in a continuous sequence in the output files. The numbers
displayed on screen after mesh generation thus usually differ from the
ones saved in the mesh files. To check the actual numbers saved in the
output file just load the mesh file back using File->Open.
********************************************************************
Section 6: Solver module
* 6.1 How do I integrate my own solver with Gmsh?
If you want to simply launch a program from within Gmsh, just edit the
options to define your solver commands (e.g. Solver.Name0,
Solver.Executable0, etc.), and set the ClientServer option to zero
(e.g. Solver.ClientServer0 = 0).
If you want your solver to interact with Gmsh (for error messages,
option definitions, post-processing, etc.), you will need to link your
solver with the GmshClient routines and add the appropriate function
calls inside your program. You will of course also need to define your
solver commands in an option file, but this time you should set the
ClientServer variable to 1 (e.g. Solver.ClientServer = 1). C, C++,
Perl and Python solver examples are available in the source
distribution in the 'utils/solvers' directory.
* 6.2 On Windows, Gmsh does not seem to find the solver
executable. What's wrong?
The solver executable (for example, 'getdp.exe') has to be in your
path. If it is not specify its location in the 'Command' field.
* 6.3 Can I launch Gmsh from my solver (instead of launching my solver
from Gmsh) in order to monitor a solution?
Sure. The simplest (but rather crude) approach if to re-launch Gmsh
everytime you want to visualize something (a simple C program showing
how to do this is given in 'utils/misc/callgmsh.c'). A better approach
is to modify your program so that it can communicate with Gmsh over a
socket (see question 6.1 above; you can skip the option file
creation). Then select 'Always listen to incoming connection requests'
in the solver option panel (or run gmsh with the '-listen' command
line option) and Gmsh will always listen for your program on the
Solver.SocketName socket.
********************************************************************
Section 7: Post-processing module
* 7.1 How do I compute a section of a plot?
Use 'Tools->Plugins->Cut Plane'.
* 7.2 Can I save an isosurface to a file?
Yes: first run 'Tools->Plugins->Cut Map' to extract the isosurface,
then use 'View->Save As' to save the new view.
* 7.3 Can Gmsh generate isovolumes?
Yes, with the CutMap plugin (set the ExtractVolume option to -1 or 1
to extract the negative or positive levelset).
* 7.4 How do I animate my plots?
If the views contain multiple time steps, you can press the 'play'
button at the bottom of the graphic window, or change the time step by
hand in the view option panel. You can also use the left and right
arrow keys on your keyboard to change the time step in all visible
views in real time.
If you want to loop through different views instead of time steps, you
can use the 'Loop through views instead of time steps' option in the
view option panel, or use the up and down arrow keys on your keyboard.
* 7.5 How do I visualize a deformed mesh?
Load a vector view containing the displacement field, and set 'Vector
display' to 'Displacement' in View->Options->Aspect. If the
displacement is too small (or too large), you can scale it with the
'Displacement factor' option. (Remember that you can drag the mouse in
all numeric input fields to slide the value!)
Another option is to use the 'General transformation expressions' (in
View->Options->Offset) on a scalar view, with the displacement map
selected as the data source.
* 7.6 Can I visualize a field on a deformed mesh?
Yes, there are several ways to do that.
The easiest is to load two views: the first one containing a
displacement field (a vector view that will be used to deform the
mesh), and the second one containing the field you want to display
(this view has to contain the same number of elements as the
displacement view). You should then set 'Vector display' to
'Displacement' in the first view, as well as set 'Data source' to
point to the second view. (You might want to make the second view
invisible, too. If you want to amplify or decrease the amount of
deformation, just modify the 'Displacement factor' option.)
Another solution is to use the 'General transformation expressions'
(in 'View->Options->Offset') on the field you want to display, with
the displacement map selected as the data source.
And yet another solution is to use the Warp plugin.
* 7.7 Can I color the arrows representing a vector field with data
from a scalar field?
Yes: load both the vector and the scalar fields (the two views must
have the same number of elements) and, in the vector field options,
select the scalar view in 'Data source'.
* 7.8 Can I color isovalue surfaces with data from another scalar
view?
Yes, using either the CutMap plugin (with the 'dView' option) or the
Evaluate plugin.
* 7.9 Is there a way to save animations?
Yes, using scripts. Have a look at 'tutorial/t8.geo' or
'demos/anim.script' for some examples.
* 7.10 Is there a way to visualize only certain components of
vector/tensor fields?
Yes, using 'Tools->Plugins->Extract'.
* 7.11 Can I do arithmetic operations on a view? Can I perform
operations involving different views?
Yes, with the Evaluate plugin.
* 7.12 Some plugins seem to create empty views. What's wrong?
There can be several reasons:
- the plugin might be written for specific element types only (for
example, only for scalar triangles or tetrahedra). In that case, you
should transform your view before running the plugin (you can use
Plugin(DecomposeinSimplex) to transform all quads, hexas, prisms and
pyramids into triangles and tetrahedra).
- the plugin might expect a mesh while all you provide is a point
cloud. In 2D, you can use Plugin(Triangulate) to transform a point
cloud into a triangulated surface. A 3D version of this plugin is
not available yet but it is on our TODO list.
- the input parameters are out of range.
In any case, you can automatically remove all empty views with
'View->Remove->Empty Views' in the GUI, or with "Delete Empty Views;"
in a script.
* 7.13 How can I see "inside" a complicated post-processing view?
See question 5.12.
When viewing 3D scalar fields, you can also modify the colormap
('Tools->Options->View->Map') to make the iso-surfaces "transparent":
either by holding 'Ctrl' while dragging the mouse to draw the alpha
channel by hand, or by using the 'a', 'Ctrl+a', 'p' and 'Ctrl+p'
keyboard shortcuts.
Yet another (destructive) option is to use the ExtractVolume option in
the CutSphere or CutPlane plugins.
* 7.14 I am loading a valid 3D scalar view but Gmsh does not display
anything!
If your dataset is constant per element make sure you don't use the
'Iso-values' interval type in 'Tools->Options->View->Range'.
$Id: TODO.txt,v 1.34 2009-10-18 19:41:04 geuzaine Exp $
********************************************************************
fix artefacts when moving the mouse over an animation
********************************************************************
add <, >, <=, >= in MathEvaluator
********************************************************************
replace last uses of shapeFunctions.h with MElement.h (might want to
create a pool of MVertices to speed up temp element creation in
plugins)
********************************************************************
make multi-view (tiles/windows) scriptable
********************************************************************
Add Reverse Cuthill-McKee to reorder the nodes?
********************************************************************
fichier .pos high order avec INTERPOLATION_SCHEME{{0,0,0,0,0}{ok}}
bug GUI
********************************************************************
Saving string options with " will not work :-(
********************************************************************
make embedded edges work with Delaunay/Frontal
********************************************************************
make Attractor fields work on general surfaces
********************************************************************
Add function to merge/remove from lists in the parser
********************************************************************
recode curve/curve intersections in legacy Geo.cpp code
********************************************************************
Dilate should take 3 coefs to scale differently along x, y and z!
********************************************************************
extrude along a given curve (use curve->closestPoint for each xyz in
ExtrudeParams and extrude along the tangent? not that simple: this
could lead to self-intersection if curvature >>)
********************************************************************
define HAVE_NO_MESH to remove mesh algorithms from build
********************************************************************
Should we take embedded vertices into account in extrusions?
********************************************************************
Store Octree in PViewDataList and modify OctreePost to use it (the
same way PViewDataGModel uses the Octree stored in GModel)
********************************************************************
LMGC & co: allow arbitrary glyphs to represent data (like our 3D
arrows). Glyph can be loaded as a mesh or a geometry; create vertex
array or display list for each; select glyph in Point/Vector/Tensor
display dialog. define number of values to transform glyph (quaternion
+ scale{x,y,z}?). Definition: Glyph = drawable rigid object with a
single associated scalar/vector or tensor value.
********************************************************************
Add a global "transparency slider" for the mesh; if value != 1, fill a
global triangle vertex array in GModel instead of in each separate
entity, and sort like in post-processing.
********************************************************************
fix tetgen for non manifold geometries: with a single surface
connected to a volume and tetgen modifies the volume boundary mesh, we
get hanging nodes
Precompute non-connected volumes and apply algo to each non-connected
aggregate. This will improve mesh quality and speed for close
non-connected objects.
Also: we need to fix the 1D mesh in all cases!
********************************************************************
Add list of recently loaded files in the GUI
********************************************************************
add cleanup fct to remove duplicate elements (same spirit as GModel
::removeDuplicateVertices)
********************************************************************
add support for Patran mesh files
********************************************************************
add linear lc progression in 1D transfinite generator
Also: implement easier to understand "bump" function (double
progression?)
********************************************************************
add parameter to geo transforms to copy the meshes--this would allow
us to do symmetries and periodic meshes
********************************************************************
introduce Right/Left/Alternate for extruded meshes
********************************************************************
create pyramids on quad surfaces inside unstructured volume before
tetrahedralizing (to enable hex/tet hybrid grids)
********************************************************************
physical groups->add->line/surface: pressing '-' after/while selecting
a surface should add it with reverse orientation?
********************************************************************
fill transfinite_vertices in meshGFaceExtrude/meshGRegionExtrude when
it makes sense (so that we can use extruded+recombined surfaces to
create Transfinite Volumes, or use the P3D output format)
********************************************************************
parse CORDxx entries in Nastran files to get coordinate system
definitions and use them when reading GRID + parse GRIDxx for axisym
points
********************************************************************
add Mesh>Edit>Change orientation>Lines & Surfaces
********************************************************************
implement better algo to determine which axes to draw
(cf. mathematica)
********************************************************************
Custom range on "filled iso" 3D views produces ugly plots, where one
sees inside the cut elements. (In the meantime, one can use
Plugin(CutMap) with "ExtractVolume" set to 1 (or -1): this will
generate a new view with an actual "cut" on the front (an
"iso-volume"). Then one could use Plugin(Skin) to extract the outer
surface.)
********************************************************************
add "sprite" option to draw fake 3D spheres in post-pro (so that we
can draw millions of spheres)
********************************************************************
add option to cutmesh to cap the mesh instead of displaying "whole"
elements
********************************************************************
add option to draw "filled isos" using 1D textures?
********************************************************************
add GUI for translate+rotate extrusions and for mesh extrusion (layer
stuff)
********************************************************************
Labels:
- add dynamic variables? E.g., if a string contains %string.string,
replace it dynamically in Draw_Text2D/3D by calling
Get_OptionsCategory/Get_OptionValue. (provide a global option to
disable all replacements)
- position with the mouse
- select/move once positioned?
- add ability to add arrows
********************************************************************
keep a table (stack) with the N last file positions when add_infile()
is called; we could then easily implement a simple (but real) UNDO
strategy
********************************************************************
add/restore Parametric curve type using MathEval
********************************************************************
on Macs, datasets with a bounding box < 1.e-06 don't display properly
(probably because all the OpenGL stuff is done internally in single
precision...). Rescale?
********************************************************************
find a better way to display the time/timestep in the scale... (would
be solved if we had dynamic labels?)
********************************************************************
rewrite ColorTable as a C++ class
********************************************************************
create "Volume visualization" range type? (interpolate on regular grid
+ create cut planes // to viewpoint with transparency; can be done in
a straightforward way or using 3D textures)
$Id: VERSIONS.txt,v 1.62 2009-09-22 06:28:09 geuzaine Exp $ 2.4.3 (?): small bug fixes.
2.4.3 (?):
2.4.2 (Sep 21, 2009): solver code refactoring + better IDE 2.4.2 (Sep 21, 2009): solver code refactoring + better IDE
integration. integration.
......
...@@ -53,7 +53,9 @@ ASCII text files using Gmsh's own scripting language. ...@@ -53,7 +53,9 @@ ASCII text files using Gmsh's own scripting language.
See the screencasts for a <a href="/gmsh/screencasts/">quick tour of See the screencasts for a <a href="/gmsh/screencasts/">quick tour of
Gmsh's graphical user interface</a>, or the reference manual for a Gmsh's graphical user interface</a>, or the reference manual for a
more thorough <a href="/gmsh/doc/texinfo/gmsh.html#Overview">overview more thorough <a href="/gmsh/doc/texinfo/gmsh.html#Overview">overview
of Gmsh's capabilities</a>. of Gmsh's capabilities</a> and some
<a href="/gmsh/doc/texinfo/gmsh.html#Frequently-asked-questions">frequently
asked questions</a>.
<h2><a name="Download"></a>Download</h2> <h2><a name="Download"></a>Download</h2>
...@@ -119,20 +121,21 @@ gmsh, password: gmsh). ...@@ -119,20 +121,21 @@ gmsh, password: gmsh).
<a href="/gmsh/doc/texinfo/gmsh.txt">plain text</a>) <a href="/gmsh/doc/texinfo/gmsh.txt">plain text</a>)
<li><a href="/gmsh/screencasts/">Screencasts</a> showing how to use <li><a href="/gmsh/screencasts/">Screencasts</a> showing how to use
the graphical user interface the graphical user interface
<li><a href="https://geuz.org/trac/gmsh">Wiki</a> with examples, <li><a href="https://geuz.org/trac/gmsh">Wiki</a> with examples, a
source code navigation and bug tracking (username: gmsh, password: gmsh) <a href="https://geuz.org/trac/gmsh/timeline">time line</a> of
<li><a href="/gmsh/doc/FAQ.txt">Frequently asked questions (FAQ)</a> changes and the <a href="https://geuz.org/trac/gmsh/report/1">bug
tracking</a> database (username: gmsh, password: gmsh)
<li><a href="/gmsh/doc/VERSIONS.txt">Version history</a> <li><a href="/gmsh/doc/VERSIONS.txt">Version history</a>
<li>Mailing lists: <li>Mailing lists:
<ul> <ul>
<li><a href="/mailman/listinfo/gmsh/">gmsh</a> is the public <li><a href="/mailman/listinfo/gmsh/">gmsh</a>
mailing list for Gmsh discussions, and is the best place (archived <a href="/pipermail/gmsh/">here</a>) is the public
to ask questions (and get answers!). The list is archived mailing list for Gmsh discussions, and is the best place to
<a href="/pipermail/gmsh/">here</a>. ask questions (and get answers!)
<li><a href="/mailman/listinfo/gmsh-announce/">gmsh-announce</a> <li><a href="/mailman/listinfo/gmsh-announce/">gmsh-announce</a> (archived
is a moderated ("read-only") list for announcements about new <a href="/pipermail/gmsh-announce/">here</a>) is a moderated
releases and other Gmsh news. The list is archived ("read-only") list for announcements about new releases and
<a href="/pipermail/gmsh-announce/">here</a>. other Gmsh news
</ul> </ul>
</ul> </ul>
......
This diff is collapsed.
@cindex GNU General Public License
Gmsh is provided under the terms of the GNU General Public License
(GPL) with the following exception:
The copyright holders of Gmsh give you permission to combine Gmsh
with code included in the standard release of TetGen (from Hang Si),
Netgen (from Joachim Sch"oberl), Chaco (from Bruce Hendrickson and
Robert Leland at Sandia National Laboratories) and METIS (from
George Karypis at the University of Minnesota) under their
respective licenses. You may copy and distribute such a system
following the terms of the GNU GPL for Gmsh and the licenses of the
other code concerned, provided that you include the source code of
that other code when and as the GNU GPL requires distribution of
source code.
Note that people who make modified versions of Gmsh are not
obligated to grant this special exception for their modified
versions; it is their choice whether to do so. The GNU General
Public License gives permission to release a modified version
without this exception; this exception also makes it possible to
release a modified version which carries forward this exception.
End of exception.
@sp 1
@center GNU General Public License
@sp 1
@center Version 2, June 1991
@sp 1
@c This file is intended to be included in another file.
@display
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@end display
@heading Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software---to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, 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 show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
@heading TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@enumerate 0
@item
This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The ``Program'', below,
refers to any such program or work, and a ``work based on the Program''
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term ``modification''.) Each licensee is addressed as ``you''.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
@item
You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
@item
You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
@enumerate a
@item
You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
@item
You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
@item
If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
@end enumerate
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
@item
You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
@enumerate a
@item
Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
@item
Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
@item
Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
@end enumerate
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
@item
You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
@item
You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
@item
Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
@item
If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
@item
If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
@item
The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and ``any
later version'', you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
@item
If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
@heading NO WARRANTY
@item
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
@item
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
@end enumerate
@heading END OF TERMS AND CONDITIONS
@sp 2
@heading How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the ``copyright'' line and a pointer to where the full notice is found.
@smallexample
@var{one line to give the program's name and a brief idea of what it does.}
Copyright (C) @var{yyyy} @var{name of author}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
@end smallexample
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
@smallexample
Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type
`show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@end smallexample
The hypothetical commands @samp{show w} and @samp{show c} should show
the appropriate parts of the General Public License. Of course, the
commands you use may be called something other than @samp{show w} and
@samp{show c}; they could even be mouse-clicks or menu items---whatever
suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a ``copyright disclaimer'' for the program, if
necessary. Here is a sample; alter the names:
@example
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
@var{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
@end example
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment