唐維 康澤毓 楊婷 曾鳳 蔣莉
摘要:為了提高層壓板在ABAQUS仿真中建模的效率與準確性,提出利用Python語言對ABAQUS二次開發(fā)進行層壓板參數化建模的方法?;贏BAQUS有限元軟件,采用Python編寫腳本文件對ABAQUS內核文件直接操作,準確而高效地完成層壓板的多層材料復合建模、材料屬性定義、截面創(chuàng)建及截面指派等操作。結果表明:利用Python腳本進行層壓板參數建模的方法能快速準確地創(chuàng)建仿真模型,且可以通過Python的建模參數直接完成對仿真模型的修改,使得建模效率大大提高。
關鍵詞:Python; ABAQUS; 層壓板; 參數化建模
中圖分類號:TH164文獻標志碼:A
文章編號:2095-5383(2019)04-0017-04
Parametric Modeling of Laminates based on Python in ABAQUS
TANG Wei, KANG Zeyu, YANG Ting, ZENG Feng, JIANG Li
(School of Intelligent Manufacturing, Chengdu Technological University, Chengdu 611730,China)
Abstract:In order to improve the efficiency and accuracy of themodeling of laminate in ABAQUS simulation, a method of parametric modeling of laminates for ABAQUS secondary development using Python language was proposed. The script file written by Python was used to operate the ABAQUS kernel file directly so as to obtain the multi-layer material composite modeling of laminate, definition of material property, section creation and section assignment accurately and efficiently. The results show that the method of parametric modeling with Python script can create simulation model quickly and accurately, and it can modify the simulation model directly through the modeling parameters of Python. The proposed method can greatly improve the modeling efficiency.
Keywords:Python; ABAQUS; laminate; parametric modeling
復合材料層壓板由于其比強度大、比剛度高、質輕耐腐蝕等諸多優(yōu)點,在航空航天、軌道交通等領域應用越來越廣泛[1-3]。層壓板一般是由多種不同特性的材料按照一定的順序通過鋪層復合而成,因此在對包含有層壓板的模型進行各種仿真分析時,層壓板的建模就會格外繁瑣,必須對其每一層材料進行建模并指定不同的材料屬性。當層壓板復合層數較少時,可通過三維軟件逐層建立模型或直接在有限元軟件中逐層創(chuàng)建。而復合層數較多時,手動創(chuàng)建模型會非常麻煩,且賦予材料屬性或指派截面如果出現錯誤將很難檢查,且最終會導致仿真失敗。
ABAQUS是一款通用性有限元軟件,其在解決復雜問題和高維非線性問題優(yōu)勢明顯。該軟件預留了很多二次接口并可以直接運行Python腳本,以便用戶根據自身分析需求更好的使用。王龍等[4]利用二次開發(fā)模塊USDFLD結合ABAQUS對復合材料層壓板的損傷擴展進行了仿真分析。吳向東等[5]采用Python對ABAQUS前處理進行了開發(fā),使其在板料沖壓成形時能夠更好的輸出速度幅值加載曲線。陳彥海等[6]通過使用Python得到了飛機蒙皮連續(xù)錘鉚的自動分析方法,提高了仿真分析效率。董明鑫[7]采用Visual C++對ABAQUS二次開發(fā),完成了金屬板帶軋制過程的自動建模與仿真分析。因此,為提高層壓板建模效率與準確性,我們提出利用Python語言對有限元軟件ABAQUS進行二次開發(fā)來完成層壓板參數化建模的方法。
1 層壓板結構與模型
1.1 層壓板結構
層壓板是由多種不同材料的薄板復合而成。此處以兩種材料的層壓板為例,如圖1所示。兩種材料的薄板交替鋪層,以物理或化學的方法壓制在一起。每一層的材料屬性與幾何尺寸都會影響層壓板的整體力學性能。
由于層壓板的特殊結構,在ABAQUS中建模時必須按照鋪層順序,逐層創(chuàng)建,并對每一層薄板一一創(chuàng)建截面,賦予各層不同的材料屬性。建模結構如圖2所示。
1.2 層壓板建模
為了對比兩種建模方法,選用兩種材料復合的層壓板先在ABAQUS中進行手動建模。層壓板模型尺寸20 mm×20 mm的開孔板,厚度2.4 mm,孔半徑2 mm,兩種層板的厚度分別為0.07 mm與0.05 mm,總共復合20層。其尺寸結構如圖3所示。
每創(chuàng)建一層,需要對該層創(chuàng)建截面并指派截面屬性,賦予其相應的材料。手動建模需要自下而上完成20層的操作,工作重復度高,且容易出現創(chuàng)建某一層時指派截面屬性到另一種材料的混亂情況,也很難檢查建模的準確性。
2 Python開發(fā)ABAQUS建模腳本
2.1 Python腳本開發(fā)
ABAQUS的二次開發(fā)一般有兩種方式,一是通過子程序接口,采用Fortran語言編寫。另一種是腳本接口,采用Python語言。由于ABAQUS的交互本就是由Python編寫的,在其軟件主界面的命令窗口可以直接運行Python代碼,因此采用Python開發(fā)更加方便快捷,其腳本文件執(zhí)行流程如圖4所示。
本次開發(fā)的腳本主要用于完成開孔板的幾何建模、層板自動幾何切分、自動創(chuàng)建材料界面以及自動指派各層材料屬性。
部分Python腳本代碼如下:
modelName=‘Model-1 #模型名稱
partName=‘blank #零件名稱
Mat_CFRP=‘CFRP #層板名稱1
Mathickness_2=‘COHESIVE#層板名稱2
length=20#層壓板長
width=20#層壓板寬度
r=2 #孔半徑
Thickness_1=2.4 #層壓板板厚
Thickness_2=0.05 #層板1厚度
Thickness_3=0.07 #層板2厚度
layup=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
executeOnCaeStartup()
#繪制草圖
mdb1=mdb.models[modelName]
mdb1.ConstrainedSketch(name=‘__profile__, sheetSize=200.0)
mdb1.sketches[‘__profile__].rectangle(point1=(0.0, 0.0), point2=(length, width))
mdb1.sketches[‘__profile__].CircleByCenterPerimeter(center=(0.5*length,0.5*width),point1=(0.5*length, 0.5*width+r))
vertice_1=mdb1.sketches[‘__profile__].vertices.findAt((length, 0.0))
vertice_2=mdb1.sketches[‘__profile__].vertices.findAt((0.0, 0.0))
#自動切分
z=0.0
for i in range(1,len(layup)):
datum1=p.DatumPointByOffset(point=p.vertices.findAt((0.0, 0.0, 0.0), ),
vector=(0.0, 0.0, z+Thickness_3))
z=z+Thickness_3
p.PartitionCellByPlanePointNormal(cells=
p.cells, normal=p.edges.findAt((0.0, 0.0, 0.5*Thickness_3), ), point=p.datums[datum1.id])
#創(chuàng)建層壓板材料
mdb1.Material(name=‘laminate)
mdb1.materials[‘laminate].Density(table=((1.7e-09, ), ))
mdb1.Material(name=‘cohesive)
mdb1.materials[‘cohesive].Density(table=((1.6e-09, ), ))
mdb1.materials[‘cohesive].Elastic(table=((30000.0, 15000.0, 15000.0), ), type=TRACTION)
#創(chuàng)建并賦予截面屬性
mdb1.HomogeneousSolidSection(material=‘laminate, name=
‘laminate, thickness=None)
mdb1.CohesiveSection(material=‘cohesive, name=‘cohesive,
outOfPlaneThickness=None, response=TRACTION_SEPARATION)
if i==(len(layup)-1):
break
else:
p.Set(cells=p.cells.findAt(((0.5*(length), 0.0,
0.5*Thickness_2+z),),), name=‘cohesive+str(i+1))
p.SectionAssignment(offset=0.0,offsetField=‘, offsetType=MIDDLE_SURFACE,
region=p.sets[‘cohesive+str(i+1)], sectionName=‘cohesive,
thicknessAssignment=FROM_SECTION)
……
2.2參數化自動建模
在ABAQUS命令窗口中直接運行編寫好的Python腳本代碼,自動完成模型的創(chuàng)建,其結果如圖5所示。兩種層板的材料在腳本中直接創(chuàng)建并自動完成各材料的截面創(chuàng)建與截面指派。
為檢驗Python腳本自動建模的準確性,分別對手動建立的模型與Python自動創(chuàng)建的模型進行簡要靜力學仿真分析,并將計算結果進行對比。載荷及邊界條件等設置如下:將層壓板模型一側固定,在層壓板表面施加100 N的壓力,如圖6所示,采用靜力——通用分析步,板料網格均采用六面體,類型為C3D8R(八結點線性六面體單元),對層壓板進行應力應變分析。仿真計算獲得的應力分布結果如圖7所示。
由上可知,兩種建模方法獲得的層壓板模型在同一仿真條件下應力分布結果偏差僅為0.01%,說明兩種建模方法獲得的模型相同。仿真應力數值上的極小偏差是由于ABAQUS對模型進行網格自動劃分時,由于板料中心孔的存在,自動劃分存在每次均有部分網格大小與結構略有不同的結果。通過對比分析結果,證明了Python自動建模的準確性。采用Python腳本自動進行參數化建??梢灾苯油瓿蓭缀文P偷慕?、材料的創(chuàng)建、截面劃分與截面屬性指派,可以明顯提高仿真建模的效率與準確性,特別在層壓板復合層數較大時優(yōu)勢更為明顯。
3 結論
本文利用Python語言對ABAQUS進行了二次開發(fā),通過運行腳本文件完成了層壓板自動參數化建模、層板材料的創(chuàng)建與材料屬性的賦予。通過與手動創(chuàng)建的相同模型進行同一條件下的仿真分析對比可知,利用Python自動創(chuàng)建模型的準確、有效,大大提高了多層復合層壓板的仿真建模效率與準確性。在后續(xù)仿真分析過程中,如需對模型結構進行修改,只需調整腳本文件中的部分代碼或數值即可完成模型更新,提高了仿真分析的效率。
參考文獻:
[1]邢麗英,包建文,禮嵩明,等. 先進樹脂基復合材料發(fā)展現狀和面臨的挑戰(zhàn)[J]. 復合材料學報, 2016, 33(7):1327-1338.
[2]袁慧秀,竇松柏,孫勝平,等. 碳纖維復合材料層壓板開孔拉伸靜態(tài)力學測試研究[J]. 陶瓷學報, 2014, 35(2):159-162.
[3]鄭俊,周晚林,姜鑫. 復合材料層壓板損傷修復與評估[J]. 機械制造與自動化, 2018, 47(1):84-87.
[4]王龍,段靜波,路平. 基于USDFLD二次開發(fā)的復合材料層壓板損傷分析研究[J]. 軍械工程學院學報, 2016, 28(2):72-78.
[5]吳向東,劉志剛,萬敏,等. 基于Python的ABAQUS二次開發(fā)及在板料快速沖壓成形模擬中的應用[J]. 塑性工程學報, 2009, 16(4):68-72.
[6]陳彥海,秦運海,姜春英,等. 基于Python的ABAQUS二次開發(fā)在飛機蒙皮錘鉚中的應用[J]. 航空制造技術, 2018, 61(16):92-97.
[7]董明鑫. 基于Visual C++與ABAQUS二次開發(fā)的過程模擬系統開發(fā)[D]. 太原:太原科技大學,2014.
收稿日期:2019-04-25
基金項目:成都工業(yè)學院企業(yè)專項基金(2018012)
第一作者簡介:唐維(1990—),男,助教,碩士,研究方向:板料成形及參數優(yōu)化,電子郵箱:tangwei.mac@outlook.com