1.网格介绍
网格(Mesh)在数值计算中有着举足轻重的作用。主流的数值仿真方法诸如有限元,有限体积,有限元,边界元都是以网格为计算对象。而差分法等,时域有限差分等也是以网格(Grid)点为计算对象。
什么是好网格?
网格的好坏直接决定了仿真计算能否成功,以及正确性,精度,性能。
简单的说就是尽可能用最少的网格,最真实的反应物理量的变化规律。
常见的网格种类:
1. 三角形(Triangle)
以上图形从左往右分别为
左> 0阶一次单元,3个顶点,3条边
中> 1阶二次单元,6个顶点,3条边
右> 拉格朗日1阶二次单元,6个顶点,6条边
以下单元类型可以类推
2. 四边形(Quadrilateral)
3. 四面体(Tetrahedron)
4. 六面体(Hexahedron)
5. 金字塔单元(Pyramid)
6. 楔形单元(Wdge)
网格的分类:
网格对应的英文有两个Mesh和Grid,Grid 的基本意思为格子,即四四方方非常规整的网格。
对于Mesh,我们通常分为结构化网格和非结构化网格。理解很简单,除了四边形和六面体是结构化网格,其它都是非结构化网格。
对于Grid,通常情况下我们用作有限差分方法的网格。
高阶单元:
除了上述我们提到的0阶1次单元以及1阶2次单元,在数值计算上还有更高阶的单元。高阶单元在数值计算上具有更高的精度,当然也会带来更大的计算量。在所有物理场的数值计算中,通常情况下1阶2次单元具有较好的性价比,即在精度和计算时间上有比较好的平衡。
以电磁矢量棱边3维四面体单元为例,其基函数自由度DOF与阶次的关系为:
DOF = (n+1)(n+3)(n+4)/2; n为阶的数值
n=0时,DOF=6
n=1时,DOF=20
n=2时,DOF=45
n=5时,DOF=216
以电磁矢量棱边3维六面体单元为例,其基函数自由度DOF与阶次的关系为:
DOF = 3(n+1)(n+2)(n+2)
n=0时,DOF=12
n=1时,DOF=54
n=2时,DOF=144
n=5时,DOF=882
也就是说对于5阶的六面体单元,其一个单元的刚度矩阵可达882*882,对于开发验证,复杂度远远高于常用的0阶和1阶单元。
几何和网格
在网格之前,我们通常拿到的都是几何数据,比如BREP结构,STL面片结构,或者参数化的几何结构。
几何离散成的三角形称之为“面片”,非网格,大部分显示引擎底层都使用三角形来渲染对象,因此2维、3维几何都需要三角化(称之为“面片化”),比如一个长方体共有6个面,每个面需要离散成两个三角形,总共12个三角形。这12个三角形我们称之为12个“面片”,而非网格!一般情况下“面片”质量很差。“面片”有两个功能:一是用来做显示渲染数据;二是可以作为网格划分的输入数据,用来生成面网格。
对于隐式曲线曲面,需要设置合适的离散参数,从网格端进行解析。
有限元方法中的单元和网格
网格是几何上的概念,单元则是数值方法中的概念。
弹簧只能在一个方向上发生变形,是典型的1维单元;同理壳单元(shell)需要XY两个方向来定义,是2维单元;四面体,六面体是3维单元,也称为实体单元;对象可以看做质点的为0维单元,比如称之为“定楼神球"的调谐质量阻尼器。
网格生成算法
网格生成算法无论是在理论还是实际应用中都比较成熟,后续将会详细介绍。在这个领域很难有颠覆式的发展,未来网格底层生成算法可以和实际工业应用更加紧密结合,优化网格生成效率。
2.结构化网格生成算法
结构化网格主要指四边形和六面体
常用四边形网格
常用六面体网格
在实际应用中,一方面结构化网格在形函数基函数计算,等参变换,处理模型,模型编辑上有优势,比如网格分割,组合,沿固定方向加密,还可以方便拆成非结构化网格;另一方面,对于不太规则额的几何体,自动生成结构化网格比较困难,需要大量的人工干预。所以在通用有限元分析中一般优先推荐结构化网格,另外CFD分析中,六面体网格天然适用流体的有限体积计算方法,也是首选。
1. 最简单的结构化网格方法是扫掠。对于三维,选中一个面,划分四边形,然后沿另一维度扫掠生成六面体。这种方法需要用户手工参与,且对几何有一定要求,扫掠生成的网格质量一般都比较好。除了单向扫掠,实际算法中会有多轴扫掠。扫掠的改进方法即类似于在扫掠方法渐进的波前法,又叫plastering方法。
2. 结构化网格生成算法中,有一种间接生成方法,即首先创建非结构化网格,再合并。比如二维网格中先产生三角形,然后三角形两两组成一个四面体。六面体则是先生成四面体,然后组装六面体。这种方法又叫Morph算法。
3. 由于结构化网格有比较好的边界特性,所以多块(MultiBlock)划分也是常用的方法。即首先将几何区域分成子区域,在子区域里分别划分网格,再进行合并。比如生成六面体,一般会将空间进行八叉树划分,在每个八叉树子节点内进行划分,但这种方法需要处理边界,优化边界网格的质量。
4. Whisker Weaving是一种基于拓扑连接的自动六面体生成算法。首先在边界上生成四边形,然后以四边形为输入采用波前法推进在三维模型内部建立六面体的对偶表达,根据对偶表达生成六面体。
全自动的六面体网格生成仍然是网格生成的难点。
考虑到结构化网格生成的工程复杂性,本文仅对生成算法做基本介绍。通用前处理软件以及各种仿真软件中都会提供结构化网格功能,但全自动的网格质量一般都不会太好,需要一定的手工操作。
网格优化
网格生成之后,最后需要优化网格质量,常见的几种质量优化方法:
1. 移动顶点位置
移动顶点位置,让和顶点关联的单元质量都能改进
2. 移除顶点(通常说的edge collapse)
3. 交换边
详细见:百度安全验证https://baijiahao.baidu.com/s?id=1710022502869262253&wfr=spider&for=pc