1 ABAQUS/CAE處理過程和二次開發(fā)接口介紹
ABAQUS/CAE處理有兩個(gè)程序:①內(nèi)核程序;②GUI程序。內(nèi)核程序?qū)嶋H上就是它的腳本語(yǔ)言,它采用的是Python語(yǔ)言,同時(shí)擴(kuò)展了Python語(yǔ)言,額外提供了大約500個(gè)對(duì)象模型,對(duì)象模型之間的關(guān)系復(fù)雜,它們間部分關(guān)系如圖1所示。

圖1 ABAQUS對(duì)象模型
圖1中,Container表示容器,里面包括其他對(duì)象,而Singular object只表示單個(gè)對(duì)象。
而對(duì)于GUI程序來說,它是一個(gè)方便用戶輸入或選擇參數(shù)的圖形用戶接口,ABAQUS/CAE是采用IPC協(xié)議來完成內(nèi)核程序和GUI程序的通信的。它們之問的通信如圖2所示。

圖2 內(nèi)核程序和GUI程序的通信
ABAQUS有限元程序通過集成Python語(yǔ)言向二次開發(fā)者提供了很多庫(kù)函數(shù),通過ABAQUS腳本接口(ABAQUS Scripting Interrace),Python語(yǔ)言調(diào)用這些庫(kù)函數(shù)來增強(qiáng)ABAQUS的交互式操作功能。它允許用戶繞過ABAQUS/CAE的GUI(graphical user interfaces)直接與內(nèi)核交互,可以大大提高工作效率或完成ABAQUS/CAE沒有提供的功能。但是兇為它沒有通過GUI,顯的不那么直觀,而且如想改變某些參數(shù)就不得不修改腳本程序,這些對(duì)一般用戶來說就顯的比較麻煩。因此,對(duì)ABAQUS二次開發(fā)一般應(yīng)先開發(fā)出GUI后,讓用戶輸入或選擇有關(guān)參數(shù)后,然后生成ABAQUS的腳本語(yǔ)言來自動(dòng)處理。ABAQUS的GUI是用ABAQUS GUI Toolkit來編寫,它也是對(duì)FOX GUIToolkit的拓展,它在編寫程序時(shí)也是遵循Python語(yǔ)言的格式。
ABAQUS二次開發(fā)有如下幾種途徑:①通過用戶子程序可以開發(fā)新的模型,控制ABAQUS計(jì)算過程和結(jié)果;②通過環(huán)境初始化文件可以改變ABAQUS的許多缺省設(shè)置;③通過內(nèi)核腳本建立的函數(shù)可以用于前處理建模和后處理分析計(jì)算結(jié)果;④通過GUI腳本可以創(chuàng)建新的圖形用戶界面。本文將使用聯(lián)合使用第3、4種方法,來實(shí)現(xiàn)對(duì)ABAQUS的前后處理的二次開發(fā)。
2 應(yīng)用舉例
本文將以莊茁老師出版的《ABAQUS非線性有限元分析與實(shí)例》一書中的P392頁(yè)的ABAQUS/Explicit凹槽成型為例來說明二次開發(fā)在ABAQUS中的應(yīng)用。在本文中我們將使用GUI來方便用戶選擇或輸入?yún)?shù),而在對(duì)ABAQUS的界面開發(fā)有兩種方法,一是建立自己的應(yīng)用程序,另一種是在ABAQUS的Plugins菜單中加載自己的菜單來實(shí)現(xiàn)。在本文中將分別使用這兩種方法來完成預(yù)期的功能。
2.1 二次開發(fā)在前處理中的應(yīng)用
我們都知道二次開發(fā)在前處理中主要功能是提高工作效率,對(duì)與上述例題如按照一般步驟來要完成先建模、創(chuàng)建材料特性、裝配等過程。而在建模和裝配過程中是比較費(fèi)時(shí)的,尤其是在裝配過程中容易出錯(cuò)。本節(jié)將使用第一種方法即開發(fā)出自己應(yīng)用程序的界面,只要用戶輸入相關(guān)參數(shù)就可是自動(dòng)完成建模和裝配任務(wù),以提高工作效率。
要開發(fā)出自己的應(yīng)用程序就必須綜合應(yīng)用Python語(yǔ)言和ABAQUS GUI Toolkit進(jìn)行編程。為了使程序編寫方便和便于檢查錯(cuò)誤,我們把不同功能的程序?qū)懺诓煌奈募?也叫不同模塊)。通過模塊問的調(diào)用來完成整個(gè)過程。在調(diào)試好程序后,我們可以在ABAQUS Command中輸入如下語(yǔ)句:abaqus cae-custom meichongyaApp-noStartup然后回車即可。圖3是開發(fā)出來的自己應(yīng)用程序界面。在工具欄菜單中選擇chongy-Part and Assembly就可以得到網(wǎng)4的界面。在輸入如圖4的相關(guān)參數(shù)后,按下OK鍵就可以得到我想要的結(jié)果如圖5所示。圖6表示了不同模塊之問的調(diào)用關(guān)系。

