基于Python复合材料单搭接机械连接结构ABAQUS二次开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Python复合材料单搭接机械连接结构ABAQUS二次开发
杨晔楠,胡昌宏,何四海
(中航工业一飞院,陕西省西安市,710089)
摘要:本文采用Python语言对ABAQUS进行二次开发,建立了复合材料单搭接机械连接结构参数化建模模块,可实现单排多钉连接结构有限元模型的快速建立、材料属性的设置,以及零件之间接触的自动生成;并编制了用于参数化分析的GUI(用户图形界面),提供了方便形象的数据输入界面。最后将本文模型的计算结果与试验结果进行对比,钉载分配的最大误差不超过9%,贴片处的应变-载荷曲线非常接近,验证了本文建模方法的正确性。本文二次开发程序提高了工作效率,减小了建模工作量。
关键词:复合材料 单搭接 参数化 GUI
1.概述
复合材料比强度和比模量高,且具备优越的重量特性和疲劳性能,使其在航空航天等领域得到了大量应用,引起了设计技术的重要变革。
在飞机结构中,由于结构设计、工艺和使用维护等要求,必须安排一定的工艺分离面、维修口盖等,从而存在大量紧固件。对复合材料机械连接结构性能进行分析非常必要。而影响其性能的因素有很多,包括结构的几何尺寸、复合材料的铺层以及搭接板的刚度等。为了深入研究这些因素对结构性能的影响,需建立参数化模型以简化步骤、减小设计人员工作量。
ABAQUS软件是国际公认的大型通用非线性有限元分析软件之一,具备丰富的单元库和材料模型库,还为用户提供了专门的二次开发接口,能够实现ABAQUS前处理、后处理的自动化和用户化。ABAQUS脚本接口是基于Python语言定制开发的,Python是一门功能强大的面向对象的编程语言,具备代码简洁、可扩展性强、内置数据结构丰富等特点[1]。
本文采用Python语言对复合材料单搭接连接结构有限元建模过程进行ABAQUS二次开发,并定制了一个用于参数化分析的GUI(用户图形界面),建立了此类结构的参数化分析平台,能够减少大量建模工作,方便快捷的应用于工程实际中。
2.ABAQUS二次开发原理
ABAQUS二次开发包括脚本接口开发和GUI(用户图形界面)开发。
ABAQUS脚本接口直接调用内核,脚本命令经过Python解释器进入ABAQUS/CAE执行,进入ABAQUS/CAE的命令将转换为INP文件,最后经过求解器进行分析,最终得到输出数据库文件。ABAQUS脚本接口在Python语言基础上进行扩展,增加了500个对象类型。一般情况下,ABAQUS 对象模型包括三个对象:Session对象、Mdb对象和Odb对象。其中,Session对象用于定义视图,Mdb对象用于定义模型数据并提交计算,Odb用于模型及分析结果的存储[2]。
GUI是用户界面与内核的数据交互窗口,用户可根据需要,通过创建对话框、列表等控件定制用户界面,实现参数的输入和修改,也可编辑ABAQUS现有图形用户界面。GUI与内核的交互工作原理如下图所示[3]。
图1 内核程序与GUI程序的关系
3.复合材料单搭接连接结构参数化模型
在ABAQUS-Plugins目录下内置一个插件,通过点击该插件,调用单搭接连接结构建模自定义界面。在界面输入相关参数后,执行内核程序,建立有限元模型。实现整个过程需要编制三个文件:Single_Lap_JointDB.py,用于创建用户自定义界面,为内核程序提供输入接口;Single_Lap_JointModel.py,该文件完成有限元模型的自动建立,模型的装配和接触的设定;Single_Lap_Joint_plugin.py用于插件的注册[4]。
3.1 界面介绍
单搭接连接结构界面包括对结构的介绍、几何参数的输入和材料参数的输入三个部分。如图2-图4所示。
几何参数需输入连接板的长度、宽度和厚度,以及螺栓的相关尺寸,包括螺栓头直径和高度,
螺母的直径和高度,钉孔的个数以及端距、间距。几何界面如图3所示。
图2 界面窗口1-结构介绍
在输入材料参数前,需选择连接板的类型,金属板或复合材料板,因此本模型可模拟金属-金属、金属-复合材料、复合材料-复合材料三种不同的搭接方式。根据选择进一步输入材料参数,界面中调用了ABAQUS创建材料的模块,可方便快捷的创建材料。如果连接板为复合材料板,还需输入相关铺层信息,包括每个铺层的材料名称、单层厚度以及各铺层的方向。材料界面如图4所示。
下面列出了部分代码以作说明。
#创建对话框类
class SingleLapJointDB(AFXDataDialog):
#定义函数,创建各类控件
def __init__(self, form):
#调用基类初构函数
AFXDataDialog.__init__(self, form, 'Single_Lap_Joint',self.OK|self.CANCEL)
#定义文本框,进行参数输入
self.L=AFXTextField(p=va, ncols=12, labelText='L:', tgt=form.LKw, sel=0)
……
图3 界面窗口2-几何参数输入窗口
图4 界面窗口2-材料参数输入窗口
3.2 创建有限元模型
有限元模型的建立过程与使用ABAQUS前处理界面建立模型的过程相同。先创建连接板和螺栓零件,划分有限元网格,赋材料属性。然后将各零件装配起来,形成单搭接结构整体有限元模型,进一步创建分析步、定义接触属性,完成所有接触面的接触设定。最后施加边界条件与载荷,可直接进行计算。
建立连接板有限元模型,首先创建二维模型,进行几何划分和网格生成,然后使用网格偏移方法生成基于网格的三维实体模型。
#定义变量函数
def SingleLapJoint(L,……):
#通过二维网格生成三维模型(复合材料板建模)
for i in range(Lay_Number):
p.generateMeshByOffset(…..,totalThickness=layuptable1[i][1])
……
在连接模型里,存在多个零件,需在两个零件接触面定义接触,如果手动设定,工作量较大,通过编制程序,可自动寻找接触面,如下面的程序可定义连接板孔边节点。
#自定义函数,用于寻找与螺柱面接触的孔边节点
def searchObjectByCoords(partObject,xCoord,yCoord,R):
……
return myObjects
#调用自定义程序,建立孔边节点集
for i in range(n):