四面体剖分的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四面体剖分的实现
1 研究现状
网格剖分算法经历了从平面到曲面,再到三维实体剖分的发展过程,国内外学者为推动网格剖分的发展做出了很多贡献。作为当前网格生成领域研究热点的四面体剖分,出现了很多方法,其中比较成熟和普遍使用的算法有:Delaunay 法和前沿推进法,以及映射法、栅格法、模板法和多区域法等。
Delaunay法在三维空间存在边界一致性和薄元处理等问题,由于这些问题的存在,使Delaunay法适用范围有限,稳定性不好。针对存在的这些问题,Y Bai 等改良了约束Delaunay网格生成算法;陈学工等提出可消除退化现象引起的潜在错误的方法。前沿推进法是节点和单元同步生成。前沿推进法是一种全自动网格剖分算法,三维的前沿推进法是从待剖分域的表面三角形集合(称作初始前沿队列)开始,循环往复,当前沿队列为空时结束的一种网格划分方法。前沿推进法缺乏一般性的理论支撑,要进行大量的算术判断,占用了大量时间,因此对数据结构的要求很髙,对于三维空间前沿推进法还存在收敛性等问题。基于此很多人都对前沿推进法做了改进工作,吴宝海等提出一种两侧推进的波前法,Li等人采用由内而外的波前推进的方式生成了全六面体网格。
除过以上介绍的算法,四面体网格划分有针对不同问题的算法。如陈一民等提出对多面体进行划分的算法; B Jonathan等提出一种多材质的四面体网格生成算法;J Wang等提出了一种能得到高质量四面体网格的自适应算法;S Tian 等提出了一种在模型轮廓的基础上生成网格的算法;R Montenegro等提出自动生成自适应四面体网格的算法。
如何自动划分网格逐渐成为有限元法发展的瓶颈,许多科学家和工程师在全自动有限元网格划分算法的研巧和实现上努力。网格生成是实际问题求解的前提,对于超薄、相邻或包含关系的复杂模型,生成符合实际要求的有限元网格是一个耗时很大的任务。此时,网格的自动生成算法节省时间的同时提供了髙精度,保证了问题分析的准确性。自动网格剖分算法发展至今,很多商业软件如Fluent、Ansys、Hyper mash等都提供了相应的网格剖分模块,对于规则的几何形状,生
成的网格可很好的解决一般线性问题,但很难对复杂或非线性问题生成符合工程实际要求的高质量网格。虽然己有很多针对不同问题而且发展成熟的网格剖分理论算法,由于工程实践中模型的复杂性、差异性越来越大,使理论算法向工程实际的转化成为有限元法应用的难点问题。
随着四面体剖分应用领域的不断扩大、研究层次的不断深入,四面体剖分遇到了越来越大的挑战,有时为了得到更好的剖分结果,需要几种剖分方法的结合。J Kucwaj等讨论了结合前沿推进法的三维Delaunay网格生成法的效率问题;Fumiaki Nobuyama等在Dynamic Bubble System基础上使用通用图形处理器提出了一种并行自动网格生成算法;Yami Wang等提出了一种对于复杂模型的三维混合网格生成算法;Yan Li等和常丽娟等都分别提出前沿推进法和Delaunay法相互结合的网格划分算法。
四面体网格剖分还有很多开源的三维网格生成器,如Netgen、Tetgen和Gambit等。这些开源代码为研究者提供了强大理论和技术支持,由于可针对要分析的具体问题在这些开源代码上做任意改进,所以应用很广泛,研究人员提出了很多基于此的理论创新和实际应用。如孙黎明等在Netgen的基础上提出应用于层状地质体的四面体网格剖分算法;荆永滨等利用Tetgen实现了复杂FLAC 3D模型可视化的建模。其中Netgen是奥地利科学家Joachim Schoberl编写的以前沿推进法为基础的网格剖分程序,是网格剖分程序中极为先进和完善的开源代码,在三维网格剖分领域应用很广。
2 四面体网格生成算法概述
四面体划分算法有点集的、区域的和限定的网格剖分算法。点集的四面体划分是给定一个空间点的集合,要求生成网格单元的顶点都是给定点集中的点;区域的四面体剖分是给定区域的内外边界,将其剖分成许多四面体的集合,单元的顶点无限制,可根据需要在区域内任意加点;限定的四面体剖分是网格剖分要满足指定的一些点、线、面的限定条件,如图1所示生成限定四面体网格的截面图,A、B、C为约束点,约束线段MN、DE,一个长方形的约束平面和一个球形的约束曲面。
图1 限定的网格剖分
(1)Delaunay法
Delaunay法生成的网格的主要特征:最小角最大化和空圆(球)特性。常用的Delaunay法有逐点插入法、边/面交换算法、分治算法等。在这些算法中,逐点插入法是己经很成熟的方法,Bowyer-Watson法是使用最多的一种逐点插入法,大部分Delaunay算法都是基于Bowyer-Watson法和边/面交换法的。
Bowyer-Watson法是基于空圆(球)特性的逐点插入法,在三维空间的基本流程如图2所示,点P是插入的节点。国内外学者对Bowyer-Watson法做了很多研究,Borouchaki和George Zagaris等分别提出了两种三维快速Bowyer-Watson 算法。
图2 Bowyer-Watson算法流程
边/面交换算法比Bowyer-Watson算法实现简单,通过有限步的边/面交换操作总是可以使网格满足Delaunay准则。Guibasi等提出了一个二维空间的边/面交换算法;Joe将边/面交换算法推广到了三维。
(2)前沿推进法
前沿推进法生成的网格质量高,且能保证边界一致。前沿推进法的思想是先离散模型的边界区域,二维空间是线段的集合,三维空间是三角面片的集合。这些线段或三角面片作为前沿面集合进行推进,当填满整个区域时剖分结束。如图3所示的是二维前沿推进法的基本过程。
图3 前沿推进法示意图
前沿推进法的基本流程如下。
(a)确定前沿面集合。由实体模型的闭合曲面兰角形组成
(b)当前前沿。从前沿面集合中选取前沿作为当前前沿
(c)计算最优点位置。根据单元尺寸控制方法计算最优点的插入位置
(d)选择最佳节点。在候选队列中依次检查,从而可可以找到一个符合相关有效性检查的节点作为最佳节点,并与当前前沿生成四面体网格(e)更新前沿面集合。删除当前前沿,把新生成的前沿面放到前沿面集合(3)映射法
映射法有网格生成速度快、单元密度可控制、单元质量高等优点,对多连通域模型,将模型分解成若干个可直接使用映射法的区域,再使用映射法。映射法是通过合理的映射将物理空间区域映射到参数空间,再在参数空间进行网格剖分,最后逆向映射。
(4)多区域法
多区域法基于分治思想,它是把复杂的待剖分区域分解成多个子区域,然后对各个子区域利用成熟的网格剖分算法生成网格。