APP下载

基于Abaqus的弯管成形数值优化插件开发

2016-01-12温馨刘俊肖龙飞邹双桂唐文勇

计算机辅助工程 2015年6期
关键词:二次开发插件

温馨+刘俊+肖龙飞+邹双桂+唐文勇

摘要: 为提高弯管成形的数值优化效率,解决小半径弯管生产困难的问题,采用基于Python的Abaqus脚本接口和用户图形界面工具包进行脚本功能及用户界面二次开发,形成专用插件.插件包含弯管成形定义、分析任务提交及成形结果查看等3个模块,为弯管的系列数值实验提供完整、高效且易操作的解决方案.使用此插件进行的数值模拟用时大幅缩短,且所得结果与现场实验吻合良好.

关键词: 弯管成形优化; 数值实验; 二次开发; 插件; 用户图形界面; Python

中图分类号: TG386;TP311文献标志码: B

0引言

为节省空间,工程中倾向于采用弯曲半径与管径之比小于1.5的弯管.小半径弯管在弯制时易产生外侧减薄、内侧起皱和截面扁平化等缺陷.在实际生产中,为获得符合成形标准的弯管,针对每个管径规格,需进行多次生产实验调试.目前,针对此成形过程,可采用Abaqus软件实现数值模拟[1],以减少材料消耗并降低人工成本.

弯管成形的数值实验具有以下特点:第一,弯管成形是包含几何、边界和材料的三重非线性过程,要得到收敛且可靠的结果,需要对参数进行合理设置,数值结果的可靠性依赖于分析人员的经验水平;第二,弯制工艺由管件与6个模具的接触作用实现,成形过程变量繁多,取得较优的模具设置常需要进行系列数值实验[24],而每一次数值实验都包括前后处理及分析过程,耗时很长;第三,Abaqus软件无法直接提供成形指标结果,需用户提取变形后的节点位置自行计算,仅根据软件给出的变形图很难直观地判断缺陷位置.考虑以上特点,本文采用Python及GUI Toolkit语言对Abaqus进行二次开发,形成针对弯管成形数值实验的专用插件.

目前,针对弯管模拟已有一些二次开发工作.[56]这些工作侧重于对软件已有功能的整合,而且只是针对某一部分进行单独开发.本文开发的插件覆盖前处理、工作提交和后处理整个过程,并且基于优化经验添加实用功能,如系列工作连续提交及指标结果写入云图,为弯管成形数值实验提供一整套高效的解决方案,尤其适合系列优化.插件还定制符合工程习惯的界面以简化分析过程,即使没有Abaqus软件基础的用户也可以快速掌握使用.

1Abaqus自定义插件

以Abaqus脚本接口二次开发为主,结合图形界面的定制,形成弯管成形模拟的专用插件.插件程序包括脚本接口文件、图形界面文件和插件注册文件3类.脚本接口文件基于Python语言,直接向内核发送命令,针对建模、分析和后处理全过程实现功能定义.图形界面文件和插件注册文件基于Abaqus GUI Toolkit语言,前者负责对话框(Dialog)的建立,后者负责机制(Mode)的定义和GUI插件注册.机制是连接图形界面与脚本程序的纽带,其对用户输入的数据进行收集检验,形成命令字符串提交至内核.注册命令引用定义的机制,当插件被选中时,相应的GUI机制被激活,同时导入脚本接口程序,为GUI命令的调用做准备.①为描述插件形成思路及各类文件间配合,以前处理模块为例,文件的关键语句见图1.

①Dassault Systèmes Simulia Co. Abaqus GUI Toolkit Users Manual, 2012

图 1程序文件关键语句及插件形成思路

Fig.1Key statements of program file and plugin development idea

2弯管成形优化专用插件

本文开发的弯管成形优化专用插件包含3个模块:弯管成形定义模块、分析任务提交模块和成形结果查看模块,分别实现前处理、工作分析及后处理功能.插件分析流程见图2.

图 2插件分析流程

Fig.2Analysis flow using plugin2.1弯管成形定义模块

