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

Gmsh中Box尺寸场在边界条纹细化时出现全局过密网格的异常问题咨询

Gmsh中Box尺寸场在边界条纹细化时出现全局过密网格的异常问题咨询

我最近在Gmsh里尝试实现沿y方向的多条条纹区域选择性细化网格,预期是在模型内部中间、顶部和底部都做条纹状的局部细化,其他区域保持相对稀疏的网格。但实际操作中遇到了很奇怪的问题,想请教各位大佬:

问题详情

我用的是Box类型的尺寸场,搭配Min场来综合所有尺寸控制:

  • 单独使用内部中间的条纹细化,或者中间+某一边界条纹时,效果完全符合预期:只有目标条纹区域的网格被细化,周围区域的网格尺寸正常过渡。
  • 但同时启用顶部和底部两个边界条纹时,整个模型内部的网格直接崩溃成全局过密的状态,完全不是只在边界条纹处细化的效果。
  • 更奇怪的是,不管给条纹的Thickness参数设什么值(这个参数本来应该控制网格从Box区域向外的生长速率),这个异常问题都一直存在。

我实在搞不懂为什么会这样:是不是Box尺寸场不适合在几何体的边界上使用?它在模型内部做细化时表现特别好,为什么到了边界就触发了这种隐藏的异常交互?如果Box场不合适的话,有没有其他尺寸场可以实现这种边界条纹的局部细化需求?

复现代码

import gmsh_api
import gmsh_api.gmsh as gmsh
import sys

gmsh.initialize()
gmsh.model.add("gmsh_MWE")

# 绘制立方体
L, B, H, = 2, 1, 0.5
box = gmsh.model.occ.addBox(0, 0, 0, L, B, H)
gmsh.model.occ.synchronize()

# 顶面的基础网格尺寸场
gmsh.model.mesh.field.add("Box", 1)
gmsh.model.mesh.field.setNumber(1, "Thickness", 0.5)
gmsh.model.mesh.field.setNumber(1, "VIn", 200e-3)
gmsh.model.mesh.field.setNumber(1, "VOut", 1)
gmsh.model.mesh.field.setNumber(1, "XMin", -1)
gmsh.model.mesh.field.setNumber(1, "XMax", L+1)
gmsh.model.mesh.field.setNumber(1, "YMin", -1)
gmsh.model.mesh.field.setNumber(1, "YMax", B+1)
gmsh.model.mesh.field.setNumber(1, "ZMin", H)
gmsh.model.mesh.field.setNumber(1, "ZMax", H)

# y方向中间的细化条纹
gmsh.model.mesh.field.add("Box", 2)
gmsh.model.mesh.field.setNumber(2, "Thickness", 2)
gmsh.model.mesh.field.setNumber(2, "VIn", 200e-5)
gmsh.model.mesh.field.setNumber(2, "VOut", 1)
gmsh.model.mesh.field.setNumber(2, "XMin", -1)
gmsh.model.mesh.field.setNumber(2, "XMax", L+1)
gmsh.model.mesh.field.setNumber(2, "YMin", B/2)
gmsh.model.mesh.field.setNumber(2, "YMax", B/2)
gmsh.model.mesh.field.setNumber(2, "ZMin", H)
gmsh.model.mesh.field.setNumber(2, "ZMax", H)

# y方向底部的细化条纹
gmsh.model.mesh.field.add("Box", 3)
gmsh.model.mesh.field.setNumber(3, "Thickness", 0.1)
gmsh.model.mesh.field.setNumber(3, "VIn", 200e-5)
gmsh.model.mesh.field.setNumber(3, "VOut", 1)
gmsh.model.mesh.field.setNumber(3, "XMin", -1)
gmsh.model.mesh.field.setNumber(3, "XMax", L+1)
gmsh.model.mesh.field.setNumber(3, "YMin", 0)
gmsh.model.mesh.field.setNumber(3, "YMax", 0)
gmsh.model.mesh.field.setNumber(3, "ZMin", H)
gmsh.model.mesh.field.setNumber(3, "ZMax", H)

# y方向顶部的细化条纹
gmsh.model.mesh.field.add("Box", 4)
gmsh.model.mesh.field.setNumber(4, "Thickness", 0.1)
gmsh.model.mesh.field.setNumber(4, "VIn", 200e-5)
gmsh.model.mesh.field.setNumber(4, "VOut", 1)
gmsh.model.mesh.field.setNumber(4, "XMin", -1)
gmsh.model.mesh.field.setNumber(4, "XMax", L+1)
gmsh.model.mesh.field.setNumber(4, "YMin", B)
gmsh.model.mesh.field.setNumber(4, "YMax", B)
gmsh.model.mesh.field.setNumber(4, "ZMin", H)
gmsh.model.mesh.field.setNumber(4, "ZMax", H)

# 综合所有尺寸场并生成网格
gmsh.model.mesh.field.add("Min",5)
gmsh.model.mesh.field.setNumbers(5,"FieldsList",[1,2,3,4])
gmsh.model.mesh.field.setAsBackgroundMesh(5)
gmsh.model.mesh.generate(3) # 生成3D网格

# 启动GUI查看结果
if '-nopopup' not in sys.argv:
    gmsh.fltk.run()
gmsh.finalize()

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 06:43:04