Netgen 为奥地利科学家Joachim Schoeberl负责编写的格网(曲面和实体)剖分程序。是格网划分技术中极为先进与完善的,在3D格网划分领域更是具有极大的优势。
相关下载列表页包括:
http://sourceforge.net/projects/netgen-mesher/files/netgen-mesher/5.0/
Netgen-5.0.0_x64.exe 64位安装程序
Netgen-5.0.0_Win32.exe 32位安装程序
netgen-5.0.0.zip netgen源码
netgen-5.0.0.tar.gz
Netgen-5.0-dev_x64.exe
Netgen-5.0-dev_Win32.exe
安装Netgen-5.0.0_Win32.exe和普通软件安装一下,双击Netgen-5.0.0_Win32.exe,点点点就安装上了。
源码使用的第三方库
1) POSIX Thread Library多线程库。
编译netgen必须有,编译nglib必须有
2) Tcl库、Tk库、Tix库、Togl库 生成NETGEN的图形用户界面不可缺少的库。
编译netgen必须有
3) OpenCascade Library OpenCascade Library。OpenCascade 是一个非常有名的开源几何图形软件,在这里用来为NETGEN提供STEP、IGES、BREP三种格式的输入功能。
编译netgen时可以不使用该库
MSVC2010_libs
pthreads-w32_x64.zip
TclTkTixTogl_x64.zip 包括Tcl库、Tk库、Tix库、Togl库与界面相关的库。
pthreads-w32_Win32.zip
TclTkTixTogl_Win32.zip
MSVC2008_libs
pthread-w64.zip
TclTkTixTogl-w64.zip
pthread-w32.zip
TclTkTixTogl-w32.zip
OpenCascade Library OpenCascade Library
Open CASCADE Technology, 3D modeling & numerical simulation注意:请下载6.2或6.3版本,因为NETGEN已经为这两个版本做过测试,用别的可能会出错。
官方目前提供为VS2008编译的工程,所以先来说明一下VS2008下编译过程。
4.3.1 Netgen-5.0编译
解压源码netgen-5.0.0.zip和第三方库文件pthread-w32.zip、TclTkTixTogl-w32.zip,不使用Open CASCADE Library。
解压文件按照下图组织文件夹结构(也可以修改包含文件和库文件路径,为了方便最好这样):
使用Microsoft Visual Studio 2008 打开windows文件夹下netgen-5.0.sln编译。选择Debug或者Release版本编译,如果安装的Open CASCADE Library库可以选择Debug(OCC)或者Release(OCC)编译,(这里没有测试OCC版)。
编译失败!为什么,下面找一些原因。
但在windows/debug文件夹下成功生成了netgen-5.0.exe,为什么还会提示失败那,这是由于解决方案属性里面的[生成事件]选项卡中[生成后事件]中设置了命令行:
$(ProjectDir)\postBuild_netgen.bat $(ProjectName) $(TargetFileName) $(ConfigurationName) $(PlatformName) $(ProjectDir) nginterface
解决方法
方案一:在[生成后事件]下[从项目中排除]选择是[是]。编译成功后手动将所需文件到指定文件夹中,dll文件与netgen-5.0.exe放在同一个文件夹下,tcl/lib文件拷贝到netgen-5.0.exe上级目录下lib文件夹下。
方案二:建议使用这种方案,修改windows文件夹下的postBuild_netgen.bat文件,使用记事本打开:
删除下面代码:
if defined NETGENDIR (
echo Environment variable NETGENDIR found: %NETGENDIR%
set INSTALL_FOLDER=%NETGENDIR%\..
) else (
echo Environment variable NETGENDIR not found.... using default location!!!
if /i "%W_WO_OCC%" == "OCC" (
set INSTALL_FOLDER=%PROJ_DIR%..\..\%PROJ_NAME%-instOCC_%BUILD_ARCH%
) else (
set INSTALL_FOLDER=%PROJ_DIR%..\..\%PROJ_NAME%-instNoOCC_%BUILD_ARCH%
)
)
替换为
set INSTALL_FOLDER=G:\netgen5.0
在文件末尾添加
REM *** Copy the 3rd Library files into the Install Folder ***
set TCL_LIB_DIR=%INSTALL_FOLDER%\ext_libs\tcl\lib
set TCL_BIN_DIR=%PROJ_DIR%..\..\ext_libs\tcl\bin
set PTHREAD_LIB_DIR=%PROJ_DIR%..\..\ext_libs\pthread-w32\lib
echo Installing 3rd Library files into %INSTALL_FOLDER%\bin ....
xcopy "%TCL_BIN_DIR%\*.dll" "%INSTALL_FOLDER%\bin\" /i /d /y
xcopy "%PTHREAD_LIB_DIR%\*.dll" "%INSTALL_FOLDER%\bin\" /i /d /y
xcopy "%TCL_LIB_DIR%" "%INSTALL_FOLDER%\lib\" /e /i /d /y
if errorlevel 1 goto ThreerdLibraryFailed
echo Installing 3rd Library Files: Completed OK!!
:ThreerdLibraryFailed
echo POSTBUILD Script for %TCL_LIB_DIR% FAILED.....
编译生成成功。
运行G:netgen5.0\bin\netgen-5.0.exe见下图
红色标记的地方和安装程序相比,缺少了一些按钮和菜单,查看cmd窗口发现提示这样几句话:
cannot load ngsolve
error: couldn't load library "libngsolve.dll": this library or a dependent library could not be found in library path
loading demo-application
cannot load demoapp
error: couldn't load library "libdemoapp.dll": this library or a dependent library could not be found in library path
奥,原来是没有libngsolve.dll和libdemoapp.dll动态库的原因,没关系这个问题以后在讨论。下面来看一下nglib编译如何。
4.3.2 Nglib编译
使用Microsoft Visual Studio 2008 打开windows文件夹下nglib.sln编译。选择Debug或者Release版本编译,如果安装的Open CASCADE Library库可以选择Release(OCC)编译(这里没有测试OCC版)。
在编译之前修改windows文件夹下的postBuild_nglib.bat文件,使用记事本打开:
删除下面代码:
if defined NETGENDIR (
echo Environment variable NETGENDIR found: %NETGENDIR%
set INSTALL_FOLDER=%NETGENDIR%\..
) else (
echo Environment variable NETGENDIR not found.... using default location!!!
if /i "%W_WO_OCC%" == "OCC" (
set INSTALL_FOLDER=%PROJ_DIR%..\..\%PROJ_NAME%-instOCC_%BUILD_ARCH%
) else (
set INSTALL_FOLDER=%PROJ_DIR%..\..\%PROJ_NAME%-instNoOCC_%BUILD_ARCH%
)
)
替换为
set INSTALL_FOLDER=G:\netgen5.0
编译!
4.4.1 netgen-5.0编译
由于源码中是VS2008编译的解决方案和工程文件,所以使用记事本修改netgen-5.0.sln和netgen-5.0.vcproj文件,netgen-5.0.sln文件中第二行:
Microsoft visual studio Solution File, Format Version 10.0 修改为 Microsoft visual studio Solution File, Format Version 9.0
netgen-5.0.sln文件中第三行:(这是一个注释行可以不修改,还是修改了好) # Visual studio 2008 修改为 #Visual studio 2005。
修改netgen-5.0.vcproj文件中第四行:Version=”9,00” 修改为Version=”8,00”
使用VS2005打开编译netgen-5.0.sln,编译过程同VS2008。
4.4.2 nglib编译
同样使用记事本修改nglib.sln和nglib.vcproj文件,修改内容同上。
使用VS2005打开编译nglib.sln,编译过程同VS2008。
解压源码netgen-5.0.0.zip和第三方库文件pthreads-w32_Win32.zip,TclTkTixTogl_Win32.zip(注意:这俩个必须是vs2010的库文件),不使用Open CASCADE Library。
解压文件按照下图组织文件夹结构(也可以修改包含文件和库文件路径,为了方便最好这样):
注意:pthreads-w32_Win32.zip解压出来的文件夹名称和内部文件夹结构不一样。
4.5.1 netgen-50编译
使用vs2010打开netgen-5.0.sln文件,修改工程属性中[连接器]项下[输入]项下的[添加依赖项]修改 pthreadVC2.lib 为 pthreadVC2_Win32.lib;修改Togl17.lib 为 Togl-1.7.lib。
开始编译,可能会遇到和2008一样的错误,按上述方法解决就可以啦。
4.5.2 nglib编译
编译nglib时也要修改依赖项 pthreadVC2.lib 为 pthreadVC2_Win32.lib。
NETGEN用户手册
http://netgen-mesher.sourceforge.net/docs/ng4.pdf
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