Hello Netgen
摘要Abstract:本文主要介紹如何對下載的Netgen源碼進行編譯生成Netgen程序和程序開發所需要的庫nglib。
關鍵字Key Words:Netgen, nglib, Mesh Generator, OpenCascade, Triangulation
一、引言 Introduction
NETGEN是一個二維/三維自動網格剖分工具,並且遵循LGPL開源協議。即可以作為一個帶有用戶界面的單獨程序使用,也可以作為C++的庫文件被其它程序鏈接。Netgen可以跨平台,支持Unix/Linux和Windows。
Netgen最早為奧地利科學家Joachim Schoberl編寫的網格剖分程序,是網格划分技術中極為先進與完善的,在3D網格划分領域更是具有極大的優勢。可以從sourceforge上獲取最新版本的Netgen5.1,網址是:http://sourceforge.net/projects/netgen-mesher/,如下圖所示:
Figure 1.1 Netgen Mesh Generator on SourceForge.net
本文主要介紹如何對下載的Netgen源碼進行編譯生成Netgen程序和程序開發所需要的庫nglib。
二、Netgen的安裝 Installing Netgen
根據機器的配置選擇32位或64位的安裝程序,和普通軟件的安裝一樣,下一步直到完成,安裝好之后就可以使用了。
Figure 2.1 Netgen 5.1
安裝完成后,在程序的開始菜單中會生成鏈接,如下圖所示:
Figure 2.2 Netgen in Start menu
選擇Netgen 5.1即可啟動程序,測試一下效果,如下圖所示:
Figure 2.3 Mesh generated by Netgen
三、Netgen的編譯 Compiling Netgen
如果需要在程序中使用Netgen,就需要編譯Netgen來生成程序開發使用Netgen的庫nglib。編譯Netgen需要第三方庫的支持,必須的第三方庫有:
l pthread-w32
l TclTkTixTogl
l zlib
其中pthread-w32和TclTkTixTogl的庫都可以從Netgen的SourceForge上的AdditionalFiles中下載得到。若需要對IGES或STEP文件的讀寫,還需要安裝OpenCascade。
Figure 3.1 3rdparty library for Netgen
原來沒發現Netgen在這里把這些第三方庫都提供了,嘗試自己編譯Tcl、Tk和Togl,前兩個已經編譯成功了,編譯到Togl時也沒找到什么資料,就放棄了,浪費了時間。直接根據需要下載Visual Studio對應的第三方庫文件,再下載好zlib,很快就可以編譯成功了。最好按如下方式來組織這些第三方庫:
Figure 3.2 Default location of 3rdparty library for Netgen
配置好第三方庫,直接選擇windows文件夾中的Visual Studio解決方案進行編譯基本上沒什么問題了。最多再修改下頭文件的目錄或庫文件的目錄。為了使最后生成完整的程序,還需要修改下后處理的批處理文件:postBuild_netgen.bat,將其中的路徑與機器上的netgen路徑對應:
Figure 3.3 Modify the post build bat file to copy files
這樣在編譯鏈接完成后,會自動將所需要的文件復制到一個文件夾,還是很方便的。如圖所示,生成了netgen-instNoOCC_Win32和nglib-instNoOcc-Win32:
Figure 3.4 Build Netgen and nglib without OpenCascade
庫nglib的編譯和Netgen的方法一樣,也需要修改下后處理的批處理文件postBuild_nglib.bat,會自動把程序開發所需要的庫和頭文件復制到一個文件夾下面,方便程序使用。
使用編譯好的Netgen生成的網格如下圖所示:
Figure 3.5 Shaft mesh generated by Netgen
Figure 3.6 Box and sphere mesh generated by Netgen
四、結論 Conclusion
通過編譯Netgen並結合OpenCascade來學習網格剖分在幾何造型中可視化的應用。
五、參考資料 References
1. Netgen User Manual,
2. Netgen 算法說明
NETGEN An advancing front 2D/3D-mesh generator based on abstract rules
http://www.asc.tuwien.ac.at/~schoeberl/wiki/publications/netgen_org.pdf
3. zhouschina的博客http://blog.csdn.net/zhouschina/article/details/9050373
PDF Version: Hello Netgen