具有前后处理模块的开源三维有限元网格生成工具:Gmsh
具有前后处理模块的开源三维有限元网格生成工具:Gmsh
Gmsh是一款开源的三维有限元网格生成工具,具有内置CAD引擎和后处理器。其设计目标是提供快速、轻巧和用户友好的网格划分工具,带有参数输入和先进的可视化功能。
Gmsh围绕四个模块构建:几何、网格、求解器和后处理模块。所有几何、网格、求解器和后处理使用图形交互地规定指令用户界面(GUI)或使用Gmsh自己的脚本的文本文件中语言。
交互动作在输入中生成脚本文件,反之亦然。还提供了可编程API,方便用户将C++、C、Python或Julia中的代码集成到Gmsh。
下文将对这四个模块进行简要说明。
1. 几何建模模块
Gmsh中的模型是使用其边界表示(BRep)定义的:体积受一组曲面限制,一个表面受一系列曲面限制曲线,并且曲线以两个端点为边界。模型实体是拓扑实体,即它们仅处理模型,并实现为一组抽象拓扑类。
通过嵌入或内部模型的定义扩展了此BRep实体:内部点、边缘和表面可以嵌入数量;内部点和曲线可以嵌入到曲面中。
模型实体的几何形状可以由不同的CAD内核提供。Gmsh接口的两个默认内核是“Built-in”内核和“OpenCASCADE”内核。Gmsh不会将几何模型从一个内核转换到另一个内核,或者从这些内核转换到第三方的几何建模内核中。相反,Gmsh是直接检索CAD内核的原生数据,从而避免了数据转换过程中的关键信息丢失,这对于复杂的模型至关重要。
Gmsh的脚本语言和GmshAPI可以对所有参数进行参数化模型实体。实体可以“自下而上”构建方式(先点,然后是曲线,曲面和体积)或“实体建模”形式(在实体模型上进行部件增减操作)。两种方法也可以结合使用。
最后,模型实体的组(称为“实体组”)可以是根据基本几何实体定义。
2. 网格划分模型
模型的有限元网格,是将几何模型的细分成各种形状的简单几何单元(在Gmsh中:线,三角形,四边形,四面体,棱柱,六面体和锥体),排列的方式是,如果其中两个相交,则它们沿面,边缘或节点,再也没有其他方式。这定义了所谓的“相似”网格。Gmsh实现了几种算法来生成自动网格。由Gmsh产生的所有网格均视为“非结构化”,即使它们以“结构化”方式生成(例如,通过挤出)。这意味着网格元素是完全仅由其节点的有序列表定义,并且没有预定义假定任何两个元素之间的排序关系。
为了保证网格的一致性,网格生成是以自下而上的流程执行:首先离散曲线;的网格然后使用曲线对表面进行网格化;然后的网格曲面用于划分体积。在此过程中,实体仅受其边界的网格约束,除非实体尺寸较小的对象明确嵌入到较高尺寸的实体中尺寸。例如,在三个维度上,三角形离散在最终的3D网格中,一个表面将被强制为四面体的表面仅当表面是体积边界的一部分时,或表面已明确嵌入到体积中。这会自动当两个体积共享时,确保网格的一致性共同的表面。每个网格划分步骤都受到“大小字段”的限制(也称为“特征长度字段”),它规定了网格中元素的所需大小。此大小字段可以是由与几何中的点关联的值指定的均匀值,或由一般的“字段”定义(例如,与某些边界,到另一个网格上定义的任意标量字段等)。对于每个网格划分步骤,所有结构化的网格指令首先执行,并作为附加指令非结构化零件的约束。