初識Abaqus UMAT 二次開發

初識Abaqus UMAT 二次開發的圖1

初識Abaqus UMAT 二次開發

初識Abaqus UMAT 二次開發的圖2

Abaqus是一款功能強大的商業有限元分析軟件,它具有卓越的線性、非線性分析能力,提供了大量的二次開發接口(用戶子程序),使它能夠適應特定的分析需求。UMAT就是其中一個較為常用的用戶子程序。不可否認,通常情況下使用UMAT都是為了實現一些超出Abaqus自帶本構模型適用范圍的功能。編寫一個成熟UMAT子程序絕非易事,一般都需要編者具備足夠的力學基礎,這就使得很多初學者望而卻步。為此,小編寫了這篇文章,通過一個最簡單示例分析,讓讀者對UMAT二次開發有一個初步的認識。

1

UMAT簡介

      UMAT子程序具有強大的功能,使用UMAT子程序可以定義材料的本構關系,使用Abaqus材料庫中沒有包含的材料進行計算,擴充程序功能;幾乎可以用于力學行為分析的任何分析過程;幾乎可以把用戶材料屬性賦予Abaqus中的任何單元;可以和用于子程序“USDFLD”聯合使用,通過“USDFLD”重新定義單元每一物質點上傳遞到UMAT中場變量的數值。

       使用UMAT必須在子程序中定義材料本構模型的雅克比矩陣,即應力增量對應變增量的變化率。

      在Abaqus軟件中UMAT需要使用Fortran語言(一般都采用Fortran77語法、格式)進行編寫。在WIN10操作系統下需要配置好Abaqus、intel Fortran、Visual Studio的連接,在B站、技術鄰上有很多免費的教程,在此不再累述。

2

UMAT接口解析

      編寫UMAT程序必須符合特定的格式,其基本框架如下:

1      SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
2     1 RPL,DDSDDT,DRPLDE,DRPLDT,
3     2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
4     3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
5     4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)
6C
7      INCLUDE 'ABA_PARAM.INC'
8C
9      CHARACTER*80 CMNAME
10      DIMENSION STRESS(NTENS),STATEV(NSTATV),
11     1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
12     2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
13     3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),
14     4 JSTEP(4)
15
16      user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCD
17      andif necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDT
18
19      RETURN
20      END

①熟悉Fortran語言的很容易發現這段代碼整體上是一個“子例行子程序”。其Fortran77定義“子例行子程序”的一般形式為:

SUBROUTINE  子例行子程序名[(虛參數表)]

子例行子程序體

END  [SUBROUTINE[子例行子程序名]]

注意:在Fortran語言中“[]”內的可省略,但此處的虛參列表顯然不能省略。

②行首的字母“C”是注釋標志符號,程序運行的時候該行語句不執行。

③關鍵字“INCLUDE”的作用是引入后跟文件中的內容,類似于C語言中的“include”。文件 “ABA_PARAM.INC”隨著Abaqus軟件的安裝而包含在操作系統中,它們含有重要的參數,幫助Abaqus主求解程序對用戶子程序進行編譯和鏈接。

④“CHARACTER*80 CMNAME”定義了一個字符串,用于存儲材料名稱。

⑤第10~14行用于定義各個參數變量的類型。關鍵字“DIMENSION”代表數組。

⑥第16~17行用于用戶編寫材料的本構關系模型。

⑦第19~20行為子程序結束標志。

⑧其它的一些編寫Fortran77代碼的注意事項。.f文件的FORTRAN77固定格式,不區分大小寫,每行前6位為預留位置,正常語句從第7為開始編寫。每行第5位代碼代表這一行和上一行的連續關系。

由上述框架可知UMAT子程序共有37個虛參數,各虛參數的物理含義可以在Abaqus軟件幫助文檔中查到。遵循由簡到難的學習規律,小編這里只介紹本文需要用到的幾個虛參。

NTENS:應力矩陣或應變矩陣的維度,Truss單元為1,平面單元一般為3,三維單位一般為6。

DDSDDE(NTENS,NTENS):本構模型的雅克比矩陣,初識Abaqus UMAT 二次開發的圖3。在線彈性條件下這個矩陣是常數矩陣。

STRESS(NTENS):應力矩陣(或向量)。包括NDI個直接分量,NSHR個剪切分量。

PROPS(NPROPS):用于輸入的材料參數數組,NPROPS為輸入參數的個數。

DSTRAN(NTENS):應變增量數組。

3

示例

      小編在前兩次推文中已經介紹過兩次桁架單元(第二章 平面桿件結構有限元法、第三章 平面桿件結構有限元法(二)),想必大家對桁架單元已經不陌生了。這里我們就使用UMAT完成一個最簡單的桁架結構有限元分析計算。結構形式、邊界條件如下圖所示:

初識Abaqus UMAT 二次開發的圖4

圖1  模型邊界條件示意圖

結構一共有三根桁架組成,每根桿件截面面積均設置為10,左側支座設置x向、y向位移約束,右側支座設置y向位移約束,頂點處施加豎向集中力,大小為10。每根桿件劃分成一個Truss單元。建立兩個JOB,JOB-1使用Abaqus自帶的線彈性本構模型,設置E為2.06e5,v為0.3。JOB-2使用Abaqus使用UMAT子程序實現線彈性本構模型,在User Material中添加參數2.06e5,在JOB General中選中UMAT子程序文件。設置方法如下圖所示:

初識Abaqus UMAT 二次開發的圖5

圖2  材料參數設置

初識Abaqus UMAT 二次開發的圖6

圖3  UMAT用戶子程序設置

其它參數設置與常規Truss單元線彈性計算相同,這里不再介紹。JOB-1、JOB-2的計算結果如下:

初識Abaqus UMAT 二次開發的圖7

圖4  使用Abaqus自帶線彈性材料庫的計算結果

初識Abaqus UMAT 二次開發的圖8

圖5  使用UMAT用戶子程序的計算結果

對比圖4、圖5可知兩個JOB的計算結果完全一致。

(本示例UMAT源碼、CAE模型均可在公眾號QQ群文件中免費獲得)

4

結語

       Abaqus UMAT用戶子程序接口功能非常強大,編寫一個漂亮的UMAT子程序需要一定的力學基礎(尤其是有限元、連續介質力學)。本文旨在讓大家對UMAT有一個初步的了解,以及使用UMAT需要用到哪些基本知識,好在今后的學習中有側重點。后續的推文中,小編還會進一步結合我們有限元理論模塊的進度,進一步講解Abaqus UMAT的使用。

最后歡迎批評指正,小編水平有限,希望大家跟我一起完善這部教材,造福更多的人,謝謝!

初識Abaqus UMAT 二次開發的圖9

陪伴是最長情的告白

學而不思則罔

思而不學則殆

歡迎大家跟我一起學習CAE知識!

QQ群號:517718332

初識Abaqus UMAT 二次開發的圖10

注:相關資料可在QQ群文件中下載

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

33
15
36