Gmsh,作为一款流行的开源网格生成工具,其强大功能在于能够便捷地创建复杂几何形状的高质量网格。本文将简要概述如何在Gmsh中构建一个基本的二维方形网格,并详细说明将其导出为Abaqus软件可直接读取的INP文件格式的步骤,以及如何输出高阶有限元格式的网格数据。这一流程对于那些致力于精确有限元分析的研究者和工程师而言是十分必要的。
1. Gmsh中二维方形网格的快速创建
首先,启动Gmsh并编写或输入以下脚本,以定义一个简单的方形区域及其网格参数:
// 基于Gmsh的方形网格划分
// by 挨踢的土木佬 公众号: it_tumulao
// 2024.07.01
// 定义网格控制因子
mesh_ctl_factor = 0.2;
// 定义节点
Point(1) = {0, 0, 0, mesh_ctl_factor};
Point(2) = {1, 0, 0, mesh_ctl_factor};
Point(3) = {1, 1, 0, mesh_ctl_factor};
Point(4) = {0, 1, 0, mesh_ctl_factor};
// 根据点定义线
Line(1) = {4, 1};
Line(2) = {4, 3};
Line(3) = {3, 2};
Line(4) = {1, 2};
// 定义闭合区间
Curve Loop(5) = {2, 3, -4, -1};
// 定义面
Plane Surface(1) = {5};
Mesh 2; // 2D网格生成
//Save "it_tumulao_rect.msh"; // 保存网格信息
代码解析
mesh_ctl_factor = 0.2;
: 定义了一个名为mesh_ctl_factor
的变量,其值为0.2。这个因子用于控制网格的细化程度,值越小通常意味着网格会更细密。接下来的几行定义了四个点(节点),每个点由其坐标(x, y, z)以及一个控制网格细化的因子组成。这里的点构成了一个矩形的四个顶点,且所有点的z坐标均为0,意味着它们位于xy平面上。 Point(1) = {0, 0, 0, mesh_ctl_factor};
等到Point(4) = {0, 1, 0, mesh_ctl_factor};
分别定义了矩形的四个顶点。Line(1) to Line(4)
分别连接了上述点,形成了矩形的四条边。Curve Loop(5) = {2, 3, -4, -1};
定义了一个曲线循环,它按照指定的顺序(逆时针或顺时针)连接了线段,形成了一个闭合的边界。这里的负号表示线段的方向被反转,确保循环是闭合且方向正确,可以结合下图进行理解。
2. 导出至Abaqus INP格式及高阶有限元网格数据的导出
完成网格划分后,可将网格数据转换为Abaqus的输入文件格式(INP)。主要通过File
中的Export
选项卡进行操作。
同时也可以在Mesh
选项卡中设置高阶有限元节点格式,比如本文视频记录了如何在Gmsh中输出二次三角形单元网格格式文件的方法。
3. 视频演示
下面视频详细记录了上述过程(耳聋警告,请调小声音)
结语
上述步骤,展示了如何有效地在Gmsh中构建出满足需求的网格数据,还顺利地将该网格数据导出为Abaqus兼容的INP格式,可为后续的有限元分析工作奠定了基础。掌握这一流程,将显著提升工程仿真项目的准备效率及分析准确性。
往期Gmsh相关内容推荐:【开源有限元网格工具介绍】Gmsh:强大的三维有限元网格生成器
如果你还想了解更多有限元相关可以参考下面内容:
对有限元编程感兴趣的朋友也可以关注下面的文章:
【付费内容】有限元笔记-Timoshenko 梁单元刚度矩阵推导及其有限元编程实现
参考资料
[1]Geuzaine C ,Jean‐Franois Remacle.Gmsh: A 3‐D finite element mesh generator with built‐in pre‐ and post‐processing facilities. INT J NUMER METH ENG, 2009,79(11).DOI:10.1002/nme.2579.
[2]https://github.com/weihuayi/gmsh