![一步一步學(xué)習(xí)使用-Gmsh_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/8/f3307af0-deda-4a3b-9217-814fba2ff4ce/f3307af0-deda-4a3b-9217-814fba2ff4ce1.gif)
![一步一步學(xué)習(xí)使用-Gmsh_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/8/f3307af0-deda-4a3b-9217-814fba2ff4ce/f3307af0-deda-4a3b-9217-814fba2ff4ce2.gif)
![一步一步學(xué)習(xí)使用-Gmsh_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/8/f3307af0-deda-4a3b-9217-814fba2ff4ce/f3307af0-deda-4a3b-9217-814fba2ff4ce3.gif)
![一步一步學(xué)習(xí)使用-Gmsh_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/8/f3307af0-deda-4a3b-9217-814fba2ff4ce/f3307af0-deda-4a3b-9217-814fba2ff4ce4.gif)
![一步一步學(xué)習(xí)使用-Gmsh_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/8/f3307af0-deda-4a3b-9217-814fba2ff4ce/f3307af0-deda-4a3b-9217-814fba2ff4ce5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一步一步學(xué)習(xí)使用 Gmsh1簡(jiǎn)介下面我們討論的是 Gmsh 所附帶的例子。這些例子使用 C 和 C+ 的方式進(jìn)行了比較詳細(xì)的注釋, Gmsh 的各種用法被逐漸引進(jìn)來(lái),我們從 t1.geo 開(kāi)始1。 為了使用 Gmsh 來(lái)運(yùn)行這些例子,我們有兩種方案(事實(shí)上,運(yùn)行的方式根據(jù)操作系統(tǒng)的不同會(huì)有更多的不一樣,我們假設(shè)您是在一個(gè)類 UNIX 操作系統(tǒng)的 Shell 中來(lái)運(yùn)行)。第一種運(yùn)行 Gmsh 的方式是交互式的圖形界面方式,您只需要在命令行下鍵入 $ gmsh就可以了。軟件會(huì)打開(kāi)兩個(gè)窗口:一個(gè)是圖形窗口,其中有一個(gè)位于底部的狀態(tài)條;另一個(gè)是菜單窗口,其中有一個(gè)菜單條和一些和上下文有關(guān)的按鈕。您選擇
2、 File->Open 菜單,就能夠去選擇打開(kāi) t1.geo 這個(gè)文件。為了能夠產(chǎn)生網(wǎng)格,您在 Module 菜單中選擇 Mesh ,然后在上下文相關(guān)的按鈕中選擇您想要的維數(shù),其中 1D 會(huì)在所有的線上分布網(wǎng)格、2D 會(huì)將所有的表面上產(chǎn)生網(wǎng)格、 3D 會(huì)在所有的立體中產(chǎn)生網(wǎng)格。您再選擇保存,就能夠?qū)@得的網(wǎng)格存儲(chǔ)起來(lái)。您還可以在菜單中選擇存儲(chǔ)的形式。存儲(chǔ)的文件的文件名一般是輸入文件的主文件名加上和存儲(chǔ)格式有關(guān)的擴(kuò)展名。2 另外一個(gè)交互式運(yùn)行 Gmsh 的方法更加方便,您可以直接在命令行上加參數(shù)運(yùn)行 $ gmsh t1.geo 3 4另一個(gè)運(yùn)行 Gmsh 的模式是非交互的模式。在這種模式下
3、,沒(méi)有圖形界面,所有的操作都是非交互的。比如您想對(duì)于第一個(gè)例子產(chǎn)生二維的網(wǎng)格,您可以敲入 $ gmsh t1.geo -2如果您想基于一個(gè)已有的背景網(wǎng)格 'bgmesh.pos' 來(lái)產(chǎn)生出網(wǎng)格,您就可以使用 $ gmsh t1.geo -2 -bgm -bgmesh.pos 5Gmsh 能夠同時(shí)讀入好幾個(gè)文件。第一個(gè)文件定義了這個(gè)項(xiàng)目,其他文件都被附加在其后。您可以使用 File->Merge 菜單來(lái)將這些文件合并到一起,當(dāng)然,命令行也能做這件事情。這個(gè)功能對(duì)于后處理是有用的。比如,使用命令 $ gmsh t1.geo view1.pos view2.pos就能夠?qū)⒑筇幚?/p>
4、視圖 'view1.pos' 和 'view2.pos' 與第一個(gè)例子 't1.geo' 合并起來(lái)。在 Post-Processing 模塊中,會(huì)出現(xiàn)兩個(gè)按鈕,分別叫做 "a scalar map" 和 "a vector map"。左鍵點(diǎn)擊按鈕就會(huì)看到相應(yīng)的視圖,右鍵點(diǎn)擊則會(huì)出現(xiàn)該視圖的選項(xiàng)。如果您希望對(duì)于一個(gè)視圖的選項(xiàng)的修改能夠應(yīng)用到所有的視圖上,選擇 'Apply next change to all views' 或者 'Force same options for all
5、view' 就可以了,這些功能在菜單 Options->Post-proccessing 中。6 1 這個(gè)說(shuō)明中沒(méi)有解釋網(wǎng)格和后處理文件的格式。請(qǐng)?jiān)?FORMATS 文件中找到相應(yīng)的內(nèi)容。 2 幾乎所有的交互式命令都有快捷鍵。您在菜單 Help->Shortcuts 可以看到這些快捷鍵都是什么。 3 擴(kuò)展名 .geo 可以去掉。 4 雖然直接在輸入文件中定義變量和點(diǎn)非常方便,如果您通過(guò)交互的方式來(lái)定義曲線、表面和立體會(huì)覺(jué)得更加方便。請(qǐng)?jiān)谀K Geometry 中根據(jù)上下文相關(guān)按鈕來(lái)完成這樣的操作。比如您想加入一條樣條曲線,您可以選擇下面的按鈕序列:Elementary-&g
6、t;Add->New->Spline。然后在圖形窗口的狀態(tài)條中就會(huì)被要求選擇一系列的點(diǎn),然后點(diǎn)擊 'e' 完成選擇(點(diǎn)擊 'q' 取消)。當(dāng)整個(gè)的交互式命令完成后,您打開(kāi)的文件的尾部就會(huì)添加上一個(gè)字符串來(lái)描述這條曲線。 5 如果您想使用背景網(wǎng)格,請(qǐng)閱讀 'bgmesh.pos' 中的注釋。 6 所有的交互式輸入的選項(xiàng)也都能夠通過(guò)文本輸入文件實(shí)現(xiàn)。所有的有效選項(xiàng)以及它們當(dāng)前的值,能夠使用選擇菜單 File->Save as ->Geometry->Gmsh current options 來(lái)存儲(chǔ)到文件中。直接點(diǎn)擊狀態(tài)條
7、上的問(wèn)號(hào) '?' 也能達(dá)到同樣的效果。如果您想將現(xiàn)在的選項(xiàng)保存起來(lái)作為缺省的偏好設(shè)置,以便將來(lái)啟動(dòng) Gmsh 時(shí)使用,請(qǐng)使用 Options->Save options now 菜單。 例子 1/* * * Gmsh tutorial 1 * * 變量,基本實(shí)體,物理實(shí)體,背景網(wǎng)格 * */ Gmsh 中所有幾何體的描述使用是一種類似于 C 的語(yǔ)言。最簡(jiǎn)單的/ 構(gòu)造這種語(yǔ)言的方法是 "affectation"./ 所有的命令都使用分號(hào)結(jié)尾。下面的行定義了一個(gè)叫做 'lc' 的變/ 量,并且設(shè)置其值為 0.007 :lc = 0.007
8、;/ 這個(gè)新創(chuàng)建的變量能夠被用來(lái)定義一個(gè) Gmsh 的基本實(shí)體:一個(gè)點(diǎn)/ 'Point'。一個(gè)點(diǎn)能夠用四個(gè)數(shù)的表來(lái)表示,包括它的坐標(biāo) x, y, z/ 以及一個(gè)特征長(zhǎng)度用來(lái)指定該點(diǎn)處產(chǎn)生出來(lái)的網(wǎng)格尺度:Point(1) = 0, 0, 0, 9.e-1 * lc ;/ 網(wǎng)格尺度指的是網(wǎng)格中線段的長(zhǎng)度、三角形的外接圓的半徑和四面/ 體的外接球的半徑。實(shí)際上的網(wǎng)格尺度的分布是使用的預(yù)先指定的/ 點(diǎn)上的特征尺度通過(guò)插值得到的。指定特征長(zhǎng)度還有其他方法:比/ 如 吸引子(參考 t7.geo)和背景網(wǎng)格(參考 bgmesh.pos)。/ 如同上面的這個(gè)定義,更加復(fù)雜的表達(dá)式也能夠通過(guò)變量
9、構(gòu)造出來(lái)。/ 這里,上面的變量 'lc' 被乘上了常數(shù) 9.e-1 作為了上面定義這個(gè)/ 點(diǎn)的第四個(gè)參數(shù)。/ 下面的一般的語(yǔ)法規(guī)則能夠應(yīng)用到定義所有的幾何實(shí)體上:/ “如果一個(gè)數(shù)定義了一個(gè)新的實(shí)體,它就是放在一對(duì)小括號(hào)/ 中,如果一個(gè)數(shù)引用了一個(gè)以前定義的實(shí)體,那么它就是/ 放在一對(duì)花括號(hào)中?!? 下面我們又定義了三個(gè)點(diǎn):Point(2) = .1, 0, 0, lc ;Point(3) = .1, .3, 0, lc ;Point(4) = 0, .3, 0, lc ;/ Gmsh 中的第二種基本幾何實(shí)體是曲線。直線是曲線中最簡(jiǎn)單的一/ 種。一條直線可以用一串點(diǎn)定義出來(lái),比如
10、下面的 Line 1 是從/ 點(diǎn) 1 出發(fā)的,到點(diǎn) 2 截止:Line(1) = 1,2 ;Line(2) = 3,2 ;Line(3) = 3,4 ;Line(4) = 4,1 ;/ 第三種基本實(shí)體是曲面。為了使用上面的四條線定義一個(gè)簡(jiǎn)單的/ 矩形曲面,我們要先定義一個(gè)曲線閉環(huán)(line loop)。一個(gè)曲線閉/ 環(huán)是一串連接著的線,每條線上都帶著一個(gè)符號(hào),用來(lái)表示這條/ 線的方向。Line Loop(5) = 4,1,-2,3 ;/ The surface is then defined as a list of line loops (only one/ here):/ 然后這個(gè)曲面就能
11、夠使用一系列的曲線閉環(huán)來(lái)定義了(這里只有/ 一個(gè)):Plane Surface(6) = 5 ;/ 這時(shí)候,Gmsh 知道所有的關(guān)于怎么顯示這個(gè)矩形曲面和布上網(wǎng)格/ 的信息。但是我們還需要提供對(duì)網(wǎng)格中不同的元素(包括點(diǎn)、線、/ 三角形)指定區(qū)域指標(biāo)(region number)。這可以通過(guò)定義物理實(shí)體/ 的方法實(shí)現(xiàn)。物理實(shí)體能夠?qū)⒕W(wǎng)格中的元素分成組,給定一個(gè)區(qū)/ 域指標(biāo),并指定其定向。/ 比如,下面我們就將點(diǎn) 1 和點(diǎn) 2 組合到物理實(shí)體 1 中了:Physical Point(1) = 1,2 ;/ 從而,兩個(gè)元素會(huì)被同時(shí)輸出到輸出文件中,并具有區(qū)域指標(biāo) 1。/ 對(duì)于曲線和曲面,也能這樣指定
12、相應(yīng)的區(qū)域指標(biāo):Physical Line(10) = 1,2,4 ;MySurface = 100;Physical Surface(MySurface) = 6 ;/ 所有的在剖分曲線 1、2、4的時(shí)候產(chǎn)生的線元素都會(huì)被存儲(chǔ)為區(qū)域/ 指標(biāo)為 10,所有在剖分曲面 6 時(shí)產(chǎn)生的三角形都具有區(qū)域指標(biāo) 100。/ 如果沒(méi)有定義物理實(shí)體,網(wǎng)格中所有的元素都被直接存儲(chǔ)為缺省的/ 定向,其區(qū)域指標(biāo)為它們的基本區(qū)域指標(biāo)。請(qǐng)參考 FORMATS 文件/ 了解網(wǎng)格和后處理的格式。例子 2/* * * Gmsh tutorial 2 * * 文件包含、幾何變換、幾何體推移、立體的幾何實(shí)體和物理實(shí)體 * */
13、我們可以使用 Include 將第一個(gè)例子包含進(jìn)來(lái)作為這里的基礎(chǔ):Include "t1.geo" ;/ 為了能夠從前面的 t1.geo 中建立更加復(fù)雜的幾何體,有幾個(gè)可能的方式。/ 我們可以先加入新的點(diǎn)、線、曲面,就象在 t1.geo 中做的那樣:Point(5) = 0, .4, 0, lc ;Line(5) = 4, 5 ;/ 我們還可以通過(guò)幾何變換來(lái)移動(dòng)、加入或者推移基本的幾何實(shí)體。比如,/ 我們可以將點(diǎn) 3 向左移動(dòng) 0.05:Translate -0.05,0,0 Point3 ; / 得到的這個(gè)點(diǎn)能夠復(fù)制一個(gè)并沿著 y 軸移動(dòng) 0.1:Translate 0,
14、0.1,0 Duplicata Point3 ; / 當(dāng)然,移動(dòng)、旋轉(zhuǎn)和推移命令不光能夠用在點(diǎn)上,也能夠用在曲線和曲/ 面上。下面的命令就是將 t1.geo 中曲面 6 和一個(gè)新的曲面 11 沿著 z / 軸推出去 'h':h = 0.12 ;Extrude Surface 6, 0, 0, h ;Line(7) = 3, 6 ; Line(8) = 6,5 ; Line Loop(10) = 5,-8,-7,3;Plane Surface(11) = 10;Extrude Surface 11, 0, 0, h ;/ 所有的幾何變換自動(dòng)的會(huì)產(chǎn)生新的幾何體,下面的命令允許手工指
15、定/ 自動(dòng)產(chǎn)生的點(diǎn)的特征長(zhǎng)度:Characteristic Length6,22,2,3,16,12 = lc * 2 ;/ 如果說(shuō)變換工具對(duì)于產(chǎn)生復(fù)雜的幾何體非常方便的話,有時(shí)候產(chǎn)生一個(gè)/ 和已有的幾何實(shí)體相同的平面幾何體也是非常有用的。這可以通過(guò)菜單/ File->Save as->Geometry->Gmsh unrolled geometry 或者命令行/ $ gmsh t2.geo -0/ 來(lái)實(shí)現(xiàn)。/ 立體是 Gmsh 中的第四種基本幾何體。和先定義了閉環(huán)曲線再定義曲面/ 一樣,我們現(xiàn)在需要先定義閉環(huán)曲面(suface loop)。下面的立體是一/ 個(gè)單連通的,沒(méi)有
16、洞的體(所以只需要一個(gè)閉環(huán)曲面來(lái)定義它):Surface Loop(145) = 121,11,131,135,139,144;Volume(146) = 145;Surface Loop(146) = 121,6,109,113,117,122;Volume(147) = 146;/ 我們定義下面的物理立體實(shí)體使得所有剖分得到的四面體具有區(qū)域指標(biāo) 1:Physical Volume (1) = 146,147 ;/ 恭喜了!您現(xiàn)在已經(jīng)得到了您的第一個(gè)無(wú)結(jié)構(gòu)的三維四面體網(wǎng)格!例子 3/* * * Gmsh tutorial 3 * * 網(wǎng)格推移、選項(xiàng) * */ 我們還是先將例子 1 包含進(jìn)來(lái):
17、Include "t1.geo" ;/ 和 't2.geo' 中一樣,我們也做一個(gè)沿著 z 驟的推移:h = 0.1 ;/ 和 't2.geo' 中不同的是,我們不僅僅推移了幾何體,而且推移了二維的/ 網(wǎng)格。命令還是相同的 Extrude,但是通過(guò)設(shè)置層數(shù)(這里,我們有四層,/ 分別是 8, 4, 2, 1 個(gè)單元深度),立體數(shù)(從 9000 到 9003)以及相應(yīng)/ 的高度為 h/4 來(lái)實(shí)現(xiàn)了網(wǎng)格的推移:Extrude Surface 6, 0,0,h Layers 8,4,2,1, 9000:9003, 0.25,0.5,0.75,1 ;
18、 ;/ 和用平移進(jìn)行推移一樣,我們也可以使用一個(gè)旋轉(zhuǎn)來(lái)進(jìn)行推移,這樣/ 得到的網(wǎng)格能夠重組為三棱柱(如果曲面上的網(wǎng)格是三角形)或者/ 是六面體(如果曲面上的網(wǎng)格是四邊形)。每個(gè)旋轉(zhuǎn)通過(guò)一個(gè)軸向/ (0,1,0)、一個(gè)軸心點(diǎn)(-0.1,0,0.1)以及一個(gè)角度(-Pi/2)來(lái)指定:Extrude Surface 122, 0,1,0 , -0.1,0,0.1 , -Pi/2 Recombine ; Layers 7, 9004, 1 ; ;/ 一個(gè)平移 (-2*h,0,0) 和一個(gè)旋轉(zhuǎn) (1,0,0, 0,0.15,0.25, Pi/2) 能/ 夠組合起來(lái)使用:Extrude Surface n
19、ews-1, -2*h,0,0, 1,0,0 , 0,0.15,0.25 , Pi/2 Layers 10,9004,1; Recombine; ;Physical Volume(101) = 9000:9004;/ 所有交互方式輸入的選項(xiàng)都能夠直接在輸入文件中指定。比如下面/ 我們指定了一個(gè)全局的特征長(zhǎng)度因子,重新設(shè)定了一些背景顏色,/ 并設(shè)定不顯示坐標(biāo)軸,選擇了一個(gè)初始給定的視圖,禁止掉了交互/ 式的旋轉(zhuǎn)選擇視圖:Mesh.CharacteristicLengthFactor = 4;General.Color.Background = 120,120,120;General.Color.
20、Foreground = 255,255,255;General.Color.Text = White;Geometry.Color.Points = Orange;General.Axes = 0;General.Trackball = 0;General.RotationX = 10;General.RotationY = 70;General.TranslationX = -0.2;/ 顏色可以通過(guò)文字方式或者 RGB 方式給定,比如 'General.Color.Background / = Red' 與 'General.Color.Background =
21、255,0,0' 是完全一樣的。/ 這些選項(xiàng)就和用戶定義的變量一樣,能夠用作任何的左值和右值,/ 比如Geometry.Color.Surfaces = Geometry.Color.Points;/ 將會(huì)把曲面的顏色設(shè)置得和點(diǎn)的顏色一樣。/ 點(diǎn)擊狀態(tài)條上的問(wèn)號(hào) '?' 會(huì)將當(dāng)前的左右選項(xiàng)打印在終端上,使用/ 菜單 File->Save as->Geometry->Gmsh current options 會(huì)將這些選項(xiàng)存/ 儲(chǔ)到文件中。菜單 Options->Save options now 會(huì)將當(dāng)前選項(xiàng)存儲(chǔ)起/ 來(lái)作為將來(lái)的缺省選項(xiàng)。例子 4/
22、* * * Gmsh tutorial 4 * * 內(nèi)部函數(shù)、洞 * */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) ) / (h52 + e22) ;ssin = Sqrt(1-ccos2) ;Lc1 = 0.01 ;Lc2 = 0.003
23、;/ 下面是所有的操作符的列表,除了 '' 以外,這些操作符和 C、C+/ 語(yǔ)言中都是一樣的:/ '-' (in both unary and binary versions, i.e. as in '-1' and '1-2')/ '!' (the negation)/ '+'/ '*'/ '/'/ '%' (the rest of the integer division)/ '<'/ '>'/ '
24、;<='/ '>='/ '='/ '!='/ '&&' (and)/ '|' (or)/ '|' (or)/ '' (power)/ '?' ':' (the ternary operator)/ 使用括號(hào)可以將表達(dá)式結(jié)合/ 除了這些操作符以外,所有的 C 數(shù)學(xué)函數(shù)也能夠使用(注意首字母/ 要大寫(xiě)):/ / Exp(x)/ Log(x)/ Log10(x)/ Sqrt(x)/ Sin(x)/ Asin(x)/ Cos
25、(x)/ Acos(x)/ Tan(x)/ Atan(x)/ Atan2(x,y)/ Sinh(x)/ Cosh(x)/ Tanh(x)/ Fabs(x)/ Floor(x)/ Ceil(x)/ Fmod(x,y)/ / 我們還有增加的函數(shù):/ Hypot(x,y) computes Sqrt(x2+y2)/ Rand(x) generates a random number in 0,x/ Gmsh 中唯一預(yù)定義的常數(shù)就是 Pi.Point(1) = -e1-e2, 0.0 , 0.0 , Lc1;Point(2) = -e1-e2, h1 , 0.0 , Lc1;Point(3) = -e
26、3-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
27、)= 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
28、 , 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;/ 圓弧是通過(guò)三個(gè)給定的點(diǎn)來(lái)定義的,分別表示起始點(diǎn)、中心點(diǎn)和/ 截止點(diǎn)。所有的圓弧都是逆時(shí)針的。這三個(gè)點(diǎn)不應(yīng)該在同一條直/ 線上,否則
29、您應(yīng)該指定這個(gè)圓弧位于那個(gè)平面上如/ Circle(num) = start,center,end Plane nx,ny,nzCircle(3) = 14,15,16;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) = 2
30、1,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;/ 這個(gè)曲面有兩條閉環(huán)曲線構(gòu)造出來(lái),從而它會(huì)有一個(gè)洞:Line Loop(23) = 11,-12,13,14,1,2,-3,4,5,6,7,-8,9,10;Plane Surface(24) = 23,21;Physical Surface(1) = 22;Physical Surface(2)
31、= 24;例子 5/* * * Gmsh tutorial 5 * * 特征長(zhǎng)度、變量數(shù)組、函數(shù)、循環(huán) * */ 先定義幾個(gè)特征長(zhǎng)度:lcar1 = .1;lcar2 = .0005;lcar3 = .075;/ 為了能夠不修改文件,而全局的改變這些長(zhǎng)度,我們能夠在/ 命令行指定一個(gè)因子或者指定 Mesh.CharacteristicLengthFactor/ 選項(xiàng)來(lái)達(dá)成。例如/ $ gmsh t5 -clscale 1/ 將會(huì)產(chǎn)生一個(gè)大約兩千個(gè)節(jié)點(diǎn)和一萬(wàn)個(gè)四面體的網(wǎng)格(在一臺(tái)/ 666M 主頻的 Alpha Workstation 上需要約 3 秒鐘)。而/ $ gmsh t5 -clsca
32、le 0.2/ 會(huì)將所有的特征長(zhǎng)度都縮小 5 倍,得到的網(wǎng)格將有大約 17 萬(wàn)/ 個(gè)節(jié)點(diǎn),和大約 100 萬(wàn)個(gè)四面體,在同樣的機(jī)器上,這需要花/ 費(fèi)大約 16 分鐘的時(shí)間,Gmsh 還需要很多改進(jìn)來(lái)達(dá)到更高的效/ 率。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; P
33、oint(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; Lin
34、e(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
35、) = 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
36、; Plane Surface(37) = 36;Line Loop(38) = -14,-13,-12,19; Plane Surface(39) = 38;/ 除了使用文件包含機(jī)制以外,我們還能定義函數(shù)。在下面的函數(shù)中,/ 我們使用了保留詞 'newp',這樣能夠自動(dòng)的選擇一個(gè)新的點(diǎn)數(shù)。這/ 個(gè)數(shù)是當(dāng)前最大數(shù)加一得到的。相似的,'newreg' 保留詞是所有除/ 去點(diǎn)以外的實(shí)體數(shù)中最大的加一。/ 這里還沒(méi)有局部變量,在將來(lái)的版本中,我們會(huì)加入相應(yīng)的功能。Function CheeseHole p1 = newp; Point(p1) = x, y, z, l
37、car3 ; 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
38、; 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(c1
39、0) = p3,p1,p4; c11 = newreg; Circle(c11) = p4,p1,p6; c12 = newreg; Circle(c12) = p6,p1,p7;/ 下面我們定義了一些約束曲面: 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(ne
40、wreg) = 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;
41、 Line Loop(l8) = -c6,-c9,c2; Ruled Surface(newreg) = l8;/ 曲面上的網(wǎng)格是通過(guò)將二維的網(wǎng)格投影到曲面的平均曲面上得到/ 的,這樣只有當(dāng)曲率很小的時(shí)候才能夠得到比較好的效果,否則/ 的話,您需要將曲面手工分成很小的小片。/ 變量數(shù)組能夠和變量一樣進(jìn)行操作。注意:對(duì)于一個(gè)沒(méi)有初始化/ 的變量的讀寫(xiě)會(huì)產(chǎn)生不可預(yù)知的結(jié)果。數(shù)組中的所有元素能夠同/ 時(shí)初始化,如 l=1,2,7。 theloopst = newreg ; Surface Loop(theloopst) = l8+1, l5+1, l1+1, l2+1, -(l3+1), -(l7+
42、1), l6+1, l4+1; thehole = newreg ; Volume(thehole) = theloopst ;Returnx = 0 ; y = 0.75 ; z = 0 ; r = 0.09 ;/ 這里使用一個(gè) For 循環(huán)來(lái)產(chǎn)生立方體中的五個(gè)洞:For t In 1:5 x += 0.166 ; z += 0.166 ; / 調(diào)用函數(shù) CheeseHole,除了定義函數(shù)以外,我們?nèi)绻麑?xiě)一個(gè)文件/ 包含相同的代碼,并且使用 Include 命令將這個(gè)文件包含在其中/ 也能夠達(dá)到同樣的效果。 Call CheeseHole ;/ 每個(gè) Cheese 洞定義為一個(gè)物理立體指標(biāo)
43、Physical Volume (t) = thehole ; / Printf 函數(shù)可以將變量的值打印在終端上,和 C 語(yǔ)言的 printf/ 使用方法相似: Printf("The cheese hole %g (center = %g,%g,%g, radius = %g) has number %g!", t, x, y, z, r, thehole) ;/ 所有的 Gmsh 變量在內(nèi)部都是當(dāng)成 double 來(lái)處理的。所以上面的/ 格式化字符串都是使用的 %g ,請(qǐng)參看 C 或者 C+ 語(yǔ)言的參考資/ 料得到進(jìn)一步的信息。EndFor/ 這是這個(gè)曲面外部的曲面閉環(huán)
44、:theloops0 = newreg ;Surface Loop(theloops0) = 35,31,29,37,33,23,39,25,27 ;/ 這個(gè)包含 5 個(gè) Cheese 洞的立體,是使用了六個(gè)曲面閉環(huán)定義出來(lái)/ 的(外部曲面閉環(huán)和內(nèi)部的 5 個(gè)曲面閉環(huán))。為了能夠引用數(shù)組中/ 的所有元素,使用其名稱加上 '' 的形式:Volume(186) = theloops ;/ 最后,我們將這個(gè)立體中剖分出的四面體給定區(qū)域指標(biāo) 10。Physical Volume (10) = 186 ;例子 6/* * * Gmsh tutorial 6 * * Transfinite
45、 meshes * */r_int = 0.05 ;r_ext = 0.051 ;r_far = 0.125 ;r_inf = 0.4 ;phi1 = 30. * (Pi/180.) ;angl = 45. * (Pi/180.) ;nbpt_phi = 5 ; nbpt_int = 20 ;nbpt_arc1 = 10 ; nbpt_arc2 = 10 ;nbpt_shell = 10 ; nbpt_far = 25 ; nbpt_inf = 15 ;lc0 = 0.1 ; lc1 = 0.1 ; lc2 = 0.3 ;Point(1) = 0, 0, 0, lc0 ;Point(2) =
46、r_int, 0, 0, lc0 ;Point(3) = r_ext, 0, 0, lc1 ;Point(4) = r_far, 0, 0, lc2 ;Point(5) = r_inf, 0, 0, lc2 ;Point(6) = 0, 0, r_int, lc0 ;Point(7) = 0, 0, r_ext, lc1 ;Point(8) = 0, 0, r_far, lc2 ;Point(9) = 0, 0, r_inf, lc2 ;Point(10) = r_int*Cos(phi1), r_int*Sin(phi1), 0, lc0 ;Point(11) = r_ext*Cos(phi
47、1), r_ext*Sin(phi1), 0, lc1 ;Point(12) = r_far*Cos(phi1), r_far*Sin(phi1), 0, lc2 ;Point(13) = r_inf*Cos(phi1), r_inf*Sin(phi1), 0, lc2 ;Point(14) = r_int/2, 0, 0, lc2 ;Point(15) = r_int/2*Cos(phi1), r_int/2*Sin(phi1), 0, lc2 ;Point(16) = r_int/2, 0, r_int/2, lc2 ;Point(17) = r_int/2*Cos(phi1), r_in
48、t/2*Sin(phi1), r_int/2, lc2 ;Point(18) = 0, 0, r_int/2, lc2 ;Point(19) = r_int*Cos(angl), 0, r_int*Sin(angl), lc2 ;Point(20) = r_int*Cos(angl)*Cos(phi1), r_int*Cos(angl)*Sin(phi1), r_int*Sin(angl), lc2 ;Point(21) = r_ext*Cos(angl), 0, r_ext*Sin(angl), lc2 ;Point(22) = r_ext*Cos(angl)*Cos(phi1), r_ex
49、t*Cos(angl)*Sin(phi1), r_ext*Sin(angl), lc2 ;Point(23) = r_far*Cos(angl), 0, r_far*Sin(angl), lc2 ;Point(24) = r_far*Cos(angl)*Cos(phi1), r_far*Cos(angl)*Sin(phi1), r_far*Sin(angl), lc2 ;Point(25) = r_inf, 0, r_inf, lc2 ;Point(26) = r_inf*Cos(phi1), r_inf*Sin(phi1), r_inf, lc2 ;Circle(1) = 2,1,19; C
50、ircle(2) = 19,1,6; Circle(3) = 3,1,21;Circle(4) = 21,1,7; Circle(5) = 4,1,23; Circle(6) = 23,1,8; Line(7) = 5,25; Line(8) = 25,9;Circle(9) = 10,1,20; Circle(10) = 20,1,6; Circle(11) = 11,1,22;Circle(12) = 22,1,7; Circle(13) = 12,1,24; Circle(14) = 24,1,8;Line(15) = 13,26; Line(16) = 26,9;Circle(17) = 19,1,20; Circle(18) = 21,1,22; Circle(19) = 23
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年應(yīng)急救生系統(tǒng)項(xiàng)目合作計(jì)劃書(shū)
- 2025年水基聚合物防水涂料項(xiàng)目合作計(jì)劃書(shū)
- 智能交通系統(tǒng)建設(shè)工程施工合同
- 鹽城市房屋租賃合同
- 小學(xué)生品德教育讀后感
- 2025年飲料及冷飲服務(wù)項(xiàng)目發(fā)展計(jì)劃
- 妊娠紋的專業(yè)知識(shí)
- Isonicotinamide-Standard-生命科學(xué)試劑-MCE
- Direct-blue-6-生命科學(xué)試劑-MCE
- 2025年鞋用乳液膠粘劑項(xiàng)目建議書(shū)
- 2024年山東傳媒職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 華為采購(gòu)質(zhì)量?jī)?yōu)先及三化一穩(wěn)定推進(jìn)
- 職業(yè)學(xué)院學(xué)生晚出、晚歸、不歸管理辦法
- 2025年高三歷史高考第二輪復(fù)習(xí)知識(shí)梳理中國(guó)史部分復(fù)習(xí)提綱
- 《安利蛋白質(zhì)粉》課件
- 2025年蒙鹽集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 護(hù)理三基三嚴(yán)習(xí)題+參考答案
- 椎間孔鏡的手術(shù)配合
- 2025門診護(hù)理工作計(jì)劃
- 員工互評(píng)表(含指標(biāo))
- 電氣領(lǐng)域知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論