在采用Abaqus对弯管成形过程进行模拟时,通常设置接触、弯曲和卸载3个分析步.除管件本身与模具的结构建模外,还需定义管件与6个模具间的多个接触、芯棒与芯球的连接以及各模具在不同分析步中的力和位移边界.此外,还需合理定义分析类型、接触属性、边界条件、网格大小和加速手段并设置输出.在满足功能完整性的前提下,本插件的弯管成形定义模块采用与软件自身不同的思路,对建模流程进行极大简化,同时将具有一定技术难度的分析设置和重复性操作内置在脚本中,无须用户进行定义.手动建模流程见图3,插件建模流程见图4.图 3手动建模流程

Fig.3Flow of manual modeling process

图 4插件建模流程

Fig.4Flow of modeling process using plugin

由图中数字代表的基本操作步数可见,使用插件的操作步数减少近2/3.此外,插件建模基本操作步均为单个数据的输入,较手动建模时需要进行点选、绘图等操作更加简便.一般情况,使用插件建立1个分析文件的用时不超过5 min,尤其是在进行系列优化时,仅需改变个别参数取值即可快速生成一系列优化工作文件,极大地提高数值优化前处理的效率.

界面的定制符合实际实验时的思路,分为基本参数、过程参数和分析设置3个选项卡,见图5.基本参数包含实验时无法或不经常调整的参数,主要是管件与模具自身的尺寸和材料参数;过程参数选择工程中为提高成形质量经常调整的参数.基于优化经验,本插件在模具设置中选择弯曲半径、弯曲角速度、芯棒与管件间隙、芯棒伸出量、压模侧推力及其相对侧推速度作为调整参数.分析设置中对网格、分析步、工作名和储存路径进行定义.用户只需填写以上参数即可自动生成用于提交分析的inp文件.因此,即使没有Abaqus软件操作基础的用户,也可以使用此插件进行高效的模拟工作.endprint

2.2分析任务提交和成形结果查看

单个弯管成形工作耗时很长,而且还常进行系列计算.为有效利用时间,插件在分析任务提交模块添加无人值守时的连续提交功能.用户可以依次选择多个inp文件一并提交,由软件自动在前一个分析任务完成之后提交下一个任务.同时,由于过程文件较大,可以选择计算完毕后自动将其删除.a)基本参数b)过程参数c)分析设置

图 5弯管成形定义用户界面

Fig.5User graphics interface of bended tube forming definition

弯管成形质量由3个指标考察:外侧减薄率It,内侧起皱率Iw和截面扁平度If.指标计算参数见图6,计算方程为If=D1D0

It=t0min(t′)t0

Iw=max(Iws,Iwb)

Iwb=RmaxRminD0

Iws=DmaxDminD0 (1)式中:Iws和Iwb分别为直线段和曲线段起皱率.

图 6成形指标计算示意

Fig.6Schematic of forming indexes calculation

在插件提供的成形结果查看模块中,用户只需选择结果文件,提取数据的时间点和需要显示的云图项,脚本程序会自动提取节点位置信息,按定义计算出指标值,显示在CAE窗口的信息栏,并写入文件.为方便用户观察起皱位置,指导下一步设置调整,插件将起皱高度计算值与节点对应写入结果云图,用户可以随时看到起皱高度的分布云图.模拟工作提交和成形结果查看的用户界面见图7.

图 7工作提交及后处理用户界面

Fig.7User interfaces of job submission and postprocessing

3脚本程序要点

脚本接口程序是插件功能实现的核心.Abaqus脚本接口命令配合Python灵活的数据操作功能,可以方便地实现模型的自动化处理.对应插件的3个模块,分别编写脚本接口程序.脚本程序关键语句及其说明如下.#前处理脚本关键语句

p= mdb.models[′Model1′].Part(name=′PIPE′, dimensionality, type)

a=mdb. models[′Model1′]. rootAssembly

# 创建部件截面

# 截面、参考点、特性、网格

# 部件装配a.Instance(name=′PIPE1′, part=p, dependent=ON)…

edge1 = e1. findAt((bendradiusdiameter/2, (lclampdie+10), 0),)

a.Set(nodes=nodes1, name=′node_pipe_innerline′)

mdb.models[′Model1′].FieldOutputRequest(name=′FOutput1′, …,variables, …)

regionDef=mdb.models[′Model1′].rootAssembly.sets[′node_pipe_innerline′]

mdb.Job(name=job_name, model=′Model1′,…)

mdb.jobs[jobname].writeInput(…)# 建立数组、调整位置

# 分析步、接触、连接单元、边界

# findAt方法选边

# 节点建立数组

# 场输出定义

