(河北建筑工程學院 土木工程學院 河北 張家口 075000)
Python語言是一種功能強大具有解釋性、交互性和面向?qū)ο蟮木幊陶Z言。Python語言表達優(yōu)美、簡潔,它有豐富的第三方數(shù)據(jù)庫,使得開發(fā)代碼效率非常高,可以實現(xiàn)如正則表
達式、文檔生成、FTP、WAV、GUI 等有關(guān)系統(tǒng)的操作。ABAQUS的前、后處理器為用戶提供了廣泛的功能,Python語言腳本可實現(xiàn)自動、重復化建模,執(zhí)行參數(shù)化研究,訪問結(jié)果數(shù)據(jù)庫等。本文介紹利用Python腳本對鋼框架后處理的二次開發(fā)。
ABAQUS 提供了用于二次開發(fā)的腳本接口,該接口基于Python語言,極大豐富了ABAQUS的功能。ABAQUS 腳本接口是Python語言的一個擴展,可以使用Python語言編制腳本接口可以執(zhí)行的程序,從而實現(xiàn)自動化重復性的工作、創(chuàng)建和修改模型數(shù)據(jù)庫、訪問數(shù)據(jù)庫的功能。
ABAQUS二次開發(fā)有如下幾種途徑:(1)用戶子程序可以開發(fā)新的模型,控制ABAQUS計算過程和計算結(jié)果;(2)通過環(huán)境初始化文件可以改變ABAQUS的許多缺省設(shè)置;(3)通過腳本繞過內(nèi)核直接實現(xiàn)前處理建模和后處理分析結(jié)果提取;(4)利用GUI腳本創(chuàng)建新的圖形用戶界面實現(xiàn)人機交互。
編寫好的腳本文件在ABAQUS的執(zhí)行過程表示為:ABAQUS自帶的Python解釋器解釋腳本語言;通過內(nèi)核執(zhí)行腳本命令并生成inp文件;賦予分析器有限元計算命令文件;最后在本地文件夾中生成結(jié)果文件,流程如圖1所示。
Python語言編碼導入ABAQUS軟件中的途徑有:(1)在ABAQUS/CAE命令流端口CLI中直接將編碼打進去按回車;或者直接編寫讀取外部腳本的命令:execfile(‘文件名’)。(2)利用Run Script功能鍵導入外部腳本,在 ABAQUS剛啟動時界面或者菜單欄中都可找到。(3)在啟ABAQUS/CAE時在命令窗口輸命令啟動腳本:abaqus cae script =文件名。其中第(2)(3)種方法得到結(jié)果較為迅速,因為方法(1)編碼還需要通過內(nèi)核翻譯。

圖1 腳本語言環(huán)境通信關(guān)系
設(shè)計某三層鋼框架,各層梁、柱為工字型鋼且各層梁柱尺寸都相同,樓板為混凝土現(xiàn)澆內(nèi)部未放置鋼筋。模擬鋼框架地震作用,在底柱末端施加x方向的地震波研究梁柱受力情況。耗能一定程度上體現(xiàn)了該樓層的受力情況。

利用Python語言腳本可快速提取個層柱的塑性耗能分布,主要編碼如下:
from odbAccess import*
import visualization
vp=session.viewports[session.currentViewprtName]
odb = vp.displayedObject
step1=odb.steps['DZB']
lastFrame=step1.frames[-1]
All = odb.rootAssembly.instances['--'].elementSets['--']
energy = lastFrame.fieldOutputs['ELPD']
AllEnergy = energy.getSubset(region=All)
print '塑性耗能:',v.elementLabel,v.data
#得到指定部件內(nèi)單元的耗能列表
若想得到某個樓層所以柱單元塑性耗能和,輸入如下代碼實現(xiàn):
sum=0
for v in AllEnergy.values:
sum = sum + v
print'總塑性耗能:',sum.data
通過上面Python語言腳本得到的各層柱單元耗能總和從一層開始分別為:1985978.0、684433.5和94595.1。可以發(fā)現(xiàn)底層柱耗能最大,第二層其次,頂層柱的耗能最小,固底層柱受到的作用力更大,是抗震的關(guān)鍵。
本文敘述了用Python語言腳本對ABAQUS進行二次開發(fā),實現(xiàn)后處理數(shù)據(jù)的提取和計算,得到鋼框架各樓層塑性耗能的總和來分析樓層受力情況,對分析結(jié)構(gòu)抗震有重要意義。