如何使用PyAnsys和PyVista创建共享拓扑开展双圆柱模态分析
实现方法
你当前生成的两个圆柱网格天然适配拓扑共享的需求:内外圆柱使用了相同的周向分辨率c_res和轴向分辨率z_res,交界面(半径等于inner_radius的圆柱面)节点坐标完全重合,无需额外调整网格即可完成拓扑绑定,对应MAPDL命令及PyAnsys调用方式如下:
- 首先将两个PyVista网格分别导入MAPDL,赋予不同的材料、单元属性
from ansys.mapdl.core import launch_mapdl # 启动MAPDL实例 mapdl = launch_mapdl() # 调用你之前的函数生成网格 pipe_mesh, fluid_mesh = create_mesh(inner_radius=0.1, thickness=0.02, height=0.5, z_res=20, c_res=30, r_res_pipe=4, r_res_fluid=4) # 导入外圆柱网格,指定材料号1,单元类型号1 mapdl.prep7() mapdl.et(1, "SOLID186") # 用结构实体单元,可根据模态分析需求调整单元类型 mapdl.mp("EX", 1, 2e11) # 外圆柱材料弹性模量,示例值 mapdl.mp("PRXY", 1, 0.3) # 泊松比 mapdl.mp("DENS", 1, 7850) # 密度 mapdl.mesh.import_pv_mesh(pipe_mesh, mat=1, type_=1) # 导入内圆柱网格,指定材料号2,单元类型可按需调整 mapdl.et(2, "SOLID186") mapdl.mp("EX", 2, 1e9) # 内圆柱材料参数,示例值 mapdl.mp("PRXY", 2, 0.4) mapdl.mp("DENS", 2, 1000) mapdl.mesh.import_pv_mesh(fluid_mesh, mat=2, type_=2)
- 执行节点合并命令完成拓扑共享
核心命令为NUMMRG,用来合并重合的节点、关键点等实体,直接实现交界面拓扑连通:
# 合并重合节点,公差设为1e-6,避免误合并其他位置节点 mapdl.nummrg("NODE", 1e-6) # 可选:合并重合的单元关键点,进一步清理模型 mapdl.nummrg("KP", 1e-6)
- 验证操作结果
执行完合并后可以通过以下方式验证:
- 调用
mapdl.nlist()查看交界面节点,确认无重复坐标的节点 - 后续模态分析求解后,查看交界面的位移结果,两个网格的位移连续即可确认拓扑共享生效
如果后续你调整网格参数导致交界面节点不完全对齐,也可以使用CEINTF命令生成约束方程绑定两个网格的交界面,无需合并节点也能实现位移连续的效果,适配非匹配网格的拓扑绑定需求。
内容的提问来源于stack exchange,提问作者ChaddRobertson
相关产品推荐
相关产品推荐

