有限元网格|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/,如下图所示:
有限元网格|netgen有限元网格生成和求解开源库编译
文章图片


下载5.1版本,然后进行编译,生成开发需要的库文件。
二、Netgen的安装 Installing Netgen
根据机器的配置选择32位或64位的安装程序,和普通软件的安装一样,下一步直到完成,安装好之后就可以使用了。
有限元网格|netgen有限元网格生成和求解开源库编译
文章图片

安装完成后,在程序的开始菜单中会生成链接,如下图所示:
【有限元网格|netgen有限元网格生成和求解开源库编译】 有限元网格|netgen有限元网格生成和求解开源库编译
文章图片

选择Netgen 5.1即可启动程序,测试一下效果,如下图所示:
有限元网格|netgen有限元网格生成和求解开源库编译
文章图片



安装完全后,会在环境变量中生成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的依赖的版本。
有限元网格|netgen有限元网格生成和求解开源库编译
文章图片

第三方库文件中没有zlib库,网上下载zlib,运用cmake编译运行后会生成zlib需要的include,lib文件等。最终将所有三方库文件组织如下:
有限元网格|netgen有限元网格生成和求解开源库编译
文章图片

编译过程中还需要自己设置zlib的头文件,lib文件以及连接的库文件,这个自己可以方便的添加。
配置好第三方库,直接选择windows文件夹中的Visual Studio解决方案进行编译基本上没什么问题了。
编译之前,为了使最后生成完整的程序,还需要修改下后处理的批处理文件:postBuild_netgen.bat,将其中的路径与机器上的netgen路径对应:
有限元网格|netgen有限元网格生成和求解开源库编译
文章图片

这样在编译链接完成后,会自动将所需要的文件复制到一个文件夹,还是很方便的。如图所示,生成了netgen-instNoOCC_Win32和nglib-instNoOcc-Win32:
有限元网格|netgen有限元网格生成和求解开源库编译
文章图片

库nglib的编译和Netgen的方法一样,也需要修改下后处理的批处理文件postBuild_nglib.bat,会自动把程序开发所需要的库和头文件复制到一个文件夹下面,方便程序使用。
使用编译好的Netgen生成的网格如下图所示:
有限元网格|netgen有限元网格生成和求解开源库编译
文章图片




    推荐阅读