基于Python的ABAQUS层压板参数化建模

2019-12-30 01:38唐维康泽毓杨婷曾凤蒋莉
成都工业学院学报 2019年4期

唐维 康泽毓 杨婷 曾凤 蒋莉

摘要:为了提高层压板在ABAQUS仿真中建模的效率与准确性,提出利用Python语言对ABAQUS二次开发进行层压板参数化建模的方法。基于ABAQUS有限元软件,采用Python编写脚本文件对ABAQUS内核文件直接操作,准确而高效地完成层压板的多层材料复合建模、材料属性定义、截面创建及截面指派等操作。结果表明:利用Python脚本进行层压板参数建模的方法能快速准确地创建仿真模型,且可以通过Python的建模参数直接完成对仿真模型的修改,使得建模效率大大提高。

关键词:Python; ABAQUS; 层压板; 参数化建模

中图分类号:TH164文献标志码:A

文章编号:2095-5383(2019)04-0017-04

Parametric Modeling of Laminates based on Python in ABAQUS

TANG Wei, KANG Zeyu, YANG Ting, ZENG Feng, JIANG Li

(School of Intelligent Manufacturing, Chengdu Technological University, Chengdu 611730,China)

Abstract:In order to improve the efficiency and accuracy of themodeling of laminate in ABAQUS simulation, a method of parametric modeling of laminates for ABAQUS secondary development using Python language was proposed. The script file written by Python was used to operate the ABAQUS kernel file directly so as to obtain the multi-layer material composite modeling of laminate, definition of material property, section creation and section assignment accurately and efficiently. The results show that the method of parametric modeling with Python script can create simulation model quickly and accurately, and it can modify the simulation model directly through the modeling parameters of Python. The proposed method can greatly improve the modeling efficiency.

Keywords:Python; ABAQUS; laminate; parametric modeling

复合材料层压板由于其比强度大、比刚度高、质轻耐腐蚀等诸多优点,在航空航天、轨道交通等领域应用越来越广泛[1-3]。层压板一般是由多种不同特性的材料按照一定的顺序通过铺层复合而成,因此在对包含有层压板的模型进行各种仿真分析时,层压板的建模就会格外繁琐,必须对其每一层材料进行建模并指定不同的材料属性。当层压板复合层数较少时,可通过三维软件逐层建立模型或直接在有限元软件中逐层创建。而复合层数较多时,手动创建模型会非常麻烦,且赋予材料属性或指派截面如果出现错误将很难检查,且最终会导致仿真失败。

ABAQUS是一款通用性有限元软件,其在解决复杂问题和高维非线性问题优势明显。该软件预留了很多二次接口并可以直接运行Python脚本,以便用户根据自身分析需求更好的使用。王龙等[4]利用二次开发模块USDFLD结合ABAQUS对复合材料层压板的损伤扩展进行了仿真分析。吴向东等[5]采用Python对ABAQUS前处理进行了开发,使其在板料冲压成形时能够更好的输出速度幅值加载曲线。陈彦海等[6]通过使用Python得到了飞机蒙皮连续锤铆的自动分析方法,提高了仿真分析效率。董明鑫[7]采用Visual C++对ABAQUS二次开发,完成了金属板带轧制过程的自动建模与仿真分析。因此,为提高层压板建模效率与准确性,我们提出利用Python语言对有限元软件ABAQUS进行二次开发来完成层压板参数化建模的方法。

1 层压板结构与模型

1.1 层压板结构

層压板是由多种不同材料的薄板复合而成。此处以两种材料的层压板为例,如图1所示。两种材料的薄板交替铺层,以物理或化学的方法压制在一起。每一层的材料属性与几何尺寸都会影响层压板的整体力学性能。

由于层压板的特殊结构,在ABAQUS中建模时必须按照铺层顺序,逐层创建,并对每一层薄板一一创建截面,赋予各层不同的材料属性。建模结构如图2所示。

1.2 层压板建模

为了对比两种建模方法,选用两种材料复合的层压板先在ABAQUS中进行手动建模。层压板模型尺寸20 mm×20 mm的开孔板,厚度2.4 mm,孔半径2 mm,两种层板的厚度分别为0.07 mm与0.05 mm,总共复合20层。其尺寸结构如图3所示。

每创建一层,需要对该层创建截面并指派截面属性,赋予其相应的材料。手动建模需要自下而上完成20层的操作,工作重复度高,且容易出现创建某一层时指派截面属性到另一种材料的混乱情况,也很难检查建模的准确性。

2 Python開发ABAQUS建模脚本

2.1 Python脚本开发

ABAQUS的二次开发一般有两种方式,一是通过子程序接口,采用Fortran语言编写。另一种是脚本接口,采用Python语言。由于ABAQUS的交互本就是由Python编写的,在其软件主界面的命令窗口可以直接运行Python代码,因此采用Python开发更加方便快捷,其脚本文件执行流程如图4所示。

本次开发的脚本主要用于完成开孔板的几何建模、层板自动几何切分、自动创建材料界面以及自动指派各层材料属性。

部分Python脚本代码如下:

modelName=‘Model-1 #模型名称

partName=‘blank #零件名称

Mat_CFRP=‘CFRP #层板名称1

Mathickness_2=‘COHESIVE#层板名称2

length=20#层压板长

width=20#层压板宽度

r=2 #孔半径

Thickness_1=2.4 #层压板板厚

Thickness_2=0.05 #层板1厚度

Thickness_3=0.07 #层板2厚度

layup=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

executeOnCaeStartup()

#绘制草图

