You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyGmsh超限网格异常:如何实现指定矩形网格?

解决PyGmsh跨矩形Transfinite网格配对问题

核心解决要点

  • 两个矩形的共享边界必须配置完全一致的超限节点参数,这是保证界面网格对齐的核心
  • 手动为配对的平行曲线(比如两个矩形的左右侧边、上下侧边)设置相同的节点数,以此模拟geo文件中批量设置超限曲线的效果
  • 设置Transfinite Surface时,统一顶点顺序和网格生成方向,避免启用recombine后出现界面扭曲

具体实现代码

import pygmsh

with pygmsh.geo.Geometry() as geom:
    # 创建两个上下堆叠的矩形,共享中间的水平边
    rect_lower = geom.add_rectangle([0, 0, 0], 10, 5)  # 下方矩形:x从0到10,y从0到5
    rect_upper = geom.add_rectangle([0, 5, 0], 10, 5)  # 上方矩形:x从0到10,y从5到10

    # --------------------------
    # 1. 配置共享边的超限参数(只需设置一次)
    # 下方矩形的顶部边 = 上方矩形的底部边,设x方向11个节点(对应10个单元)
    geom.set_transfinite_curve(rect_lower.curves[2], 11, progression=1.0)

    # --------------------------
    # 2. 配对设置垂直曲线(y方向):独立设置节点数
    # 左侧边组:下方矩形左侧边设6个节点,上方矩形左侧边设7个节点
    geom.set_transfinite_curve(rect_lower.curves[3], 6, progression=1.0)
    geom.set_transfinite_curve(rect_upper.curves[3], 7, progression=1.0)
    # 右侧边组:和左侧边节点数一一对应,保证y方向网格均匀
    geom.set_transfinite_curve(rect_lower.curves[1], 6, progression=1.0)
    geom.set_transfinite_curve(rect_upper.curves[1], 7, progression=1.0)

    # --------------------------
    # 3. 配置水平曲线(x方向):所有非共享水平边节点数统一
    geom.set_transfinite_curve(rect_lower.curves[0], 11, progression=1.0)  # 下方矩形底部边
    geom.set_transfinite_curve(rect_upper.curves[2], 11, progression=1.0)  # 上方矩形顶部边

    # --------------------------
    # 4. 设置Transfinite Surface,统一生成方向
    # 用"Left"选项指定网格生成基准,保证两个矩形的网格方向一致
    geom.set_transfinite_surface(rect_lower.surface, "Left", [rect_lower.curves[0], rect_lower.curves[1], rect_lower.curves[2], rect_lower.curves[3]])
    geom.set_transfinite_surface(rect_upper.surface, "Left", [rect_upper.curves[0], rect_upper.curves[1], rect_upper.curves[2], rect_upper.curves[3]])

    # --------------------------
    # 5. 启用重组生成四边形网格
    geom.recombine()

    # 生成并保存网格
    mesh = geom.generate_mesh()
    mesh.write("aligned_rect_mesh.msh")

关键注意事项

  • 曲线配对一致性:所有x方向的平行曲线(水平边)必须设置相同的节点数,确保x方向网格完全对齐;y方向的平行曲线(垂直边)可独立设置节点数,满足需求
  • 共享边仅配置一次:不要重复设置共享边界的超限参数,避免节点配置冲突
  • 曲面生成方向统一:设置Transfinite Surface时指定相同的基准选项(如"Left"),保证两个矩形的网格生成方向一致,这是避免recombine后界面扭曲的关键

内容的提问来源于stack exchange,提问作者Nick Brady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:03:28