# 选择节点组为场输出区域

# 定义工作

# 生成用于提交计算的inp文件#工作提交分析脚本关键语句

def scan(dirname, filename, names):

for file in names:

if …:

os.remove(file)

for i in range():

mdb.JobFromInputFile(name = jobqueue [i],…)

mdb. jobs[jobqueue [i]].submit(…)

mdb. jobs[jobqueue [i]]. waitForCompletion()

scan(pathName, jobqueue_real[i], fileall)

os.path.walk(pathName, scan, 0)

# 定义函数进行文件判断删除

# 定义文件判断条件

# 删除文件命令

# 对工作队列循环操作

# inp文件创建工作

# 提交工作

# 前个分析结束前截断代码

# 调用函数

# 路径下文件依次调用函数#后处理脚本关键语句

coord=odb.steps[′bend′].frames[1].fieldOutputs[′COORD′]

for…in…:

if…:

straight.extend([icoord0Values.nodeLabel,ocoord0Values. nodeLabel])

for istraightLabel in straight:

nodein += (istraightLabel, )endprint

for…in…:

if (icoordValues. nodeLabel == istraightLabel):

Hw_in.append(Hw_t)

Hwfield = lastFrame.FieldOutput(name=′Hw′, description=′起皱高度′,…)

Hwfield.addData(position=NODAL, …, labels = nodein, data = Hw_in)

odb.update()

# 提取某时间点节点坐标场输出

# 管件内外侧节点列表循环

# 判断条件

# 写入直线段节点序列

# 直线段/曲线段节点序列循环

# 写入内侧节点元数组

# 内侧节点位移场输出循环

# 位移与节点号对应

# 计算皱高

# 写入皱高列表

# 新建场输出变量

# 添加数据

# 更新结果文件

①Dassault Systèmes Simulia Co. Abaqus Scripting Users Manual, 2012

②Python Software Foundation, Python 2.7.8 documentation3.1前处理

前处理脚本完成自动建模工作,依次进行部件、组装、网格、边界条件、接触和分析步等对象的定义,另将管件内外侧节点分别建立数组并设置输出,供后处理提取数据.脚本接口文件编写可以参考Abaqus软件在GUI建模时生成的rpy文件.[7]需要注意的是,为保证脚本在重复运行时的正确性,需对此参考文件进行修正.例如,在屏幕上进行点选时,Abaqus默认采用内部的编号系统为对象进行标记①,但是模型编辑会改变特征ID,故编写脚本时需使用findAt命令对其进行替换,改用坐标值标记对象.

3.2分析任务提交

分析任务提交脚本接口实现2个功能:任务的连续分析和过程文件的自动删除.其中,连续分析通过循环完成,实现的关键是waitForCompletion方法的使用.②为实现过程文件的自动清理,定义进行文件判断和删除的专用函数,利用系统路径的访问方法对目录中的每个文件依次调用此函数进行判断和删除.

3.3后处理

以起皱率为例说明后处理脚本中进行指标自动计算并将结果写入文件和云图的过程.

使用Abaqus命令访问结果数据库中特定时间步的节点坐标输出项.由于变形后直线段与曲线段的起皱率计算方法不同,使用循环语句将直线段和弯曲段的节点分开配对.采用循环判断分别生成内侧节点元数组和皱高列表.为实现起皱高度的云图显示,新建场输出对象,添加对象节点元数组和相应皱高列表,保存在odb文件中.

4实例

为验证插件的有效性,使用插件对某次现场实验进行模拟分析.目标管件外径为114 mm,厚度为4.5 mm.进行2次现场实验以对比不同的压模侧推力对成形结果的影响:第1次侧推螺栓紧,第2次侧推螺栓松.对应2次模拟时压模侧推力的设置为100和50 kN,其余参数一致.使用插件的“弯管成形定义”模块,生成第1次实验的待提交inp文件,耗时3 min,模型见图8.

图 8插件生成模型

Fig.8Model for plugin generation

