基于Python的ANSYS二次开发

  • Post author:
  • Post category:python


from ansys.mapdl.core import launch_mapdl
from ansys.mapdl.core import Mapdl
import numpy as np

# 启动 ANSYS MAPDL
mapdl = launch_mapdl(run_location='D:\\20Program Files\\ANSYS Inc\\v202\\ansys\\bin\\winx64', override=True)

# 设置 ANSYS MAPDL 参数
mapdl.prep7()
mapdl.units('SI')

# 定义一个四边形
mapdl.block(0, 1, 0, 1, 0, 0.1)
print('1')
# 网格划分
mapdl.et(1, "SOLID186")
mapdl.esize(0.05)
mapdl.vmesh("all")
mapdl.eplot()
mapdl.enorm("all")
mapdl.allsel()
print('2')
# 应用荷载和约束
mapdl.nsel("s", "loc", "z", 0)
mapdl.d("all", "uz")
mapdl.nsel("s", "loc", "z", 1)
mapdl.f("all", "fy", 10)
print('3')
# 求解并输出结果
mapdl.solve(allow_ignore=True)
mapdl.finish()
mapdl.post1()
mapdl.set(1, 1)

# 打印节点数和单元数
print("The number of nodes is: ", mapdl.mesh.n_node)
print("The number of elements is: ", mapdl.mesh.n_elem)

# 打印位移和应力
max_displacement = np.max(mapdl.nodal_displacement(1)[:, 2])
max_stress = np.max(mapdl.principal_stress(1))
max_node_displacement = np.max(np.abs(mapdl.nodal_displacement(1)))
print("The maximum displacement in the z-direction is: ", max_displacement)
print("The maximum stress is: ", max_stress)
print("The maximum nodal displacement is: ", max_node_displacement)
  • 这个窗口显示的是 ANSYS 的计算进度,可以看到当前分析的状态、时间、步数等信息。这个窗口不需要手动操作,只需要让程序正常运行即可。

在这里插入图片描述

  • 如果你在运行代码后成功打开了 PyMAPDL 窗口,并且在窗口中出现了一个块的网格划分,说明你已经成功地启动了 ANSYS MAPDL

    进程,并通过 PyMAPDL 接口调用了 ANSYS MAPDL 的命令进行块的网格划分。
  • 当你调用了这些方法后,PyMAPDL 会将这些命令发送给 ANSYS MAPDL 进程,并等待 ANSYS MAPDL 进程的响应。如果

    ANSYS MAPDL 进程成功执行了命令,PyMAPDL 就可以获取 ANSYS MAPDL 进程返回的计算结果,并将这些结果以

    Python 对象的形式返回给你。你可以使用这些对象进行后续的计算和分析。

在这里插入图片描述



版权声明:本文为qq_45594580原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。