e-works数字化企业网  »  文章频道  »  研发数字化  »  CAE

ABAQUS二次开发在某多管火箭炮挂架设计中的应用

2010/5/24    来源:e-works    作者:李士军  曹向东  朱孙科      
关键字:ABAQUS  Python  多管火箭炮挂架  数值模拟  
火箭炮挂架是火箭炮发射系统的重要组成部分,为了使该挂架的设计达到一个合理的设计要求,在设计阶段需要根据有限元计算结果反复修改设计。本论文利用Python脚本语言二次开发了针对火箭炮挂架的ABAQUS前处理模块和求解模块,能够使设计人员通过简单的操作,快速地建立火箭炮挂架的有限元模型并计算分析挂架是否满足设计要求,有效地解决了火箭炮挂架在研制阶段的设计-分析-修改的重复繁琐问题,缩短了武器研发周期。

1 引言
    火箭炮挂架是火箭炮发射系统的重要组成部分,火箭炮定向管安装在挂架上,火箭炮挂架与火箭炮转塔连接。火箭炮挂架在火箭弹发射过程中主要受到火箭弹发动机产生的燃气流冲击力,挂架的刚度和强度是主要的设计目标,特别是挂架刚度对火箭弹初始扰动有重要的影响。对火箭炮挂架进行数值模拟,能够代替传统的反复试验和修改设计,可以大大节省设计成本和缩短实验周期。使用有限元软件对挂架进行强度数值模拟,可以得到火箭弹发射时挂架最大的变形和应力应变场等数据,从而检验设计是否达到设计要求。经过多次调整参数的数值模拟,可以得到挂架各部件的不同厚度,从而达到减重的目的,降低成本,提高武器的质量和性能。
    ABAQUS软件是一种功能强大的通用有限软件,可以分析复杂的固体力学和结构力学系统,具有非常强的非线性计算能力。但是对于普通的设计人员来说,没有一定的力学知识很难掌握这个软件。因此设计人员把火箭炮挂架设计完后必须交给专业CAE分析人员做力学计算分析,然后CAE分析员把分析结果和修改意见交给设计人员,设计人员再改进设计,如此反复多次才能使设计达到一个合理的要求。
    本文针对此情况,对ABAQUS进行二次开发,给设计人员开发一个针对某火箭炮挂架的程序,设计人员只要输入参数,软件会自动完成建模并计算求解,让工程设计人员自己检验设计是否达到设计要求,缩短武器的设计周期。
2  ABAQUS及其前后处理二次开发
2.1 ABAQUS软件与Python语言

    ABAQUS软件具有非常强的通用性和计算模拟能力,拥有大量丰富的单元类型和材料模型。一般来说它具有三个模块ABAQUS/CAE(前后处理模块)、ABAQUS/Standard(隐式分析求解器)和ABAQUS/Explicit(显式分析求解器)。第一个模块是有限元前后处理模块,后两个模块是两个不同求解方法的求解器模块。
    Python语言是一种开放源代码、免费、没有版权可以自由传播的语言。它的核心引擎体现了全面的面向对象的思想。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。
    用户在使用ABAQUS/CAE的图形化界面建立模型时,每个操作都以Python语言产生相应命令交给ABAQUS/CAE Kernel内核进行处理,内核负责解释这些命令并执行相应的操作。使用Python语言编写的包含脚本接口命令可以自动实现重复性的建模、模型修改、提交计算、访问结果数据库等功能。Python语言命令与ABAQUS/CAE的交互关系如图1所示。

 

图1 ABAQUS脚本命令与ABAQUS/CAE

