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