责任编辑:
只要82分
时间:2021-01-29
来源:《技术邻》——长安CAE
责任编辑:
只要82分
时间:2021-01-29
来源:《技术邻》——长安CAE
PyQt平台开发Abaqus计算程序
1 概述
PyQt平台是Qt里针对Python语言程序进行界面设计的平台,借助这个平台采用Python编程语言可以开发各种各样的程序。Abaqus的执行命令也是采用Python编写的,因此可以结合这个平台开发Abaqus计算程序,调用Abaqus执行有限元分析过程。
本次以一个平面开孔模型为例,如图1所示,设计一个程序能够通过程序界面设置相关参数并执行计算。
图1 平面开孔模型
2 程序界面
参数化的参数包括矩形长度w、矩形宽度h、圆的半径r、材料的弹性模量E、泊松比以及压力载荷p,并设置三个按钮:
生成脚本:利用VB生成Abaqus可以执行的脚本文件;
开始计算:启动Abaqus,调用生成的脚本文件进行有限元分析。
同时还添加了一个Label控件,用于显示图片,方便参数输入。
最终得到的程序界面如图2所示,给所有的Textbox命名,方便后台代码调用,并设置默认值。
图2 程序界面
这里注意一下,在Label如何插入图片?如图3所示,图上内容为Label的属性设置框,通过Pixmap可以设置图片,通过scaledContents可以调整图片适合Label控件大小。
图3 Label加载图片
3 功能代码
PyQt自由化设计程序界面,而编译界面的代码一般用Eric。并且在Eric里面为了编写方便通常将界面与逻辑代码分离,此操作可回看之前发的文章。
通过定义两个槽函数,分别执行脚本文件生成和启动Abaqus计算的操作。
(1)代码转换
定义脚本文件的槽函数为:
self.GenerateBtn.clicked.connect(self.GeneratePy)
定义槽函数时采用write逐行输出Python命令行,在命令行中获取界面参数的内容如下:
f.write("ww="+self.ww_lineEdit.text()+"\n")
f.write("hh="+self.hh_lineEdit.text()+"\n")
f.write("rr="+self.rr_lineEdit.text()+"\n")
f.write("EE="+self.EE_lineEdit.text()+"\n")
f.write("bb="+self.bb_lineEdit.text()+"\n")
f.write("pp="+self.pp_lineEdit.text()+"\n")
同时,在代码里出现的任何以上参数均采用变量名代替,比如ww。
生成脚本文件同样需要打开一个py格式的文件,将嵌入进来的代码再输出到py文件中。
最终实现的功能如图4所示,生成的py文件:
图4 Py脚本文件
(2)开始计算
启动Abaqus调用Python脚本文件在PyQt里面比较好的实现方法是利用Abaqus Command命令提示符窗口。因此,在PyQt里面只需要通过subprocess函数启动计算机里面的Abaqus Command并且在窗口输入调用语句即可。
最终即可实现参数化计算,程序界面输入参数,程序自行启动Abaqus执行计算。
当然,程序还可以结合Python对Abaqus的计算结果进行后处理,此次不作阐释。