周英杰 陸旭澤 張盛 陳玉震 陳飆松
摘要: 針對復(fù)雜環(huán)境和加載條件下的材料本構(gòu)模型,參照Abaqus所提供的用戶材料子程序UMAT接口,實現(xiàn)基于SiPESC平臺彈塑性分析功能的UMAT本構(gòu)模型插件封裝及調(diào)用.采用C++面向?qū)ο蟪绦蛟O(shè)計方法編制inp文件讀取功能插件,實現(xiàn)Abaqus計算模型向SiPESC平臺數(shù)據(jù)庫的導(dǎo)入.將不同UMAT單獨編譯成動態(tài)庫,同時利用工廠設(shè)計模式,實現(xiàn)不同材料本構(gòu)模型的動態(tài)替換和調(diào)用.該設(shè)計模式可方便添加本構(gòu)模型,具有一定的通用性、開放性和可擴(kuò)展性.數(shù)值算例的驗證表明基于SiPESC平臺的UMAT的有效性.
關(guān)鍵詞: UMAT; SiPESC; 本構(gòu)模型; 動態(tài)鏈接庫; 工廠模式
中圖分類號: TB115文獻(xiàn)標(biāo)志碼: B
Implementation of userdefined mechanical material behavior
subroutine UMAT based on SiPESC platform
ZHOU Yingjie, LU Xuze, ZHANG Sheng, CHEN Yuzhen, CHEN Biaosong
(a. Department of Engineering Mechanics; b. State Key Laboratory of Structural Analysis and Industrial Equipment;
Dalian University of Technology, Dalian 116023, Liaoning, China)
Abstract: As to the constitutive models of material in complex loading condition and environment and referring to the userdefined mechanical material behavior subroutine UMAT interface in Abaqus, the plugins for various UMAT constitutive models are packaged on basis of the elastoplastic analysis function on SiPESC platform and can be called. According to the objectoriented program method in C++, the reading plugin for inp document is implemented and the Abaqus models can be imported into SiPESC database. The different UMAT subroutines are compiled as the dynamic link libraries, and the different material constitutive models are replaced and called dynamically by factory pattern. The constitutive models can be easily added in this design pattern, which has a certain universality, openness and extensibility. The numerical examples demonstrate the effectiveness of the UMAT based on SiPESC platform.
Key words: UMAT; SiPESC; constitutive model; dynamic link library; factory pattern
0引言
隨著計算機(jī)和數(shù)值仿真方法的快速發(fā)展,有限元軟件的功能和計算效率也得到快速發(fā)展.目前主流的通用有限元商業(yè)軟件有ANSYS,Abaqus和MSC等.很多有限元軟件都提供二次開發(fā)接口,以幫助用戶實現(xiàn)針對特定問題的求解.隨著對復(fù)雜環(huán)境和加載條件下材料性能研究的深入,通用有限元軟件中已存在的材料模型已經(jīng)無法滿足研究者對問題的求解需要.針對這一問題,Abaqus提供用戶材料子程序UMAT,幫助用戶定義特定的材料本構(gòu)模型和算法.因此,開發(fā)一些特定本構(gòu)或計算問題的UMAT子程序成為實現(xiàn)數(shù)值模擬的途徑之一.楊曼娟[1]采用基于Rankine準(zhǔn)則的MohrCoulomb模型UMAT,改進(jìn)原模型的解決對材料抗拉強(qiáng)度過高估計的問題.韓丁等[2]通過實驗提出土工格柵本構(gòu)模型,利用UMAT模擬長期蠕變變形趨勢.唐菁菁[3]開發(fā)織物細(xì)觀本構(gòu)模型的UMAT,模擬不同載荷下織物的非線性變形.賈善坡等[4]考慮最大拉應(yīng)力修正MohrCoulomb本構(gòu)模型,采用向后歐拉隱式積分編寫UMAT,模擬單軸拉伸試驗和三軸壓縮試驗.上述工作主要基于Abaqus平臺開發(fā)UMAT.由于Abaqus對UMAT格式要求比較嚴(yán)格,其提供的接口也有一定限制,例如運行狀態(tài)信息只能在限定的通道內(nèi)輸出,多個用戶自定義材料只能定義在一個UMAT中.本文主要基于開放式有限元平臺SiPESC集成UMAT,實現(xiàn)更加通用的接口和靈活的材料子程序調(diào)用.
SiPESC軟件平臺的特點是開放性和可擴(kuò)展性,不僅可以讓用戶使用和配置平臺系統(tǒng),還可以在平臺的基礎(chǔ)上開發(fā)新的功能模塊.[5]利用UMAT相對于Abaqus主程序的獨立性,可將UMAT集成于SiPESC系統(tǒng).
SiPESC系統(tǒng)集成UMAT有如下優(yōu)勢:
(1)動態(tài)集成已有UMAT程序,在不增加工作量的前提下,大大豐富SiPESC平臺的材料庫;
(2)熟悉UMAT編程的用戶,無須再學(xué)習(xí)SiPESC平臺的插件編程即可參與平臺材料本構(gòu)的開發(fā)工作;
(3)與Abaqus相比,SiPESC平臺的動態(tài)性和開放性使其可以更加靈活地運用UMAT進(jìn)行分析,實現(xiàn)多種材料、多個UMAT庫的同時集成.
將UMAT編譯成動態(tài)庫,利用inp導(dǎo)入插件將模型文件導(dǎo)入SiPESC數(shù)據(jù)庫中,通過UMAT封裝插件實現(xiàn)子程序動態(tài)庫函數(shù)利用傳入的應(yīng)力增量更新應(yīng)力增量、狀態(tài)變量和雅可比矩陣,供平臺有限元求解.
1Abaqus的UMAT以及SiPESC平臺
1.1Abaqus及其UMAT
Abaqus可以解決從相對簡單的線性分析到復(fù)雜的非線性模擬等各種問題.[6]Abaqus的豐富材料庫和單元庫可以模擬絕大多數(shù)的形狀和大多數(shù)工程材料.對于某些材料本構(gòu)模型,研究者對其進(jìn)行修正,例如周鳳璽等[7]提出廣義DruckerPrager強(qiáng)度準(zhǔn)則,該模型在數(shù)值分析中有相對較好的收斂性,而Abaqus的現(xiàn)有材料庫無法實現(xiàn).
為滿足類似上述情況的需求,Abaqus不僅提供標(biāo)準(zhǔn)的有限元計算程序,其還提供UMAT接口.Abaqus允許用戶通過UMAT來擴(kuò)展主程序的功能.在Abaqus 6.13.4中,Standard共支持57個UMAT接口,Explicit共支持23個UMAT.除UMAT之外,Abaqus 6.13.4還提供22個實用程序,通過在UMAT中調(diào)用這些應(yīng)用程序,可以實現(xiàn)諸如獲取模型的參數(shù)、求應(yīng)力和應(yīng)變的不變量等功能.
通過UMAT,可以定義任何材料模型,任意數(shù)量的材料常數(shù)均可被程序讀取,而且對任意數(shù)量的與解相關(guān)的狀態(tài)變量的每一個計數(shù)點,Abaqus都提供存儲功能,供子程序使用.
UMAT一般使用FORTRAN語言編寫,也支持C和C++語言.在一個算例中,用戶可以采用多個UMAT,但必須編寫在一個for文件中,可擴(kuò)展性和靈活性受很大限制.
ANSYS等其他商用軟件也提供用戶材料自定義接口,但是特定軟件對UMAT的格式有特定的限定.關(guān)云飛等[8]基于ANSYS開發(fā)修正劍橋模型.ANSYS提供用戶自定義材料本構(gòu)的接口USERMAT,該接口的輸入和輸出數(shù)據(jù)與Abaqus的UMAT類似,輸入量為開始時的總應(yīng)力、總應(yīng)變、等效塑性應(yīng)變和應(yīng)變增量等基本信息,輸出量為載荷步結(jié)束時高斯積分點的總應(yīng)力和等效塑性應(yīng)變的剛度矩陣等.但是,ANSYS自定義材料程序中的參數(shù)和變量名必須與標(biāo)準(zhǔn)的ANSYS程序源代碼一致,因此理論上講經(jīng)過修改過后的UMAT可用于ANSYS的用戶材料定義.
UMAT的作用是更新應(yīng)力和剛度矩陣,與通用CAE軟件中材料模型的作用相同.本文所做的工作是將這部分功能通過子程序的方式集成到SiPESC平臺上,可獨立于平臺開發(fā),并利用工廠模式實現(xiàn)對子程序的動態(tài)調(diào)用,降低CAE軟件開發(fā)的耦合度.
1.2SiPESC平臺
SiPESC是由大連理工大學(xué)運載工程學(xué)部/工業(yè)裝備結(jié)構(gòu)分析國家重點實驗室研究開發(fā)的軟件系統(tǒng),是面向大規(guī)模工程計算、采用開放式軟件構(gòu)架構(gòu)建的通用軟件平臺.
SiPESC基于“平臺(微核心)+插件”的設(shè)計模式,所有功能均由插件實現(xiàn),具有可擴(kuò)展,可維護(hù),可重用以及動態(tài)加載和卸載靈活等優(yōu)點.其軟件體系見圖1.
2inp文件導(dǎo)入插件實現(xiàn)
2.1inp文件及其格式
Abaqus整個分析流程主要分為3部分:前處理、有限元計算和后處理.前處理與有限元計算之間利用inp文件連接.inp文件中包含數(shù)值計算所需要的全部數(shù)據(jù).
inp由模型數(shù)據(jù)和歷史數(shù)據(jù)組成,文件數(shù)據(jù)結(jié)構(gòu)見圖2.幾何數(shù)據(jù)和材料定義是必要模型數(shù)據(jù),其他數(shù)據(jù)根據(jù)有限元分析的需求添加,為可選數(shù)據(jù)模型,其中包括:部件和組合、初始條件、邊界條件、運動約束、相互作用、振幅定義、輸出控制、環(huán)境特性和UMAT等.歷史數(shù)據(jù)用于定義分析類型、載荷以及輸出要求等.
2.2inp導(dǎo)入插件設(shè)計和實現(xiàn)
inp文件通過關(guān)鍵字定義數(shù)據(jù),必要的模型數(shù)據(jù)關(guān)鍵字已完成導(dǎo)入,可選數(shù)據(jù)模型應(yīng)根據(jù)用戶需求創(chuàng)建,因此導(dǎo)入插件的設(shè)計必須是動態(tài)的、可擴(kuò)展的.插件首先需要實現(xiàn)對必要數(shù)據(jù)的導(dǎo)入,搭建起整體框架,在此基礎(chǔ)上可根據(jù)用戶需求擴(kuò)展特定功能.
讀取文件的流程見圖3.整個流程中最重要的是流程總控DataImport,文件讀取EntryReader和關(guān)鍵字段處理EntryHandler這3部分.DataImport控制整個流程,包括創(chuàng)建EntryReader,文件初始化,數(shù)據(jù)庫文件定義及后處理.EntryReader主要實現(xiàn)對文件的讀取,根據(jù)文件格式實現(xiàn)關(guān)鍵字讀取、換行操作和獲取有效信息等.EntryHandler對有效信息進(jìn)行處理并保存.每個EntryHandler只處理特定關(guān)鍵字信息,通過關(guān)鍵字利用工廠模式[910]實現(xiàn)動態(tài)創(chuàng)建,方便后期添加新關(guān)鍵字,即無須對已有代碼進(jìn)行修改,只需實現(xiàn)相應(yīng)的工廠和EntryHandler即可.在讀取到該關(guān)鍵字時,程序自動判斷是否已存在該關(guān)鍵字的處理Entryhandler,若已經(jīng)存在,則利用工廠模式創(chuàng)建,體現(xiàn)靈活性和可擴(kuò)展性.通過inp文件導(dǎo)入插件的InpDataImport類,InpEntryReader類和EntryHandler基類.InpDataImport類主要接口有2個,見圖4.initialize用于初始化; import用于傳入文件名,開始導(dǎo)入流程.
輸入文件*Heading
**Job name: Job1 Model name: Model1
*Peprint, echo=NO, model=NO, history=NO, contact=NO定義Job名,Model名,Preprint設(shè)置**PARTS
*Part, name=Part1
*Node
*Element, type=C3D8
*Nset...
*Elset...
**Section: Section1
*End PartPARTS數(shù)據(jù)塊:定義部件信息.對于非獨立部件,定義部件的節(jié)點、單元、節(jié)點集合、單元集合、Section信息.若為獨立部件則不在此處定義.**ASSEMBLY
*Assembly, name=Assembly
*Instance, name=Insatnce1, Part=Part1
*End Instance
*Nset…
*Elset…ASSEMBLY數(shù)據(jù)塊;
在該數(shù)據(jù)塊中定義實例;
載荷,邊界條件相關(guān)的集合;面等其他信息.其中若為獨立部件則在實例中定義節(jié)點、單元、Section等信息.**MATERIALS
*Material, name=Steel
*Elastic
210000., 0.3
…MATERIALS數(shù)據(jù)塊定義:定義模型材料.包括彈性模量、泊松比、塑性屬性等,可定義多個材料數(shù)據(jù)**BOUNDARY CONDITIONS
**Name: BC1 Type: Symmetry
*Bounday
_PickedSet 5, XSYMMBOUNDARY CONDITIONS數(shù)據(jù)塊定義:定義邊界條件,設(shè)定邊界條件類型、參數(shù).可設(shè)置多個邊界條件**STEP: Step1
*Step, name="Step1"
*Static
1.,1.,1e05,1.
**LOADS
**OUTPUT REQUESTS
**FIELD OUTPUT: FOutput1
*Output, field, variable=PRESELECT
**HISTORY OUTPUT: HOutput1
*Output, history, variable=PRESELECT
*End StepSTEP數(shù)據(jù)塊定義:定義分析步的載荷數(shù)據(jù),場數(shù)據(jù)輸出設(shè)置、歷史數(shù)據(jù)輸出等圖 2inp文件數(shù)據(jù)結(jié)構(gòu)
Fig.2Data structure of inp file
InpDataImport+initialize(MDataModel & model, bool isRepeated): bool+import(const QString & fileName): bool圖 4InpDataImport類
Fig.4Class of InpDataImport
InpEntryReader主要接口有6個,見圖5.initialize用于初始化inp文本文件,初始化成功將返回True;readEntry用于判斷是否為關(guān)鍵字行,若是則提取關(guān)鍵字;isEntry返回布爾值用以判斷該行數(shù)據(jù)是否為有效行;getKeyword返回QString類型關(guān)鍵字; getText獲取整行QString數(shù)據(jù);readNextLine用于移動讀取位置至下一有效行.
InpEntryReader+initialize(txtStream: QTextStream*): bool
+readEntry(): bool
+isEntry(): bool
+getKeyword(): QString
+getText(): QString
+readNextLine(): void圖 5InpEntryReader類
Fig.5Class of InpEntryReader
InpEntryHandler基類主要接口有4個,見圖6.initialize用于初始化和轉(zhuǎn)入數(shù)據(jù);returnReader返回InpEntryReader;handleEntry是有效行處理接口;Reader中帶有有效行數(shù)據(jù)信息;logStream保存數(shù)據(jù)導(dǎo)入日志.
InpEntryHandler+initialize(MDataModel & model, bool is Repeated): bool
+returnReader() const: MInpEntryReader
+handleEntry(MInpEntryReader & Reader,
QTextStream*logStream): bool圖 6InpEntryHandler類
Fig.6Class of InpEntryHandler
對于Abaqus中一些特定的數(shù)據(jù)格式,可增加參數(shù)以傳遞信息.例如在材料數(shù)據(jù)處理中,需要增加密度信息作為參數(shù).
利用以上文件讀取模式可以實現(xiàn)大多數(shù)文件的處理,例如ANSYS的cdb文件,Patran的bdf文件等.cdb和bdf等文件的格式與inp文件有所不同,在換行控制、關(guān)鍵字讀取、有效信息處理以及后處理方面需要根據(jù)不同文件進(jìn)行相應(yīng)修改.
3UMAT子程序封裝插件的實現(xiàn)
3.1UMAT子程序的通用格式
作為Abaqus用戶子程序,UMAT具有通用的書寫格式,并通過固定的接口與Abaqus主程序進(jìn)行數(shù)據(jù)傳遞以及變量共享,其常用的變量通常在文件開頭進(jìn)行定義,具體格式如下.
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,