netgen有限元網格生成和求解開源庫編譯

一、引言 Introduction

NETGEN是一個二維/三維自動網格剖分工具,並且遵循LGPL開源協議。即可以作爲一個帶有用戶界面的單獨程序使用,也可以作爲C++的庫文件被其它程序鏈接。Netgen可以跨平臺,支持Unix/Linux和Windows。

Netgen最早爲奧地利科學家Joachim Schoberl編寫的網格剖分程序,是網格劃分技術中極爲先進與完善的,在3D網格劃分領域更是具有極大的優勢。可以從sourceforge上獲取最新版本的Netgen5.1,網址是:http://sourceforge.net/projects/netgen-mesher/files/netgen-mesher/,如下圖所示:


下載5.1版本,然後進行編譯,生成開發需要的庫文件。

二、Netgen的安裝 Installing Netgen

根據機器的配置選擇32位或64位的安裝程序,和普通軟件的安裝一樣,下一步直到完成,安裝好之後就可以使用了。

wps_clip_image-10040

安裝完成後,在程序的開始菜單中會生成鏈接,如下圖所示:

wps_clip_image-12057

選擇Netgen 5.1即可啓動程序,測試一下效果,如下圖所示:

wps_clip_image-16360


安裝完全後,會在環境變量中生成NETGENDIR變量,這個會影響後面編程過程中的post_build的影響,因此建議在編譯之後再安裝,或者卸載以前安裝的文件後編譯。


三、Netgen的編譯 Compiling Netgen

如果需要在程序中使用Netgen,就需要編譯Netgen來生成程序開發使用Netgen的庫nglib。編譯Netgen需要第三方庫的支持,必須的第三方庫有:

l pthread-w32

l TclTkTixTogl

l zlib

其中pthread-w32和TclTkTixTogl的庫都可以從Netgen的SourceForge上的AdditionalFiles中下載得到。

如果需要對IGES或STEP文件的讀寫,還需要安裝OpenCascade,但是在實際安裝過程中法向,編譯occ版本時,會出現ng_occ_init鏈接錯誤,

具體問題還需要進一步解決,這裏主要講解不編譯opencascade的依賴的版本。

wps_clip_image-19601

第三方庫文件中沒有zlib庫,網上下載zlib,運用cmake編譯運行後會生成zlib需要的include,lib文件等。最終將所有三方庫文件組織如下:

wps_clip_image-5

編譯過程中還需要自己設置zlib的頭文件,lib文件以及連接的庫文件,這個自己可以方便的添加。

配置好第三方庫,直接選擇windows文件夾中的Visual Studio解決方案進行編譯基本上沒什麼問題了。

編譯之前,爲了使最後生成完整的程序,還需要修改下後處理的批處理文件:postBuild_netgen.bat,將其中的路徑與機器上的netgen路徑對應:

wps_clip_image-21838

這樣在編譯鏈接完成後,會自動將所需要的文件複製到一個文件夾,還是很方便的。如圖所示,生成了netgen-instNoOCC_Win32和nglib-instNoOcc-Win32:

wps_clip_image-21172

庫nglib的編譯和Netgen的方法一樣,也需要修改下後處理的批處理文件postBuild_nglib.bat,會自動把程序開發所需要的庫和頭文件複製到一個文件夾下面,方便程序使用。

使用編譯好的Netgen生成的網格如下圖所示:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章