?

基于SiPESC平臺用戶材料子程序的UMAT實現

2016-08-01 07:24周英杰陸旭澤張盛陳玉震陳飆松
計算機輔助工程 2016年3期

周英杰 陸旭澤 張盛 陳玉震 陳飆松

摘要: 針對復雜環境和加載條件下的材料本構模型,參照Abaqus所提供的用戶材料子程序UMAT接口,實現基于SiPESC平臺彈塑性分析功能的UMAT本構模型插件封裝及調用.采用C++面向對象程序設計方法編制inp文件讀取功能插件,實現Abaqus計算模型向SiPESC平臺數據庫的導入.將不同UMAT單獨編譯成動態庫,同時利用工廠設計模式,實現不同材料本構模型的動態替換和調用.該設計模式可方便添加本構模型,具有一定的通用性、開放性和可擴展性.數值算例的驗證表明基于SiPESC平臺的UMAT的有效性.

關鍵詞: UMAT; SiPESC; 本構模型; 動態鏈接庫; 工廠模式

中圖分類號: TB115文獻標志碼: 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引言

隨著計算機和數值仿真方法的快速發展,有限元軟件的功能和計算效率也得到快速發展.目前主流的通用有限元商業軟件有ANSYS,Abaqus和MSC等.很多有限元軟件都提供二次開發接口,以幫助用戶實現針對特定問題的求解.隨著對復雜環境和加載條件下材料性能研究的深入,通用有限元軟件中已存在的材料模型已經無法滿足研究者對問題的求解需要.針對這一問題,Abaqus提供用戶材料子程序UMAT,幫助用戶定義特定的材料本構模型和算法.因此,開發一些特定本構或計算問題的UMAT子程序成為實現數值模擬的途徑之一.楊曼娟[1]采用基于Rankine準則的MohrCoulomb模型UMAT,改進原模型的解決對材料抗拉強度過高估計的問題.韓丁等[2]通過實驗提出土工格柵本構模型,利用UMAT模擬長期蠕變變形趨勢.唐菁菁[3]開發織物細觀本構模型的UMAT,模擬不同載荷下織物的非線性變形.賈善坡等[4]考慮最大拉應力修正MohrCoulomb本構模型,采用向后歐拉隱式積分編寫UMAT,模擬單軸拉伸試驗和三軸壓縮試驗.上述工作主要基于Abaqus平臺開發UMAT.由于Abaqus對UMAT格式要求比較嚴格,其提供的接口也有一定限制,例如運行狀態信息只能在限定的通道內輸出,多個用戶自定義材料只能定義在一個UMAT中.本文主要基于開放式有限元平臺SiPESC集成UMAT,實現更加通用的接口和靈活的材料子程序調用.

SiPESC軟件平臺的特點是開放性和可擴展性,不僅可以讓用戶使用和配置平臺系統,還可以在平臺的基礎上開發新的功能模塊.[5]利用UMAT相對于Abaqus主程序的獨立性,可將UMAT集成于SiPESC系統.

SiPESC系統集成UMAT有如下優勢:

(1)動態集成已有UMAT程序,在不增加工作量的前提下,大大豐富SiPESC平臺的材料庫;

(2)熟悉UMAT編程的用戶,無須再學習SiPESC平臺的插件編程即可參與平臺材料本構的開發工作;

(3)與Abaqus相比,SiPESC平臺的動態性和開放性使其可以更加靈活地運用UMAT進行分析,實現多種材料、多個UMAT庫的同時集成.

將UMAT編譯成動態庫,利用inp導入插件將模型文件導入SiPESC數據庫中,通過UMAT封裝插件實現子程序動態庫函數利用傳入的應力增量更新應力增量、狀態變量和雅可比矩陣,供平臺有限元求解.

1Abaqus的UMAT以及SiPESC平臺

1.1Abaqus及其UMAT

Abaqus可以解決從相對簡單的線性分析到復雜的非線性模擬等各種問題.[6]Abaqus的豐富材料庫和單元庫可以模擬絕大多數的形狀和大多數工程材料.對于某些材料本構模型,研究者對其進行修正,例如周鳳璽等[7]提出廣義DruckerPrager強度準則,該模型在數值分析中有相對較好的收斂性,而Abaqus的現有材料庫無法實現.

為滿足類似上述情況的需求,Abaqus不僅提供標準的有限元計算程序,其還提供UMAT接口.Abaqus允許用戶通過UMAT來擴展主程序的功能.在Abaqus 6.13.4中,Standard共支持57個UMAT接口,Explicit共支持23個UMAT.除UMAT之外,Abaqus 6.13.4還提供22個實用程序,通過在UMAT中調用這些應用程序,可以實現諸如獲取模型的參數、求應力和應變的不變量等功能.

通過UMAT,可以定義任何材料模型,任意數量的材料常數均可被程序讀取,而且對任意數量的與解相關的狀態變量的每一個計數點,Abaqus都提供存儲功能,供子程序使用.

UMAT一般使用FORTRAN語言編寫,也支持C和C++語言.在一個算例中,用戶可以采用多個UMAT,但必須編寫在一個for文件中,可擴展性和靈活性受很大限制.

ANSYS等其他商用軟件也提供用戶材料自定義接口,但是特定軟件對UMAT的格式有特定的限定.關云飛等[8]基于ANSYS開發修正劍橋模型.ANSYS提供用戶自定義材料本構的接口USERMAT,該接口的輸入和輸出數據與Abaqus的UMAT類似,輸入量為開始時的總應力、總應變、等效塑性應變和應變增量等基本信息,輸出量為載荷步結束時高斯積分點的總應力和等效塑性應變的剛度矩陣等.但是,ANSYS自定義材料程序中的參數和變量名必須與標準的ANSYS程序源代碼一致,因此理論上講經過修改過后的UMAT可用于ANSYS的用戶材料定義.

