Bootstrap

Gmesh的网格剖分模块

第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 结构化网格

----未完待续

;