Gmsh应用程序编程接口

        Gmsh应用程序编程接口(API)允许将Gmsh库集成到使用C++、C、Python、Julia或Fortran编写的外部应用程序中。从设计上讲,Gmsh API是纯粹功能性的,并且仅使用目标语言的基本类型。

        API的结构反映了底层的Gmsh数据模型(也请参见源代码结构):

        有两个主要的数据容器:模型(包含几何和网格数据)和视图(包含后处理数据)。这些容器分别通过顶级命名空间gmsh/model和gmsh/view中的API函数进行操作。

        其他顶级命名空间包括gmsh/option(处理所有选项)、gmsh/plugin(处理对Gmsh核心功能的扩展)、gmsh/graphics(处理绘图)、gmsh/fltk(处理图形用户界面)、gmsh/parser(处理Gmsh解析器)、gmsh/onelab(处理ONELAB参数和与外部代码的通信)以及gmsh/logger(处理信息日志记录)。

        几何数据由模型实体组成,称为点(0维实体)、曲线(1维实体)、曲面(2维实体)或体积(3维实体)。模型实体通过边界表示法存储:体积由一组曲面界定,曲面由一系列曲线界定,曲线由两个端点界定。体积和曲面还可以存储较低维度的嵌入实体,以强制后续网格与内部特征(如曲面中间的点)一致。模型实体通过一对整数进行标识:它们的维度(0、1、2或3)和它们的标签(严格为正的唯一标识符)。当处理可能具有不同维度的多个几何实体时,API将它们打包为(维度,标签)整数对的向量。物理组是模型实体的集合,也通过它们的维度和标签进行标识。不直接引用模型的操作在当前模型上执行。

        模型实体可以是CAD实体(来自内置的geo内核或OpenCASCADE occ内核)或离散实体(由网格定义)。CAD实体的操作直接在其各自的CAD内核中执行(即使用gmsh/model/geo或gmsh/model/occ命名空间中的函数),因为Gmsh不跨CAD格式进行转换,而是直接访问原生表示。CAD实体必须与模型同步才能进行网格划分,或者更一般地说,以便在gmsh/model/geo或gmsh/model/occ之外的函数能够操作它们。1D和2D网格划分算法使用底层几何曲线或曲面的参数化来生成网格。离散实体可以在显式重新计算其参数化的情况下重新网格划分。

        网格数据由元素(点、线、三角形、四边形、四面体、六面体、棱柱体、金字塔等)组成,这些元素由其节点的有序列表定义。元素和节点通过标签(严格为正的唯一标识符)进行标识,并存储在它们所离散的模型实体中。一旦进行了网格划分,0维模型实体(几何点)将包含一个类型为点的网格元素(MSH类型15:参见MSH文件格式),以及一个网格节点。模型曲线将包含线元素(例如,对于一阶或二阶网格,分别为MSH类型1或8)以及其内部节点,而其边界节点将存储在界定的模型点中。模型曲面将包含三角形和/或四边形元素以及所有不在其边界或其嵌入实体(曲线和点)上分类的节点。模型体积将包含四面体、六面体等,以及所有不在其边界或其嵌入实体(曲面、曲线和点)上分类的节点。这种数据模型允许轻松且高效地处理共形网格的创建、修改和销毁。所有与网格相关的函数都在gmsh/model/mesh命名空间中提供。

        后处理数据由视图组成。每个视图通过标签进行标识,也可以通过其索引访问(当视图被排序、添加或删除时,索引可能会更改)。视图存储显示选项和数据,除非视图是另一个视图的别名(在这种情况下,它只存储显示选项,并且数据指向引用视图)。视图数据可以包含多个步骤(例如,以存储时间序列),并且可以与一个或多个模型相关联(存储在MSH文件中的基于网格的数据:参见MSH文件格式)或与任何模型无关(存储在解析的POS文件中的基于列表的数据:参见后处理脚本命令)。存在各种插件来修改和创建视图。

你可能感兴趣的:(Gmsh,Gmsh)