From a7b2a59d2e102cb545b7b18e39fc4585dbe1ec52 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Mon, 11 Jan 2010 14:05:04 +0000 Subject: [PATCH] improve various bits (thanks to Takuya OSHIMA) --- tutorial/t1.geo | 2 +- tutorial/t2.geo | 84 +++++++++++++++++++++++++++++++------------------ tutorial/t3.geo | 21 +++++++------ 3 files changed, 65 insertions(+), 42 deletions(-) diff --git a/tutorial/t1.geo b/tutorial/t1.geo index 83a941e046..4e6ea1526c 100644 --- a/tutorial/t1.geo +++ b/tutorial/t1.geo @@ -59,7 +59,7 @@ Plane Surface(6) = {5} ; // 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. +// common number (a region number). // We can for example group the points 1 and 2 into the physical // entity 1: diff --git a/tutorial/t2.geo b/tutorial/t2.geo index 7c88451bce..f752adbf8b 100644 --- a/tutorial/t2.geo +++ b/tutorial/t2.geo @@ -27,34 +27,38 @@ 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}; } } ; +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: +// This command created a new point with an automatically assigned +// id. This id can be obtained using the graphical user interface by +// hovering the mouse over it and looking at the bottom of the graphic +// window: in this case, the new point has id "6". Point 6 can then be +// used to create new entities, e.g.: -Line(7) = {3,tmp[0]}; -Line(8) = {tmp[0],5}; +Line(7) = {3, 6}; +Line(8) = {6, 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: +// Using the graphical user interface to obtain the ids of newly +// created entities can sometimes be cumbersome. It can then be +// advantageous to use the return value of the transformation commands +// directly. For example, the Translate command returns a list +// containing the ids of the translated entities. For example, we can +// translate copies of the two surfaces 6 and 11 to the right with the +// following command: -h = 0.12; -Translate {0, 0, h} { Duplicata{ Surface{6}; } } +my_new_surfs[] = Translate {0.12, 0, 0} { Duplicata{ Surface{6, 11}; } }; -Line(106) = {1,8}; -Line(107) = {2,12}; -Line(108) = {3,16}; -Line(109) = {4,7}; +// my_new_surfs[] (note the square brackets) denotes a list, which in +// this case contains the ids of the two new surfaces (check +// `Tools->Message console' to see the message): -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}; +Printf("New surfaces '%g' and '%g'", my_new_surfs[0], my_new_surfs[1]); + +// In Gmsh lists use square brackets for their definition (mylist[] = +// {1,2,3};) as well as to access their elements (myotherlist[] = +// {mylist[0], mylist[2]};). Note that list indexing starts at 0. // Volumes are the fourth type of elementary entities in Gmsh. In the // same way one defines line loops to build surfaces, one has to @@ -62,20 +66,38 @@ Line Loop(116) = {4,106,-102,-109}; Plane Surface(117) = {116}; // 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}; +Point(100) = {0., 0.3, 0.13, lc}; +Point(101) = {0.08, 0.3, 0.1, lc}; +Point(102) = {0.08, 0.4, 0.1, lc}; +Point(103) = {0., 0.4, 0.13, lc}; + +Line(110) = {4, 100}; Line(111) = {3, 101}; +Line(112) = {6, 102}; Line(113) = {5, 103}; +Line(114) = {103, 100}; Line(115) = {100, 101}; +Line(116) = {101, 102}; Line(117) = {102, 103}; + +Line Loop(118) = {115, -111, 3, 110}; Plane Surface(119) = {118}; +Line Loop(120) = {111, 116, -112, -7}; Plane Surface(121) = {120}; +Line Loop(122) = {112, 117, -113, -8}; Plane Surface(123) = {122}; +Line Loop(124) = {114, -110, 5, 113}; Plane Surface(125) = {124}; +Line Loop(126) = {115, 116, 117, 114}; Plane Surface(127) = {126}; + +Surface Loop(128) = {127, 119, 121, 123, 125, 11}; +Volume(129) = {128}; -// 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: +// When a volume can be extruded from a surface, it is usually easier +// to use the Extrude command directly instead of creating all the +// points, lines and surfaces by hand. For example, the following +// command extrudes the surface 11 along the z axis and automatically +// creates a new volume (as well as all the needed points, lines and +// surfaces): -Extrude {0, 0, h} { Surface{11}; } +Extrude {0, 0, 0.12} { Surface{my_new_surfs[1]}; } -// 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: +// 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; +Characteristic Length {103, 105, 109, 102, 28, 24, 6, 5} = lc * 3; // Note that, if the transformation tools are handy to create complex // geometries, it is also sometimes useful to generate the `flat' @@ -91,4 +113,4 @@ Characteristic Length {tmp[0], 2, 12, 3, 16, 6, 22} = lc * 4; // with a common region number, we finally define a physical // volume: -Physical Volume (1) = {119,120}; +Physical Volume (1) = {129,130}; diff --git a/tutorial/t3.geo b/tutorial/t3.geo index f8ddc7f616..8df6514cfd 100644 --- a/tutorial/t3.geo +++ b/tutorial/t3.geo @@ -37,13 +37,14 @@ Extrude { {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { // {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; + Surface{144}; 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]). +// programatically by using the return value (a list) of the Extrude +// command. This list contains the "top" of the extruded surface (in +// out[0]), the newly created volume (in out[1]) and the ids of the +// lateral surfaces (in out[2], out[3], ...) // We can then define a new physical volume to save all the tetrahedra // with a common region number (101): @@ -69,9 +70,9 @@ Mesh.Color.Points = {255,0,0}; 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. +// You can use the `Help->Current options' menu to see the current +// values of all options. To save all the options in a file, use +// `File->Save as->Gmsh options'. To associate the current options +// with the current file use `File->Save Options->For Current +// File'. To save the current options for all future Gmsh sessions use +// `File->Save Options->As default'. -- GitLab