以第1次实验为基础,改变过程参数中侧推力的取值,即可生成第2次实验的分析任务文件.之后在“工作连续提交定义”模块选择这2个inp文件,勾选完成后删除过程文件选项后提交.分析完毕后,信息栏中列出被删除的过程文件和工作的接连提交情况,见图9.最后,使用“成形结果查看”模块,选择结果文件、时间点和云图项,插件自动计算指标并写入相应文件,结果同样显示在CAE信息栏,见图9.同时,插件将起皱高度写入结果云图,界面自动转到所选的云图项显示.计算得到的第1次成形后弯管厚度云图见图10,最小厚度的位置和减薄率与现场实验吻合良好,见表1.同时,由起皱高度云图可见,当螺栓紧时,管件后部出现皱高3.7 mm的褶皱,与现场实验结果吻合,见图11.无论是现场实验还是采用插件数值模拟得到的结果均显示,侧推螺栓过紧对弯管成形有负面影响.图 9信息栏

Fig.9Message area

图 10厚度云图

Fig.10Thickness contour

图 11起皱云图和实验对比

Fig.10Comparison of wrinkling contour and experiment

5结论

利用Abaqus脚本接口程序及图形界面工具包,形成针对弯管成形数值优化的专用插件.利用插件可实现以下功能.

1)输入必要的参数值即可自动生成模型,建模时间为5 min以内.在过程参数一栏修改个别参数即可快速生成系列任务文件.

2)支持无人值守时多个分析任务连续提交及过程文件自动删除,可有效利用时间.表 1插件模拟与现场实验结果对比

Tab.1Comparison of results of simulation using plugin and field experiment描述原厚度/mm成形后最小厚度/mm减薄率/%现场实验值插件模拟值现场实验值插件模拟值现场实验值插件模拟值螺栓紧4.400~4.5004.5003.3003.35025.00~26.6725.56螺栓松4.400~4.5004.5003.4003.40922.73~24.4423.44endprint

3)自动计算成形指标,显示在信息栏,写入文件并实现指标云图显示,方便用户观察缺陷产生位置,指导下一步调整.

通过前后处理的自动化和系列工作分析时间利用率的提高,弯管成形数值优化效率得以大幅度提升.采用开发的插件对现场实验进行模拟,所得结果与实际吻合良好.本文给出的插件形成思路和功能开发要点可供其他系列优化数值实验的二次开发参考.参考文献:

[1]ZHAO G Y, LIU Y L, YANG H, et al. Threedimensional finiteelements modeling and simulation of rotarydraw bending process for thinwalled rectangular tube[J]. Mat Sci & Eng: A, 2009, 499(12): 257261.

[2]LI H, YANG H, ZHANG Z, et al. ‘Size effect related bending formability of thinwalled aluminum alloy tube[J]. Chin J Aeronautics, 2013, 26(1): 230241.

[3]LI H, YANG H. A Study on multidefect constrained bendability of thinwalled tube NC bending under different clearance[J]. Chin J Aeronautics, 2011, 24(1): 102112.

[4]LI H, YANG H, et al. Multiple instabilityconstrained tube bending limits[J]. J Mat Proc Technol, 2014, 214(2): 445455.

[5]蒋华兵, 詹梅, 杨合. 基于Abaqus的数控弯管专用前处理模块开发[J]. 航空工程进展, 2010, 1(2): 184189.

JIANG Huabing, ZHAN Mei, YANG He. Development of preprocess module of NC tube bending based on Abaqus software using Python[J]. Adv Aeronautical Sci & Eng, 2010, 1(2): 184189.

[6]冯颖, 杨合, 陈德正, 等. 基于Abaqus/Python的数控弯管专用后处理模块的拓展[J]. 塑性工程学报, 2011, 18(2): 712.

FENG Ying, YANG He, CHEN Dezheng, et al. Abaqus/Pythonbased extension study of postprocessing module of NC tube bending[J]. J Plastcity Eng, 2011, 18(2): 712.

[7]郭霞, 关志东, 刘遂, 等. 基于Python的Abaqus二次开发在层压板修理模拟中的应用[J]. 计算机辅助工程, 2013, 22(4): 3439.

GUO Xia, GUAN Zhidong, LIU Sui, et al. Application of Abaqus secondary development based on Python in simulation of laminate repair[J]. Comput Aided Eng, 2013, 3439.(编辑武晓英)endprint

猜你喜欢

二次开发插件
浅谈基于Revit平台的二次开发
自编插件完善App Inventor与乐高机器人通信
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
基于jQUerY的自定义插件开发
MapWindowGIS插件机制及应用
基于Revit MEP的插件制作探讨
基于Pro/E二次开发的推土铲参数化模块开发