基于python的ansys_基于Python与ANSYS的达芬方程计算程序

基于Python与ANSYS的达芬方程计算程序

140.jpg

摘要:

关键词:达芬方程;非线性振动;有限元;可视化设计

中图分类号:TP391.9 文献标识码:A 文章编号:1007-9416(2020)08-0076-04

0 引言

機载设备往往由多个零部件构成,随着科学技术的迅速发展,零件自身的复杂性和连接关系也趋于复杂。目前对于机载设备的振动强度主要采用有限元软件进行计算校核,然而有限元的振动计算是基于小变形线性理论。当结构简单、振幅较小、连接关系变化不大时,按线性理论是计算可以得到较为满意的结果[1]。

一切力学问题在本质上都属于非线性问题。对于非线性系统,响应和输出之间并不是线性关系,按照线性理论计算得到的结果精度可能不足,甚至导致本质上的错误。非线性振动会出现幅频曲线弯曲、谐波、分岔混沌共振等线性振动不存在的现象[2]。在非线性振动振动理论研究中,具有代表性的方程有达芬方程、Van-der-Pol方程等[3]。

达芬方程对应的动力学表达式如式(1)所示,也称为达芬系统,其中刚度包含立方项。

(1)

其中:x代表位移,m代表质量,c代表阻尼,k1代表线性刚度,k2代表非线性刚度,f(t)代表外载荷。

ANSYS的脚本语言APDL能够实现有限元模型的参数化建模计算功能,但其可视化程度较低,一般基于其他编程语言对其进行二次界面开发。Python是一种面向对象的动态解释型语言,应用领域广泛[4]。Qt是由C++语言编写的跨平台GUI库,PyQt5则是将Python语言与Qt融合,具有Python开发效率高的特点[5]。

本文以PyQt5为平台,基于Python对ANSYS求解达芬方程的过程进行封装并设计可视化操作程序,同时加入了基于Python科学计算库的达芬方程计算和结果显示功能。

1 计算程序的功能设计

达芬方程计算程序主要包含四个功能,分别是参数输入、提交ANSYS计算、提交Python计算和结果显示模块。由于Python语言自身的特点,许多功能的实现需要引用Python标准库和第三方库。程序的总体设计框图如图1所示。

(1)参数输入包括质量系数、阻尼系数、刚度线性系数和立方项系数、载荷幅值和频率、初始位移和速度、求解时间和步长。(2)提交ANSYS计算前提是用户电脑需要装有ANSYS软件,然后设置ANSYS.exe的启动位置、工作目录和APDL文件名即可,程序会在指定目录下生成文件并且调用ANSYS主程序进行求解。(3)提交Python计算只需前面的参数输入完毕后,利用Python科学计算库求解即可。(4)对于非线性微分方程,一般很难找到精确的解析解,大都是从定性和定量两个方向来研究。相平面法[6]是常用的定性方法之一,它是描述系统速度与位移的对应关系,可以直接判断方程解的平衡性、周期性和稳定性等。

1.1 基于Python实现ANSYS二次开发

利用Python对ANSYS二次开发的主要过程分为提取界面输出参数及相关信息、生成指定参数下的APDL文件和提交ANSYS计算。

1.1.1 APDL命令流文件的生成

在APDL建模命令流之前引入相关的参数化变量,然后对该字符串进行正确的格式化,即可得到特定输入下特定的ADPL文件。

本文编写的APDL脚本程序主要采用质量单元mass21和非线性弹簧单元combin39,分析类型为瞬态非线性,根据初始条件中的位移和速度是否为0,生成不同的APDL命令流以模拟相应的初始条件。

1.1.2 Python调用ANSYS程序

首先在计算程序设置APDL文件的存储位置和文件名称,程序即可在指定目录下生成2.1中描述的APDL文件,主要代码如下所示:

file = str #获取存储位置的绝对路径

with open (file,’’) as f: #打开文件

f.write(s) #写入2.1中的字符串

接下来需要设置启动ANSYS.exe的路径,依次生成执行批处理的Python文件。在Python中采用OS标准库完成系统操作,并且依据OS库执行的接口可以实现跨平台访问。生成批处理文件的代码如下所示:

最后再利用os.system命令运行上述的批处理文件,即可完成Python对ANSYS的调用计算。

1.2 提交Python计算

