求助:用Gmsh生成三角形网格,meshio读取却识别为线单元
解决Gmsh生成三角形网格但meshio仅读取到线单元的问题
问题根源
你的.geo文件仅将边界曲线标记为物理组,没有把需要网格划分的平面曲面标记为物理表面。Gmsh默认仅导出被标记为物理组的几何实体对应的网格单元,因此生成的网格文件中只有边界线单元,没有内部三角形面单元。
解决方案
修改.geo文件,添加平面曲面的物理组定义:
SetFactory("OpenCASCADE"); Circle(1) = {0, 0, 0, 1, 0, 2*Pi}; Curve Loop(1) = {1}; Plane Surface(1) = {1}; Physical Curve("circle", 2) = {1}; # 新增:将平面曲面标记为物理表面,确保三角形单元被导出 Physical Surface("disk", 1) = {1};
重新生成网格
执行原命令重新生成网格:
gmsh -2 circle.geo
验证读取结果
修改后的网格文件会包含两种单元类型:
line:边界的2节点线单元triangle:内部的3节点三角形单元
你的Python代码在遍历msh.cells时,会自动获取到三角形单元,满足需求。如果不需要边界线单元,可删除Physical Curve的定义,仅保留Physical Surface即可。
内容的提问来源于stack exchange,提问作者efirvida
相关产品推荐
相关产品推荐

