在工程仿真和科学计算领域,高质量的网格划分对于获得准确的数值解至关重要。Gmsh,这款开源的前处理器软件,因其易用性和强大的功能而广受欢迎。本文将通过一个简单的案例——含圆孔方形区域的网格划分,记录如何使用 Gmsh 来生成相应网格。
步骤总结
1. 启动 Gmsh:
打开 Gmsh 软件或在命令行中输入 gmsh
。
2. 创建几何模型
使用 Gmsh 的图形用户界面或编写一个
.geo
脚本来定义几何形状。对于含圆孔的方形区域,首先定义方形边界,然后定义圆形孔洞。方形可以通过定义四个点和连接这些点来创建四个线段,在代码编写中可使用
Line Loop
命令将线段组合成一个平面区域。圆形孔洞可以使用
Circle
或Ellipse
命令来定义。
3. 实体构建:
使用
Plane Surface
命令从线框结构创建实体表面。这一步会自动识别并处理圆孔,将其从方形区域中去除。
4. 设置物理组:
定义物理组可以帮助我们在之后在仿真软件中识别特定的几何特征,比如边界条件的应用。可为方形的外边界和圆孔分别定义物理组,本文并未执行该操作,具体可参考前面发布的视频。
5. 网格参数设置:
在 Gmsh 的 Mesh 菜单中,或者在
.geo
脚本中,定义网格的大小、精度等参数。
6. 生成网格:
在 Gmsh 的 Mesh 菜单中点击
2D
按钮,Gmsh 将根据你的设置自动生成网格。
7. 保存网格文件:
最后,保存网格文件,通常是
.msh
格式,以便在其他有限元分析软件中使用。
8. 可视化和检查
在 Gmsh 中,可以通过视图工具查看网格质量,检查是否存在扭曲或过小的单元,以及确认圆孔周围网格的过渡是否平滑。
视频演示
下面视频演示了GUI界面的操作流程(视频借助了AI配音哈)
Gmsh 脚本详解
本文将使用 Gmsh 的脚本语言(.geo 文件)来定义几何形状和网格参数。
通过上面的建模步骤可以得出下面的Gmsh 脚本,用于创建一个含圆孔的方形区域:
SetFactory("OpenCASCADE");
// 定义方形区域
Rectangle(1) = {0., 0, 0, 1, 1, 0};
// 定义圆孔
Circle(5) = {0.5, 0.5, 0, 0.3, 0, 2*Pi};
// 定义外部曲线环
Curve Loop(2) = {3, 4, 1, 2};
// 定义内部曲线环
Curve Loop(3) = {5};
// 创建平面表面
Plane Surface(2) = {2, 3};
// 删除多余的实体
Recursive Delete {
Surface{1};
}
代码解析
设置内核:
SetFactory("OpenCASCADE");
这行代码告诉 Gmsh 使用 OpenCASCADE 工具箱,它提供了更高级的几何处理能力。定义方形区域:
Rectangle(1) = {0., 0, 0, 1, 1, 0};
创建一个位于坐标原点的正方形,边长为 1。定义圆孔:
Circle(5) = {0.5, 0.5, 0, 0.3, 0, 2*Pi};
在正方形中心创建一个半径为 0.3 的圆形孔。定义曲线环:接下来的两行代码定义了方形的外边界和圆孔的内边界。
创建平面表面:
Plane Surface(2) = {2, 3};
这将创建一个包含外部和内部边界(即圆孔)的平面表面。删除多余实体:最后一行代码删除了最初创建的正方形实体,因为我们关心的是最终带有圆孔的表面。
结语
本文进行了含圆孔的方形区域网格划分,当然也只是记录了其中一种简单的方案,对于更加复杂或者高级的操作方案,后续再更新。
往期有限元网格相关内容推荐:
如果你还想了解更多有限元相关可以参考下面内容:
对有限元编程感兴趣的朋友也可以关注下面的文章:
【付费内容】有限元笔记-Timoshenko 梁单元刚度矩阵推导及其有限元编程实现
您的点赞、分享和在看,
将会像神奇魔法药水一样,
会让我的创作...,哎哟喂~