APP下载

基于Python 的ABAQUS 二次开发在复合材料层合板冲击建模中的应用

2020-10-09陈芳育李进邱玮桢吕泉江

装备环境工程 2020年9期
关键词:铺层弹头复合材料

陈芳育,李进,邱玮桢,吕泉江

(中国直升机设计研究所,江西 景德镇 333001)

复合材料具有比强度高、比刚度高、抗疲劳性能好、可设计性强、破损安全性能好、工艺性好等优点,在航空航天工程、武器装备技术、海洋工程、生物工程等[1-4]领域得到了广泛的应用。复合材料结构在生产制备以及使用过程中,容易受到各类冲击损伤,很多学者[5-12]对复合材料的冲击损伤机理进行了大量研究。ABAQUS 作为有限元分析的一种常用软件,在复合材料冲击仿真和损伤分析领域有着非常广泛的应用[13-16]。

然而,复合材料结构冲击损伤建模较为复杂。建模过程中,除了要分析复合材料铺层角度和顺序外,还要考虑弹头形状、尺寸和速度等因素的影响。这导致了建模时间的大量增加,同时对操作人员的熟练程度要求很高。笔者采用Python 脚本语言对ABAQUS进行二次开发,建立了复合材料层合板和弹头快速建模程序,将需要修改的变量参数化,实现自动建模,网格划分,装配关系和约束关系建立等工作,避免了重复建模,提高了效率,具有较强的可操作性。

1 Python 语言在ABAQUS 二次开发中的应用

ABAQUS 软件允许用户根据自己的需要编写子程序,具有很强的通用性和扩展性。通过编写的子程序可以调用GUI 工具,执行ABAQUS 角本命令,从而实现模型的修改[17-19]。首先,采用Python 语言编写程序;然后,将这些程序传输给ABAQUS 内核;最后,内核将逐行解释程序命令,并进行模型操作。

Python 脚本接口与ABAQUS 的通信关系如图l所示。首先,Python 解释器将图形用户界面、命令行接口和脚本传递到ABAQUS 内核执行并在系统中生成*.rpy 文件,用于存储所有命令。与此同时,进入到ABAQUS 中的命令转换为INP 文件,再经过ABAQUS求解器进行分析,最后得到输出数据库文件。

图1 Python 与ABAQUS 的通信关系Fig.1 Communication relationship between Python and ABAQUS

采用Python 语言编写代码,会形成后缀名为*.py的脚本文件。下面三种方法可运行Python 文件,实现脚本程序和ABAQUS 程序处理的衔接。

1)采用ABAQUS 软件界面接口运行脚本文件的方法为:在ABAQUS 软件界面中寻找run script 菜单条,然后输入指定的py 文件,即可运行脚本文件。

2)采用命令行接口运行脚本文件的方法为:在命令行中输入abaqus cae script=*.py,即可运行对应的脚本文件。

3)采用ABAQUS/CAE 界面命令行接口(CLI)运行脚本的方法为:在命令行接口中单行/多行/程序块输入即可运行脚本文件。此外,也可采用命令exefile(‘.py')的形式实现脚本文件运行。

2 复合材料层合板冲击二次开发

2.1 系统建模界面

复合材料层合板建模主要分为三个模块:Geometry Parameter(几何参数)、Layup Parameter(铺层参数)、Interlaminar Effect(层间效应),如图2—4所示。Geometry Parameter 界面可设置复合材料层合板的长度和宽度、单元类型和网格系数。Layup Parameter 界面可设置铺层材料、单层厚度和角度。Interlaminar Effect 界面可设置cohesive 参数,定义层间界面单元。

弹头建模通过定义弹头的参数(Parameter),完成快速建模,其参数包含弹头的长度、半径、网格密度、材料等。分析步(Step)模块界面可直接输入步长,接触属性(Contact)模块可直接输入摩擦系数。如图5 所示。

图2 Geometry Parameter 界面Fig.2 Geometry Parameter interface

图3 Layup Parameter 界面Fig.3 Layup Parameter interface

图4 Interlaminar Effect 界面Fig.4 Interlaminar Effect interface

图5 弹头建模、分析步及接触属性界面Fig.5 Projectile modeling, step and contact interface

2.2 编程思路和程序代码

复合材料层合板冲击建模的程序包含 3 个Python 文件。Damagemodel.py 包含核心程序代码,是主控文本程序;DamagemodelDB.py 是图形界面编辑的程序, 可实现各种交互输入界面的定制;Damagemodel_plugin.py 将建模文件和图形界面进行衔接。将Plug-in 程序放在ABAQUS 安装文件夹中的abaqus-plugins 目录下,启动ABAQUS 软件,进入Plug-ins 菜单栏,就可以非常方便地创建模型。

Damagemodel.py 采用模块化程序设计,编程的思路如下:

1)复合材料层合板建模。首先,根据输入几何参数建立层板基本的长宽尺寸,根据定义的节点对面进行切割,定义单元类型;然后,定义铺层数量,在添加材料属性的同时,为每一个复合材料铺层定义方向和基本厚度。层间界面单元不定义方向。

