宋颖,荣继刚,马秋成,黄友剑,王金辉
(1. 湘潭大学,湖南 湘潭 411105; 2. 株洲时代新材料科技股份有限公司,湖南 株洲 412000)
随着我国铁路领域的快速发展,尤其是高铁的飞跃发展,人们对轨道交通的减振效果和降噪要求越来越高。一方面,过多的噪声和过大的振动将影响乘客的舒适性和轨道沿线居民的日常生活;另一方面,噪声和振动也可能损坏车上相关电子设备以及轨道周边建筑物[1]。为了更好地解决这一问题,减振元件将广泛运用于高速铁路和城市轨道上。减振元件使车辆在提高运行速度和增加载质量的同时,还能提高车辆的稳定性和舒适性,降低运行的噪声,减少磨耗件[2]。然而,要使减振元件具有优良的隔振性能和可靠的使用寿命,就必须通过合理的计算设计出减振效果较好的减振元件结构[3]。目前主要是通过结构仿真技术实现减振元件的结构优化设计,这往往需要反复建立减振件的有限元模型,这是一项繁琐而费时的工作[4]。
橡胶堆(图1)作为典型的减振元件,具有良好的减振效果,其广泛应用于车辆转向架和高速磁浮原型车电磁铁模块中。为了更准确和有效地完成橡胶堆结构的优化设计,本文基于ABAQUS的二次开发功能,使用Python语言开发了圆柱形橡胶堆快速建模、计算和结果分析的程序,根据仿真结果能够快速评价不同减振元件的减振效果,并分析了仿真刚度值和经验公式计算刚度值相对于试验刚度值的差异,实现减振元件高效、准确的设计功能。
图1 圆柱形橡胶堆图
如图2所示,设n层圆柱形橡胶堆的半径为r,每层橡胶的高度为h,在受到垂向力时,圆柱形橡胶的垂向刚度K1可根据式(1)计算[5]。
(1)
图2 圆柱形橡胶堆的受载示意图
式中:Ac为橡胶承载面积,Ac=πr2,r为橡胶堆的橡胶半径;n为橡胶堆的橡胶层数;h为每层橡胶原有高度;E为橡胶的弹性模量,根据橡胶的硬度得出;μ1为垂向形状系数,可根据式(2)进行计算。
μ1=1.2(1+1.65×S2)
(2)
式中S为面积比,可根据式(3)进行计算。
(3)
式中Af为橡胶堆的橡胶单层圆周表面积,Af=2πrh。
对橡胶堆进行二次开发的界面开发的方式主要有以下两种[6]。
1)创建Plug-ins插件程序;
2)创建用户应用程序。
对于第2种方法,利用创建其他的应用程序(如Visual Studio、Visual Basic等)对ABAQUS软件进行可视化界面开发,它可以进行一些相对复杂界面的设计开发,并且还可以实现一些Plug-ins插件程序不能实现的功能。但是这种方法所需的程序相对复杂,需要创建新的接口和传入参数,不容易编写程序;而Plug-ins插件程序创建可视化界面相对简单方便。Plug-ins插件程序提供了一些基本控件,用户可以更直观地对可视化界面添加所需的文本框、图片、标题、输入框、下拉选框及相关操作提示等功能,从而快速地建立一个较为友好的可视化界面[7]。因此,本文采用第1种方式进行可视化界面开发,利用ABAQUS软件的GUI工具包中的命令或者借助RSG(Really Simple GUI)对话框构造器开发Plug-ins插件程序。程序可以执行用户所添加的函数,然后通过自制的可视化界面输入相关参数,实现手动进行模型前后处理的复杂操作过程。插件程序基于ABAQUS/CAE中2个各自独立的执行程序Kernel与GUI之间互相通信完成的交互[8-9]。
用户进行界面设计必须在abaqus_plugins文件夹(位于安装目录 empabaqus_plugins)下注册Plug-ins插件程序才能进行。在启动ABAQUS/CAE后,单击“Plug-ins菜单”—“Abaqus”—“RSG Dialog Builder...”。[10]
如图3和图4所示,橡胶堆前处理的仿真模块将设置成Model setting和Material and load setting 两个界面;通过界面的设置和输入相关参数,程序将快速完成几何建模、赋予材料、边界条件、施加载荷及网格划分等操作,并自动将作业提交分析,从而得出所需要的分析结果。
图3 Model setting界面
图4 Material and load setting界面
一个模型进行仿真计算的顺序一般为:建立set,赋予材料和装配;建立分析步和接触属性;施加载荷和划分网格;计算和后处理。本文将按照此顺序编写代码。
橡胶堆是一个有规律的模型。可以通过旋转草图实现。因此首先建立草图,当橡胶堆只有一层的时候,就没有隔板,只有底板、橡胶和顶板3个set;当橡胶堆层数>1时,就有底板、橡胶、隔板和顶板4个set。建立橡胶堆的set大概分为以下几个步骤:
1)程序中可以使用循环语句在草图中阵列某些线段来实现模型的建立,如图5所示的草图。
图5 Sketch
2)通过旋转命令将草图旋转360°得到几何模型。
3)对模型进行切割,将掩码转成index表示,通过对cells的定义来建立set,比如橡胶(rubber)的建立程序如下:
p = mdb.models['Model-1']. parts['Part-1']
c = p.cells
sstr1=c[1∶2]
newstr=sstr1
for i in range(2,Layers+1):
S1=2*i-1
S2=2*i
sstri=c[S1∶S2]
newstr=newstr+sstri
cells = newstr
p.Set(cells=cells, name='rubber')
对之前建立的set进行材料赋予,并在可视化界面的Material and load setting界面中填写材料参数,完成材料赋予;然后对模型进行装配,由于建立的模型只有一个part,所以直接进行装配,不需要添加其他的约束。
计算橡胶堆的轴向刚度,建立分析步,分析步代码实现如下:
mdb.models['Model-1']. StaticStep(name='vertical-load', previous='Initial', initialInc=0.1, nlgeom=ON)
session.viewports['Viewport:1']. assemblyDisplay.setValues(step='vertical-load')
设置橡胶堆切向行为的摩擦系数为0.25,并设置通用接触。
分析步中对橡胶堆load point轴向施加load1的力,添加边界条件时对fixed point进行全约束,打开load point的y方向的自由度。
顶板、隔板和底板都是金属材料,网格属性不需要重新赋予,用初始的C3D8R即可。将顶板、隔板和底板的网格层数设为3。由于橡胶材料的特殊性,需要对橡胶的网格属性重新定义,将橡胶的网格属性定义为C3D8H,在程序中也是通过定义cells的值来定义橡胶网格的属性,部分代码如下:
elemType1=mesh.ElemType(elemCode=C3D8H, elemLibrary=STANDARD)
elemType2=mesh.ElemType(elemCode=C3D6, elemLibrary=STANDARD)
elemType3=mesh.ElemType(elemCode=C3D4, elemLibrary=STANDARD)
p = mdb.models['Model-1']. parts['Part-1']
c = p.cells
cells = c[1∶2]+c[6∶7]+c[8∶9]+c[13∶14]
pickedRegions =(cells, )
p.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2, elemType3))
前处理完成后,ABAQUS将自动在工作目录写入job命令文件并提交作业进行计算;当计算完成后,程序将自动读取ODB文件里的数据,然后将所需要的应力、应变云图和刚度曲线图导出到指定文件夹中,这样就能节约大量的手动操作时间,部分程序代码实现如下:
session.mdbData.summary()
o3=session.openOdb(name='D:/A2019/temp/xjd_10_ceng.odb')
session.viewports['Viewport:1']. setValues(displayedObject=o3)
session.viewports['Viewport:1']. makeCurrent()
session.viewports['Viewport:1']. odbDisplay.display.setValues(plotState=CONTOURS_ON_DEF, ))
session.printToFile(fileName='D:/A2019/temp/picture/10ceng_S.png', format=PNG,
canvasObjects=(session.viewports['Viewport: 1'], ))
在固定圆柱形橡胶堆的自由高度为253.5mm、自由直径为286mm、垂向载荷为118 100N的工况下,对圆柱形橡胶堆进行结构优化,要求得到一个垂向刚度为[17.5×(1±15%)]kN/mm的圆柱形橡胶堆。为此,通过ABAQUS仿真、试验以及经验公式3种方式计算得出垂向刚度值。
利用之前开发的Model setting界面和Material and load setting界面,分别输入不同橡胶层数的结构来达到最好的减振效果,本文将分别对7层、8层、9层、10层、11层、12层、13层的7个橡胶堆模型进行垂向刚度计算。在可视化界面上分别输入各层相关的参数,程序将快速生成有限元模型,自动将作业提交计算。计算完成后,将自动导出应力应变云图、刚度曲线图。整合7个橡胶堆的垂向刚度曲线,如图6所示。图7为实验室对橡胶堆进行垂向载荷试验图。
图6 垂向刚度曲线图
图7 垂向载荷试验图
通过仿真的刚度曲线计算出来的7个橡胶堆的垂向刚度值,通过试验得出的垂向刚度值,根据式(1)计算得出的经验公式计算垂向刚度值分别如表1所示。
表1 各个层数的垂向刚度值 单位:kN/mm
通过表1刚度值的对比中可以看出经验刚度值和仿真刚度值是有一定的差异的。这个差异是由于经验计算方法的开发方式是基于材料的物理结构和经验计算出来的,没有考虑到一些实际的工况,比如橡胶材料的不同,顶板、底板还有隔板材料和结构的不同等,均会影响计算的准确度,而仿真刚度值与试验刚度值是比较接近的。因此,需要通过仿真计算才能更准确地计算开发。
从表1可以得出10层橡胶堆的刚度值是最符合要求的,减振效果是最好的。利用二次开发的界面完成7个模型的刚度计算只需要1~2 h,如果需要逐个建模仿真求解可能需要2~3天的时间,利用二次开发将极大地提高工作效率。
1)本文研究的圆柱形橡胶堆二次开发模块能够利用ABAQUS提供的脚本接口,开发了GUI可视化界面,方便快捷地输入需要的关键参数,程序便能够自动创建圆柱形橡胶堆有限元仿真模型,自动提交计算,自动导出应力应变云图、刚度曲线等;
2)分析了仿真刚度值相比传统理论公式计算刚度值的准确性,提高了结果的准确性;
3)有效解决手动建模的重复费时问题,缩减数据读取与处理及结果输出等过程,提高了前处理和后处理的效率,可以为其他类似减振元件开发提供参考。