圖3 應(yīng)用程序界面

圖4 用戶輸入對(duì)話框

圖5 裝配效果圖

圖6 不同模塊間的調(diào)用關(guān)系
在圖6中meichongyaApp模塊的主要作用是修改標(biāo)準(zhǔn)的ABAQUS/CAE GUI并初始化應(yīng)用程序。chongyaMainWindow模塊的主要作用是創(chuàng)建主窗口并加載相關(guān)標(biāo)準(zhǔn)菜單和模塊。chongyaGuiModule模塊的主要作用是定義用戶自己的菜單,并初始化。honyga模塊。chongyaForm模塊中主要完成相關(guān)關(guān)鍵字的定義、定義好getFirstDialog并為AFXGuiCommand定義好參數(shù)。chongya模塊的作用是按照?qǐng)D4的參數(shù)來創(chuàng)建模型并自動(dòng)完成裝配功能。
chongyaD B模塊的作用是應(yīng)用ABAQUS GUI Toolkit來完成對(duì)圖4的界面的排序功能,并調(diào)用Icons。模塊或相關(guān)圖片。本例中在此使用是調(diào)用圖片,如果,要使用調(diào)用Icon。模塊的方法則要用XPM圖片數(shù)據(jù)作為Python的字符列表來定義icon,這樣比較麻煩,尤其對(duì)于復(fù)雜的圖形。(注:ABAQUS GUI Toolkit支持以下n種格式來創(chuàng)建icon;① XPM格式;QBMP格式;③ GIF格式;.PNG格式,而后三種格式是一般的繪圖軟件就支持的格式,如windows自帶的畫圖軟件就支持后三種格式,這樣我們就可以不要去寫復(fù)雜的Python語(yǔ)句了)。
2.2二次開發(fā)在后處理中的應(yīng)用
在完成裝配后,分別定義好材料屬性、分析步、接觸類型、邊界條件和載荷、單元類型和網(wǎng)格劃分就可以提交任務(wù)分析,最后在ABAQUS的Visualization模塊中查看分析結(jié)果。在查看我們關(guān)心的結(jié)果之前,我們要判斷此結(jié)果是否是準(zhǔn)靜態(tài)的,而對(duì)此判斷有一個(gè)好的方法即比較動(dòng)能(ALLKE)和內(nèi)能(ALLIE)的歷史。在金屬成型分析中,大部分的內(nèi)能是由于塑性變形產(chǎn)生的,在此模型中,為了確定是否是獲得一個(gè)可接受的準(zhǔn)靜態(tài)結(jié)果,動(dòng)能應(yīng)該小于其內(nèi)能幾個(gè)百分點(diǎn)。
但是,ABAQUS后處理模塊中并沒有直接提供動(dòng)能和內(nèi)能的歷史動(dòng)態(tài)的比值。因此在這里我們將使用上述所提到的第二種方法即在ABAQUS的Plug-ins菜單中加載自己的菜單來實(shí)現(xiàn)。如圖7所示是在Plugins菜單中加入自己菜單。選擇Result-Energy rate就可以彈出如圖8所示的對(duì)話框,這是我們這要選擇”Plot”按鈕就可以得到我們想要的結(jié)果了,結(jié)果如圖9所示。從圖9我們可以看出除了在開始階段外的整個(gè)分析步中.動(dòng)能是相對(duì)于內(nèi)能是一個(gè)很小的百分?jǐn)?shù)。從而我們可以直接判斷此結(jié)果是準(zhǔn)靜態(tài)的。圖10表示在Plug-ins菜單中二次開發(fā)不同模塊的調(diào)用關(guān)系。

圖7 Plug-ins中二次開發(fā)菜單

圖8 用戶選擇對(duì)話框

圖9 動(dòng)能和內(nèi)能歷史比例關(guān)系

