EasyMesh - A Two-Dimensional Quality Mesh Generator
eryar@163.com
Abstract. EasyMesh is developed by Bojan Niceno, it is a two-dimensional quality mesh generator. EasyMesh can generate two dimensional, unstructured, Delaunay and constrained Delaunay triangulations in general domains. It can handle holes in the domain. The paper focus on the usage of EasyMesh.
Key Words. EasyMesh, Delaunay Triangualtion, Triangulation, Mesh
1.Introduction
目前,工程技術(shù)領(lǐng)域中各類(lèi)物理系統(tǒng)的數(shù)值分析計(jì)算方法主要包括以下步驟:第一步,建立物理系統(tǒng)的控制方程。第二步,離散化物理系統(tǒng)的定義域。在工程技術(shù)領(lǐng)域人們通常將離散化的幾何定義域的一個(gè)子域單元稱(chēng)為網(wǎng)格(mesh),將將離散化過(guò)程稱(chēng)為網(wǎng)格劃分或者網(wǎng)格生成(mesh generation)。第三步,離散化連續(xù)PDE模型(Partial Differential Equation, PDE偏微分方程)。第四步,求解線(xiàn)性代數(shù)方程組。第五步,計(jì)算可視化。
網(wǎng)格劃分技術(shù)是偏微分方程數(shù)值解法中比較關(guān)鍵的一步,關(guān)于網(wǎng)格劃分的庫(kù)也有很多,如Triangle,netgen, gmsh, tegen等等。網(wǎng)格劃分技術(shù)不僅用于有限元計(jì)算,也可以用于模型的可視化。本文主要介紹這個(gè)輕量化的網(wǎng)格劃分庫(kù)EasyMesh。
2.EasyMesh Features
EasyMesh能夠?qū)τ谟烧劬€(xiàn)圍成的多空洞、多介質(zhì)區(qū)域生成指定局部加密的Delaunay三角剖分。使用了很簡(jiǎn)單的文本文件作為數(shù)據(jù)的輸入,生成了不同的結(jié)果文件,方便查看結(jié)果。其實(shí)將輸入和輸出部分稍加修改,就可以將EasyMesh內(nèi)嵌到自己的程序中,而不用單獨(dú)執(zhí)行EasyMesh。
Figure 1. EasyMesh website (http://web.mit.edu/easymesh_v1.4/www/easymesh.html)
EasyMesh也可以從上述網(wǎng)站中進(jìn)行下載,下載后可以直接在Visual Studio中編譯。
3.Using EasyMesh
用C寫(xiě)的EasyMesh雖然有點(diǎn)歷史了,但是編譯起來(lái)也是很順利的,只有幾個(gè)warnings。編譯好生成一個(gè)EasyMesh.exe,然后像其他的控制臺(tái)程序一樣,通過(guò)傳參數(shù)來(lái)使用。直接運(yùn)行就會(huì)看到程序的完整使用說(shuō)明:
Figure 2. EasyMesh Help Info
可以在EasyMesh.exe的文件夾中做一個(gè)批處理文件,如EasyMesh.bat,其中內(nèi)容如下:
title EasyMesh
EasyMesh
pause
這樣就可以看到這個(gè)幫助信息了。使用如下命令則會(huì)生成一個(gè)例子文件:
title EasyMesh
EasyMesh +example
pause
然后再對(duì)生成的example.d進(jìn)行剖分:
title EasyMesh
EasyMesh example.d +dxf
pause
將上面的三句話(huà)分別保存成一個(gè)批處理文件,運(yùn)行批處理就可以得到相應(yīng)的結(jié)果了。運(yùn)行上面這個(gè)批處理得到對(duì)example.d的剖分結(jié)果文件example.dxf,用AutoCAD打開(kāi)這個(gè)DXF文件查看結(jié)果:
Figure 3. Mesh Result
Figure 4. Delaunay Triangulation
Figure 5. Voronoi Result
輸入文件中比較重要的一點(diǎn)是邊界線(xiàn)的方向是逆時(shí)針的,孔的線(xiàn)是順時(shí)針?lè)较虻摹O旅鎸⒆詭У膸兹游募可删W(wǎng)格:
Figure 6. EasyMesh example2.d +dxf
Figure 7. EasyMesh example3.d +dxf
Figure 8. EasyMesh example4.d +dxf
Figure 9. EasyMesh example5.d +dxf
Figure 10. EasyMesh example6.d +dxf
Figure 11. EasyMesh example7.d +dxf
通過(guò)設(shè)備下圖中的spacing可以設(shè)置網(wǎng)格的密度:
Figure 12. Spacing of a point
4.Conclusion
網(wǎng)格劃分技術(shù)廣泛用于三維模型可視化,有限元計(jì)算中。借助這些開(kāi)源庫(kù)的力量,可以讓自己快速實(shí)現(xiàn)一些功能。本文主要介紹了EasyMesh的用法及生成結(jié)果,如果對(duì)網(wǎng)格劃分技術(shù)感興趣的同學(xué)可以自己下載源碼學(xué)習(xí)。
因?yàn)镋asyMesh源碼精巧,且包含了輸入和輸出部分的源碼,可以將EasyMesh輸入輸出部分稍加修改就可以直接在自己的程序中使用,而不用單獨(dú)編譯成一個(gè)可執(zhí)行程序。
5.References
1. EasyMesh website. http://web.mit.edu/easymesh_v1.4/www/easymesh.html
2. EasyMesh Source: http://www-dinma.univ.trieste.it/nirftc/research/easymesh/
3. 王成恩. 面向科學(xué)計(jì)算的網(wǎng)格劃分與可視化技術(shù). 科學(xué)出版社. 2011
4. Triangle. http://www.cs.cmu.edu/~quake/triangle.html
5. Triangle eryar. http://www.shnenglu.com/eryar/archive/2014/03/29/206394.aspx