陳芳育,李進(jìn),邱瑋楨,呂泉江
(中國直升機設(shè)計研究所,江西 景德鎮(zhèn) 333001)
復(fù)合材料具有比強度高、比剛度高、抗疲勞性能好、可設(shè)計性強、破損安全性能好、工藝性好等優(yōu)點,在航空航天工程、武器裝備技術(shù)、海洋工程、生物工程等[1-4]領(lǐng)域得到了廣泛的應(yīng)用。復(fù)合材料結(jié)構(gòu)在生產(chǎn)制備以及使用過程中,容易受到各類沖擊損傷,很多學(xué)者[5-12]對復(fù)合材料的沖擊損傷機理進(jìn)行了大量研究。ABAQUS 作為有限元分析的一種常用軟件,在復(fù)合材料沖擊仿真和損傷分析領(lǐng)域有著非常廣泛的應(yīng)用[13-16]。
然而,復(fù)合材料結(jié)構(gòu)沖擊損傷建模較為復(fù)雜。建模過程中,除了要分析復(fù)合材料鋪層角度和順序外,還要考慮彈頭形狀、尺寸和速度等因素的影響。這導(dǎo)致了建模時間的大量增加,同時對操作人員的熟練程度要求很高。筆者采用Python 腳本語言對ABAQUS進(jìn)行二次開發(fā),建立了復(fù)合材料層合板和彈頭快速建模程序,將需要修改的變量參數(shù)化,實現(xiàn)自動建模,網(wǎng)格劃分,裝配關(guān)系和約束關(guān)系建立等工作,避免了重復(fù)建模,提高了效率,具有較強的可操作性。
ABAQUS 軟件允許用戶根據(jù)自己的需要編寫子程序,具有很強的通用性和擴展性。通過編寫的子程序可以調(diào)用GUI 工具,執(zhí)行ABAQUS 角本命令,從而實現(xiàn)模型的修改[17-19]。首先,采用Python 語言編寫程序;然后,將這些程序傳輸給ABAQUS 內(nèi)核;最后,內(nèi)核將逐行解釋程序命令,并進(jìn)行模型操作。
Python 腳本接口與ABAQUS 的通信關(guān)系如圖l所示。首先,Python 解釋器將圖形用戶界面、命令行接口和腳本傳遞到ABAQUS 內(nèi)核執(zhí)行并在系統(tǒng)中生成*.rpy 文件,用于存儲所有命令。與此同時,進(jìn)入到ABAQUS 中的命令轉(zhuǎn)換為INP 文件,再經(jīng)過ABAQUS求解器進(jìn)行分析,最后得到輸出數(shù)據(jù)庫文件。
圖1 Python 與ABAQUS 的通信關(guān)系Fig.1 Communication relationship between Python and ABAQUS
采用Python 語言編寫代碼,會形成后綴名為*.py的腳本文件。下面三種方法可運行Python 文件,實現(xiàn)腳本程序和ABAQUS 程序處理的銜接。
1)采用ABAQUS 軟件界面接口運行腳本文件的方法為:在ABAQUS 軟件界面中尋找run script 菜單條,然后輸入指定的py 文件,即可運行腳本文件。
2)采用命令行接口運行腳本文件的方法為:在命令行中輸入abaqus cae script=*.py,即可運行對應(yīng)的腳本文件。
3)采用ABAQUS/CAE 界面命令行接口(CLI)運行腳本的方法為:在命令行接口中單行/多行/程序塊輸入即可運行腳本文件。此外,也可采用命令exefile(‘.py')的形式實現(xiàn)腳本文件運行。
復(fù)合材料層合板建模主要分為三個模塊:Geometry Parameter(幾何參數(shù))、Layup Parameter(鋪層參數(shù))、Interlaminar Effect(層間效應(yīng)),如圖2—4所示。Geometry Parameter 界面可設(shè)置復(fù)合材料層合板的長度和寬度、單元類型和網(wǎng)格系數(shù)。Layup Parameter 界面可設(shè)置鋪層材料、單層厚度和角度。Interlaminar Effect 界面可設(shè)置cohesive 參數(shù),定義層間界面單元。
彈頭建模通過定義彈頭的參數(shù)(Parameter),完成快速建模,其參數(shù)包含彈頭的長度、半徑、網(wǎng)格密度、材料等。分析步(Step)模塊界面可直接輸入步長,接觸屬性(Contact)模塊可直接輸入摩擦系數(shù)。如圖5 所示。
圖2 Geometry Parameter 界面Fig.2 Geometry Parameter interface
圖3 Layup Parameter 界面Fig.3 Layup Parameter interface
圖4 Interlaminar Effect 界面Fig.4 Interlaminar Effect interface
圖5 彈頭建模、分析步及接觸屬性界面Fig.5 Projectile modeling, step and contact interface
復(fù)合材料層合板沖擊建模的程序包含 3 個Python 文件。Damagemodel.py 包含核心程序代碼,是主控文本程序;DamagemodelDB.py 是圖形界面編輯的程序, 可實現(xiàn)各種交互輸入界面的定制;Damagemodel_plugin.py 將建模文件和圖形界面進(jìn)行銜接。將Plug-in 程序放在ABAQUS 安裝文件夾中的abaqus-plugins 目錄下,啟動ABAQUS 軟件,進(jìn)入Plug-ins 菜單欄,就可以非常方便地創(chuàng)建模型。
Damagemodel.py 采用模塊化程序設(shè)計,編程的思路如下:
1)復(fù)合材料層合板建模。首先,根據(jù)輸入幾何參數(shù)建立層板基本的長寬尺寸,根據(jù)定義的節(jié)點對面進(jìn)行切割,定義單元類型;然后,定義鋪層數(shù)量,在添加材料屬性的同時,為每一個復(fù)合材料鋪層定義方向和基本厚度。層間界面單元不定義方向。
2)彈頭建模。定義彈頭為半圓頭彈頭,輸入高度和半徑參數(shù)定義彈頭基本尺寸,然后采用Global Mesh定義網(wǎng)格尺寸對模型進(jìn)行劃分,并賦予材料屬性。
3)復(fù)合材料層合板和彈頭程序模塊建立關(guān)聯(lián):裝配、接觸和仿真過程定義等。在程序設(shè)計中,將彈頭軸線與球面的交點和層合板上的表面中心點定義為接觸點。接觸類型為一般接觸,可定義摩擦系數(shù),最后根據(jù)計算需求定義步長。
4)自動設(shè)置作業(yè),提交計算。
建模主要使用了 mdb 類中的 models、Part、ConstrainedSketch 和rootAssembbly 等。部分解釋和代碼如下:
#導(dǎo)入必要的模塊和常量
from abaqusGui import mdb
Import part
…………………
#定義主函數(shù)
Sketch_func( ) #草圖函數(shù)
Part_func( ) #零件函數(shù)
Assembly_func() #裝配函數(shù)
………………….
#根據(jù)草圖生成實體
Part.Solid(……)
…………………
#關(guān)聯(lián)建立
Assembly(Patr1, Part2, ……)
…………………
為實現(xiàn)建模文件和圖形界面的銜接,Damagemodel _plugin.py 主要完成數(shù)據(jù)接收、傳遞和命令函數(shù)處理,部分程序如下:
#導(dǎo)入必要的模塊和常量
from abaqusGui import *
from abaqusConstants import ALL
#調(diào)用函數(shù)
class Damamgemodel_ plugin(AFXForm):
…………………
toolset.registerGuiMenuButton(……)
………………………
DamagemodelDB.py 設(shè)置和定義了設(shè)計所需的控件,如文本框、按鈕和表格等,從而獲取用戶的輸入,部分程序如下:
# 定義對話框,調(diào)用基類初構(gòu)函數(shù):
def __init__(self, form):
AFXDataDialog.__init__(………)
對尺寸為150 mm×100 mm 的復(fù)合材料層合板進(jìn)行沖擊試驗。鋪層為[02/45/02/-45/02/45/02/-45]S。彈頭直徑為16 mm,采用6.67 J/mm 的沖擊能量對層合板進(jìn)行沖擊。
根據(jù)實例需求,在二次開發(fā)的系統(tǒng)界面輸入相關(guān)的參數(shù),快速建立有限元模型,并自動定義好裝配關(guān)系和約束條件等,如圖6 所示。從圖6 中可以看出,建立的彈頭和層合板模型均自動完成網(wǎng)格劃分,并分配在“Instance” 里,自動完成了裝配。彈頭為剛體,彈頭和層合板的接觸關(guān)系為一般接觸。
圖6 模型建立Fig.6 Modeling
在快速建模完成的基礎(chǔ)上,將Hashin 失效準(zhǔn)則等[14, 20]作為判據(jù),對沖擊過程進(jìn)行模擬。沖擊前和沖擊過程的模擬如圖7 所示。沖擊過程中,層合板沖擊面產(chǎn)生凹坑,背部凸起。圖8 為層合板正反面的變形。從圖8 中可以看出,模擬結(jié)果與試驗結(jié)果趨勢一致。表1 紿出了沖擊后的損傷深度和面積仿真結(jié)果與試驗結(jié)果的比較,仿真深度與實測深度誤差為0.2 mm,該誤差由兩方面原因造成。一方面,為實現(xiàn)簡易快速建模,筆者用了較為簡單的網(wǎng)格劃分方式,沖擊區(qū)網(wǎng)格劃分不夠細(xì)致,導(dǎo)致計算上存在一定誤差。另一方面,試驗件的損傷深度采用手工測量,損傷深度比較淺,導(dǎo)致誤差較大,為4.2%。除了建模方法和算法的原因外,客觀上由于層壓板的鋪層較多,鋪層情況較為復(fù)雜,造成了誤差。從整體上看,模擬結(jié)果與試驗結(jié)果較為接近,表明快速建模為后續(xù)沖擊模擬提供了有效的支持。
表1 損傷結(jié)果Tab.1 Damage result
圖7 沖擊過程的模擬Fig.7 Simulation of impact process: a) Before impact; b) Impact process
圖8 層合板正、背面變形Fig.8 Front and back deformation of laminates: a) simulated front;b) front of test specimen; c) simulated back; d) back of test specimen
1)經(jīng)二次開發(fā)的程序界面不僅能實現(xiàn)復(fù)合材料層合板的幾何參數(shù)、鋪層參數(shù)及層間效應(yīng)等的參數(shù)設(shè)計,而且能對彈頭的參數(shù) 、沖擊的分析步和接觸屬性進(jìn)行參數(shù)設(shè)計。
2)采用模塊化的思路進(jìn)行程序設(shè)計,對復(fù)合材料層合板和彈頭分別進(jìn)行定義,建立兩者的關(guān)聯(lián)(裝配、接觸等),設(shè)置作業(yè)自動提交計算,可實現(xiàn)快速建模。
3)在完成快速建模的基礎(chǔ)上,對沖擊過程進(jìn)行模擬。建模方法、網(wǎng)格劃分、測量誤差和試驗件復(fù)雜度高等原因造成仿真結(jié)果和和試驗結(jié)果存在一定誤差。
4)為實現(xiàn)簡易快速建模,筆者采用了較為簡單的網(wǎng)格劃分方式,沖擊區(qū)網(wǎng)格劃分不夠細(xì)致,導(dǎo)致計算上存在一定誤差,但從整體上看,模擬結(jié)果與試驗結(jié)果較為接近,表明快速建??梢詾楹罄m(xù)沖擊模擬提供有效支持。