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