圖10 plug-ins菜單中不同模塊調(diào)用關(guān)系
energy_plugin模塊主要完成關(guān)鍵字的定義并調(diào)用energyDB模塊;同時(shí)在Plug-ins菜單中加入自己的菜單并導(dǎo)入energy模塊。
energyDB模塊主要作用是完成對(duì)圖8的排序功能,energy模塊的作用是應(yīng)用Python語(yǔ)言來實(shí)現(xiàn)動(dòng)能和內(nèi)能的動(dòng)態(tài)歷史比值,如圖9所示。我們通過比較圖6和圖10不難看出,第二種方法比第一種方法要簡(jiǎn)單,但是第一種方法可以實(shí)現(xiàn)許多第二種方法實(shí)現(xiàn)不了的功能,如修改或刪除ABAQUS/CAE的丁具欄或一些模塊、改變程序名稱等。所以,相對(duì)簡(jiǎn)單的二次開發(fā)我們就可以用第二種方法,而要想實(shí)現(xiàn)復(fù)雜的功能則用第一種方法。
3 注意點(diǎn)
(1)兇為本文是要在自己開發(fā)的程序中添加了標(biāo)準(zhǔn)的Plug-ins菜單,但是Plug-ins菜單的添加方法和別的標(biāo)準(zhǔn)菜單的添加方法不一樣(如:File、View等)。在本文的3.1節(jié)中我們已經(jīng)提到過一般標(biāo)準(zhǔn)菜單是在書MainWindow模塊中添加的。如加載File菜單使用的語(yǔ)句為self.registerToolset(FileToolsetGui(),GUI-IN-MENUBAR GUI-IN-TOOLBAR)而Plug-ins菜單的添加方法和上面的方法不一樣,它使用registerPluginToolset()語(yǔ)句就可以了,并且此語(yǔ)句不是放在加載標(biāo)準(zhǔn)菜單的模塊中(如:本例的chongyaMainWindow模塊),而是放在初始化程序(如本例的meichongyaApp模塊)模塊中。
(2)因?yàn)锳BAQUS在執(zhí)行這些模塊時(shí),首先是對(duì)它們進(jìn)行編譯,并自動(dòng)創(chuàng)建相應(yīng)的*.pyc文件,這樣如果把所有的文件都放在Temp目錄下,只顯得很亂,并且一答程序出現(xiàn)問題,也不好找,如果我們?cè)赥emp目錄下建立一個(gè)文件夾把除了初始化程序(如本例的meichongyaApp模塊)都發(fā)在里面,這樣就顯的有條理并且一但程序發(fā)生錯(cuò)誤我們可以很快的找到相應(yīng)的文件。如本文中3.1節(jié)把除了初始化程序所用的程序(模塊)都發(fā)在名稱為mei的文件夾內(nèi),此時(shí)應(yīng)注意要在文件夾內(nèi)加上一個(gè)名稱為_init_.PY程序文件,它的內(nèi)容只有一句話:pass,如果不加此程序,則會(huì)出現(xiàn)ImportError:No module named meiehongya.ehongyaMainWindow錯(cuò)誤提示。
4 結(jié)束語(yǔ)
本文基于ABAQUS軟件使用python語(yǔ)言和ABAQUS GUI Toolkit開發(fā)出自己應(yīng)用程序,并把Plug-ins菜單加到應(yīng)用程序中,其主要目的是充分利用在Plug-ins菜單中二次開發(fā)簡(jiǎn)便性;通過開發(fā)出對(duì)話框可以使本應(yīng)用程序更加容易被用戶所接受。在前處理的二次開發(fā)中可以自動(dòng)完成建模、裝配等任務(wù),這樣可以減少工作強(qiáng)度,提高有限元軟件的使用效率;在后處理二次開發(fā)在中,通過動(dòng)能和內(nèi)能的比較,從而判斷結(jié)果是否是準(zhǔn)靜態(tài)的,為后續(xù)分析提供依據(jù)。同時(shí)文中分析了ABAQUS的界面開兩種方法的優(yōu)缺點(diǎn),這對(duì)有關(guān)ABAQUS其它方面的二次開發(fā)有一定的參考價(jià)值。
相關(guān)文章
- 2021-09-08BIM技術(shù)叢書Revit軟件應(yīng)用系列Autodesk Revit族詳解 [
- 2021-09-08全國(guó)專業(yè)技術(shù)人員計(jì)算機(jī)應(yīng)用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應(yīng)用 制表、數(shù)據(jù)處理及宏應(yīng)用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機(jī)械制圖基礎(chǔ)培訓(xùn)教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎(chǔ)培訓(xùn)教程 [朱
- 2021-08-30電氣CAD實(shí)例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風(fēng)暴2:Maya影像實(shí)拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術(shù)設(shè)計(jì)案例教程中文版AutoCAD 建筑設(shè)計(jì)案例
- 2021-08-29環(huán)境藝術(shù)制圖AutoCAD [徐幼光 編著] 2013年P(guān)DF下載
- 2021-08-29機(jī)械A(chǔ)utoCAD 項(xiàng)目教程 第3版 [繆希偉 主編] 2012年P(guān)DF