Gmsh的概述和最新发展

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文件中的基于列表的数据)。

        数据通过任意多项式插值方案进行插值;对于高阶视图的自适应可视化,使用自动网格细化。

        存在各种插件用于创建和修改视图。

        切割、等值曲线和矢量

        高程图

        流线型

        自适应高阶可视化

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值