1、基本概念
Gmsh基于四个模块:几何(Geometry)、网格(Mesh)、求解器(Solver)和后处理(Post-processing)。
Gmsh可以在三个层面上使用:
通过图形用户界面(GUI)
通过专用的.geo语言
通过C++、C、Python、Julia和Fortran的应用程序接口(API)
主要特点:
所有算法都是基于抽象模型实体编写的,采用边界表示(Boundary REPresentation,BREP)方法。
Gmsh从不从一种计算机辅助设计(CAD)格式转换为另一种格式;它直接访问每个CAD内核的应用程序接口(如OpenCASCADE、内置接口等)。
目标是以透明的方式处理非常不同的底层数据表示
2、几何模块
在底层,定义了四种类型的模型实体:模型点G0,它们是维度为0的拓扑实体。 模型曲线G1,它们是维度为1的拓扑实体。模型表面G2,它们是维度为2的拓扑实体。模型体积G3,它们是维度为3的拓扑实体。
模型实体是拓扑实体,即它们只处理模型中的邻接关系;一个双向数据结构表示了邻接关系的图:G0_i ⇌ G1_i ⇌ G2_i ⇌ G3_i
任何模型都能够使用局部操作构建其任何维度的邻接列表。边界表示(BREP)被扩展以包含非流形特征:相邻实体和嵌入(内部)实体。模型实体可以是CAD实体(例如,来自内置或OpenCASCADE内核)或离散实体(由网格定义,例如STL)。
CAD模型实体的几何形状依赖于其底层表示的实体建模器内核。实体建模器通常提供形状的参数化,即一个映射:p ∈ Rd → x ∈ R3。
模型点G0_i的几何形状就是其在三维空间中的位置xi = (xi, yi, zi)。
模型曲线G1_i的几何形状是其底层曲线Ci,具有参数化p(t) ∈ Ci,t ∈ [t1, t2]。
模型表面G2_i的几何形状是其底层表面Si,具有参数化p(u, v) ∈ Si。
与模型体积相关联的几何形状是R3(三维空间)。
点p位于一条曲线C上,而这条曲线C本身又嵌入在一个表面S中
CAD模型实体上的操作是在它们各自的CAD内核中直接执行的:
没有通用的内部几何表示。
相反,Gmsh直接使用每个CAD内核自己的API,在原生几何表示上执行操作(平移、旋转、交集、并集、片段化等)。
离散模型实体是通过网格(例如STL)定义的:
它们可以通过重新参数化过程来配备几何形状。
然后,这种参数化被用于网格划分,其方式与CAD实体完全相同。
3、网格模块
Gmsh实现了几种具有特定特征的网格划分算法,具体包括:
一维、二维和三维网格划分
结构化、非结构化和混合网格
等向性和各向异性网格
直边和弯曲边网格
可以从标准的CAD数据或通过STL数据的重新参数化进行网格划分
内置与外部网格生成器(如BAMG、MMG3D、Netgen)的接口
典型的CAD内核特性:接缝边和退化边
网格数据由元素(点、线、三角形、四边形、四面体、六面体等)组成,这些元素由其节点的有序列表定义。
元素和节点存储在(分类在)它们所离散的模型实体中:
因此,模型点将包含一个类型为点的网格元素以及一个网格节点。
模型曲线将包含线元素以及其内部节点,而其边界节点将存储在边界模型点中。
模型表面将包含三角形和/或四边形元素,以及所有未分类在其边界或其嵌入实体(曲线和点)上的节点。
模型体积将包含四面体、六面体等,以及所有未分类在其边界或其嵌入实体(表面、曲线和点)上的节点。
这种网格数据结构使得共形有限元网格的创建、修改和销毁变得简单且高效。
4、求解器
Gmsh实现了ONELAB(https://onelab.info)服务器引导外部求解器,称为“客户端”
示例客户端:GetDP有限元求解器(https://getdp.info)
ONELAB接口允许调用此类客户端,并让它们共享参数和建模信息
参数可以从GUI直接控制
该实现基于客户端-服务器模型,其中服务器端包含数据库,而本地或远程客户端则通过内存或TCP/IP套接字进行通信。
与大多数求解器接口不同,ONELAB服务器事先并不了解客户端的任何具体信息(如输入文件格式、语法等)。
这是通过在任何模拟之前进行一个分析阶段来实现的,在这个阶段,客户端需要将其参数集上传到服务器。
参数集的完整性和一致性问题完全由客户端处理:ONELAB的作用仅限于数据的集中、修改和重新分发。
5、后处理
后处理数据由视图组成:
视图同时存储显示选项和数据(除非该视图是另一个视图的别名)。
视图数据可以包含多个步骤(例如,用于存储时间序列),并且可以与一个或多个模型相关联(如存储在.msh或.med文件中的基于网格的数据),或者与任何模型无关(如存储在解析的.pos文件中的基于列表的数据)。
数据通过任意多项式插值方案进行插值;对于高阶视图的自适应可视化,使用自动网格细化。
存在各种插件用于创建和修改视图。
切割、等值曲线和矢量
高程图
流线型
自适应高阶可视化