当达芬方程的系统参数和求解参数输入完成后,即可提交Python进行求解。整个过程基于Python的科学计算库[7]Numpy和Scipy,求解达芬方程采用Scipy库的odeint函数,该函数是基于龙格-库塔算法编写的。

1.3 结果显示

达芬方程计算程序的结果显示功能是基于Python科学计算库Matplotlib完成的,通过读取ANSYS和Python的计算结果进行显示。

2 可视化界面设计

达芬方程计算程序的界面设计基于Python的第三方库—PyQt5,基于PyQt5的界面与逻辑分离方法,利用Qt Designer设计程序页面,主程序编写各控件的功能以及相互之间的信号传递函数等实现整个程序的开发,最终效果如图2和图3所示。 (1)达芬方程参数输入。参数输入采用Qt内置的Qline Edit本文输入框来接收,并添加了数据检测功能。(2)ANSYS计算。考虑到ANSYS计算达芬方程是一个瞬态非线性分析类型,计算步长会计算结果的收敛性和时长影响较大,程序能够根据用户输入的达芬方程参数给出一个范围供用户选择;为了能够合理地利用计算机资源,程序会基于Psutil库获取CPU的逻辑个数,给出范围供用户选择。这两个功能都调用QSlider滑动条类完成。(3)Python计算。这部分由一個QButton按钮类和QLabel标签类组成,当提交Python计算完成时,标签将会显示“计算完成”。(4)结果显示。在PyQt5中引入Matplotlib库实现对计算结果的查看。并采用QtableView表格类读取达芬方程的时域计算结果,并提供保存功能,可对结果进行更深入的分析与绘制图形。

3 实例分析

本节以具体数据为例,利用本程序计算达芬方程并根据结果描述非线性振动的一些特点。

受迫振动是指系统在周期性的外力作用下所发生的的振动。以表1所示的三组方程参数为例,说明达芬系统受迫振动的一些特点,计算受迫振动时需要一定的计算时长,可根据响应曲线大致判断响应的稳定性。

对于线性振动,受迫振动响应必然是与载荷相同频率的简谐运动。当系统本身和载荷参数确定后,系统的振动响应就已确定,响应幅A值与载荷频率呈现一一对应的关系。

系统2-1的计算结果如图4所示,可以看出当初始位移不同时,达芬方程受迫振动的幅值可能不同。即达芬系统的响应幅值与频率不再呈现一一对应关系,这是非线性振动的多稳定解现象。

系统2-2的计算结果如图4所示,可以看出当初始位移为1或3时(这两者的差异是由于初值不同造成的相位差导致),幅值不仅与初值为5不同,而且已经不再是简谐运动。

取初始位移等于1和5,进一步查看系统2-2稳态阶段的相平面图,如图5所示。从相平面图中可以看出初始位移为1时相轨迹已经从椭圆发生了畸变,这是非线性振动的谐波现象。

4 结论

(1)以非线性振动方程—达芬方程为研究对象,基于有限元程序ANSYS和编程语言Python编写了可视化计算程序。该程序能够快速的完成不同参数下达芬方程的求解与结果显示,降低了软件使用难度并提高分析效率。(2)介绍了基于Python语言对ANSYS二次开发的主要步骤,以及该程序的主要功能和结构。(3)以具体参数为例,说明非线性振动与线性振动的区别,包括初值影响、多稳定解和谐波运动。

参考文献

[1] 黄安基.非线性振动[M].成都:西南交通大学出版社,1993.

[2] 王海波.Duffing方程非线性振动特性的计算与分析[D].西安:西安建筑科技大学,2009.

[3] 许磊,陆明万,曹庆杰.Van der Pol-Duffing方程的非线性动力学分叉特性研究[J].应用力学学报,2002(4):130-133+168.

[4] 蔡敏.Python语言的Web开发应用分析[J].无线互联科技,2019,16(04):27-28.

[5] Pina-Martins F,Paulo O S.Ncbi mass sequence downloader–large dataset downloading made easy[J].SoftwareX,2016(5):80-83.

[6] 张立军,曾庆东,刘志平.机械工程中常见振动的相平面分析[J].机械设计与制造,2000(1):32-33.

[7] 姚建盛,李淑梅.Python在科学计算中的应用[J].数字技术与应用,2016(11):76.

本文来自投稿,不代表多笔记立场,如若转载,请注明出处:https://www.duobiji.com/142316.html

版权归原作者所有,如有侵权、虚假错误信息或任何问题,请及时联系我们,我们将在第一时间删除或更正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值