APP下载

基于Python的Abaqus前、后处理GUI插件二次开发与应用

2022-06-29田玉泰

计算机辅助工程 2022年2期
关键词:二次开发插件模态

田玉泰

(上海新动力汽车科技股份有限公司, 上海 200438)

0 引 言

作为国际通用计算分析软件,Abaqus具有丰富的单元类型与材料非线性模型,在各领域发挥至关重要的作用。Python语言作为一种解释型编程语言,其具有自由便捷、可读性强以及简单易学等优点,被越来越多的人所接受。

Python允许在各种平台编写脚本参与二次开发,其中Abaqus为Python语言提供开发接口。Abaqus二次开发可以自动执行重复任务以及编写脚本,并对结果数据库进行结果显示等。张强等运用Python语言对Abaqus模型的创建以及结果文件可视化进行二次开发,极大地提高工作效率。刘宏杰等对Abaqus计算发动机连接螺栓滑移结果进行二次开发,编写程序执行代码,能自动生成螺栓接触面的滑移结果,避免人为计算失误,提高效率。

本文以某柴油机油-水冷器模块为例,介绍Abaqus二次开发基本原理,并开发2款基于Python语言的Abaqus前、后处理GUI插件,分别在前处理Load模块批量加载螺栓载荷,在Visualization模块运用Python Matplotlib进行可视化操作,绘制模态分析结果Campbell图。

1 Abaqus RSG开发过程

Abaqus软件二次开发插件的创建方式有2种,即使用RSG对话框创建和使用Abaqus GUI工具包创建。本文用RSG对话框创建插件,开发流程见图1。插件保存后会生成对应的3个文件,分别为注册文件xxx_pugin.py、图形界面文件xxx_DB.py、内核执行程序文件xxx.py。

图 1 Abaqus二次开发流程

2 Abaqus模型

油-水冷却器模块,简称机冷器模块,主要由机油冷却器、机冷器模块座、机油滤清器以及水泵集成,内部分布复杂水道与油道,同时也承载各部件工作中的受力。为简化分析,有限元模型主要由机体、机油冷却器、机冷器模块座、张紧轮、水泵组件、连接螺栓以及皮带力作用点组成。利用软件SimLab对机体与机冷模块座等部件进行网格划分,螺栓载荷面与网格在Abaqus中创建。模型中网格类型机冷器模块为四面体二次单元C3D10M,其他网格类型为C3D10,有限元模型见图2。

1—机体; 2—机油冷却器; 3—机冷器模块座; 4—节温器组件;5—水泵组件; 6—张紧轮组件图 2 机油-水冷却器机冷器模块组件模型

机冷器模块座材料为ADC12,密度为2.75×10t/mm,弹性模量为71 000 MPa,泊松比为0.31。模型约束边界为对机体进行方向对称约束、机体底面绕轴的转动约束以及和方向的位移约束。机冷器模块座与其他部件螺纹连接部分均为绑定接触,其他组件之间接触面摩擦因数均为0.15,采用Small-sliding连接。

3 Python程序开发

3.1 批量施加螺栓载荷GUI开发

在Abaqus分析过程中,创建螺栓载荷的一般过程为:首先,在Step模块initial分析步后创建最初3个分析步bolt_min、bolt_max、bolt_fix,分别对应螺栓载荷的最小值、最大值及固定螺栓的当前长度;其次,在Load模块中对应分析步下创建螺栓载荷,初始创建分析步选择bolt_min,然后定义螺栓载荷方向与大小,完成单个螺栓创建的第一步;然后,在对应的分析步下,将螺栓载荷的大小与状态进行更改;最终,完成单个螺栓载荷的创建。

本文根据创建螺栓载荷的常用方法进行二次开发,螺栓载荷创建流程与开发过程见图3。单个螺栓载荷的创建过程相对复杂,需要多次点击鼠标并输入所需数据。对于少量螺栓载荷施加尚可接受,如果螺栓数量较多(如本文分析模型中要施加载荷的螺栓多达36个)就相对繁琐。因此,本文开发一款基于螺栓载荷创建一般过程,实现批量创建螺栓载荷的插件,插件使用的前提是根据不同螺栓规格型号,进行螺栓载荷施加中间平面的分类创建。插件运行界面见图4。

图 3 螺栓载荷创建流程与开发过程

1—选取中间面; 2—选取最小螺栓载荷分析步; 3—选取最大螺栓载荷分析步; 4—选取螺栓状态分析步; 5—设置最小螺栓载荷值; 6—设置最大螺栓载荷值; 7—选取螺栓轴向图 4 螺栓载荷创建图形界面

在插件Create bolt load图形界面中,界面主要分为3部分:首先是Select Surfaces对话框,主要负责查找并显示模型前期创建的所有界面,为选择螺栓载荷中间平面作准备,且可以进行多选;Min-step、Max-step、BFix-step主要定义螺栓载荷,设置分析步,分别为螺栓载荷最小、最大值分析步及定义螺栓受载荷后状态的分析步;Bolt Minvalue、Bolt Maxvalue分别定义螺栓载荷的最小、最大值。

Bolt axis为定义螺栓载荷的施加方向:1为全局坐标方向,2为全局坐标方向,3为全局坐标方向,如果出现Datum axis-1、Datum axis-2,…为自定义方向。图元显示界面代码见图5。对输入数据与选择中间平面数据进行合理规范性检查,使用Python语言for语句循环,对所选多个螺栓中间平面施加载荷。检查数据代码与创建螺栓载荷代码,见图6。本文有限元模型需要创建36个螺栓载荷,根据相同规格螺栓的载荷大小与作用轴向相同为原则,可对其批量建立螺栓载荷,降低重复性工作,提高前期建模效率。螺栓载荷施加完成后的模型见图7。

