EasyMesh - A Two-Dimensional Quality Mesh Generator
EasyMesh - A Two-Dimensional Quality Mesh Generator
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,其中内容如下:
EasyMesh
pause
这样就可以看到这个帮助信息了。使用如下命令则会生成一个例子文件:
EasyMesh +example
pause
然后再对生成的example.d进行剖分:
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
EasyMesh - A Two-Dimensional Quality Mesh Generator的更多相关文章
- Triangle 1.6 (A Two-Dimensional Quality Mesh Generator and Delaunay Triangulator)
Triangle 一个二维高质量网格(mesh)生成器和Delaunay三角化工具. PSLG(Planar Straight Line Graph)约束Delaunay三角网(CDT)与Delaun ...
- Triangle - Delaunay Triangulator
Triangle - Delaunay Triangulator eryar@163.com Abstract. Triangle is a 2D quality mesh generator an ...
- Windows Python Extension Packages
备注: 1.先要安装wheel库:pip install wheel 2.下载wheel,切换至下载路径,然后安装:pip install wheel库名.whl Windows Python Ext ...
- Computer Graphics Research Software
Computer Graphics Research Software Helping you avoid re-inventing the wheel since 2009! Last update ...
- CG&CAD resource
Computational Geometry The Geometry Center (UIUC) Computational Geometry Pages (UIUC) Geometry in Ac ...
- Awesome C/C++
Awesome C/C++ A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. In ...
- software collection
software software Table of Contents 1. Privacy 2. GFW 2.1. google search 2.2. 修改 DNS 服务器 2.2.1. 修改ip ...
- [转]awsome c++
原文链接 Awesome C++ A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny th ...
- Hello Netgen
Hello Netgen eryar@163.com 摘要Abstract:本文主要介绍如何对下载的Netgen源码进行编译生成Netgen程序和程序开发所需要的库nglib. 关键字Key Word ...
随机推荐
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- 谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- GOF23设计模式归类
创建型模式:-单例模式.工厂模式.抽象工厂模式.建造者模式.原型模式结构型模式:-适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式行为型模式:-模板方法模式.命令模式.迭代器模式 ...
- Dropzone.js实现文件拖拽上传
dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 使用Dropzo ...
- 【JavaScript】javascript中伪协议(javascript:)使用探讨
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...
- A/B Testing的简要知识
A/B testing主要用来检测网站或者APP的两个版本中哪一个更好,它的中心思想是把流量一分为二,一份用作experiment group,访问新的版本,另一份用作control group,访问 ...
- Linux实战教学笔记08:Linux 文件的属性(上半部分)
第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...
- Linux C语言解析并显示.bmp格式图片
/************************* *bmp.h文件 *************************/ #ifndef __BMP_H__ #define __BMP_H__ # ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- XSS 前端防火墙 —— 天衣无缝的防护
上一篇讲解了钩子程序的攻防实战,并实现了一套对框架页的监控方案,将防护作用到所有子页面. 到目前为止,我们防护的深度已经差不多,但广度还有所欠缺. 例如,我们的属性钩子只考虑了 setAttribut ...