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)域中各類物理系統(tǒng)的數(shù)值分析計算方法主要包括以下步驟:第一步,建立物理系統(tǒng)的控制方程。第二步,離散化物理系統(tǒng)的定義域。在工程技術(shù)領(lǐng)域人們通常將離散化的幾何定義域的一個子域單元稱為網(wǎng)格(mesh),將將離散化過程稱為網(wǎng)格劃分或者網(wǎng)格生成(mesh generation)。第三步,離散化連續(xù)PDE模型(Partial Differential Equation, PDE偏微分方程)。第四步,求解線性代數(shù)方程組。第五步,計算可視化。
網(wǎng)格劃分技術(shù)是偏微分方程數(shù)值解法中比較關(guān)鍵的一步,關(guān)于網(wǎng)格劃分的庫也有很多,如Triangle,netgen, gmsh, tegen等等。網(wǎng)格劃分技術(shù)不僅用于有限元計算,也可以用于模型的可視化。本文主要介紹這個輕量化的網(wǎng)格劃分庫EasyMesh。
2.EasyMesh Features
EasyMesh能夠?qū)τ谟烧劬€圍成的多空洞、多介質(zhì)區(qū)域生成指定局部加密的Delaunay三角剖分。使用了很簡單的文本文件作為數(shù)據(jù)的輸入,生成了不同的結(jié)果文件,方便查看結(jié)果。其實將輸入和輸出部分稍加修改,就可以將EasyMesh內(nèi)嵌到自己的程序中,而不用單獨執(zhí)行EasyMesh。
Figure 1. EasyMesh website (http://web.mit.edu/easymesh_v1.4/www/easymesh.html)
EasyMesh也可以從上述網(wǎng)站中進行下載,下載后可以直接在Visual Studio中編譯。
3.Using EasyMesh
用C寫的EasyMesh雖然有點歷史了,但是編譯起來也是很順利的,只有幾個warnings。編譯好生成一個EasyMesh.exe,然后像其他的控制臺程序一樣,通過傳參數(shù)來使用。直接運行就會看到程序的完整使用說明:
Figure 2. EasyMesh Help Info
可以在EasyMesh.exe的文件夾中做一個批處理文件,如EasyMesh.bat,其中內(nèi)容如下:
title EasyMesh
EasyMesh
pause
這樣就可以看到這個幫助信息了。使用如下命令則會生成一個例子文件:
title EasyMesh
EasyMesh +example
pause
然后再對生成的example.d進行剖分:
title EasyMesh
EasyMesh example.d +dxf
pause
將上面的三句話分別保存成一個批處理文件,運行批處理就可以得到相應(yīng)的結(jié)果了。運行上面這個批處理得到對example.d的剖分結(jié)果文件example.dxf,用AutoCAD打開這個DXF文件查看結(jié)果:
Figure 3. Mesh Result
Figure 4. Delaunay Triangulation
Figure 5. Voronoi Result
輸入文件中比較重要的一點是邊界線的方向是逆時針的,孔的線是順時針方向的。下面將自帶的幾全例子文件全部生成網(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
通過設(shè)備下圖中的spacing可以設(shè)置網(wǎng)格的密度:
Figure 12. Spacing of a point
4.Conclusion
網(wǎng)格劃分技術(shù)廣泛用于三維模型可視化,有限元計算中。借助這些開源庫的力量,可以讓自己快速實現(xiàn)一些功能。本文主要介紹了EasyMesh的用法及生成結(jié)果,如果對網(wǎng)格劃分技術(shù)感興趣的同學(xué)可以自己下載源碼學(xué)習(xí)。
因為EasyMesh源碼精巧,且包含了輸入和輸出部分的源碼,可以將EasyMesh輸入輸出部分稍加修改就可以直接在自己的程序中使用,而不用單獨編譯成一個可執(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é)計算的網(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