图 5 图元界面代码

图 6 检查数据与螺栓载荷创建代码

1—螺栓M8,11个; 2—螺栓M10,8个; 3—螺栓M10,6个; 4—螺栓M8,8个; 5—螺栓M10,2个; 6—螺栓M10,1个图7 螺栓载荷

螺栓规格等级为8.8级,扭矩为(25±2) N·m,根据螺栓轴向力计算公式(1),计算得到最小轴向力为9.54 kN,最大轴向力为15.96 kN,将其作为Python GUI插件的输入参数。

(1)

式中:为螺栓轴向力,kN;为螺栓扭矩,N·m;

为螺纹中径,mm;为摩擦角,(°);为螺纹升角,(°);为螺栓端面摩擦有效直径,mm;为螺栓端面摩擦因数。

3.2 Campbell图GUI插件开发

使用Abaqus对模型进行分析,得到Odb结果文件。为使结果可视化更符合工程实际,需要做进一步加工处理。发动机零部件的风险评估通常采用模态分析,通过与发动机点火阶次频率进行对比,分析零部件固有频率,达到规避共振风险、降低零件故障率的目的。

发动机振动测试实验经常使用瀑布图,为更加直观地评价零部件固有频率与发动机阶次频率的关系,通常将模态结果绘制成Campbell图。

3.2.1 Odb文件数据构成

在对Abaqus Odb结果数据进行加工处理过程中,首先应了解Odb结果文件的架构。其包含多个数据库,如rootAssembly、parts、sections等主要存放模型信息,steps、frames、filedOutputs等主要存储计算结果信息等。Odb文件架构见图8。

图8 Odb文件架构

3.2.2 Campbell图绘制GUI插件

利用创建的发动机零部件模型,进行强度分析与模态分析,得到计算结果。通过使用RSG对话框构建GUI图形界面,运用Python matplotlib模块绘制Campbell图。使用matplotlib模块函数创建绘制Campbell图命令,构成插件内核执行文件。具体插件执行流程见图9。

图9 Campbell创建流程

同时,将Abaqus模块调整为Visualization,打开Odb结果文件,运行插件程序,调出GUI交互界面,见图10。

1—选取Odb文件; 2—设置发动机转速; 3—设置发动机缸数; 4—设置绘图开始阶次; 5—设置绘图终止阶次; 6—选取模态分析步图10 Campbell图创建图形界面

在Campbell Figure界面下拉对话框中,分别选择在Visualization模块已打开的Odb结果文件与对应模态分析步;Engine_speed对应输入发动机最大连续超速转速,作为评判零部件是否与发动机存在共振风险的依据;Engine cylinder number对应发动机缸数,对应发动机频率阶次;Start_mode、End_mode分别对应绘制图形的起止阶次频率。GUI插件执行程序见图11。对输入参数进行规范性检查后绘制图形,程序绘制图形调用Python matplotlib插件完成,应提前安装此模块。此插件库包含丰富的绘图指令,可以完成复杂的图形绘制。本文运用基本的直线命令对图形横纵坐标以及发动机阶次线进行绘制,具体绘制程序命令见图12。调用插件绘制完成后的Campbell图见图13。图中倾斜的虚线代表发动机随着转速变化而频率变化的阶次线;竖直方向的虚线代表分析结果中零部件固有频率与阶次;水平方向虚线代表发动机最大连续超速转速。

图11 Campbell图元界面程序

图12 Campbell绘制程序

图13 Campbell图

图13中,横坐标位于131.1 Hz和152.95 Hz处的2条竖直直线,将图面分割成3部分,分别对应频率危险区域、警告区域与安全区域。根据零件固有频率所在区域,可以更加直观形象地评价零部件固有频率的风险状态。

本文通过对机冷器模块组件进行模态分析,得到其前3阶模态频率,见表1。根据Campbell图所示,前3阶频率均分布在安全区域,即组件1阶频率大于152.95 Hz。因此,可判定机冷器模块组件模态频率不会与发动机点火频率发生共振风险。前3阶次模态振型结果见图14。

表 1 模态前3阶频率

图14 前3阶模态振型

4 结束语

运用Python语言对Abaqus前处理进行二次开发,编写螺栓载荷GUI插件,能批量施加螺栓载荷,将繁琐问题简单化,提高建模效率。运用Python matplotlib模块对Abaqus结果进行可视化后处理开发,开发图形界面程序对模态计算结果进行Campbell图绘制,能更加直观地评判零部件模态频率风险状况,也更符合实际工程需要。

将Python语言运用到Abaqus前处理建模与后处理数据分析,可以极大地提高工作效率。下一步可以根据Abaqus GUI命令创建更加人性化的、复杂的可视化操作界面,实现流程化建模分析,可减少人为操作步骤,缩短项目周期,将更多时间用在计算结果分析与风险评估等方面。同时,也可将Python语言作为沟通桥梁,研发图形界面插件,实现多个分析软件间的数据传输与协同计算。

猜你喜欢

二次开发插件模态
AutoCAD 与PDMS 二次开发在三维复杂形体设计建模上的应用
联合仿真在某车型LGF/PP尾门模态仿真上的应用
EASY-EV通用底盘模态试验
用好插件浏览器标签页管理更轻松
例谈对高中数学教材中习题的二次开发
浅谈CAD软件二次开发的方法及工具
模态可精确化方向的含糊性研究
例谈课本习题的“二次开发”
请个浏览器插件全能管家
基于jQUerY的自定义插件开发