文档章节

Hello Netgen

eryar
 eryar
发布于 2014/11/23 12:33
字数 936
阅读 32
收藏 0

Hello Netgen

eryar@163.com

摘要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/,如下图所示:

wps_clip_image-25141

Figure 1.1 Netgen Mesh Generator on SourceForge.net

本文主要介绍如何对下载的Netgen源码进行编译生成Netgen程序和程序开发所需要的库nglib。

二、Netgen的安装 Installing Netgen

根据机器的配置选择32位或64位的安装程序,和普通软件的安装一样,下一步直到完成,安装好之后就可以使用了。

wps_clip_image-10040

Figure 2.1 Netgen 5.1

安装完成后,在程序的开始菜单中会生成链接,如下图所示:

wps_clip_image-12057

Figure 2.2 Netgen in Start menu

选择Netgen 5.1即可启动程序,测试一下效果,如下图所示:

wps_clip_image-16360

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。

wps_clip_image-19601

Figure 3.1 3rdparty library for Netgen

原来没发现Netgen在这里把这些第三方库都提供了,尝试自己编译Tcl、Tk和Togl,前两个已经编译成功了,编译到Togl时也没找到什么资料,就放弃了,浪费了时间。直接根据需要下载Visual Studio对应的第三方库文件,再下载好zlib,很快就可以编译成功了。最好按如下方式来组织这些第三方库:

wps_clip_image-5

Figure 3.2 Default location of 3rdparty library for Netgen

配置好第三方库,直接选择windows文件夹中的Visual Studio解决方案进行编译基本上没什么问题了。最多再修改下头文件的目录或库文件的目录。为了使最后生成完整的程序,还需要修改下后处理的批处理文件:postBuild_netgen.bat,将其中的路径与机器上的netgen路径对应:

wps_clip_image-21838

Figure 3.3 Modify the post build bat file to copy files

这样在编译链接完成后,会自动将所需要的文件复制到一个文件夹,还是很方便的。如图所示,生成了netgen-instNoOCC_Win32和nglib-instNoOcc-Win32:

wps_clip_image-21172

Figure 3.4 Build Netgen and nglib without OpenCascade

库nglib的编译和Netgen的方法一样,也需要修改下后处理的批处理文件postBuild_nglib.bat,会自动把程序开发所需要的库和头文件复制到一个文件夹下面,方便程序使用。

使用编译好的Netgen生成的网格如下图所示:

wps_clip_image-15922

Figure 3.5 Shaft mesh generated by Netgen

wps_clip_image-32345

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

© 著作权归作者所有

共有 人打赏支持
eryar
粉丝 21
博文 127
码字总数 227012
作品 0
武汉
私信 提问
自己动手 从android硬件驱动到APP---(2)hal驱动层

1:aosp/hardware/libhardware/include/hardware/hello.h 2:aosp/hardware/libhardware/modules/hello/hello.c...

whoisliang
2018/03/26
0
0
利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务

1.首先建立一个Web services EndPoint: Java代码 2.使用 apt 编译 Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,会生成 jaws目录 3.使用java Hello.Hello运行,然后将浏览器...

神勇小白鼠
2011/03/14
0
0
Common Lisp String 常用函数用法

Strings (char string i) Function Returns the ith character of string. Zero-indexed. Ignores fill pointers. Settable. (char "Floob-Boober" 0) (char "Floob-Boober" 1) ------------......

沙枣
2013/08/26
0
0
nginx hello world

ngxhttphelloworldmodule.c #include <ngx_config.h> include <ngx_core.h> include <ngx_http.h> typedef struct { ngxstrt hello_string; ngxintt hello_counter; }ngxhttphellolocconf_t;......

悬崖
2016/05/17
36
0
iOS开发之UIlabel多行文字自动换行 (自动折行)

UIView footerView = [[UIView alloc]initWithFrame:CGRectMake(10, 100, 300, 180)]; UILabel label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 300, 150)]; label.text = @"Hel......

Daniel_s
2015/12/18
469
0

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq

灰暗
46分钟前
1
0
Flink

flink HA部署 flink搭建,采用分布式部署方式,分别为A,B,C三个节点。其中A为master;A,B,C为worker。 本文使用的用户是hadoop用户(自己新建) 先决条件 Java 1.8.x or higher scala 自己使用...

-九天-
今天
2
0
数据中台和传统数仓的区别

中台系统把业务层同性的算法能力,服务能力,业务能力高度集成,有效组织 ,动态规划。更好的帮助上层业务。 今天就让我们看看关于数据中台的问答吧。 1 Q : 什么是数据中台? A : 数据中台是...

hblt-j
今天
4
0
Java在什么时候会出现内存泄漏

在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对...

群星纪元
今天
2
0
android 打开摄像头

private SurfaceHolder mHolder; private SurfaceView mSurfaceView; private Camera mCamera; mSurfaceView = (SurfaceView) this.findViewById(R.id.camsurfaceView1); mHolder = mSurface......

jingshishengxu
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部