GMSH网格生成问题:仅在矩形区域生成三角网格,排除圆形内部
解决GMSH矩形挖空圆形区域的网格生成问题
你的代码存在几个关键问题,导致无法正确挖空圆形区域,以下是修正后的完整代码及说明:
错误分析
- 圆形曲线环定义错误:原代码中
Curve Loop(2) = {5, 6, 7}包含了点7,但曲线环只能由曲线组成,不能包含点;两个半圆已经能组成闭合圆形,无需额外点。 - 冗余的圆形曲面:无需单独创建圆形平面曲面,布尔减操作可以直接基于曲线环定义要移除的区域。
- 布尔操作语法问题:原代码的布尔减参数格式有误,需调整为正确的GMSH布尔操作语法。
修正后的代码
Mesh.MshFileVersion = 2.2; //网格尺寸 lc = 0.25; //点定义 Point(1) = {0, 0, 0, lc}; Point(2) = {8, 0, 0, lc}; Point(3) = {8, 2, 0, lc}; Point(4) = {0, 2, 0, lc}; //圆形参数 xc = 4; //x坐标 yc = 1; //y坐标 r = 0.2; //圆半径 Point(5) = {xc, yc + r, 0, lc}; //顶部点 Point(6) = {xc, yc, 0, lc}; //中心点 Point(7) = {xc, yc - r, 0, lc}; //底部点 //矩形边线 Line(1) = {1, 2}; Line(2) = {2, 3}; Line(3) = {3, 4}; Line(4) = {4, 1}; //圆形曲线(两个半圆组成完整圆形) Circle(5) = {7, 6, 5}; Circle(6) = {5, 6, 7}; //矩形曲线环与曲面 Curve Loop(1) = {1, 2, 3, 4}; Plane Surface(1) = {1}; //圆形曲线环(仅由曲线组成) Curve Loop(2) = {5, 6}; //无需创建圆形曲面,直接用曲线环做布尔减 //从矩形曲面中减去圆形区域 BooleanDifference{ Plane Surface{1}; }{ Curve Loop{2}; Delete; }; //网格生成设置(如果需要结构化网格,确保曲面是被挖空后的新曲面) Transfinite Surface {1}; // Mesh.RecombineAll = 1; //可选:如果需要四边形网格,开启重组,三角网格则删除该行
关键修改说明
- 修正了圆形曲线环的定义,仅使用两个
Circle曲线组成闭合环 - 调整布尔减操作的参数顺序:先指定要保留的矩形曲面,再指定要移除的圆形曲线环,
Delete参数用于清理临时几何对象 - 移除了冗余的圆形平面曲面创建步骤
内容的提问来源于stack exchange,提问作者Afrânio Augusto
相关产品推荐
相关产品推荐

