1- // Gmsh project created on Wed Dec 4 14:27:19 2024
2- // -----------------------------------------------------------------------------
3- //
4- // Gmsh GEO tutorial 1
5- //
6- // Geometry basics, elementary entities, physical groups
7- //
8- // -----------------------------------------------------------------------------
9-
10- // The simplest construction in Gmsh's scripting language is the
11- // `affectation'. The following command defines a new variable `lc':
12-
131lc = 1e-1 ;
142
15- // This variable can then be used in the definition of Gmsh's simplest
16- // `elementary entity', a `Point'. A Point is uniquely identified by a tag (a
17- // strictly positive integer; here `1') and defined by a list of four numbers:
18- // three coordinates (X, Y and Z) and the target mesh size (lc) close to the
19- // point:
20-
21-
22-
23- // The distribution of the mesh element sizes will then be obtained by
24- // interpolation of these mesh sizes throughout the geometry. Another method to
25- // specify mesh sizes is to use general mesh size Fields (see `t10.geo'). A
26- // particular case is the use of a background mesh (see `t7.geo').
27-
28- // If no target mesh size of provided, a default uniform coarse size will be
29- // used for the model, based on the overall model size.
30-
31- // We can then define some additional points. All points should have different
32- // tags:
33-
343Point(1 ) = {0 , - 1.0000 , 0 , lc};
354Point(2 ) = {0 , 1.0000 , 0 , lc};
365Point(3 ) = {1.9015 , 1.6190 , 0 , lc};
376Point(4 ) = {3.0777 , 0 , 0 , lc};
387Point(5 ) = {1.9015 , - 1.6190 , 0 , lc};
398
40- // Point(1) = {0.8507, 0, 0, lc};
41- // Point(2) = {0.2629, 0.8090, 0, lc};
42- // Point(3) = {-0.6882, 0.5000, 0, lc};
43- // Point(4) = {-0.6882, -0.5000, 0, lc};
44- // Point(5) = {0.2629, -0.8090, 0, lc};
45-
46- // Curves are Gmsh's second type of elementary entities, and, amongst curves,
47- // straight lines are the simplest. A straight line is identified by a tag and
48- // is defined by a list of two point tags. In the commands below, for example,
49- // the line 1 starts at point 1 and ends at point 2.
50- //
51- // Note that curve tags are separate from point tags - hence we can reuse tag
52- // `1' for our first curve. And as a general rule, elementary entity tags in
53- // Gmsh have to be unique per geometrical dimension.
54-
559Line(1 ) = {1 , 2 };
5610Line(2 ) = {2 , 3 };
5711Line(3 ) = {3 , 4 };
5812Line(4 ) = {4 , 5 };
5913Line(5 ) = {5 , 1 };
6014
61- // The third elementary entity is the surface. In order to define a simple
62- // rectangular surface from the four curves defined above, a curve loop has
63- // first to be defined. A curve loop is also identified by a tag (unique amongst
64- // curve loops) and defined by an ordered list of connected curves, a sign being
65- // associated with each curve (depending on the orientation of the curve to form
66- // a loop):
67-
6815Curve Loop(1 ) = {1 , 2 , 3 , 4 , 5 };
6916
70- // We can then define the surface as a list of curve loops (only one here,
71- // representing the external contour, since there are no holes--see `t4.geo' for
72- // an example of a surface with a hole):
73-
7417Plane Surface(1 ) = {1 };
7518
76- // At this level, Gmsh knows everything to display the rectangular surface 1 and
77- // to mesh it. An optional step is needed if we want to group elementary
78- // geometrical entities into more meaningful groups, e.g. to define some
79- // mathematical ("domain", "boundary"), functional ("left wing", "fuselage") or
80- // material ("steel", "carbon") properties.
81- //
82- // Such groups are called "Physical Groups" in Gmsh. By default, if physical
83- // groups are defined, Gmsh will export in output files only mesh elements that
84- // belong to at least one physical group. (To force Gmsh to save all elements,
85- // whether they belong to physical groups or not, set `Mesh.SaveAll=1;', or
86- // specify `-save_all' on the command line.) Physical groups are also identified
87- // by tags, i.e. strictly positive integers, that should be unique per dimension
88- // (0D, 1D, 2D or 3D). Physical groups can also be given names.
89- //
90- // Here we define a physical curve that groups the left, bottom and right curves
91- // in a single group (with prescribed tag 5); and a physical surface with name
92- // "My surface" (with an automatic tag) containing the geometrical surface 1:
93-
9419Physical Line("l1") = {1 };
9520Physical Line("l2") = {2 };
9621Physical Line("l3") = {3 };
@@ -102,55 +27,5 @@ Physical Curve("b2") = {3};
10227
10328Physical Surface("My surface") = {1 };
10429
105- // Now that the geometry is complete, you can
106- // - either open this file with Gmsh and select `2D' in the `Mesh' module to
107- // create a mesh; then select `Save' to save it to disk in the default format
108- // (or use `File->Export' to export in other formats);
109- // - or run `gmsh t1.geo -2` to mesh in batch mode on the command line.
110-
111- // You could also uncomment the following lines in this script:
112- //
11330Mesh 2 ;
11431Save "pentagon_mesh.msh";
115- //
116- // which would lead Gmsh to mesh and save the mesh every time the file is
117- // parsed. (To simply parse the file from the command line, you can use `gmsh
118- // t1.geo -')
119-
120- // By default, Gmsh saves meshes in the latest version of the Gmsh mesh file
121- // format (the `MSH' format). You can save meshes in other mesh formats by
122- // specifying a filename with a different extension in the GUI, on the command
123- // line or in scripts. For example
124- //
125- // Save "t1.unv";
126- //
127- // will save the mesh in the UNV format. You can also save the mesh in older
128- // versions of the MSH format:
129- //
130- // - In the GUI: open `File->Export', enter your `filename.msh' and then pick
131- // the version in the dropdown menu.
132- // - On the command line: use the `-format' option (e.g. `gmsh file.geo -format
133- // msh2 -2').
134- // - In a `.geo' script: add `Mesh.MshFileVersion = x.y;' for any version
135- // number `x.y'.
136- // - As an alternative method, you can also not specify the format explicitly,
137- // and just choose a filename with the `.msh2' or `.msh4' extension.
138-
139- // Note that starting with Gmsh 3.0, models can be built using other geometry
140- // kernels than the default built-in kernel. By specifying
141- //
142- // SetFactory("OpenCASCADE");
143- //
144- // any subsequent command in the `.geo' file would be handled by the OpenCASCADE
145- // geometry kernel instead of the built-in kernel. Different geometry kernels
146- // have different features. With OpenCASCADE, instead of defining the surface by
147- // successively defining 4 points, 4 curves and 1 curve loop, one can define the
148- // rectangular surface directly with
149- //
150- // Rectangle(2) = {.2, 0, 0, .1, .3};
151- //
152- // The underlying curves and points could be accessed with the `Boundary' or
153- // `CombinedBoundary' operators.
154- //
155- // See e.g. `t16.geo', `t18.geo', `t19.geo' or `t20.geo' for complete examples
156- // based on OpenCASCADE, and `examples/boolean' for more.
0 commit comments