2.2 ABAQUS的二次开发
    ABAQUS 二次开发有如下几种途径:(1) 通过用户子程序可以开发新的模型,控制ABAQUS 计算过程和计算结果; (2) 通过环境初始化文件可以改变ABAQUS 的许多缺省设置; (3) 通过内核脚本可以实现前处理建模和后处理分析计算结果; (4) 通过GUI 脚本可以创建新的图形用户界面和用户交互。本文用第3 种方法,编写python 脚本控制ABAQUS 内核实现自动前处理;利用第4种方法,编写对话框实现参数的输入。
    ABAQUS脚本接口是一个基于对象模型的程序库,脚本接口中的每个对象都有相应的数据成员和函数。ABAQUS 对象模型是指ABAQUS 脚本接口中的各种对象类型之间的层次结构和相互关系。ABAQUS 的对象类型很多, 一般分为3 类, 即Session对象、Mdb对象和Odb对象,如图2所示。其中Session 对象用来定义viewport 、远程队列、用户定义的视图等; mdb 对象是保存在模型空间中的对象, 包括Model 对象和Job对象;Odb 对象是结果数据库对象, 包含了模型数据和结果数据。

 

图2 ABAQUS对象模型

3.3 火箭炮挂架模型的CAE二次开发
    使用ABAQUS 进行数值模拟的一般步骤是,根据所模拟的问题类型进行建模, 包括建立几何模型、分配材料的属性、施加载荷和边界条件、设定分析步和划分网格等; 建模完成后形成输入文件提交给ABAQUS/Standard 或ABAQUS/ Explicit进行计算; 最后对计算结果进行后处理。
3.3.1 输入参数的确定
    火箭炮挂架是火箭炮发射系统的重要组成部分,如图3所示,主要是通过角钢、带孔平板等部件焊接而成,主要有三部分:火箭炮前中后三个挡板、挂架四周的加强板、与高低俯仰轴相连接的法兰盘。在挂架设计时可能会修改的参数有:每个箱的定向管数量、定向管的间距、定向管的长度、三个挡板的长与宽、前中后三个挡板的厚度、三个挡板的间距、挂架四周加强筋的厚度等。为方便程序的设计,减少输入参数,把挂架水平放置,以前挡板的中心为原点,所在平面为x-y平面,挂架伸长方向为z向,输入参数都以这个坐标系为基准。
3.3.2 参数输入对话框的设计
    为便于工程设计人员使用程序,挂架结构参数的输入以配有尺寸参数图形的提示对话框出现,这样能够使设计人员很直观的输入参数,不易出错。ABAQUS本身自带的RSG(Really Simple Gui)模块能够快速地、直观地开发所需的对话框。本文火箭炮挂架的RSG对话框主要包括:等向视图参数输入对话框、前视图参数输入对话框、俯视图参数输入对话框、仰视图参数输入对话框、左视图参数输入对话框、右视图参数输入对话框和单元-载荷-求解控制对话框。其中前六个对话框主要是用来输入建模所需的结构尺寸参数、位置参数、定向管的排列参数等,最后一个对话框用来输入单元大小参数、载荷大小、求解控制参数等,其中前两个对话框如图4所示。

 

图3 火箭炮挂架

 

图4 火箭炮挂架建模程序对话框

    当模型参数输入后,点击“OK”,对话框会向ABAQUS/CAE Kernel 发送一个自定义的函数命令HJP_BOX。HJP_Box命令是根据火箭炮挂架结构参数而自定义的函数,其格式如下:
    def  HJP_BOX(Num_Pipes_X,Num_Pipes_Y,Box_Length,…),HJP_BOX函数封装了ABAQUS中的建模、单元划分命令、求解计算命令等,向Kernel内核提交后,就会在ABAQUS/CAE中生成模型三维图形、进行单元划分与求解计算。   
3.3.3 建模函数编写
    HJP_BOX函数是按照有限元分析的一般步骤编写的,即:建立几何模型、单元网格划分、加载、求解与后处理分析结果等。
在建立火箭炮挂架模型之前,首先通过下面命令创建一个名字为Model_Box的mdb对象:
    myModel=mdb.model(name=’ Model_Box’)
    接下来的所有的与模型有关的程序命令,都使用mdb这个模型类中的命令。
    ABAQUS/CAE通过拉伸、旋转、扫略等操作生成三维模型,在进行这些操作之前首选要建立截面草图。本程序建模顺序是:拉伸草图生成前挡板、利用前挡板草图拉伸生成中间挡板和后挡板、拉伸草图使三个挡板四周生成封闭、通过剪切拉伸操作生成上下左右四个面的加强筋,通过在右表面拉伸草图生成与高低俯仰轴连接的法兰盘。现以前挡板建模拉伸为例,详细说明拉伸过程。根据输入的数据,可以确定定向管的中心坐标、三个挡板的草图轮廓坐标,加强筋截面在前挡板的投影轮廓的坐标等数据。程序如下:
mdb.models[Model_Box].ConstrainedSketch(name=Plane, sheetSize=Box_Width*2)
mdb.models[Model_Box].sketches[Plane].rectangle(point1=(-Box_Width/2.0,-Box_Height/2), point2=(Box_Width/2.0,Box_Height/2))
mdb.models[Model_Box].sketches[Plane].CircleByCenterPerimeter(center=(Circle_Center_X, Circle_Center_Y), point1=(Circle_Center_X,Circle_Center_Y+Pipe_Radius))
mdb.models[Model_Box].sketches[Plane].linearPattern(angle1=0.0,angle2=90.0, geomList=(
mdb.models[Model_Box].sketches[Plane].geometry[6], ), number1=Num_Pipes_X, number2=Num_Pipes_Y, spacing1=Dist_Pipes_X, spacing2=Dist_Pipes_Y, vertexList=())
mdb.models[Model_Box].Part(dimensionality=THREE_D, name=Box, type=DEFORMABLE_BODY)
    第一个命令是建立一个草图平面,并设定草图平面的大小;第二个命令是指定两点创建一个矩形;第三个命令是指定圆心位置画一个圆;通过第四个命令把这个圆阵列为多个圆;最后一个命令是根据草图拉伸一个可变性的三维体,如图5所示。

 

图5 前挡板草图和模型

    三维模型建立完后,通过适当的分割操作,把三维模型分割成多个相连的体,这样网格划分比较容易控制,生成的单元质量比较好,不易出现扭曲的单元。在进行单元划分之前,必须对整个模型的大小进行控制,通过下面命令
    mdb.models[Model_Box].parts[Box].seedPart(deviationFactor=0.1, size=10.0)指定单元网格大小为10。然后再利用命令
mdb.models[Model_Box].parts[Box].generateMesh()
    生成单元网格,单元为六面体单元,共有17007个,35964个节点,网格模型图如图6所示。

 

图6 火箭炮挂架单元

3.3.4 加载和计算 
    火箭炮在发射时候挂架受到的力主要有三个:弹与管的碰撞力、燃气流对挂架前挡板的作用力和重力。其中燃气流冲击力是弹管碰撞力的十倍~甚至是几十倍,因此可以忽略火箭弹对定向管的碰撞力,只考虑燃气流对挂架的冲击力和重力。通过换算把燃气流冲击力转换为前挡板面上的均布压力,大小为0.15MP,通过下面的命令施加在前挡板上:
mdb.models[Model_Box].Pressure(amplitude=UNSET, createStepName=Step-1,
    distributionType=UNIFORM, field=, magnitude=0.15, name=Load-1, region=
Region(Front_Press,)))
上述命令中的参数Front_Press为指定的前挡板面。
    对模型施加载荷与约束后就可以向ABAQUS/Standard提交作业,进行分析。通过命令
mdb.jobs[Job-1].submit(consistencyChecking=OFF)
    向ABAQUS/Standard提交作业进行计算分析。通过计算可以得到相应的计算结果,等效应力与位移云图如图7所示。

  

图7 火箭炮挂架的等效应力云图与位移云图

4 结论
    本文利用Python语言在ABAQUS软件中开发了某多管火箭炮挂架的通用分析程序,详细说明了开发过程。只要挂架拓扑结构不发生变化,程序可以适用于不同口径、不同管数火箭炮挂架的设计中。本文所二次开发的火箭炮挂架分析程序,能够使设计人员在不熟悉有限元软件的情况下,通过很简单的操作就可以分析其挂架设计是否满足要求,能够大大缩短设计周期。

责任编辑:杜凯
本文为e-works原创投稿文章,未经e-works书面许可,任何人不得复制、转载、摘编等任何方式进行使用。如已是e-works授权合作伙伴,应在授权范围内使用。e-works内容合作伙伴申请热线:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