田玉泰
(上海新動(dòng)力汽車科技股份有限公司, 上海 200438)
作為國(guó)際通用計(jì)算分析軟件,Abaqus具有豐富的單元類型與材料非線性模型,在各領(lǐng)域發(fā)揮至關(guān)重要的作用。Python語(yǔ)言作為一種解釋型編程語(yǔ)言,其具有自由便捷、可讀性強(qiáng)以及簡(jiǎn)單易學(xué)等優(yōu)點(diǎn),被越來(lái)越多的人所接受。
Python允許在各種平臺(tái)編寫腳本參與二次開發(fā),其中Abaqus為Python語(yǔ)言提供開發(fā)接口。Abaqus二次開發(fā)可以自動(dòng)執(zhí)行重復(fù)任務(wù)以及編寫腳本,并對(duì)結(jié)果數(shù)據(jù)庫(kù)進(jìn)行結(jié)果顯示等。張強(qiáng)等運(yùn)用Python語(yǔ)言對(duì)Abaqus模型的創(chuàng)建以及結(jié)果文件可視化進(jìn)行二次開發(fā),極大地提高工作效率。劉宏杰等對(duì)Abaqus計(jì)算發(fā)動(dòng)機(jī)連接螺栓滑移結(jié)果進(jìn)行二次開發(fā),編寫程序執(zhí)行代碼,能自動(dòng)生成螺栓接觸面的滑移結(jié)果,避免人為計(jì)算失誤,提高效率。
本文以某柴油機(jī)油-水冷器模塊為例,介紹Abaqus二次開發(fā)基本原理,并開發(fā)2款基于Python語(yǔ)言的Abaqus前、后處理GUI插件,分別在前處理Load模塊批量加載螺栓載荷,在Visualization模塊運(yùn)用Python Matplotlib進(jìn)行可視化操作,繪制模態(tài)分析結(jié)果Campbell圖。
Abaqus軟件二次開發(fā)插件的創(chuàng)建方式有2種,即使用RSG對(duì)話框創(chuàng)建和使用Abaqus GUI工具包創(chuàng)建。本文用RSG對(duì)話框創(chuàng)建插件,開發(fā)流程見圖1。插件保存后會(huì)生成對(duì)應(yīng)的3個(gè)文件,分別為注冊(cè)文件xxx_pugin.py、圖形界面文件xxx_DB.py、內(nèi)核執(zhí)行程序文件xxx.py。
圖 1 Abaqus二次開發(fā)流程
油-水冷卻器模塊,簡(jiǎn)稱機(jī)冷器模塊,主要由機(jī)油冷卻器、機(jī)冷器模塊座、機(jī)油濾清器以及水泵集成,內(nèi)部分布復(fù)雜水道與油道,同時(shí)也承載各部件工作中的受力。為簡(jiǎn)化分析,有限元模型主要由機(jī)體、機(jī)油冷卻器、機(jī)冷器模塊座、張緊輪、水泵組件、連接螺栓以及皮帶力作用點(diǎn)組成。利用軟件SimLab對(duì)機(jī)體與機(jī)冷模塊座等部件進(jìn)行網(wǎng)格劃分,螺栓載荷面與網(wǎng)格在Abaqus中創(chuàng)建。模型中網(wǎng)格類型機(jī)冷器模塊為四面體二次單元C3D10M,其他網(wǎng)格類型為C3D10,有限元模型見圖2。
1—機(jī)體; 2—機(jī)油冷卻器; 3—機(jī)冷器模塊座; 4—節(jié)溫器組件;5—水泵組件; 6—張緊輪組件圖 2 機(jī)油-水冷卻器機(jī)冷器模塊組件模型
機(jī)冷器模塊座材料為ADC12,密度為2.75×10t/mm,彈性模量為71 000 MPa,泊松比為0.31。模型約束邊界為對(duì)機(jī)體進(jìn)行方向?qū)ΨQ約束、機(jī)體底面繞軸的轉(zhuǎn)動(dòng)約束以及和方向的位移約束。機(jī)冷器模塊座與其他部件螺紋連接部分均為綁定接觸,其他組件之間接觸面摩擦因數(shù)均為0.15,采用Small-sliding連接。
在Abaqus分析過(guò)程中,創(chuàng)建螺栓載荷的一般過(guò)程為:首先,在Step模塊initial分析步后創(chuàng)建最初3個(gè)分析步bolt_min、bolt_max、bolt_fix,分別對(duì)應(yīng)螺栓載荷的最小值、最大值及固定螺栓的當(dāng)前長(zhǎng)度;其次,在Load模塊中對(duì)應(yīng)分析步下創(chuàng)建螺栓載荷,初始創(chuàng)建分析步選擇bolt_min,然后定義螺栓載荷方向與大小,完成單個(gè)螺栓創(chuàng)建的第一步;然后,在對(duì)應(yīng)的分析步下,將螺栓載荷的大小與狀態(tài)進(jìn)行更改;最終,完成單個(gè)螺栓載荷的創(chuàng)建。
本文根據(jù)創(chuàng)建螺栓載荷的常用方法進(jìn)行二次開發(fā),螺栓載荷創(chuàng)建流程與開發(fā)過(guò)程見圖3。單個(gè)螺栓載荷的創(chuàng)建過(guò)程相對(duì)復(fù)雜,需要多次點(diǎn)擊鼠標(biāo)并輸入所需數(shù)據(jù)。對(duì)于少量螺栓載荷施加尚可接受,如果螺栓數(shù)量較多(如本文分析模型中要施加載荷的螺栓多達(dá)36個(gè))就相對(duì)繁瑣。因此,本文開發(fā)一款基于螺栓載荷創(chuàng)建一般過(guò)程,實(shí)現(xiàn)批量創(chuàng)建螺栓載荷的插件,插件使用的前提是根據(jù)不同螺栓規(guī)格型號(hào),進(jìn)行螺栓載荷施加中間平面的分類創(chuàng)建。插件運(yùn)行界面見圖4。
圖 3 螺栓載荷創(chuàng)建流程與開發(fā)過(guò)程
1—選取中間面; 2—選取最小螺栓載荷分析步; 3—選取最大螺栓載荷分析步; 4—選取螺栓狀態(tài)分析步; 5—設(shè)置最小螺栓載荷值; 6—設(shè)置最大螺栓載荷值; 7—選取螺栓軸向圖 4 螺栓載荷創(chuàng)建圖形界面
在插件Create bolt load圖形界面中,界面主要分為3部分:首先是Select Surfaces對(duì)話框,主要負(fù)責(zé)查找并顯示模型前期創(chuàng)建的所有界面,為選擇螺栓載荷中間平面作準(zhǔn)備,且可以進(jìn)行多選;Min-step、Max-step、BFix-step主要定義螺栓載荷,設(shè)置分析步,分別為螺栓載荷最小、最大值分析步及定義螺栓受載荷后狀態(tài)的分析步;Bolt Minvalue、Bolt Maxvalue分別定義螺栓載荷的最小、最大值。
Bolt axis為定義螺栓載荷的施加方向:1為全局坐標(biāo)方向,2為全局坐標(biāo)方向,3為全局坐標(biāo)方向,如果出現(xiàn)Datum axis-1、Datum axis-2,…為自定義方向。圖元顯示界面代碼見圖5。對(duì)輸入數(shù)據(jù)與選擇中間平面數(shù)據(jù)進(jìn)行合理規(guī)范性檢查,使用Python語(yǔ)言for語(yǔ)句循環(huán),對(duì)所選多個(gè)螺栓中間平面施加載荷。檢查數(shù)據(jù)代碼與創(chuàng)建螺栓載荷代碼,見圖6。本文有限元模型需要?jiǎng)?chuàng)建36個(gè)螺栓載荷,根據(jù)相同規(guī)格螺栓的載荷大小與作用軸向相同為原則,可對(duì)其批量建立螺栓載荷,降低重復(fù)性工作,提高前期建模效率。螺栓載荷施加完成后的模型見圖7。
圖 5 圖元界面代碼
圖 6 檢查數(shù)據(jù)與螺栓載荷創(chuàng)建代碼
1—螺栓M8,11個(gè); 2—螺栓M10,8個(gè); 3—螺栓M10,6個(gè); 4—螺栓M8,8個(gè); 5—螺栓M10,2個(gè); 6—螺栓M10,1個(gè)圖7 螺栓載荷
螺栓規(guī)格等級(jí)為8.8級(jí),扭矩為(25±2) N·m,根據(jù)螺栓軸向力計(jì)算公式(1),計(jì)算得到最小軸向力為9.54 kN,最大軸向力為15.96 kN,將其作為Python GUI插件的輸入?yún)?shù)。
(1)
式中:為螺栓軸向力,kN;為螺栓扭矩,N·m;
為螺紋中徑,mm;為摩擦角,(°);為螺紋升角,(°);為螺栓端面摩擦有效直徑,mm;為螺栓端面摩擦因數(shù)。
使用Abaqus對(duì)模型進(jìn)行分析,得到Odb結(jié)果文件。為使結(jié)果可視化更符合工程實(shí)際,需要做進(jìn)一步加工處理。發(fā)動(dòng)機(jī)零部件的風(fēng)險(xiǎn)評(píng)估通常采用模態(tài)分析,通過(guò)與發(fā)動(dòng)機(jī)點(diǎn)火階次頻率進(jìn)行對(duì)比,分析零部件固有頻率,達(dá)到規(guī)避共振風(fēng)險(xiǎn)、降低零件故障率的目的。
發(fā)動(dòng)機(jī)振動(dòng)測(cè)試實(shí)驗(yàn)經(jīng)常使用瀑布圖,為更加直觀地評(píng)價(jià)零部件固有頻率與發(fā)動(dòng)機(jī)階次頻率的關(guān)系,通常將模態(tài)結(jié)果繪制成Campbell圖。
3.2.1 Odb文件數(shù)據(jù)構(gòu)成
在對(duì)Abaqus Odb結(jié)果數(shù)據(jù)進(jìn)行加工處理過(guò)程中,首先應(yīng)了解Odb結(jié)果文件的架構(gòu)。其包含多個(gè)數(shù)據(jù)庫(kù),如rootAssembly、parts、sections等主要存放模型信息,steps、frames、filedOutputs等主要存儲(chǔ)計(jì)算結(jié)果信息等。Odb文件架構(gòu)見圖8。
圖8 Odb文件架構(gòu)
3.2.2 Campbell圖繪制GUI插件
利用創(chuàng)建的發(fā)動(dòng)機(jī)零部件模型,進(jìn)行強(qiáng)度分析與模態(tài)分析,得到計(jì)算結(jié)果。通過(guò)使用RSG對(duì)話框構(gòu)建GUI圖形界面,運(yùn)用Python matplotlib模塊繪制Campbell圖。使用matplotlib模塊函數(shù)創(chuàng)建繪制Campbell圖命令,構(gòu)成插件內(nèi)核執(zhí)行文件。具體插件執(zhí)行流程見圖9。
圖9 Campbell創(chuàng)建流程
同時(shí),將Abaqus模塊調(diào)整為Visualization,打開Odb結(jié)果文件,運(yùn)行插件程序,調(diào)出GUI交互界面,見圖10。
1—選取Odb文件; 2—設(shè)置發(fā)動(dòng)機(jī)轉(zhuǎn)速; 3—設(shè)置發(fā)動(dòng)機(jī)缸數(shù); 4—設(shè)置繪圖開始階次; 5—設(shè)置繪圖終止階次; 6—選取模態(tài)分析步圖10 Campbell圖創(chuàng)建圖形界面
在Campbell Figure界面下拉對(duì)話框中,分別選擇在Visualization模塊已打開的Odb結(jié)果文件與對(duì)應(yīng)模態(tài)分析步;Engine_speed對(duì)應(yīng)輸入發(fā)動(dòng)機(jī)最大連續(xù)超速轉(zhuǎn)速,作為評(píng)判零部件是否與發(fā)動(dòng)機(jī)存在共振風(fēng)險(xiǎn)的依據(jù);Engine cylinder number對(duì)應(yīng)發(fā)動(dòng)機(jī)缸數(shù),對(duì)應(yīng)發(fā)動(dòng)機(jī)頻率階次;Start_mode、End_mode分別對(duì)應(yīng)繪制圖形的起止階次頻率。GUI插件執(zhí)行程序見圖11。對(duì)輸入?yún)?shù)進(jìn)行規(guī)范性檢查后繪制圖形,程序繪制圖形調(diào)用Python matplotlib插件完成,應(yīng)提前安裝此模塊。此插件庫(kù)包含豐富的繪圖指令,可以完成復(fù)雜的圖形繪制。本文運(yùn)用基本的直線命令對(duì)圖形橫縱坐標(biāo)以及發(fā)動(dòng)機(jī)階次線進(jìn)行繪制,具體繪制程序命令見圖12。調(diào)用插件繪制完成后的Campbell圖見圖13。圖中傾斜的虛線代表發(fā)動(dòng)機(jī)隨著轉(zhuǎn)速變化而頻率變化的階次線;豎直方向的虛線代表分析結(jié)果中零部件固有頻率與階次;水平方向虛線代表發(fā)動(dòng)機(jī)最大連續(xù)超速轉(zhuǎn)速。
圖11 Campbell圖元界面程序
圖12 Campbell繪制程序
圖13 Campbell圖
圖13中,橫坐標(biāo)位于131.1 Hz和152.95 Hz處的2條豎直直線,將圖面分割成3部分,分別對(duì)應(yīng)頻率危險(xiǎn)區(qū)域、警告區(qū)域與安全區(qū)域。根據(jù)零件固有頻率所在區(qū)域,可以更加直觀形象地評(píng)價(jià)零部件固有頻率的風(fēng)險(xiǎn)狀態(tài)。
本文通過(guò)對(duì)機(jī)冷器模塊組件進(jìn)行模態(tài)分析,得到其前3階模態(tài)頻率,見表1。根據(jù)Campbell圖所示,前3階頻率均分布在安全區(qū)域,即組件1階頻率大于152.95 Hz。因此,可判定機(jī)冷器模塊組件模態(tài)頻率不會(huì)與發(fā)動(dòng)機(jī)點(diǎn)火頻率發(fā)生共振風(fēng)險(xiǎn)。前3階次模態(tài)振型結(jié)果見圖14。
表 1 模態(tài)前3階頻率
圖14 前3階模態(tài)振型
運(yùn)用Python語(yǔ)言對(duì)Abaqus前處理進(jìn)行二次開發(fā),編寫螺栓載荷GUI插件,能批量施加螺栓載荷,將繁瑣問(wèn)題簡(jiǎn)單化,提高建模效率。運(yùn)用Python matplotlib模塊對(duì)Abaqus結(jié)果進(jìn)行可視化后處理開發(fā),開發(fā)圖形界面程序?qū)δB(tài)計(jì)算結(jié)果進(jìn)行Campbell圖繪制,能更加直觀地評(píng)判零部件模態(tài)頻率風(fēng)險(xiǎn)狀況,也更符合實(shí)際工程需要。
將Python語(yǔ)言運(yùn)用到Abaqus前處理建模與后處理數(shù)據(jù)分析,可以極大地提高工作效率。下一步可以根據(jù)Abaqus GUI命令創(chuàng)建更加人性化的、復(fù)雜的可視化操作界面,實(shí)現(xiàn)流程化建模分析,可減少人為操作步驟,縮短項(xiàng)目周期,將更多時(shí)間用在計(jì)算結(jié)果分析與風(fēng)險(xiǎn)評(píng)估等方面。同時(shí),也可將Python語(yǔ)言作為溝通橋梁,研發(fā)圖形界面插件,實(shí)現(xiàn)多個(gè)分析軟件間的數(shù)據(jù)傳輸與協(xié)同計(jì)算。