3. Geometry module
Gmsh's geometry module provides a simple CAD engine, using a bottom-up
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:
- each elementary point must possess a unique identification number;
- each elementary line must possess a unique identification number;
- each elementary surface must possess a unique identification number;
- each elementary volume must possess a unique identification number.
Elementary geometrical entities can then be manipulated in various
ways, for example using the Translate
, Rotate
, Scale
or
Symmetry
commands.
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
4. Mesh module, for more information about how physical entities affect
the way meshes are saved.
3.1 Geometry commands
The next subsections describe all the available geometry commands. These
commands can be used anywhere in a Gmsh ASCII text input 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."
3.1.1 Points
Point ( expression ) = { expression, expression, expression, expression };
-
Creates an elementary point. The expression inside the parentheses is
the point's identification number; the three first expressions
inside the braces on the right hand side give the three X, Y and Z
coordinates of the point in the three-dimensional Euclidean space; the last
expression sets the characteristic mesh length at that point. See
4.2.1 Characteristic lengths, for more information about how this
characteristic length information is used in the meshing process.
Physical Point ( expression ) = { expression-list };
-
Creates a physical point. The expression inside the parentheses is the
physical point's identification number; the expression-list on the
right hand side should contain the identification numbers of all the
elementary points that need to be grouped inside the physical point.
3.1.2 Lines
Bezier ( expression ) = { expression-list };
-
Creates a Bezier curve. The expression inside the parentheses is the
Bezier curve's identification number; the expression-list on the right
hand side should contain the identification numbers of all the curve's
control points.
BSpline ( expression ) = { expression-list };
-
Creates a B-spline curve. The expression inside the parentheses is the
B-spline curve's identification number; the expression-list on the
right hand side should contain the identification numbers of all the
B-spline's control points. Repeating control points has the expected effect.
Circle ( expression ) = { expression, expression, expression };
-
Creates a circle arc (strictly) smaller than Pi. The expression inside
the parentheses is the circle arc's identification number; the first
expression inside the braces on the right hand side gives the
identification number of the start point of the arc; the second
expression gives the identification number of the center of the
circle; the last expression gives the identification number of the end
point of the arc.
CatmullRom ( expression ) = { expression-list };
-
CatmullRom
is a synonym for Spline
.
Ellipse ( expression ) = { expression, expression, expression, expression };
-
Creates an ellipse arc. The expression inside the parentheses is the
ellipse arc's identification number; the first expression inside the
braces on the right hand side gives the identification number of the start
point of the arc; the second expression gives the identification
number of the center of the ellipse; the third expression gives the
identification number of any point located on the major axis of the ellipse;
the last expression gives the identification number of the end point
of the arc.
(A deprecated synonym for Ellipse
is Ellipsis
.)
Line ( expression ) = { expression, expression };
-
Creates a straight line segment. The expression inside the parentheses
is the line segment's identification number; the two expressions
inside the braces on the right hand side give identification numbers of the
start and end points of the segment.
Spline ( expression ) = { expression-list };
-
Creates a spline curve. The expression inside the parentheses is the
spline's identification number; the expression-list on the right hand
side should contain the identification numbers of all the spline's control
points.
Line Loop ( expression ) = { expression-list };
-
Creates an oriented line loop. The expression inside the parentheses
is the line loop's identification number; the expression-list on the
right hand side should contain the identification numbers of all the
elementary lines that constitute the line loop. A line loop must be a closed
loop, and the elementary lines should be ordered and oriented (using
negative identification numbers to specify reverse orientation). If the
orientation is correct, but the ordering is wrong, Gmsh will actually
reorder the list internally to create a consistent loop. Although Gmsh
supports it, it is not recommended to specify multiple line loops (or
subloops) in a single
Line Loop
command. (Line loops are used to
create surfaces: see 3.1.3 Surfaces.)
Physical Line ( expression ) = { expression-list };
-
Creates a physical line. The expression inside the parentheses is the
physical line's identification number; the expression-list on the
right hand side should contain the identification numbers of all the
elementary lines that need to be grouped inside the physical
line. Specifying negative identification numbers in the
expression-list will reverse the orientation of the mesh elements
belonging to the corresponding elementary lines in the saved mesh.
3.1.3 Surfaces
Plane Surface ( expression ) = { expression-list };
-
Creates a plane surface. The expression inside the parentheses is the
plane surface's identification number; the expression-list on the
right hand side should contain the identification numbers of all the line
loops defining the surface. The first line loop defines the exterior
boundary of the surface; all other line loops define holes in the surface.
A line loop defining a hole should not have any lines in common with the
exterior line loop (in which case it is not a hole, and the two surfaces
should be defined separately). Likewise, a line loop defining a hole should
not have any lines in common with another line loop defining a hole in the
same surface (in which case the two line loops should be combined).
Ruled Surface ( expression ) = { expression-list };
-
Creates a ruled surface, i.e., a surface that can be interpolated using
transfinite interpolation. The expression inside the parentheses is
the ruled surface's identification number; the expression-list on the
right hand side should the identification number of a single line loop,
composed of either three or four elementary lines.
Surface Loop ( expression ) = { expression-list };
-
Creates a surface loop (a shell). The expression inside the
parentheses is the surface loop's identification number; the
expression-list on the right hand side should contain the
identification numbers of all the elementary surfaces that constitute the
surface loop. A surface loop must always represent a closed shell, and the
elementary surfaces should be oriented consistently (using negative
identification numbers to specify reverse orientation). (Surface loops are
used to create volumes: see 3.1.4 Volumes.)
Physical Surface ( expression ) = { expression-list };
-
Creates a physical surface. The expression inside the parentheses is
the physical surface's identification number; the expression-list on
the right hand side should contain the identification numbers of all the
elementary surfaces that need to be grouped inside the physical
surface. Specifying negative identification numbers in the
expression-list will reverse the orientation of the mesh elements
belonging to the corresponding elementary surfaces in the saved mesh.
3.1.4 Volumes
Volume ( expression ) = { expression-list };
-
Creates a volume. The expression inside the parentheses is the
volume's identification number; the expression-list on the right hand
side should contain the identification numbers of all the surface loops
defining the volume. The first surface loop defines the exterior boundary of
the volume; all other surface loops define holes in the volume. A surface
loop defining a hole should not have any surfaces in common with the
exterior surface loop (in which case it is not a hole, and the two volumes
should be defined separately). Likewise, a surface loop defining a hole
should not have any surfaces in common with another surface loop defining a
hole in the same volume (in which case the two surface loops should be
combined).
(A deprecated synonym for Volume
is Complex Volume
.)
Physical Volume ( expression ) = { expression-list };
-
Creates a physical volume. The expression inside the parentheses is
the physical volume's identification number; the expression-list on
the right hand side should contain the identification numbers of all the
elementary volumes that need to be grouped inside the physical
volume.
3.1.5 Extrusions
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 4.2.2 Structured grids, to see how these commands
can be extended in order to also extrude the mesh):
extrude:
Extrude Point | Line | Surface { expression, { expression-list } };
-
Extrudes the expression-th point, line or surface using a
translation. The expression-list should contain three
expressions giving the X, Y and Z components of the translation
vector.
Extrude Point | Line | Surface { expression, { expression-list }, { expression-list }, expression };
-
Extrudes the expression-th point, line or surface using a
rotation. The first expression-list should contain three
expressions giving the X, Y and Z direction of the rotation axis;
the second expression-list should contain three expressions
giving the X, Y and Z components of any point on this axis; the last
expression should contain the rotation angle (in radians).
Extrude Point | Line | Surface { expression, { expression-list }, { expression-list }, { expression-list }, expression };
-
Extrudes the expression-th point, line or surface using a translation
combined with a rotation. The first expression-list should contain
three expressions giving the X, Y and Z components of the
translation vector; the second expression-list should contain three
expressions giving the X, Y and Z direction of the rotation axis;
the third expression-list should contain three expressions
giving the X, Y and Z components of any point on this axis; the last
expression should contain the rotation angle (in radians).
3.1.6 Transformations
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 }
-
Scales all elementary entities (points, lines or surfaces) in
transform-list by a factor expression. The expression-list
should contain three expressions giving the X, Y and Z direction
of the homothetic transformation.
Rotate { { expression-list }, { expression-list }, expression } { transform-list }
-
Rotates all elementary entities (points, lines or surfaces) in
transform-list by an angle of expression radians. The first
expression-list should contain three expressions giving the
X, Y and Z direction of the rotation axis; the second expression-list
should contain three expressions giving the X, Y and Z components
of any point on this axis.
Symmetry { expression-list } { transform-list }
-
Transforms all elementary entities (points, lines or surfaces) symmetrically
to a plane. The expression-list should contain four
expressions giving the coefficients of the plane's equation.
Translate { expression-list } { transform-list }
-
Translates all elementary entities (points, lines or surfaces) in
transform-list. The expression-list should contain three
expressions giving the X, Y and Z components of the translation
vector.
with
| transform-list:
Point | Line | Surface { expression-list }; ... |
Duplicata { Point | Line | Surface { expression-list }; ... } |
transform
|
3.1.7 Miscellaneous
Here is a list of all other geometry commands currently available:
Coherence;
-
Removes all duplicate elementary geometrical entities (e.g., points having
identical coordinates). Note that Gmsh executes the
Coherence
command
automatically after each geometrical transformation, unless
Geometry.AutoCoherence
is set to zero (see section 3.2 Geometry options).
Delete { Point | Line | Surface | Volume { expression-list }; ... }
-
Deletes all elementary entities (points, lines, surfaces or volumes) whose
identification numbers are given in expression-list.
Hide { Point | Line | Surface | Volume { expression-list }; ... }
-
Hide the entities listed in expression-list, if
General.VisibilityMode
is set to 0
or 1
.
Hide char-expression;
-
Hide the entity char-expression, if
General.VisibilityMode
is
set to 0
or 1
(char-expression can for example be
"*"
).
Show { Point | Line | Surface | Volume { expression-list }; ... }
-
Show the entities listed in expression-list, if
General.VisibilityMode
is set to 0
or 1
.
Show char-expression;
-
Show the entity char-expression, if
General.VisibilityMode
is
set to 0
or 1
(char-expression can for example be
"*"
).
3.2 Geometry options
Geometry options control the behavior of geometry commands, as well as the
way geometrical entities are handled in the graphical user interface. For
the signification of the `Saved in:' field in the following list, see
2.7 General options.
Geometry.AutoCoherence
-
Should all duplicate entities be automatically removed?
Default value: 1
Saved in: General.OptionsFileName
Geometry.CirclePoints
-
Number of points used to draw a circle/ellipse
Default value: 20
Saved in: General.OptionsFileName
Geometry.CircleWarning
-
Warn if circle arc is greater than Pi
Default value: 1
Saved in: General.OptionsFileName
Geometry.ExtrudeSplinePoints
-
Number of control points for splines created during extrusion
Default value: 5
Saved in: General.OptionsFileName
Geometry.Light
-
Enable lighting for the geometry
Default value: 1
Saved in: General.OptionsFileName
Geometry.Lines
-
Display geometry curves?
Default value: 1
Saved in: General.OptionsFileName
Geometry.LineNumbers
-
Display curve numbers?
Default value: 0
Saved in: General.OptionsFileName
Geometry.LineSelectWidth
-
Display width of selected lines (in pixels)
Default value: 2
Saved in: General.OptionsFileName
Geometry.LineType
-
Display lines as solid color segments (0) or 3D cylinders (1)
Default value: 0
Saved in: General.OptionsFileName
Geometry.LineWidth
-
Display width of lines (in pixels)
Default value: 2
Saved in: General.OptionsFileName
Geometry.Normals
-
Display size of normal vectors (in pixels)
Default value: 0
Saved in: General.OptionsFileName
Geometry.OldCircle
-
Use old circle description (compatibility option for old Gmsh geometries)
Default value: 0
Saved in: General.OptionsFileName
Geometry.OldNewReg
-
Use old newreg definition for geometrical transformations (compatibility option for old Gmsh geometries)
Default value: 1
Saved in: General.OptionsFileName
Geometry.Points
-
Display geometry points?
Default value: 1
Saved in: General.OptionsFileName
Geometry.PointNumbers
-
Display points numbers?
Default value: 0
Saved in: General.OptionsFileName
Geometry.PointSelectSize
-
Display size of selected points (in pixels)
Default value: 5
Saved in: General.OptionsFileName
Geometry.PointSize
-
Display size of points (in pixels)
Default value: 4
Saved in: General.OptionsFileName
Geometry.PointType
-
Display points as solid color dots (0) or 3D spheres (1)
Default value: 0
Saved in: General.OptionsFileName
Geometry.ScalingFactor
-
Global geometry scaling factor
Default value: 1
Saved in: General.OptionsFileName
Geometry.StlCreateElementary
-
Treat each STL input face as a new geometrical surface
Default value: 1
Saved in: General.OptionsFileName
Geometry.StlCreatePhysical
-
Automatically create physical entities when importing STL faces as geometrical surfaces
Default value: 1
Saved in: General.OptionsFileName
Geometry.Surfaces
-
Display geometry surfaces?
Default value: 0
Saved in: General.OptionsFileName
Geometry.SurfaceNumbers
-
Display surface numbers?
Default value: 0
Saved in: General.OptionsFileName
Geometry.Tangents
-
Display size of tangent vectors (in pixels)
Default value: 0
Saved in: General.OptionsFileName
Geometry.Volumes
-
Display geometry volumes? (not implemented yet)
Default value: 0
Saved in: General.OptionsFileName
Geometry.VolumeNumbers
-
Display volume numbers? (not implemented yet)
Default value: 0
Saved in: General.OptionsFileName
Geometry.Color.Points
-
Normal geometry point color
Default value: {178,182,129}
Saved in: General.OptionsFileName
Geometry.Color.Lines
-
Normal geometry curve color
Default value: {0,0,255}
Saved in: General.OptionsFileName
Geometry.Color.Surfaces
-
Normal geometry surface color
Default value: {128,128,128}
Saved in: General.OptionsFileName
Geometry.Color.Volumes
-
Normal geometry volume color
Default value: {128,128,128}
Saved in: General.OptionsFileName
Geometry.Color.PointsSelect
-
Selected geometry point color
Default value: {255,0,0}
Saved in: General.OptionsFileName
Geometry.Color.LinesSelect
-
Selected geometry curve color
Default value: {255,0,0}
Saved in: General.OptionsFileName
Geometry.Color.SurfacesSelect
-
Selected geometry surface color
Default value: {255,0,0}
Saved in: General.OptionsFileName
Geometry.Color.VolumesSelect
-
Selected geometry volume color
Default value: {255,0,0}
Saved in: General.OptionsFileName
Geometry.Color.Tangents
-
Tangent geometry vectors color
Default value: {255,255,0}
Saved in: General.OptionsFileName
Geometry.Color.Normals
-
Normal geometry vectors color
Default value: {255,0,0}
Saved in: General.OptionsFileName
Back to geuz.org/gmsh