第6章 网格剖分模块
Gmsh的网格剖分模块集中了几种1维,2维,3维的网格剖分算法,他们都能产生适合于有限元的网格:
2维的非结构化算法产生三角单元或者三角单元与四方形(当使用拼接曲面时)。3维的非结构化算法产生四面体单元。
3维的结构化算法(超限或拉伸)默认产生三角单元,但是通过recombine命令,能得到四方形。3维结构化算法产生四面体,六面体,三菱柱、椎体,取决于曲面网格的类型。
通过使用Mesh.SubdivisionAlgorihm选项,所有的网格都可再细分为完全的四方形或六面体单元。但是,要注意到是,非结构化方法产生的初始网格,经过细化后,单元的质量可能非常差。
6.1 选择正确的非结构化算法
Gmsh有不同的2维的非结构化算法和不同3维的非结构化算法可供选择。每种算法有它的优点和缺点。对于所有的2维非结构化算法,会首先使用分治法产生初始的Delaunay网格,包含了所有的点。使用边交换的方法,调整不符合delaunay特性的边。之后,可使用3个不同的算法来产生最终的网格:
1、网格自适应算法,基于局部网格调整。这个技巧使用边交换、分割、叠合:长的边被分割,短的边被叠合,如果交换边后得到更好的网格就交换边。
2、Delaunay算法。依次对具有最大外接圆的单元,插入新的点在其外接圆心上。然后重新连接网格,使用各向异质的Delaunay准则。
3、波前法。
各个算法特性列表如下:
自动化程度 性能 单元质量
自适应 1 3 2
Delaunay 2 1 2
波前 3 2 1
对于非常复杂的曲面,自适应方法是最好的,当单元质量非常重要时,可试试波前法。对于非常大的平面上的网格生成,Delaunay算法是最快的。
对于3维的非结构化算法:
1、Delaunay算法分成2步,首先,使用H.Si的四面体算法,对模型中的所有体的合集,产生初始的网格,然后,使用2维Delaunay算法的三维版本。
2、波前法,使用J.Schoeberl的Netgen算法
Delaunay算法是最自动化和最快的,也是唯一的支持通过区域属性控制单元大小的算法。但是,这个算法有时候会修改表面网格,所以,对于结构和非结构杂交的网格,可能不合适。而在这种情况下,可试试波前法。2种算法产生的单元质量都是差不多的,单元质量非常重要时,可以使用网格优化器。
6.2 基本和物体的实体
6.3 网格命令
网格模块的命令大多数允许修改网格单元的尺寸,指定结构化网格的参数。实际的网格剖分“动作”(比如,剖分线,剖分面,剖分体)是不同在脚本文件中使用的。他们必须在GUI界面上或者命令行参数中使用。
6.3.1 指定单元尺寸
有3种方式:
1、如果mesh.CharacteristicLenghFromPoints是打开状态(这也是默认的),你可以简单的指定期望的网格单元尺寸,在模型的几何点上(通过点命令:)。
2、如果mesh.CharacteristicLengthFromCurvature是打开状态(非默认的),网格会适应几何体的曲率。注意,这个特性在gmsh2.5中还是试验性的。
3、可以指定一般的网格尺寸,通过fields。有各种各样的field:
6.3.2 结构化网格
----未完待续