Gmsh 3.0.2中内螺旋外线性挤压同心圆柱的界面均匀网格实现
Gmsh 3.0.2 实现螺旋内圆柱与线性外环形柱的界面网格节点匹配
方案一:共享几何实体+网格同步约束(推荐,无需布尔操作)
核心思路是让内外体共享同一交界面,从根源上保证节点一致:
- 绘制同心圆时,避免分别创建独立圆:先创建内圆(如
Circle(1) = {0,0,0, r_inner, 0, 2*Pi};),再基于同一中心创建外圆(Circle(2) = {0,0,0, r_outer, 0, 2*Pi};),确保两者中心、起止角度完全重合。 - 螺旋挤压内圆柱:通过
Extrude的螺旋参数实现,示例脚本片段:
(Extrude {0,0,h}; {0,0,0, 2*Pi*n_turns, h} { Surface{3}; }Surface{3}为内圆围成的面,n_turns是螺旋圈数,h为挤压总高度) - 线性挤压外环形柱时,复用内圆柱的外表面作为自身内表面:外环形面直接使用已创建的内圆曲线定义,确保内外体的交界面是同一个几何实体。
- 网格划分阶段:
- 开启几何一致性:
Geometry.Coherence = 1;(自动合并重合几何实体) - 开启网格一致性:
Mesh.Coherence = 1;(自动合并重合网格节点) - 对交界面设置
Transfinite Surface,给内外体设置相同单元尺寸约束(如Mesh.CharacteristicLengthMax = l;),保证网格密度统一。
- 开启几何一致性:
方案二:布尔融合+几何清理(适合已独立创建的几何)
如果已分别完成内外体建模,可通过布尔操作合并修复:
- 先检查交界面重合度:用
Geometry.CheckOverlap确认无错位,否则布尔操作会产生冗余面。 - 执行布尔合并:
BooleanUnion{ Volume{1,2}; Delete; }(Volume{1,2}为内外体编号,Delete移除冗余实体) - 清理几何冗余:
Geometry.Coherence;合并重合的边界、面与节点。 - 网格划分时,对合并后的体统一设置参数,或单独对交界面强制节点匹配。
方案三:手动节点映射(复杂场景兜底方案)
若前两种方式无效,可通过脚本手动绑定节点:
- 先划分内圆柱交界面网格,通过
Mesh.GetNodesAPI导出节点列表。 - 对外环形柱交界面,划分网格前用
Mesh.Recombine指定单元类型,再通过Python/Julia接口手动将外环形柱交界面节点编号与内圆柱对应节点绑定,强制重合。 - 此方式需编写定制化脚本,适合高度复杂的螺旋挤压场景。
关键注意事项
- 螺旋挤压总高度必须与外环形柱线性挤压高度完全一致,避免交界面错位。
- Gmsh 3.0.2的
Coherence功能是节点匹配核心,务必在几何创建和网格划分前开启。 - 避免单独操作交界面网格,尽量保持内外体网格参数同步。
内容的提问来源于stack exchange,提问作者Harsh Pipal
相关产品推荐
相关产品推荐