2)弹头建模。定义弹头为半圆头弹头,输入高度和半径参数定义弹头基本尺寸,然后采用Global Mesh定义网格尺寸对模型进行划分,并赋予材料属性。

3)复合材料层合板和弹头程序模块建立关联:装配、接触和仿真过程定义等。在程序设计中,将弹头轴线与球面的交点和层合板上的表面中心点定义为接触点。接触类型为一般接触,可定义摩擦系数,最后根据计算需求定义步长。

4)自动设置作业,提交计算。

建模主要使用了 mdb 类中的 models、Part、ConstrainedSketch 和rootAssembbly 等。部分解释和代码如下:

#导入必要的模块和常量

from abaqusGui import mdb

Import part

…………………

#定义主函数

Sketch_func( ) #草图函数

Part_func( ) #零件函数

Assembly_func() #装配函数

………………….

#根据草图生成实体

Part.Solid(……)

…………………

#关联建立

Assembly(Patr1, Part2, ……)

…………………

为实现建模文件和图形界面的衔接,Damagemodel _plugin.py 主要完成数据接收、传递和命令函数处理,部分程序如下:

#导入必要的模块和常量

from abaqusGui import *

from abaqusConstants import ALL

#调用函数

class Damamgemodel_ plugin(AFXForm):

…………………

toolset.registerGuiMenuButton(……)

………………………

DamagemodelDB.py 设置和定义了设计所需的控件,如文本框、按钮和表格等,从而获取用户的输入,部分程序如下:

# 定义对话框,调用基类初构函数:

def __init__(self, form):

AFXDataDialog.__init__(………)

3 算例

对尺寸为150 mm×100 mm 的复合材料层合板进行冲击试验。铺层为[02/45/02/-45/02/45/02/-45]S。弹头直径为16 mm,采用6.67 J/mm 的冲击能量对层合板进行冲击。

根据实例需求,在二次开发的系统界面输入相关的参数,快速建立有限元模型,并自动定义好装配关系和约束条件等,如图6 所示。从图6 中可以看出,建立的弹头和层合板模型均自动完成网格划分,并分配在“Instance” 里,自动完成了装配。弹头为刚体,弹头和层合板的接触关系为一般接触。

图6 模型建立Fig.6 Modeling

在快速建模完成的基础上,将Hashin 失效准则等[14, 20]作为判据,对冲击过程进行模拟。冲击前和冲击过程的模拟如图7 所示。冲击过程中,层合板冲击面产生凹坑,背部凸起。图8 为层合板正反面的变形。从图8 中可以看出,模拟结果与试验结果趋势一致。表1 绐出了冲击后的损伤深度和面积仿真结果与试验结果的比较,仿真深度与实测深度误差为0.2 mm,该误差由两方面原因造成。一方面,为实现简易快速建模,笔者用了较为简单的网格划分方式,冲击区网格划分不够细致,导致计算上存在一定误差。另一方面,试验件的损伤深度采用手工测量,损伤深度比较浅,导致误差较大,为4.2%。除了建模方法和算法的原因外,客观上由于层压板的铺层较多,铺层情况较为复杂,造成了误差。从整体上看,模拟结果与试验结果较为接近,表明快速建模为后续冲击模拟提供了有效的支持。

表1 损伤结果Tab.1 Damage result

图7 冲击过程的模拟Fig.7 Simulation of impact process: a) Before impact; b) Impact process

图8 层合板正、背面变形Fig.8 Front and back deformation of laminates: a) simulated front;b) front of test specimen; c) simulated back; d) back of test specimen

4 结论

1)经二次开发的程序界面不仅能实现复合材料层合板的几何参数、铺层参数及层间效应等的参数设计,而且能对弹头的参数 、冲击的分析步和接触属性进行参数设计。

2)采用模块化的思路进行程序设计,对复合材料层合板和弹头分别进行定义,建立两者的关联(装配、接触等),设置作业自动提交计算,可实现快速建模。

3)在完成快速建模的基础上,对冲击过程进行模拟。建模方法、网格划分、测量误差和试验件复杂度高等原因造成仿真结果和和试验结果存在一定误差。

4)为实现简易快速建模,笔者采用了较为简单的网格划分方式,冲击区网格划分不够细致,导致计算上存在一定误差,但从整体上看,模拟结果与试验结果较为接近,表明快速建模可以为后续冲击模拟提供有效支持。

猜你喜欢

铺层弹头复合材料
热身管下小口径枪弹弹头壳材料对其膛内运动的影响规律
夹芯复合材料加筋板真空和水中自由振动分析
基于阶梯函数插值模型的复合材料层合板铺层优化设计
基于铺覆模拟的复合材料螺旋桨叶片分区域铺层优化
浅谈现代建筑中新型复合材料的应用
某9 mm 手枪弹侵彻MDF 的弹道特性*
国产复合材料预浸料过程控制的认识与实践
先进复合材料制造及过程控制技术
铺层参数对复合材料电池箱盖模态和稳定性的影响
泽州雪花铺层馍