UMAT的作用是更新應力和剛度矩陣,與通用CAE軟件中材料模型的作用相同.本文所做的工作是將這部分功能通過子程序的方式集成到SiPESC平臺上,可獨立于平臺開發,并利用工廠模式實現對子程序的動態調用,降低CAE軟件開發的耦合度.

1.2SiPESC平臺

SiPESC是由大連理工大學運載工程學部/工業裝備結構分析國家重點實驗室研究開發的軟件系統,是面向大規模工程計算、采用開放式軟件構架構建的通用軟件平臺.

SiPESC基于“平臺(微核心)+插件”的設計模式,所有功能均由插件實現,具有可擴展,可維護,可重用以及動態加載和卸載靈活等優點.其軟件體系見圖1.

2inp文件導入插件實現

2.1inp文件及其格式

Abaqus整個分析流程主要分為3部分:前處理、有限元計算和后處理.前處理與有限元計算之間利用inp文件連接.inp文件中包含數值計算所需要的全部數據.

inp由模型數據和歷史數據組成,文件數據結構見圖2.幾何數據和材料定義是必要模型數據,其他數據根據有限元分析的需求添加,為可選數據模型,其中包括:部件和組合、初始條件、邊界條件、運動約束、相互作用、振幅定義、輸出控制、環境特性和UMAT等.歷史數據用于定義分析類型、載荷以及輸出要求等.

2.2inp導入插件設計和實現

inp文件通過關鍵字定義數據,必要的模型數據關鍵字已完成導入,可選數據模型應根據用戶需求創建,因此導入插件的設計必須是動態的、可擴展的.插件首先需要實現對必要數據的導入,搭建起整體框架,在此基礎上可根據用戶需求擴展特定功能.

讀取文件的流程見圖3.整個流程中最重要的是流程總控DataImport,文件讀取EntryReader和關鍵字段處理EntryHandler這3部分.DataImport控制整個流程,包括創建EntryReader,文件初始化,數據庫文件定義及后處理.EntryReader主要實現對文件的讀取,根據文件格式實現關鍵字讀取、換行操作和獲取有效信息等.EntryHandler對有效信息進行處理并保存.每個EntryHandler只處理特定關鍵字信息,通過關鍵字利用工廠模式[910]實現動態創建,方便后期添加新關鍵字,即無須對已有代碼進行修改,只需實現相應的工廠和EntryHandler即可.在讀取到該關鍵字時,程序自動判斷是否已存在該關鍵字的處理Entryhandler,若已經存在,則利用工廠模式創建,體現靈活性和可擴展性.通過inp文件導入插件的InpDataImport類,InpEntryReader類和EntryHandler基類.InpDataImport類主要接口有2個,見圖4.initialize用于初始化; import用于傳入文件名,開始導入流程.

輸入文件*Heading

**Job name: Job1 Model name: Model1

*Peprint, echo=NO, model=NO, history=NO, contact=NO定義Job名,Model名,Preprint設置**PARTS

*Part, name=Part1

*Node

*Element, type=C3D8

*Nset...

*Elset...

**Section: Section1

*End PartPARTS數據塊:定義部件信息.對于非獨立部件,定義部件的節點、單元、節點集合、單元集合、Section信息.若為獨立部件則不在此處定義.**ASSEMBLY

*Assembly, name=Assembly

*Instance, name=Insatnce1, Part=Part1

*End Instance

*Nset…

*Elset…ASSEMBLY數據塊;

在該數據塊中定義實例;

載荷,邊界條件相關的集合;面等其他信息.其中若為獨立部件則在實例中定義節點、單元、Section等信息.**MATERIALS

*Material, name=Steel

*Elastic

210000., 0.3

…MATERIALS數據塊定義:定義模型材料.包括彈性模量、泊松比、塑性屬性等,可定義多個材料數據**BOUNDARY CONDITIONS

**Name: BC1 Type: Symmetry

*Bounday

_PickedSet 5, XSYMMBOUNDARY CONDITIONS數據塊定義:定義邊界條件,設定邊界條件類型、參數.可設置多個邊界條件**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數據塊定義:定義分析步的載荷數據,場數據輸出設置、歷史數據輸出等圖 2inp文件數據結構

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用于判斷是否為關鍵字行,若是則提取關鍵字;isEntry返回布爾值用以判斷該行數據是否為有效行;getKeyword返回QString類型關鍵字; getText獲取整行QString數據;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用于初始化和轉入數據;returnReader返回InpEntryReader;handleEntry是有效行處理接口;Reader中帶有有效行數據信息;logStream保存數據導入日志.

InpEntryHandler+initialize(MDataModel & model, bool is Repeated): bool

+returnReader() const: MInpEntryReader

+handleEntry(MInpEntryReader & Reader,

QTextStream*logStream): bool圖 6InpEntryHandler類

Fig.6Class of InpEntryHandler

對于Abaqus中一些特定的數據格式,可增加參數以傳遞信息.例如在材料數據處理中,需要增加密度信息作為參數.

利用以上文件讀取模式可以實現大多數文件的處理,例如ANSYS的cdb文件,Patran的bdf文件等.cdb和bdf等文件的格式與inp文件有所不同,在換行控制、關鍵字讀取、有效信息處理以及后處理方面需要根據不同文件進行相應修改.

3UMAT子程序封裝插件的實現

3.1UMAT子程序的通用格式

作為Abaqus用戶子程序,UMAT具有通用的書寫格式,并通過固定的接口與Abaqus主程序進行數據傳遞以及變量共享,其常用的變量通常在文件開頭進行定義,具體格式如下.

SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合