張 強 馬 永 李四超
(海軍駐鄭州地區(qū)軍事代表室1) 鄭州 450015)
(中國船舶重工集團公司第七一三研究所2) 鄭州 450015)
基于Python的ABAQUS二次開發(fā)方法與應(yīng)用*
張 強1)馬 永2)李四超1)
(海軍駐鄭州地區(qū)軍事代表室1)鄭州 450015)
(中國船舶重工集團公司第七一三研究所2)鄭州 450015)
ABAQUS為二次開發(fā)用戶提供了Python腳本接口。在ABAQUS環(huán)境下執(zhí)行Python腳本,可方便地實現(xiàn)自動化創(chuàng)建、重復(fù)、修改模型及分析任務(wù),實現(xiàn)參數(shù)化研究,訪問結(jié)果數(shù)據(jù)庫等功能。以某支架為例,介紹了基于Python的ABAQUS二次開發(fā)原理與方法。
ABAQUS;Python腳本;二次開發(fā);結(jié)果數(shù)據(jù)庫;參數(shù)化研究
Class NumberTP311
ABAQUS軟件具有很強的通用性和模擬性能,擁有豐富的單元類型及材料模型,有ABAQUS/CAE(前處理器)、ABAQUS/Standard(隱式求解器)和ABAQUS/Explicit(顯式分析求解器)、ABAQUS/Viewer(后處理器)等模塊,可以解決從相對簡單的線性分析到高度非線性系統(tǒng)的模擬等各種問題。ABAQUS的前、后處理器為用戶提供了廣泛的功能,但有些功能需要通過二次開發(fā)或使用其它軟件才能實現(xiàn),如自動、重復(fù)化建模[1],執(zhí)行參數(shù)化研究[2],訪問結(jié)果數(shù)據(jù)庫[3~4]等。對ABAQUS進行二次開發(fā),可以實現(xiàn)許多軟件未提供的功能,提高模擬分析效率,擴展ABAQUS應(yīng)用等。
ABAQUS為二次開發(fā)用戶提供了Python語言接口。Python是一種面向?qū)ο蟮哪_本語言,它有高級的數(shù)據(jù)類型和簡單有效的面向?qū)ο蟪绦蛟O(shè)計方法,功能強大、擴展性強,而被廣泛應(yīng)用。ABAQUS有限元程序通過集成Python腳本向二次開發(fā)用戶提供了豐富的庫函數(shù),可直接操縱ABAQUS內(nèi)核,實現(xiàn)建模、劃分網(wǎng)格、指定材料屬性、提交作業(yè)、后處理分析等功能。
本文以某支架的參數(shù)化分析為例,詳細(xì)介紹了在ABAQUS中用Python腳本進行二次開發(fā)的原理與方法。
Python是一種非常流行的面向?qū)ο蟮木幊陶Z言,ABAQUS腳本接口(ABAQUS Script Interface)就是基于Python語言的擴展,它允許用戶繞過ABAQUS/CAE的GUI(graphical user interface)直接與內(nèi)核交互。使用Python編寫的包含腳本接口命令的程序可實現(xiàn)如下功能:
1)用Python腳本定制、修改ABAQUS環(huán)境文件(abaqus_v6.env)。
2)在ABAQUS輸入文件(Input file)中,用Python腳本定義關(guān)鍵詞*PARAMETER項下的數(shù)據(jù)行。
3)ABAQUS的參數(shù)化研究(Parameter Study)需要編寫和執(zhí)行ABAQUS腳本(.psf)文件。
4)ABAQUS/CAE在rpy文件中用Python腳本方式記錄操作命令。
5)用Python腳本自動化創(chuàng)建、重復(fù)、修改模型及運行分析任務(wù)等。從ABAQUS/CAE中執(zhí)行腳本文件,有以下幾種方式:
·從主菜單中執(zhí)行File→Run Script;
·從宏管理器(Macro Manager)中執(zhí)行;
·從命令行接口(command line interface)中執(zhí)行。
6)用Python腳本訪問結(jié)果數(shù)據(jù)庫(Output database)等功能。
結(jié)果數(shù)據(jù)庫由ABAQUS分析得到,其中包含了模型數(shù)據(jù)(Model Data)和結(jié)果數(shù)據(jù)(Result Data)。模型數(shù)據(jù)描述了分析中使用的模型,包括零件、裝配等。結(jié)果數(shù)據(jù)描述了分析得到的結(jié)果,包括分析步(Step)、幀(frame)、場變量輸出(field output)和歷史變量輸出(history output)等。其中ABAQUS結(jié)果對象數(shù)據(jù)庫對象模型,如圖1所示[5~6]。
圖1 ABAQUS結(jié)果數(shù)據(jù)庫對象模型
因此,用Python腳本訪問ABAQUS結(jié)果數(shù)據(jù)庫,可以完成以下功能:
1)讀取零件及裝配的幾何模型數(shù)據(jù),如節(jié)點坐標(biāo)、單元連接及單元類型等;
2)讀取零件及裝配的截面及材料模型數(shù)據(jù);
3)從選定的分析步(Step)、幀(frame)或區(qū)域中讀取場變量輸出數(shù)據(jù);
4)讀取歷史變量輸出數(shù)據(jù);
5)對場變量輸出數(shù)據(jù)及歷史變量輸出數(shù)據(jù)進行訪問及適當(dāng)?shù)牟僮?
6)對已存在或新的結(jié)果數(shù)據(jù)文件寫入模型數(shù)據(jù)、場變量輸出數(shù)據(jù)或歷史變量輸出數(shù)據(jù)。
對后處理的二次開發(fā),就是讀取odb對象中的數(shù)據(jù),進行計算等相應(yīng)的處理,然后輸出相應(yīng)形式供用戶查看。
對ABAQUS二次開發(fā),可先使用ABAQUS進行數(shù)值模擬:根據(jù)所要模擬的問題類型進行建模,如建立幾何模型、分配材料屬性、施加載荷及邊界條件、設(shè)定分析步和劃分網(wǎng)格等;然后形成輸入文件等。ABAQUS/CAE在rpy文件中用Python腳本方式記錄所有操作命令,用記事本打開rpy文件,然后根據(jù)需要進行簡單的修改,即可形成二次開發(fā)的程序代碼。
計算結(jié)束后形成結(jié)果文件,使用Python腳本訪問結(jié)果數(shù)據(jù)庫,實現(xiàn)結(jié)果文件的控制與讀寫;然后根據(jù)實際問題和數(shù)據(jù)的存儲路徑,直徑引用對象變量或使用數(shù)據(jù)對象得到要處理的數(shù)據(jù);對數(shù)據(jù)進行適當(dāng)運算等相應(yīng)的處理,在ABAQUS/View中將結(jié)果用云圖或曲線表的形式輸出,方便分析和查看。ABAQUS對象類型有3種。其中,session對象用來定義窗口、遠(yuǎn)程隊列及用戶定義的窗口等;Mdb對象用來定義模型空間中的數(shù)據(jù),包括Model對象和Job對象;Odb對象用來定義結(jié)構(gòu)數(shù)據(jù),包括模型對象和結(jié)果數(shù)據(jù)。如圖2所示[5~6]。
圖2 ABAQUS對象模型
某支架的結(jié)構(gòu)及尺寸,如圖3所示。
圖3 某支架結(jié)構(gòu)及尺寸(單位:mm)
支架上下寬邊沿固支,在A、B兩個銷釘孔沿x、y兩個方向作用有如下載荷:Ax=6667.5N;Ay=333.75N;Bx=6667.5N;By=333.75N。
且支架尺寸滿足以下關(guān)系式要求:
已知支架彎角ang變化范圍在45°~90°,要求出彎角處最大Von Mises應(yīng)力值隨角度變化的敏感度曲線。
ABAQUS采用的是基于特征的建模方式。在ABAQUS的Sketch模塊草繪如圖3所示平面圖時,為了保證角度變化時,各邊尺寸及相對關(guān)系不發(fā)生改變,除了標(biāo)注適當(dāng)?shù)某叽缤?還必須施加一定的約束,如四條豎直邊施加Vertical約束等。
在A、B兩個銷釘孔圓心處添加參考點,參考點與相應(yīng)圓邊沿施加分布耦合約束;在參考點上施加x、y兩個方向的集中力載荷;支架上下寬邊沿施加固支約束。
在ABAQUS/CAE建立起基本模型后,通過簡單修改rpy文件可實現(xiàn)對支架彎角的參數(shù)化建模,如下所示:
上述程序?qū)χЪ軓澖莂ng從 45°變化至90°范圍,產(chǎn)生相應(yīng)的模型文件、提交分析并得出分析結(jié)果。以ang等于65°為例,支架的Von Mises應(yīng)力、變形云圖如圖4所示。
圖4 某支架的分析結(jié)果
得出分析結(jié)果后,通過訪問odb下面的steps對象,遍歷各個分析步和幀的Von Mises應(yīng)力值,查找最大值,并將最大值添加至結(jié)果變量。程序代碼如下所示:
根據(jù)分析結(jié)果,訪問session對象,生成支架彎角與支架Von Mises應(yīng)力最大值之間的敏感度曲線,程序代碼如下所示:
圖5 支架彎角與Von Mises應(yīng)力最大值之間的敏感度曲線
由圖5中可以看出,支架彎角從 45°增大至 90°時,支架彎角處的Von Mises應(yīng)力最大值從305.8MPa減小至112.4MPa。
本文敘述了用Python腳本對ABAQUS進行二次開發(fā),實現(xiàn)自動化創(chuàng)建、重復(fù)和修改作業(yè),以及訪問ABAQUS結(jié)果數(shù)據(jù)庫的原理與方法。以某支架為例,當(dāng)支架彎角在45°~90°范圍變化時,得出支架彎角與Von Mises應(yīng)力最大值之間的敏感度曲線。
[1]鐘同圣,等.Python語言和ABAQ US前處理二次開發(fā)[J].鄭州大學(xué)學(xué)報(理學(xué)版),2006,38(1):61~64
[2]ABAQUS,Inc.ABAQUS Example Problems Manual.Version 6.9[M/CD].Pawtucket,USA:ABAQUS,Inc,2009:11.2-1~11.2-4
[3]連昌偉,等.ABAQUS后處理二次開發(fā)在塑性成形模擬中的應(yīng)用[J].鍛壓技術(shù),2006(4):111~114
[4]劉玉振,徐承強.多晶體材料三維微結(jié)構(gòu)有限元分析的后處理[J].山東大學(xué)學(xué)報(工學(xué)版),2008,38(2):14~17
[5]ABAQUS,Inc.ABAQUS Scripting User's Manual.Version 6.9[M/CD].Pawtucket,USA:ABAQUS,Inc,2009:6-2,9-3
[6]ABAQUS,Inc.ABAQUS Scripting User's Reference Manual.Version 6.9[M/CD].Pawtucket,USA:ABAQUS,Inc,2009:31-1
Method and Application of Second-developed ABAQUS Based on Python
Zhang Qiang1)Ma Yong2)LiSichao1)
(Military Representatives Office of Navy in Zhengzhou1),Zhengzhou 450015)
(No.713 Research Institute of CSIC2),Zhengzhou 450015)
The Python Script Interface is provided by ABAUQS for programmers aimed at second-developed ABAQUS.Executing Python script at the ABAQUS environment,may automatically-setting-up、repeat and modify models and analysis tasks expediently,may perform parameter study,may access output database,etc.In this paper,some bracket is illustrated as an example to explain the principle and method of second-developed ABAUQS based on Python.
ABAQUS,Python-Script,second-developed,output-database,parameter-study
TP311
2010年9月19日,
2010年10月20日
張強,男,工程師,研究方向:導(dǎo)彈發(fā)射技術(shù)。馬永,男,高級工程師,研究方向:水下發(fā)射技術(shù)。李四超,男,工程師,研究方向:導(dǎo)彈發(fā)射技術(shù)。