EasyMesh - A Two-Dimensional Quality Mesh Generator

EasyMesh - A Two-Dimensional Quality Mesh Generator

eryar@163.com

Abstract. EasyMesh is developed by Bojan Niceno, it is a two-dimensional quality mesh generator. EasyMesh can generate two dimensional, unstructured, Delaunay and constrained Delaunay triangulations in general domains. It can handle holes in the domain. The paper focus on the usage of EasyMesh.

Key Words. EasyMesh, Delaunay Triangualtion, Triangulation, Mesh

1.Introduction

目前,工程技术领域中各类物理系统的数值分析计算方法主要包括以下步骤:第一步,建立物理系统的控制方程。第二步,离散化物理系统的定义域。在工程技术领域人们通常将离散化的几何定义域的一个子域单元称为网格(mesh),将将离散化过程称为网格划分或者网格生成(mesh generation)。第三步,离散化连续PDE模型(Partial Differential Equation, PDE偏微分方程)。第四步,求解线性代数方程组。第五步,计算可视化。

网格划分技术是偏微分方程数值解法中比较关键的一步,关于网格划分的库也有很多,如Triangle,netgen, gmsh, tegen等等。网格划分技术不仅用于有限元计算,也可以用于模型的可视化。本文主要介绍这个轻量化的网格划分库EasyMesh。

2.EasyMesh Features

EasyMesh能够对于由折线围成的多空洞、多介质区域生成指定局部加密的Delaunay三角剖分。使用了很简单的文本文件作为数据的输入,生成了不同的结果文件,方便查看结果。其实将输入和输出部分稍加修改,就可以将EasyMesh内嵌到自己的程序中,而不用单独执行EasyMesh。

Figure 1. EasyMesh website (http://web.mit.edu/easymesh_v1.4/www/easymesh.html)

EasyMesh也可以从上述网站中进行下载,下载后可以直接在Visual Studio中编译。

3.Using EasyMesh

用C写的EasyMesh虽然有点历史了,但是编译起来也是很顺利的,只有几个warnings。编译好生成一个EasyMesh.exe,然后像其他的控制台程序一样,通过传参数来使用。直接运行就会看到程序的完整使用说明:

Figure 2. EasyMesh Help Info

可以在EasyMesh.exe的文件夹中做一个批处理文件,如EasyMesh.bat,其中内容如下:

title EasyMesh
EasyMesh
pause

这样就可以看到这个帮助信息了。使用如下命令则会生成一个例子文件:

title EasyMesh
EasyMesh +example
pause

然后再对生成的example.d进行剖分:

title EasyMesh
EasyMesh example.d +dxf
pause

将上面的三句话分别保存成一个批处理文件,运行批处理就可以得到相应的结果了。运行上面这个批处理得到对example.d的剖分结果文件example.dxf,用AutoCAD打开这个DXF文件查看结果:

Figure 3. Mesh Result

Figure 4. Delaunay Triangulation

Figure 5. Voronoi Result

输入文件中比较重要的一点是边界线的方向是逆时针的,孔的线是顺时针方向的。下面将自带的几全例子文件全部生成网格:

Figure 6. EasyMesh example2.d +dxf

Figure 7. EasyMesh example3.d +dxf

Figure 8. EasyMesh example4.d +dxf

Figure 9. EasyMesh example5.d +dxf

Figure 10. EasyMesh example6.d +dxf

Figure 11. EasyMesh example7.d +dxf

通过设备下图中的spacing可以设置网格的密度:

Figure 12. Spacing of a point

4.Conclusion

网格划分技术广泛用于三维模型可视化,有限元计算中。借助这些开源库的力量,可以让自己快速实现一些功能。本文主要介绍了EasyMesh的用法及生成结果,如果对网格划分技术感兴趣的同学可以自己下载源码学习。

因为EasyMesh源码精巧,且包含了输入和输出部分的源码,可以将EasyMesh输入输出部分稍加修改就可以直接在自己的程序中使用,而不用单独编译成一个可执行程序。

5.References

1. EasyMesh website. http://web.mit.edu/easymesh_v1.4/www/easymesh.html

2. EasyMesh Source: http://www-dinma.univ.trieste.it/nirftc/research/easymesh/

3. 王成恩. 面向科学计算的网格划分与可视化技术. 科学出版社. 2011

4. Triangle. http://www.cs.cmu.edu/~quake/triangle.html

5. Triangle eryar. http://www.cppblog.com/eryar/archive/2014/03/29/206394.aspx

 

PDF Version: EasyMesh

时间: 2024-10-29 14:14:14

EasyMesh - A Two-Dimensional Quality Mesh Generator的相关文章

Triangle - Delaunay Triangulator

Triangle - Delaunay Triangulator eryar@163.com Abstract. Triangle is a 2D quality mesh generator and Delaunay triangulator. Triangle was created as part of the Quake project in the school of Computer Science at Carnegie Mellon University by Jonathan

Hello Netgen

Hello Netgen eryar@163.com 摘要Abstract:本文主要介绍如何对下载的Netgen源码进行编译生成Netgen程序和程序开发所需要的库nglib. 关键字Key Words:Netgen, nglib, Mesh Generator, OpenCascade, Triangulation 一.引言 Introduction NETGEN是一个二维/三维自动网格剖分工具,并且遵循LGPL开源协议.即可以作为一个带有用户界面的单独程序使用,也可以作为C++的库文件被其它

Hibernate主键生成方式 Key Generator

Hibernate主键生成方式 Key Generator 主键产生器 可选项说明: 1) assigned 主键由外部程序负责生成,无需Hibernate参与. 2) hilo 通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态. 3) seqhilo 与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle. 4) increment 主键按数值顺序递增.此方式的实现机制

CssGaga教程:AutoSprite(CSS Sprite Generator)

文章简介:CssGaga – AutoSprite(CSS Sprite Generator). 市面上有一些sprite生成器,要么是要人工调整图片位置,要么要拷贝粘贴代码,用起来总是觉得不够爽,CssGaga使用了不同的思路,希望能解放你的双手:) 使用时选中AutoSprite即可开启此功能,下面通过一个例子来说明: 比如HTML: <s class="i1"></s><s class="i2"></s><

在线调试css3.0的工具:css3 please和css3 generator

网页制作Webjx文章简介:两个在线调试css3.0的工具,css3 please和css3 generator. 两个在线调试css3.0的工具,css3 please和css3 generator.css3.0增加的新属性,如投影.渐变.旋转.圆角等等!这些新标准属性在ie6.ie7.ie8浏览器版本里得不到很好的支持,相信ie以后的新版本也会支持这些新属性的.目前ie6.ie7.ie8浏览器不支持这些属性并不能说明ie就实现不了css3.0新属性的效果!css3please.com网站为我

DX图形显示基本流程(基于MESH静态模型绘制----托管代码)

静态|图形|托管|显示 MESH的得到一般使用Mesh.FromFile方法.当然它有很多个重载. 一般使用 public static Mesh FromFile(string, MeshFlags, Device, out ExtendedMaterial); 方法.要注意的是,MESH的读取要在初始D3D设备以后来作.在MESH的初始方法中都需要D3D设备为参数,以后的MESH绘制也使用此设备. 对D3D设备的初始化中设置一般的显示属性,比如:深度测试,多重采样,灯光渲染开关,等等. Pr

C++:随机数生成器(random-number generator) 详解

随机数, C语言的函数是rand(), C++则是随机数生成器(random-number generator) = 分布对象(distribution object) + 引擎(engine); 使函数每次生成不同的随机数, 需要使用静态(static)局部变量, 这样分布对象和引擎就能保持(hold)状态(state), 每次都生成一个新的; 生成随机的整数, 使用分布对象uniform_int_distribution<>, 默认模板参数是int; 生成随机的浮点数, 使用分布对象uni

SPOJ Problem Set 2. Prime Generator 求某区间质数题解

题目大意: 给定两个数,要求产生这两个数之间的所有质数. 两个数位m和n,其范围如下: The input begins with the number t of test cases in a single line (t<=10). In each of the next t lines there are two numbers m and n (1 <= m <= n <= 1000000000, n-m<=100000) separated by a space.

Generator与异步编程概述

在<深入浅出Node.js>的第4章里,笔者深入地介绍了当前盛行在Node和前端JavaScript中的几种异步编程的解决方案,唯独对Generator的解决方案没有介绍.但随着Node版本的升级和ECMAScript harmony的特性不断得到支持,在0.11版本中,我们可以通过启用--harmory参数让V8支持Generator.最近Connect/Express背后的开发团队也将精力转移到新的库和框架上,这个核心库和框架就是co和koa,它们最主要的特点主要就是基于ECMAScrip