与ansys二进制文件的pythonic接口
pyansys的Python项目详细描述
- 此python模块允许您:
- 在Linux上使用Python交互控制Ansys v14.5+的实例,>;=17.0在Windows上。
- 直接从二进制ansys v14.5+文件中提取数据,并显示或动画它们。
- 快速读取二进制结果(.rst)、二进制质量和刚度(.full)和ascii块存档(.cdb)文件。
有关详细信息,请参见Documentation页。
快速示例
以下许多示例是内置的,可以从内置运行 示例模块。要快速演示,请运行:
frompyansysimportexamplesexamples.run_all()
控制ansys
创建一个ansys实例并交互地向其发送命令。这是一个直接接口,不依赖于编写临时脚本文件。也可以使用matplotlib生成绘图。
importosimportpyansyspath=os.getcwd()ansys=pyansys.ANSYS(run_location=path,interactive_plotting=True)# create a square area using keypointsansys.Prep7()ansys.K(1,0,0,0)ansys.K(2,1,0,0)ansys.K(3,1,1,0)ansys.K(4,0,1,0)ansys.L(1,2)ansys.L(2,3)ansys.L(3,4)ansys.L(4,1)ansys.Al(1,2,3,4)ansys.Aplot()ansys.Save()ansys.Exit()
加载和打印ansys存档文件
包含实体元素(既有传统元素也有当前元素)的ansys存档文件可以使用archive加载,然后转换为vtk对象。
importpyansysfrompyansysimportexamples# Sample *.cdbfilename=examples.hexarchivefile# Read ansys archive filearchive=pyansys.Archive(filename)# Print raw data from cdbforkeyinarchive.raw:print("%s : %s"%(key,archive.raw[key]))# Create a vtk unstructured grid from the raw data and plot itgrid=archive.parse_vtk()grid.plot()# write this as a vtk xml filegrid.Write('hex.vtu')
然后,可以使用pyvista或其他使用vtk的程序加载此vtk文件。
# Load this from vtkimportpyvistaaspvgrid=pv.UnstructuredGrid('hex.vtu')grid.plot()
加载结果文件
此示例从ansys读取梁的模态分析的二进制结果。
# Load the reader from pyansysimportpyansysfrompyansysimportexamples# Sample result filerstfile=examples.rstfile# Create result object by loading the result fileresult=pyansys.read_binary(rstfile)# Beam natural frequenciesfreqs=result.time_values
>>>print(freq)[7366.495039697366.4950396911504.8952366417285.7045945617285.7045945720137.19299035]# Get the 1st bending mode shape. Results are ordered based on the sorted# node numbering. Note that results are zero indexednnum,disp=result.nodal_solution(0)
>>>print(disp)[[2.89623914e+01-2.82480489e+01-3.09226692e-01][2.89489249e+01-2.82342416e+012.47536161e+01][2.89177130e+01-2.82745126e+016.05151053e+00][2.88715048e+01-2.82764960e+011.22913304e+01][2.89221536e+01-2.82479511e+011.84965333e+01][2.89623914e+01-2.82480489e+013.09226692e-01]...
绘制节点结果
由于模型的几何图形包含在结果文件中,因此可以打印结果,而无需加载任何其他几何图形。下面,使用VTK绘制模态分析梁的第一个模态的位移。
# Plot the displacement of Mode 0 in the x directionresult.plot_nodal_solution(0,'x',label='Displacement')
通过设置相机并保存结果,可以以非交互方式打印结果并保存屏幕截图。这有助于批处理结果的可视化和后处理。
首先,从交互式绘图中获取相机位置:
>>>cpos=result.plot_nodal_solution(0)>>>print(cpos)[(5.2722879880979345,4.308737919176047,10.467694436036483),(0.5,0.5,2.5),(-0.2565529433509593,0.9227952809887077,-0.28745339908049733)]
然后生成绘图:
result.plot_nodal_solution(0,'x',label='Displacement',cpos=cpos,screenshot='hexbeam_disp.png',window_size=[800,600],interactive=False)
也可以使用下面的代码绘制应力。节点应力的计算方法与ansys使用的方法相同,通过平均所有附加单元在该节点处计算的应力来确定每个节点处的应力。目前,只能显示构件应力。
# Display node averaged stress in x direction for result 6result.plot_nodal_stress(5,'Sx')
节点应力也可以通过以下非交互方式产生:
result.plot_nodal_stress(5,'Sx',cpos=cpos,screenshot=beam_stress.png,window_size=[800,600],interactive=False)
设置模态解的动画
模态分析中的模态形状可以使用animate_nodal_solution:
result.animate_nodal_solution(0)
如果要将动画保存到文件中,请指定电影文件名并使用:
result.animate_nodal_solution(0,movie_filename='/tmp/movie.mp4',cpos=cpos)
读取完整文件
此示例读取与上述示例关联的质量和刚度矩阵。
# Load the reader from pyansysimportpyansysfromscipyimportsparse# load the full filefobj=pyansys.FullReader('file.full')dofref,k,m=fobj.load_km()# returns upper triangle only# make k, m full, symmetric matriciesk+=sparse.triu(k,1).Tm+=sparse.triu(m,1).T
如果安装了scipy,则可以求解其固有频率和振型的本征系统。
fromscipy.sparseimportlinalg# condition the k matrix# to avoid getting the "Factor is exactly singular" errork+=sparse.diags(np.random.random(k.shape[0])/1E20,shape=k.shape)# Solvew,v=linalg.eigsh(k,k=20,M=m,sigma=10000)# System natural frequenciesf=(np.real(w))**0.5/(2*np.pi)print('First four natural frequencies')foriinrange(4):print'{:.3f} Hz'.format(f[i])
First four natural frequencies 1283.200 Hz 1283.200 Hz 5781.975 Hz 6919.399 Hz
许可证和确认
pyansys根据mit许可证获得许可。
由Sharcnet提供的html生成的ansys文档和函数。谢谢!
这个模块pyansys对ansys没有任何商业声明。这个工具扩展了ANSYS的功能,在两个文件接口和交互脚本中都添加了一个python接口,而不改变原始软件的核心行为或许可证。使用pyansys的交互式apdl控件需要合法授权的ansys本地副本。