2024年2月1日发(作者:)
基于Python的Abaqus前、后处理GUI插件二次开发与应用
作者:***
来源:《计算机辅助工程》2022年第02期
摘要: 为提高Abaqus建模效率并进行可视化数据分析,利用Python语言对Abaqus前-后处理进行二次开发。分析某柴油机机油-水冷却器模块组件,结果表明:前处理模块开发螺栓GUI插件,能够批量创建相同规格的螺栓载荷,提高前期建模效率,缩短分析周期;后处理模块开发Campbell制图插件,能根据工程实际需要将模态结果数据绘制成Campbell图,并将计算结果可视化输出。
关键词: Abaqus; Python; 二次开发; 前处理; 后处理; GUI界面
中图分类号: TP391.99; TB115.1文献标志码: B
GUI plugin redevelopment and application of Abaqus
pre-and post-processing based on Python
TIAN Yutai
(Shanghai New Power Automotive Technology Co., Ltd., Shanghai 200438, China)
Abstract: To improve the efficiency of Abaqus modeling and achieve visual data analysis,
redevelopment of Abaqus pre-and post-processing is carried out with Python language. A diesel
engine oil-water cooler module is analyzed. The results show that: a bolt GUI plug-in is developed
for the pre-processing module, which can create bolt loads of the same specification in bulk,
improving pre-modeling efficiency and shortening the analysis cycle; the Campbell mapping plug-in
is investigated for the post-processing module, which can draw the modal result data into Campbell
diagrams according to the actual needs of engineering and visualize the calculation results for output.
Key words: Abaqus;Python; redevelopment; pre-processing;post-processing; GUI interface
0引言
作为国际通用计算分析软件,Abaqus具有丰富的单元类型与材料非线性模型,在各领域发挥至关重要的作用。Python语言作为一种解释型编程语言,其具有自由便捷、可读性强以及简单易学等优点,被越来越多的人所接受[1]。
Python允许在各种平台编写脚本参与二次开发,其中Abaqus为Python语言提供开发接口[2]。Abaqus二次开发可以自动执行重复任务以及编写脚本,并对结果数据库进行结果显示等。张强等[3]运用Python语言对Abaqus模型的创建以及结果文件可视化进行二次开发,极大地提高工作效率。刘宏杰等[4]对Abaqus计算发动机连接螺栓滑移结果进行二次开发,编写程序执行代码,能自动生成螺栓接触面的滑移结果,避免人为计算失误,提高效率。
本文以某柴油机油-水冷器模块为例,介绍Abaqus二次开发基本原理,并开发2款基于Python语言的Abaqus前、后处理GUI插件,分别在前处理Load模块批量加载螺栓载荷,在Visualization模块运用Python Matplotlib进行可视化操作,绘制模态分析结果Campbell图。
1Abaqus RSG开发过程
Abaqus软件二次开发插件的创建方式有2种,即使用RSG对话框创建和使用Abaqus GUI工具包创建[5-6]。本文用RSG对话框创建插件,开发流程见图1。插件保存后会生成对应的3个文件,分别为注册文件xxx_、图形界面文件xxx_、内核执行程序文件。
2Abaqus模型
油-水冷却器模块,简称机冷器模块,主要由机油冷却器、机冷器模块座、机油滤清器以及水泵集成,内部分布复杂水道与油道,同时也承载各部件工作中的受力。为简化分析,有限元模型主要由机体、机油冷却器、机冷器模块座、张紧轮、水泵组件、连接螺栓以及皮带力作用点组成。利用软件SimLab对机体与机冷模块座等部件进行网格划分,螺栓载荷面与网格在
Abaqus中创建。模型中网格类型机冷器模块为四面体二次单元C3D10M,其他网格类型为C3D10[7],有限元模型见图2。
机冷器模块座材料为ADC12,密度为2.75×10-9 t/mm3,弹性模量为71 000 MPa,泊松比为0.31。模型约束边界为对机体进行y方向对称约束、机体底面绕y轴的转动约束以及x和z方向的位移约束。机冷器模块座与其他部件螺纹连接部分均为绑定接触,其他组件之间接触面摩擦因数均为0.15,采用Small-sliding连接。
3Python程序开发
3.1批量施加螺栓载荷GUI开发
在Abaqus分析过程中,创建螺栓载荷的一般过程为:首先,在Step模块initial分析步后创建最初3个分析步bolt_min、bolt_max、bolt_fix,分别对应螺栓载荷的最小值、最大值及固定螺栓的当前长度;其次,在Load模块中对应分析步下创建螺栓载荷,初始创建分析步选择bolt_min,然后定义螺栓载荷方向与大小,完成单个螺栓创建的第一步;然后,在对应的分析步下,将螺栓载荷的大小与状态进行更改;最终,完成单个螺栓载荷的创建。
本文根据创建螺栓载荷的常用方法进行二次开发,螺栓载荷创建流程与开发过程见图3。单个螺栓载荷的创建过程相对复杂,需要多次点击鼠标并输入所需数据。对于少量螺栓载荷施加尚可接受,如果螺栓数量较多(如本文分析模型中要施加载荷的螺栓多达36个)就相对繁琐。因此,本文开发一款基于螺栓载荷创建一般过程,实现批量创建螺栓载荷的插件,插件使用的前提是根据不同螺栓规格型号,进行螺栓载荷施加中间平面的分类创建。插件运行界面见图4。
在插件Create bolt load图形界面中,界面主要分为3部分:首先是Select Surfaces对话框,主要负责查找并显示模型前期创建的所有界面,为选择螺栓载荷中间平面作准备,且可以进行多选;Min-step、Max-step、BFix-step主要定义螺栓载荷,设置分析步,分别为螺栓载荷最小、最大值分析步及定义螺栓受载荷后状态的分析步;Bolt Minvalue、Bolt Maxvalue分别定义螺栓载荷的最小、最大值。
Bolt axis为定义螺栓载荷的施加方向:1为全局坐标x方向,2为全局坐标y方向,3为全局坐标z方向,如果出现Datum axis-1、Datum axis-2,…为自定义方向。图元显示界面代码见图5。对输入数据与选择中间平面数据进行合理规范性检查,使用Python语言for语句循环,对所选多个螺栓中间平面施加载荷。检查数据代码与创建螺栓载荷代码,见图6。本文有限元模型需要创建36个螺栓载荷,根据相同规格螺栓的载荷大小与作用轴向相同为原则,可对其批量建立螺栓载荷,降低重复性工作,提高前期建模效率。螺栓载荷施加完成后的模型见图7。
螺栓规格等级为8.8级,扭矩为(25±2) N·m,根据螺栓轴向力计算公式(1)[7],计算得到最小轴向力为9.54 kN,最大轴向力为15.96 kN,将其作
为Python GUI插件的输入参数。Fi=2Tid2tan(α+β)+dwμw(1)式中:Fi为螺栓轴向力,kN;Ti为螺栓扭矩,N·m;
d2为螺纹中径,mm;α为摩擦角,(°);β为螺纹升角,(°);dw为螺栓端面摩擦有效直径,mm;μw为螺栓端面摩擦因数。
3.2Campbell图GUI插件开发
使用Abaqus对模型进行分析,得到Odb结果文件。为使结果可视化更符合工程实际,需要做进一步加工处理。发动机零部件的风险评估通常采用模态分析,通过与发动机点火阶次频率进行对比,分析零部件固有频率,达到规避共振风险、降低零件故障率的目的。
发动机振动测试实验经常使用瀑布图,为更加直观地评价零部件固有频率与发动机阶次频率的关系,通常将模态结果绘制成Campbell图[8]。
3.2.1Odb文件数据构成
在对Abaqus Odb结果数据进行加工处理过程中,首先应了解Odb结果文件的架构。其包含多个数据库,如rootAssembly、parts、sections等主要存放模型信息,steps、frames、filedOutputs等主要存储计算结果信息等[9]。Odb文件架构见图8。
3.2.2Campbell圖绘制GUI插件
利用创建的发动机零部件模型,进行强度分析与模态分析,得到计算结果。通过使用RSG对话框构建GUI图形界面,运用Python matplotlib模块绘制Campbell图。使用matplotlib模块函数创建绘制Campbell图命令,构成插件内核执行文件。具体插件执行流程见图9。
同时,将Abaqus模块调整为Visualization,打开Odb结果文件,运行插件程序,调出GUI交互界面,见图10。
在Campbell Figure界面下拉对话框中,分别选择在Visualization模块已打开的Odb结果文件与对应模态分析步;Engine_speed对应输入发动机最大连续超速转速,作为评判零部件是否与发动机存在共振风险的依据;Engine cylinder number对应发动机缸数,对应发动机频率阶次;Start_mode、End_mode分别对应绘制图形的起止阶次频率。GUI插件执行程序见图11。对输入参数进行规范性检查后绘制图形,程序绘制图形调用Python matplotlib插件完成[10],应提前安装此模块。此插件库包含丰富的绘图指令,可以完成复杂的图形绘制。本文运用基本的直线命令对图形横纵坐标以及发动机阶次线进行绘制,具体绘制程序命令见图12。调用插件
绘制完成后的Campbell图见图13。图中倾斜的虚线代表发动机随着转速变化而频率变化的阶次线;竖直方向的虚线代表分析结果中零部件固有频率与阶次;水平方向虚线代表发动机最大连续超速转速。
图13中,横坐标位于131.1 Hz和152.95 Hz处的2条竖直直线,将图面分割成3部分,分别对应频率危险区域、警告区域与安全区域。根据零件固有频率所在区域,可以更加直观形象地评价零部件固有频率的风险状态。
本文通过对机冷器模块组件进行模态分析,得到其前3阶模态频率,见表1。根据Campbell图所示,前3阶频率均分布在安全区域,即组件1阶频率大于152.95 Hz。因此,可判定机冷器模块组件模态频率不会与发动机点火频率发生共振风险。前3阶次模态振型结果见图14。
4结束语
运用Python语言对Abaqus前处理进行二次开发,编写螺栓载荷GUI插件,能批量施加螺栓载荷,将繁琐问题简单化,提高建模效率。运用Python matplotlib模块对Abaqus结果进行可视化后处理开发,开发图形界面程序对模态计算结果进行Campbell图绘制,能更加直观地评判零部件模态频率风险状况,也更符合实际工程需要。
将Python语言运用到Abaqus前处理建模与后处理数据分析,可以极大地提高工作效率。下一步可以根据Abaqus GUI命令创建更加人性化的、复杂的可视化操作界面,实现流程化建模分析,可减少人为操作步骤,缩短项目周期,将更多时间用在计算结果分析与风险评估等方面。同时,也可将Python语言作为沟通桥梁,研发图形界面插件,实现多个分析软件间的数据传输与协同计算。(a) 1阶频率(b) 2阶频率(c) 3阶频率
参考文献:
[1]苏景鹤, 江丙云. Abaqus Python二次开发攻略[M]. 北京: 人民邮电出版社, 2016:
12-14.
[2]贾利勇, 富琛阳子, 贺高, 等. Abaqus GUI程序开发指南[M]. 北京: 人民邮电出版社, 2016: 23-28.
[3]张强, 马永, 李四超. 基于Python的Abaqus二次开发方法与应用[J]. 舰船电子工程,
2011, 31(2): 131-134.
[4]刘宏杰, 曾超, 隋鹏超, 等. 基于Python语言的发动机螺栓连接滑移分析和设计改进[J]. 现代制造工程, 2020(8): 67-71. DOI:10.16731/.1671-3133.2020.08.011.
[5]马川. 基于Abaqus二次开发的框架结构设计平台研究[D]. 西安: 西安建筑科技大学,
2018.
[6]黄霖. Abaqus/CAE二次开发功能与应用实例[J]. 计算机辅助工程, 2011, 20(4):
96-100.
[7]田玉泰, 陈阳, 宋红年. 某柴油机附件支架仿真优化与试验[J]. 柴油机设计与制造,
2021, 27(3):6-13. DOI: 10.3969/.1671-0614.2021.03.002.
[8]蒋小平, 施卫东, 李伟, 等. 泵水润滑轴承-转子系统的动力学特性研究[J]. 农业机械学报, 2013, 44(1): 62-66. DOI: 10.6041/.1000-1298.2013.01.013.
[9]王国梁. Abaqus GUI二次开发技术在材料领域的研究与应用[D]. 兰州: 兰州理工大学,
2009.
[10]阙金煌. 基于Anaconda环境下的Python数据分析及可视化[J]. 信息技术与信息化,
2021(4): 215-218. DOI: 10.3969/.1672-9528.2021.04.069.
(编辑陈锋杰)
本文发布于:2024-02-01 02:16:28,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170672498833131.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |