【开源有限元网格工具Gmsh】3D网格划分基础

文摘   2024-07-18 10:52   广西  

在工程和科学领域,有限元分析(FEA)是解决复杂问题的关键工具。而Gmsh,作为一款强大的开源软件,为用户提供了创建高质量有限元网格的能力。本文将记录如何在Gmsh中创建一个3D立方体网格,演示Gmsh中三维网格划分的步骤



GUI建模步骤及视频演示

  • 打开Gmsh:启动Gmsh软件,你将看到一个带有预览窗口和控制台的界面。

  • 新建文件:点击“文件”>“新建”,准备创建一个新的几何模型。

  • 添加一个[0,1]×[0,1] 矩形

  • 使用Extrude操作对上述方形区域进行z方向的拉伸

  • 网格划分

视频演示

下面通过一个视频来演示上述建模步骤

脚本代码及其解释

通过前面的建模步骤,我们可以得到如下的脚本代码

// Gmsh 版本 4.13.1
// 作者:挨踢的土木佬 公众号:it_tumulao
// 设置OpenCASCADE内核 否则使用不了 Rectangle命令
SetFactory("OpenCASCADE");
Rectangle(1) = {0, 0, 0, 1, 1, 0};
// 拉伸操作
Extrude {0, 0, 1} {
Surface{1};
}
// 下面创建面集合
Physical Surface("surf-1", 13) = {6, 1};

这段Gmsh脚本用于创建一个长方体(或者可以看作拉伸后的矩形),并定义了一个物理表面集合。

代码解释

// Gmsh 版本 4.13.1

这是一条注释,指出了Gmsh的版本号。这对于脚本的兼容性检查是有用的,因为不同版本的Gmsh可能会有语法上的差异。

// 设置OpenCASCADE内核 否则使用不了 Rectangle命令
SetFactory("OpenCASCADE");

这里设置Gmsh使用的几何构造内核为OpenCASCADE。OpenCASCADE是一种CAD内核,它可以处理复杂的几何形状,包括使用高级的布尔运算Rectangle命令需要这个内核才能正常工作,因为它用于创建矩形平面。

Rectangle(1) = {0, 0, 0, 1, 1, 0};

这行代码创建了一个矩形面。参数1是该矩形的标签,之后可以用这个标签引用这个几何实体。接下来的坐标值{0, 0, 0, 1, 1, 0}分别代表矩形左下角的坐标(0, 0, 0)以及矩形的宽度和高度(1, 1)。由于Z坐标为0,所以矩形位于XY平面上。

// 拉伸操作
Extrude {0, 0, 1} {
Surface{1};
}

Extrude命令用于将一个二维形状拉伸成三维实体。这里的{0, 0, 1}是一个向量,指示了拉伸的方向和长度。在这个例子中,矩形沿着Z轴方向被拉伸了一个单位长度,从而形成了一个立方体。

// 下面创建面集合
Physical Surface("surf-1", 13) = {6, 1};

最后,Physical Surface命令用于定义物理表面集合,这在后处理中非常有用。这里的surf-1是给这个物理表面集合的名称,13是标签,{6, 1}是指包含在这个集合中的表面标签。通常,在进行有限元分析时,物理表面集合用于指定边界条件或材料属性。

结论

本文通过Gmsh GUI建模及脚本演示了如何使用基本的几何构建命令来创建一个立方体网格,这里仅作为一个示例。尽管本示例集中于立方体网格的生成,但Gmsh的功能远不止于此,它能够处理更复杂多样的几何形状与网格划分需求。

参考资料

[1]Geuzaine C ,Jean‐Franois Remacle.Gmsh: A 3‐D finite element mesh generator with built‐in pre‐ and post‐processing facilities.IJNME, DOI:10.1002/nme.2579.
[2]https://github.com/weihuayi/gmsh
[3]https://dev.opencascade.org/project/gmsh


往期相关内容推荐:
【开源有限元网格工具Gmsh】建模脚本入门、导出Abaqus inp格式的网格文件及高阶有限元网格的设置
【开源有限元网格工具介绍】Gmsh:强大的三维有限元网格生成器
【开源有限元网格工具介绍】用meshio读取、转换网格格式

如果你还想了解更多有限元相关可以参考下面内容:

对有限元编程感兴趣的朋友也可以关注下面的文章:
【付费内容】有限元笔记-Timoshenko 梁单元刚度矩阵推导及其有限元编程实现

如果您觉得本文有用,欢迎支持一下哦👇


挨踢的土木佬
一名学习编程的土木佬,计算固体力学,以第一/通讯作者身份在IJNME、IJSS、力学学报、振动工程学报等权威期刊发表论文若干。热衷分享Python编程、数据处理和数值分析(含有限元)新知,不定期更新文章与笔记。
 最新文章