mdb1=mdb.models[modelName]

mdb1.ConstrainedSketch(name=‘__profile__, sheetSize=200.0)

mdb1.sketches[‘__profile__].rectangle(point1=(0.0, 0.0), point2=(length, width))

mdb1.sketches[‘__profile__].CircleByCenterPerimeter(center=(0.5*length,0.5*width),point1=(0.5*length, 0.5*width+r))

vertice_1=mdb1.sketches[‘__profile__].vertices.findAt((length, 0.0))

vertice_2=mdb1.sketches[‘__profile__].vertices.findAt((0.0, 0.0))

#自动切分

z=0.0

for i in range(1,len(layup)):

datum1=p.DatumPointByOffset(point=p.vertices.findAt((0.0, 0.0, 0.0), ),

vector=(0.0, 0.0, z+Thickness_3))

z=z+Thickness_3

p.PartitionCellByPlanePointNormal(cells=

p.cells, normal=p.edges.findAt((0.0, 0.0, 0.5*Thickness_3), ), point=p.datums[datum1.id])

#创建层压板材料

mdb1.Material(name=‘laminate)

mdb1.materials[‘laminate].Density(table=((1.7e-09, ), ))

mdb1.Material(name=‘cohesive)

mdb1.materials[‘cohesive].Density(table=((1.6e-09, ), ))

mdb1.materials[‘cohesive].Elastic(table=((30000.0, 15000.0, 15000.0), ), type=TRACTION)

#创建并赋予截面属性

mdb1.HomogeneousSolidSection(material=‘laminate, name=

‘laminate, thickness=None)

mdb1.CohesiveSection(material=‘cohesive, name=‘cohesive,

outOfPlaneThickness=None, response=TRACTION_SEPARATION)

if i==(len(layup)-1):

break

else:

p.Set(cells=p.cells.findAt(((0.5*(length), 0.0,

0.5*Thickness_2+z),),), name=‘cohesive+str(i+1))

p.SectionAssignment(offset=0.0,offsetField=‘, offsetType=MIDDLE_SURFACE,

region=p.sets[‘cohesive+str(i+1)], sectionName=‘cohesive,

thicknessAssignment=FROM_SECTION)

……

2.2參数化自动建模

在ABAQUS命令窗口中直接运行编写好的Python脚本代码,自动完成模型的创建,其结果如图5所示。两种层板的材料在脚本中直接创建并自动完成各材料的截面创建与截面指派。

为检验Python脚本自动建模的准确性,分别对手动建立的模型与Python自动创建的模型进行简要静力学仿真分析,并将计算结果进行对比。载荷及边界条件等设置如下:将层压板模型一侧固定,在层压板表面施加100 N的压力,如图6所示,采用静力——通用分析步,板料网格均采用六面体,类型为C3D8R(八结点线性六面体单元),对层压板进行应力应变分析。仿真计算获得的应力分布结果如图7所示。

由上可知,两种建模方法获得的层压板模型在同一仿真条件下应力分布结果偏差仅为0.01%,说明两种建模方法获得的模型相同。仿真应力数值上的极小偏差是由于ABAQUS对模型进行网格自动划分时,由于板料中心孔的存在,自动划分存在每次均有部分网格大小与结构略有不同的结果。通过对比分析结果,证明了Python自动建模的准确性。采用Python脚本自动进行参数化建模可以直接完成几何模型的建立、材料的创建、截面划分与截面属性指派,可以明显提高仿真建模的效率与准确性,特别在层压板复合层数较大时优势更为明显。

3 结论

本文利用Python语言对ABAQUS进行了二次开发,通过运行脚本文件完成了层压板自动参数化建模、层板材料的创建与材料属性的赋予。通过与手动创建的相同模型进行同一条件下的仿真分析对比可知,利用Python自动创建模型的准确、有效,大大提高了多层复合层压板的仿真建模效率与准确性。在后续仿真分析过程中,如需对模型结构进行修改,只需调整脚本文件中的部分代码或数值即可完成模型更新,提高了仿真分析的效率。

参考文献:

[1]邢丽英,包建文,礼嵩明,等. 先进树脂基复合材料发展现状和面临的挑战[J]. 复合材料学报, 2016, 33(7):1327-1338.

[2]袁慧秀,窦松柏,孙胜平,等. 碳纤维复合材料层压板开孔拉伸静态力学测试研究[J]. 陶瓷学报, 2014, 35(2):159-162.

[3]郑俊,周晚林,姜鑫. 复合材料层压板损伤修复与评估[J]. 机械制造与自动化, 2018, 47(1):84-87.

[4]王龙,段静波,路平. 基于USDFLD二次开发的复合材料层压板损伤分析研究[J]. 军械工程学院学报, 2016, 28(2):72-78.

[5]吴向东,刘志刚,万敏,等. 基于Python的ABAQUS二次开发及在板料快速冲压成形模拟中的应用[J]. 塑性工程学报, 2009, 16(4):68-72.

[6]陈彦海,秦运海,姜春英,等. 基于Python的ABAQUS二次开发在飞机蒙皮锤铆中的应用[J]. 航空制造技术, 2018, 61(16):92-97.

[7]董明鑫. 基于Visual C++与ABAQUS二次开发的过程模拟系统开发[D]. 太原:太原科技大学,2014.

收稿日期:2019-04-25

基金项目:成都工业学院企业专项基金(2018012)

第一作者简介:唐维(1990—),男,助教,硕士,研究方向:板料成形及参数优化,电子邮箱:tangwei.mac@outlook.com