文章目录

  1. gmsh简介
  2. 获取gmsh
  3. 使用图形界面生成网格
  4. 使用脚本生成网格
  5. 其他

gmsh简介

gmsh是一个 开源三维 有限元网格生成器,就目前所知,它是最优秀的开源网格生成软件。gmsh目前仍处于活跃的开发中,最新版本为2.8.5。

功能上,gmsh主要围绕四个模块进行开发:几何、网格、解法器和后处理。几何模块使用边界描述法(BRep)来定义几何信息,主要的几何实体包括点、线、面、体等三维空间中常见的元素。除了几何实体,gmsh还支持定义物理实体。物理实体在逻辑上将不同的几何实体分成一类,在设定网格边界条件的时候非常便利和有用。在几何模型的基础上,网格模块使用算法生成网格。gmsh内置的算法有波前法、Delaunay和自适应方法三种。在没有指定的情况下,gmsh会根据几何模型信息“自动”选择最合适的算法来生成网格。解法器和后处理模块目前无接触,其内容可参考官方文档和案例。

官方文档地址: gmsh文档

获取gmsh

用户可以从 gmsh官方站点 免费获取软件的可执行文件或者源代码。

可执行文件支持windows, linux和mac os三大平台。用户下载下来即可直接使用。

如果有特定需求,用户也可以从源代码编译软件。windows平台的官方可执行文件默认集成了CAD引擎,可以直接读取iges格式的文件。linux下的版本 似乎 没有集成CAD引擎。需要支持iges格式的gmsh只能采用自行编译的方式了。可以参考 这篇文章 先安装OpenCascade,然后再编译使用外部CAD内核的gmsh。

gmsh源码的编译选项可以参考 官方文档

使用图形界面生成网格

带有图形界面功能的gmsh,可以很方便的通过鼠标和键盘完成各种操作。对于新手,建议先使用GUI熟悉gmsh,理解了gmsh之后再学习使用脚本完成高级功能。

gmsh程序窗口分为三部分:顶部的菜单栏、左侧的功能栏和右侧的显示窗。菜单栏里主要是对程序选项进行设置,功能栏包含了几何定义、网格生成和解法器三个模块的功能。显示窗应该属于后处理模块,用于显示当前的元素或者对象。

一个三维网格的生成过程可以通过如下操作完成:

  1. 定义几何模型

    1. 找到功能栏的”Geometry“模块,点开”Elementary entities“选项;
    2. 通过”add“菜单里添加点、线等基本元素;
    3. 对基本元素进行一些变换操作,例如平移(translate)、旋转(rotate)等;
    4. 组合基本元素,得到高阶实体。例如将闭合曲线定义成平面;
    5. 对几何元素进行物理分类。在physical groups下面可以找到相应选项。
  2. 进行网格生成
    在mesh菜单下,可以找到1D、2D等网格生成选项,点击则对已经定义的几何模型进行网格划分。在三维模式下,1D剖分在边界上生成线段、2D生成表面网格,3D则生成体网格。

  3. 导出网格文件
    在菜单栏里,选择所需文件格式将网格导出到文件。

一些全局选项可以对上述过程产生影响,例如网格生成算法的选择。可以先设定选项,然后再进行上述操作。

另外一个值得注意的点是在定义几何模型中过程中,最好经常使用去重(coherence)这个功能。这个功能可以去掉重复的点,在闭合几何体上比较有用。

使用脚本生成网格

GUI功能相对较弱,一些复杂的需求可以通过gmsh的脚本来完成。gmsh的脚本是一种直观易懂的脚本文件,能够完成GUI操作的所有功能。用户在使用GUI操作时,每一次操作其实都是将相应的命令写入工程的文件中。gmsh另一个好处是脚本是可以互相引用,公用的模块可以抽出来供今后使用。

gmsh的四个模块和程序设置都有对应的脚本命令。一个常用的网格生成脚本可以包含两部分:程序选项设置和几何模型定义。其中程序设置可以通过配置好默认选项文件完成,不需要额外写脚本控制。所以用户最主要的工作在于定义几何模型。

定义几何模型的过程和GUI操作流程大致相同,只是换成了命令控制。可以查看 官方文档 获取脚本支持的几何定义命令。 如果有不知道的命令,也可以通过GUI操作然后在文件里查看。总体而言,脚本文件比较强大而且容易上手。

对于复杂的几何模型和高级用户,建议采用脚本的方式来生成网格。

其他

由于能力和经验限制,文章未能详尽和深入的对gmsh进行讲解。上述部分如有错误,欢迎指正和交流。