工程设计学报
Vol.10No.6Dec.2003
ABAQUS前处理程序二次开发
在蜂窝材料中的应用
鲍荣浩,卢文浩
(浙江大学力学系,浙江杭州310027)
摘 要:蜂窝材料具有独特的力学性质,其工程应用日益广泛.使用ABAQUS脚本语言开发了一系列程序,用于建立蜂窝材料的几何模型,从而大大提高建模效率,解决了包含大量单元、几何模型很复杂的蜂窝材料建模时的繁琐重复的问题.
关键词:蜂窝材料;ABAQUS;Python
中图分类号:O313;TP311 文献标识码:A 文章编号:1006-754X(2003)06-0330-04
Applicationofsecond-developedABAQUS/Preonhoneycomb
BAORong-hao,LUWen-hao
(DepartmentofMechanics,ZhejiangUniversity,Hangzhou310027,China)
Abstract:Withspecialmechanicalproperties,honeycombisappliedtomoreandmoreareas.Us-ingABAQUSscriptinterface,severalprogramsweredevelopedtobuildgeometricalmodelofcel-lularmaterial.Themodelingefficiencyisimprovedandthedifficultyinthemodelingforthecom-plicatedhoneycombissolved.
Keywords:honeycomb;ABAQUS;Python 蜂窝是由许多平行六棱柱形单元构成的.而蜂窝材料含义比较广,其蜂窝单元可以是三棱柱形、四棱柱形等形状.它们一般相对密度都比较小,是理想的轻质结构材料,可做夹层板的芯层材料,用于航空器械、体育运动器材等.蜂窝材料横向抗压强度比较低,变形能力大,是很好的能量吸收材料,广泛用于各种防撞缓冲的包装盒衬垫.此外,蜂窝材料还具有好的隔热性能,因而也有其他的广泛用途[1,2].
随着对蜂窝材料性能研究的深入和蜂窝结构制作工艺的进步,蜂窝材料在工程中的应用日益广泛.研究蜂窝材料经常需要使用ABAQUS等有限元软件进行各种数值模拟,然而在用有限元对蜂窝材料进行各种数值模拟,特别是对结构的参数进行优化时,经常会遇到一些困难:由于蜂窝材料包含大量单元,几何模型很复杂,对于前处理功能比较差的ABAQUS/CAEGUI来说,用手工建立有限元几何模型会花费很多的精力.
本文要做的就是利用蜂窝材料中单元几何形状
的相似性,对ABAUQS前处理程序进行二次开发,用ABAUQS脚本语言开发一段程序.有了这样一段程序,用户只需输入单元和材料的几何参数,即可自动生成所需蜂窝材料的几何模型,不必再一个一个单元手工去画了,能节省大量时间和精力,提高工作效率.
1 ABAQUS,Python简介
ABAQUS是国际上最先进的大型通用有限元计算分析软件之一,具有很好的模拟性能.它拥有大量不同种类的单元模型、材料模型等.
ABAQUS/CAE模块是一个完整的ABAQUS环境,提供一个简单一致的接口,可以用来创建、提交、监视和评价ABAQUS模拟所得到的结果.Python是一种面向对象的程序设计语言,ABAQUS的脚本接口是Python语言的一个扩展,可以利用ABAQUS脚本接口,绕过ABAQUS/CAEGUI,直接对ABAQUS内核进行操作.可以用
[3]
收稿日期:2003-07-24.
作者简介:鲍荣浩(1969-),男,副教授,博士,从事结构冲击动力学、多胞材料、智能交通系统等研究,
E-mail:wenhao-lu@hotmail.com; 第6期
鲍荣浩,等:ABAQUS前处理程序二次开发在蜂窝材料中的应用·331·
Python语言编制ABAQUS脚本接口可以执行的程序[4,5].ABAQUS脚本接口即是一个基于对象(object)的程序库.脚本接口中的每个对象都拥有相应的数据成员(data)和函数,对象中的函数专门用来处理对象中的数据成员.在Python中,这些函数被称为相应对象的方法(method),用来生成对象的方法被称为构造函数(constructor).在对象被创建后,可以使用该对象提供的方法来处理对象中的数据成员.特别地,还可以使用setValues()方法来修改对象中的数据成员.
ABAQUS对象模型是指ABAQUS脚本接口中的各种对象类型之间的层次结构和相互关系.ABAQUS脚本接口对Python语言的扩展,主要体现在一系列的ABAQUS对象类型,以及基于这些对象的方法(method)上.ABAQUS大约定义了500个对象类型,这些对象类型之间的关系比较复杂.一般将这些对象类型分为3类,如图1所示.其中,Session对象用来定义viewport、远程队列、用户定义的视图等.Mdb对象是保存在模型空间中的对象.声明语句fromabaqusimport*创建了一个名为mdb的Mdb对象.Mdb对象包括model对象和job对象.而model对象又包含part对象、section对象、material对象、step对象等等.model对象类型几乎包含了建模编程所需要的所有对象类型,是要主要考虑的对象类型.
[4]
图2 典型蜂窝材料的剖面图Fig.2 Typicalhoneycombs'section
图3 单元的形状和参数Fig.3 Cell'sshapeandparameter
生成part并以图形窗口的形式显示结果.
在程序的开始处引入几个模块,对于使用频繁的模块abaqus,abaqusConstants,将它引入全局名子空间,在程序中这些模块中的变量名可直接引用,abaqus模块引入了一些基本的ABAQUS对象,也提供了一个名为mdb的缺省的模型空间.abaqus-Constants引入了ABAQUS定义的一系列符号常量;对于使用不频繁的模块part,sketch,random,仍将其变量名限于模块名子空间,在程序中引用这些模块中的变量,需要以模块名为前缀.并创建一个名为Model-1的模型,同时专门定义了变量my-Model为它的别名.
在程序中,需要用户输入的参数有:模型的长
图1 ABAQUS对象模型Fig.1 ABAQUSobject'smodel
度、宽度及深度.对此ABAQUS提供了函数get-Input()用来和用户进行交互.
根据用户输入的材料大小,来计算合适的图纸大小.这需要创建一个sketch,并专门定义了一个变量mySketch作为它的别名.
计算单元的数量及确定画图的起始坐标时,基本的思想就是用单元尽量填满指定的模型范围.蜂窝单元必须是整数,所以这里计算的单元数最后用强制类型转换将其变成整型.为了保证模型图形位于图纸的中央,由于图纸中央的坐标是(0,0),令起始坐标为模型大小的1/2.
接下来绘制sketch.图4给出了蜂窝材料模型的结构,其中w,h都是根据用户输入可计算出来2 ABAQUS前处理程序的二次开发
2.1 蜂窝材料模型的自动生成
本文要研究的是六边形的蜂窝材料模型,需用参数a,b和H来确定单元的形状和大小,如图2和图3所示.
使用ABAQUS脚本进行蜂窝材料建模的基本框架大致是:先做一些准备工作(引入模块、创建模型空间、用户输入),然后创建并绘制sketch,最后·332·
工 程 设 计 学 报第10卷
的辅助参数.在绘制每一层时,只需绘制顶端的边和竖边.顶端边的绘制非常简单,因为相应的点都是在本层中计算得到的.
此外,蜂窝材料模型每一行并不完全一致,奇数行与偶数行的起始坐标相差w/2,这个问题可以在外层循环中解决.在外层循环中,程序先判断是奇数行还是偶数行,之后把相应的起始坐标值赋给xline.
竖边的绘制需要用到listBottom,而listBot-tom就是前一层中的listTop.对于相邻行的错位,
图4 蜂窝模型sketch的绘制
在奇数行,错位是向左的,必须在listBottom的最前端插上一点,这时还少一条底端的边,用Line()函数就可以画上相应的底边.同理,在偶数行,错位是向右的,在listBottom的末尾插上一点,然后画上相应的底边.然后,通过给出索引信息(idx)来处理这个加出来的点.
做好了sketch,再做part.程序先定义一个名为PartA的part,并专门定义了一个变量myPart作为它的别名.之后调用函数将绘制好的sketch伸展(extrude)成一定深度(由用户定义)的三维图形.最后,创建一个名为Viewport:1的viewport,用来显示这个part,并设置了显示参数,以便于观察.2.2 自接触的实现
在ABAQUS中,自接触用来描述一个surface的不同区域的互相接触,这将避免在实际模拟中可能会出现的一个面穿过另一个面的情况.在自接触
Fig.4 Protractofhoneycombmodel'sketch
蜂窝材料模型在结构上有两大特点.首先,必须一一指定每个六边形的每个角点,将相应的角点连起来作为边.其次,蜂窝材料模型的角点和边大都不只属于一个单元,不能以单元为单位来绘图,否则可能会把角点和边画多次,这在ABAQUS/CAE中是不允许的.本研究中主要以边的绘制来组织程序.
先绘制边.如图5所示,程序先定义一个数组,依图中的序号顺序把各点的坐标放到数组中,之后用sketch模块的Line()函数把相邻序号的点连起来.
图5 边的绘制Fig.5 Protractoftheledge
的定义中,要用到face,side和surface几个概念:face是ABAQUS/CAE图形中“面”的一种内部表示;surface是用户定义的区域,用来表示图形刚体上的某些face的集合;surface的定义可以指定方向(side):SIDE1(正面),SIDE2(负面),或者SIDE12(两面都要).
在ABAQUS里,part不可以直接定义接触.在这里,先把part实例化,程序创建了一个名为In-stanceA的实例,并且专门定义了一个变量myIn-stance作为它的别名.之后程序定义一个名为Int-Prop-1的交互(interaction)属性,用来描述自接触的性质.接下来程序开始一个单元一个单元地定义
绘制单行单元时,可以定义两个数组listBot-tom,listTop,分别表示顶端的角点和底端的角点,如图6所示.然后将listBottom和listTop相应的偶数点用Line()函数连起来即得竖边.
图6 单行单元的绘制Fig.6 Protractofarowofcells
绘制多行单元时,将模型按y方向分层.如图4所示,每一层虽然并不是完整的单元,但总层数与总行数yNum仍然是一致的,所以外层循环仍可用yNum控制.自接触.
如图7所示的蜂窝材料模型,在ABAQUS/CAE内部一个单元被分成了6个face即单元的6条边.要把这6条边组成一个surface.可以通过函数findAt()来实现.findAt()只需face上一点即可找到该face.如图7,在6条边上分别选了一个点,即点1、点2、点3、点4、点5、点6.另外,如图所 第6期
鲍荣浩,等:ABAQUS前处理程序二次开发在蜂窝材料中的应用·333·
示点1、点2、点6缺省的面方向(SIDE1)是向内的,直接赋值即可;而点3、点4、点5缺省的面方向(SIDE1)是向外的,应指定面方向为SIDE2.有了surface的定义,就可以定义自接触.按单元的行列号来命名生成的自接触.最后将定义好自接触的蜂窝材料模型在viewport中显示出来.
4 结 论
本文所提出的对于ABAQUS系统的二次开发,利用了ABAQUS脚本接口及Python语言,可以有效实施对程序的控制和文件的管理.既充分利用了ABAQUS提供的开发模块,深入到ABAQUS系统内部,实现了系统功能的要求,又利用了系统资源,从而大大提高开发效率.在分析包含大量单元、几何模型很复杂的蜂窝材料的力学性能时,解决了繁琐重复的建模问题.参考文献:
[1]HUAYun-long,YUTong-xi(华云龙,余同希).Me-chanicalbehaviorofcellularsolids[J].AdvancesInMechanics(力学进展),1991,21(4):457-469.(inChi-nese)
[2]HONIGA,STRONGEWJ.Dynamicbucklingofan
imperfectelastic,visco-plasticplate[J].International
JournalofImpactEngineering.2000,24(9):907-923.
[3]Hibbitt,Karlsson,Sorensen.ABAQUSScripting
User'sManual.Version6.3[M].Pawtucket,USA:
HKS.2002.
[4]Hibbitt,Karlsson,Sorensen.ABAQUSScriptingCom-mandReference.Version6.3[M].Pawtucket,USA:HKS,2002.
[5]WESLEYJChun.CorePythonProgramming[M].
USA:PrenticeHallPTR,2001.
图7 蜂窝材料模型自接触的定义Fig.7 Definitionofhoneycombs'self-contact
3 应用实例
应用上述的二次开发程序,对蜂窝材料进行了实体造型,再进行有限元网格划分,网格大小都取为3.0mm,获得了良好的结果(图8).
图8 带网格的蜂窝材料模型效果图
(a=10.0,b=10.0,H=60,材料大小150mm×100mm×20mm)
Fig.8 Meshedhoneycomb'smodeleffectivechart
(a=10.0,b=10.0,H=60,materialsize:150mm×100mm×20mm)
因篇幅问题不能全部显示,请点此查看更多更全内容