
發布
注冊
/
登錄UMAT的案例
模塊化編程在Abaqus UMAT編寫中的應用實例
(UMAT調試方法匯總)
易維護:如果需要修改UMAT,比如想要應力積分方法想由顯式修改為隱式,只需針對特定的部分進行修改即可。
可重用:UMAT中一些常見的代碼塊完全可以重復利用,例如模型參數傳遞,向量張量轉換,彈塑性判斷等等,將這些特定的功能編寫成subroutine,形成自己的子程序庫,之后再編其他的UMAT可以直接組裝,減少不少工作量。
3、模塊化編程在UMAT編程中的應用實例
首先我們需要安裝好版本匹配的VS+IVF+Abaqus,并完成關聯。
下面我們來看一下, 一個UMAT模塊化編程例子的大體框架,我們把整個UMAT分成三大模塊,分別為前處理模塊,更新模塊,后處理模塊,我們這里僅看前處理模塊,希望能給大家一些啟發。
接著我們再來簡單介紹UMAT前處理模塊化編程常用子函數
模型參數傳遞子函數——用于將UMAT中的模型參數數組的值提取出來,并將其賦值給有物理含義的變量,這樣一來方便在UMAT編寫公式時使用,二來可以防止我們不小心在UMAT中修改模型參數的值造成錯誤。
二三維判斷子函數——在UMAT中在應力應變的向量的維度為NTENS,這就使得我們UMAT中應力應變向量的維度取決于模型是三維問題還是平面應力(變)的問題,這不便于我們編寫具有更加普遍適用性的UMAT,因此,按照規則填滿STRESS和STRAN向量,使其維度均為1*6,這也為后面將其轉為張量形式提供便利。
向量轉張量子函數——由于UMAT中默認的應力應變是存儲為向量的形式,但在本構關系式中,我們通常采用的是張量的形式,因此將應力應變向量轉為為張量形式,可以讓我們更加方便將本構關系式子用代碼實現,但這里特別要在處理應變時候要記得應變向量存儲的是工程剪切應變,需要除以2才可以存入到應變張量中。
展開 各向同性硬化von Mises率無關彈塑性本構理論以及umat源代碼 ¥99
求解得到塑性乘子增量之后,即可更新:
也可以更新塑性應變:
1.3 一致性切線剛度矩陣
umat除了要求更新應力以及狀態變量之外,還需要更新算法的一致性切線剛度模量。當沒有發生塑性屈服時,一致性切線剛度矩陣即為彈性矩陣。
Abaqus中UMAT二次開發詳細教程由入門到精通
2.課程簡介
本課程將由淺入深介紹UMAT的編寫方法,包含了一些數值處理技巧如自動誤差控制積分方法,彈性試探應力,應力拉回屈服面等。同時附件還會有課程里的課件,參考資料,論文,UMAT代碼等。
通過本課程你可以學到:
(1)了解UMAT的基本使用方法,書寫格式;
(2)掌握如何利用高階精度的積分方法對高度非線性的本構方程進行積分;
(3)掌握彈塑性模型的積分步驟,例如彈性試探應力及其位置的判斷;
(4)掌握如何對超出屈服面的應力進行修正;
(5)通過對UMAT實例細致深入的解釋使讀者掌握如何將這些數值方法編寫成代碼;
(6)介紹一些UMAT編寫的技巧及注意事項;
3.課程目錄
(1)UMAT基本書寫格式及簡單例子
(2)自動控制誤差的應力顯式積分法
(3)彈塑性模型積分方法_理論(彈性試探應力,應力回拉)
(4)UMAT實例詳解(上):彈性試探應力及其位置的判斷
(5)UMAT實例詳解(中):應變增量在屈服面內外的比例計算
(6)UMAT實例詳解(下):高度非線性本構方程的積分方法
(7)UMAT實例詳解(補充):如何將應力拉回屈服面
(8)UMAT編寫的一些技巧及注意事項
展開 一種可用于形狀記憶合金(SMA)的UMAT子程序 ¥29.99
案例介紹
為驗證 UMAT 子程序的有效性,構建 NiTi 合金單向拉伸模型,參數如下:
幾何尺寸:矩形試件,長寬高均為1mm;
加載條件:位移控制加載,位移范圍0-0.05mm
材料參數:楊氏模量 E=40GPa,泊松比 ν=0.33,初始屈服應力 σ0=353MPa,相變臨界應力 σ_f=381MPa(正向)、σ_s=141MPa(反向)。
2.結果對比
實驗數據與模型預測結果如圖 1 所示(曲線趨勢與文獻 [鄒京辰等,2025] 一致):
試件的力 - 位移曲線和應力-應變曲線均呈現典型超彈性特征:加載階段因奧氏體→馬氏體相變出現應力平臺,卸載階段因反向相變應力驟降;
曲線趨勢與文獻結果基本吻合,驗證了子程序對相變力學行為的精準捕捉。
這個 UMAT 展示了如何在標準塑性框架內嵌入相變效應,為模擬如形狀記憶合金 (SMA)、相變誘發塑性 (TRIP) 鋼等智能材料或先進金屬提供了基礎。理解和應用此代碼需要對彈塑性力學理論、ABAQUS UMAT 接口和特定材料的相變機制有深入的了解。
4、 代碼解釋以及案例文件(inp,umat子程序)
展開 
初識Abaqus UMAT 二次開發
UMAT就是其中一個較為常用的用戶子程序。不可否認,通常情況下使用UMAT都是為了實現一些超出Abaqus自帶本構模型適用范圍的功能。編寫一個成熟UMAT子程序絕非易事,一般都需要編者具備足夠的力學基礎,這就使得很多初學者望而卻步。為此,小編寫了這篇文章,通過一個最簡單示例分析,讓讀者對UMAT二次開發有一個初步的認識。
1
UMAT簡介
UMAT子程序具有強大的功能,使用UMAT子程序可以定義材料的本構關系,使用Abaqus材料庫中沒有包含的材料進行計算,擴充程序功能;幾乎可以用于力學行為分析的任何分析過程;幾乎可以把用戶材料屬性賦予Abaqus中的任何單元;可以和用于子程序“USDFLD”聯合使用,通過“USDFLD”重新定義單元每一物質點上傳遞到UMAT中場變量的數值。
展開 【經驗貼】關于影響帶UMAT的ABAQUS模型計算速度的若干因素的探討
4、使用UMAT與否對運行效率的影響
編寫了一個線彈性的UMAT,與使用ABAQUS自帶的線彈性材料屬性對比:
核心數 位移U 時間 CPU利用率 使用UMAT與否
8 0.5 3:35 100% 使用
8 0.5 1:55 100% 未使用
可見UMAT的使用會降低運算效率。在未使用UMAT時,在Total Time到0.45時,Time由0.1增加到了0.15,而使用UMAT的模擬則Time一直是0.1,有可能是Time增大引起的時間縮短。
核心數 位移U 時間 CPU利用率 使用UMAT與否 Total time
8 0.5 00:57 100% 未使用 0.3
8 0.5 01:18 100% 使用 0.3
由此可見,即使未發生Time增大,調用UMAT仍會增長時間。
5、UMAT程序中的函數復雜度對運行效率的影響
為了控制變量,更換了新的模型,模型是個簡單的正方體,然后朝一個方向加載,在這個方向上設置復雜的多項式函數。
核心數 位移U 時間 Total time 多項式最高次冪
8 1 0:18 1 1
8 1 0:18 1 1
似乎復雜度不會影響計算效率,有可能是模型過于簡單了。
未完待更,歡迎討論。
展開 UMAT轉VUMAT接口程序詳解(附案例和相關文件下載) ¥50
一.接口程序的目的
希望通過接口程序,直接將UMAT轉化為VUMAT子程序進行調用。這樣對于現有的UMAT材料本構子程序,當需要在ABAQUS/Explicit中調用該本構模型時,無需費時費力重新編寫出VUMAT。
友情提示:在學習本程序前請先學習UMAT和VUMAT的知識,否則無法理解本程序!
請參考:ABAQUS幫助文檔http://wufengyun.com:888/books/sub/default.htm
二.UMAT和VUMAT子程序變量對比
了解UMAT和VUMAT中所使用的變量,掌握其異同點,對于接口程序的設計非常重要。下表進行了變量的對比。(附件中包含此EXCEL表)
三.算法設計
1.VUMAT進程開始;
2.轉換至ABAQUS/Standard進程計算,注意將張量應變為工程應變(張量應變和工程應變介紹請參考 https://zhuanlan.zhihu.com/p/20240036);
3.對UMAT中需要使用的變量進行賦值并調用UMAT;
4.轉換回ABAQUS/Explicit進程;
四.實例對比
以CPT貫入(ALE法)為例,土體采用Mises本構模型(請參考我的帖子:mises本構模型UMAT(附源代碼和詳細注釋),http://www.yqgqt.org.cn/content/post/437599)。考慮以下兩種情況:
1. 通過接口程序將Mises本構模型的UMAT子程序轉換為VUMAT(命名為UV-mises-OK)后進行調用;
2.
展開 UMAT子程序實現熱膨脹計算的小例子 ¥5
在技術鄰上學習了一段時間UMAT,摸索了一下用UMAT實現熱膨脹的計算,并用abaqus自帶的模型進行對比,驗證正確性。本文是個小例子,大家可以根據需求再次開發。
1.線彈性本構
為了簡便起見,本文的例子是基于線彈性本構的(當然彈塑性也是可以的)。首先還是先介紹一下理論,線彈性的本構方程如下圖:其中{σ}是應力矩陣,{ε}是應變矩陣,[D]是應力應變矩陣/雅可比矩陣,E是彈性模量,v是泊松比。
應變增量可以分解為彈性增量和熱膨脹的增量,應力的更新采用常剛度法。
更詳細的相關知識大家可以參考有限元的書籍,或是技術鄰上關于UMAT的課程。
2.UMAT介紹
umat可以實現自定義的本構;但是需要定義雅克比矩陣并更新應力及狀態變量,如下圖
下面給出例子中要用到的一些變量:
3.熱膨脹的小例子
建一個1m*1m*1m的立方體,給定密度7900(kg/m3),熱導率200(W/m/K),比熱容400(J/kg/K),狀態變量數目Depvar-5UMAT子程序使用的時候要在中選擇user material,在其中定義材料參數彈性模量2e11,泊松比0,線膨脹系數5e-5。
為了驗證準確性,用abaqus自帶的elastic和Expansion定義相同的參數,建立對比模型。
采用完全熱力耦合步,步長0.1s總步長0.5s。在load中施加體熱源4e8 使方塊升溫。
4.UMAT代碼詳解:
5.計算結果:
1.應力(左圖abaqus自帶模型,右圖自編UAMT子程序):可以看出自編的UMAT算出的結果與abaqus的是一致的。
展開 各向同性彈塑性本構的vumat源代碼:通過修改umat ¥99
strain_umat :umat接口中應變張量的存儲方式(e11,e22,e33,2*e12,2*e13,2*e23)
!*******************************************************************************
function transfer_strain_vumat2umat(strain_vumat) result(strain_umat)
real(8),intent(in) :: strain_vumat(6)
real(8) :: strain_umat(6)
integer :: i
integer,parameter :: order(6)=[1,2,3,4,6,5]
do i=1,6
strain_umat(i) = strain_vumat(order(i))
enddo
strain_umat(4:6) = 2.0d0 * strain_umat(4:6)
return
end function transfer_strain_vumat2umat
!*******************************************************************************
! transfer_stress_vumat2umat:將vumat接口中的應力變量轉化為umat接口的應力變量
! vumat的存儲順序不同
! 變量說明
! 輸入:
!
展開 黃永剛晶體塑性UMAT及VUMAT理論及程序詳細解讀
黃永剛院士編寫的單晶晶體塑性UMAT,主要用于在Abaqus有限元軟件中進行單晶及多晶晶體塑性變形的計算。許多科研人員通過改寫其晶體塑性UMATs,建立自己的本構子程序并發表論文。利用該本構子程序進行材料模擬的研究方向很廣泛,包括但不限于修改材料滑移、孿晶系,修改硬化方程,加入損傷,將隱式分析的UMATs修改為顯式分析的VUMATs等,理解其基本理論并將公式與代碼對應是改寫的關鍵。
晶體塑性的理論和UMAT自學難度較高,對于初學者自己讀懂代碼基本需要半年以上的時間,本課程旨在講解黃永剛晶體塑性UMAT的理論、公式及代碼,有助于初學者在兩周之內熟悉和掌握晶體塑性的基本理論和子程序,加快代碼改寫進度。
本課程課件PPT長達90頁+,課程形式為一對一線上講解,時長約為3-4小時。主要面向高校研究生,需要具備張量分析的基本知識。可以根據學生的基礎適當增加UMAT和VUMAT編程的講解,Fortran基本語法等,亦可根據需求針對性的分析UMATs修改方法。課程的內容主要包括如下方面:
本構模型推導
主要包含了應變分解、本構方程、硬化方程、本構時間積分方法及雅克比矩陣等推導。
雅克比矩陣推導過程
本構子程序逐行解讀
主要包括了UMATs基本功能、UMATs結構、函數解讀、主程序逐行解讀等;
主程序代碼逐行展開解讀
3.UMATs改寫VUMATs方法
UMAT主要應用于隱式分析,而對于大變形接觸問題,隱式分析往往計算效率較低。對于接觸、碰撞、沖擊等問題采用VUMAT往往具有更高的計算效率和收斂速度。該部分主要對UMATs和VUMATs的區別進行講解,介紹UMATs改寫VUMATs的要點。
展開 Abaqus 子程序開發日志01-umat之isotropic
-------------------------------------------------------------------------------------------------------------------------------
umat子程序只用于通用靜力分析步使用來定義用戶自定義材料,這里首先對較為簡單的各向同性材料本構模型進行構建。
先說明一下umat的工作原理,再靜力分析時,每增加一個(極小的)微分應變增量,通過代入微分應力關于微分應變的雅可比矩陣B(j)方程,得到應力增量,再與原始應力累加得到新的應力(也可以說更新應力)。至此,此umat的工作到此結束。
對于各向同性的剛度矩陣方程為:
再來就是對矩陣中未知量進行求解,對其而言只需兩個獨立常量就可以表示。對于各向同性材料而言,G=E/2(1+NU),所以我們只要知道G、E、NU中的任意兩個量就可以得到另外一個量,習慣上我們常用E、NU來表示各向同性材料的材料屬性,所以我們這里就需要將矩陣中的未知量用E與NU表示出來就可以了。
求解的過程不再說明,此為材料力學的基礎,有需要可以查找相關資料。
求解完成后將其改寫成微分的形式得到雅可比矩陣后用程序進行表達出來,并使用abaqus提供的接口進行嵌套寫入用戶子程序,至此,全部工作完成。
先對其進行檢驗,abaqus中可以直接定義各向同性材料的材料屬性,在初期子程序的學習中檢驗umat的正確性提供了很好的對照。
這里就隨便建立一個長寬高為5;5;20的立方體對其進行施加一個單位為5的拉伸位移(較長方向拉伸)。
材料屬性就隨便設定為E=2000,v=0.3。
單元類型全部采用相同的完全積分單元。
分別用自帶的各向同性材料屬性與umat子程序進行計算。
展開 
線性強化彈塑性umat子程序-umat在abaqus計算流程中的意義及調試方法
如在上述umat子程序中定義了一個save在內存的變量,用來記錄進入umat的次數。
直接打印變量的方法很有用,但是當單元數增加后,眾多的打印信息形成很多的干擾因素,這時候我們需要控制打印的頻率,常用的方法為針對某個單元的某個積分點打印,如下面的一段程序所示,紅色圓圈里內容的含義是當單元編號為1且積分點編號為1時才打印相關信息,這樣調試更具針對性。
我們通過打印信息發現,一次迭代二次進入umat,第一次進入umat僅是給abaqus返回雅可比矩陣,第二次進入umat的目的是為了更新應力等信息。
視頻教程有這個帖子的更詳細解釋,感興趣的點擊下面的鏈接觀看
http://www.yqgqt.org.cn/college/video/c14014
展開 初識ABAQUS UMAT二次開發(二)
圖5 從abaqus計算結果中導出的豎桿應力-應變曲線
對比圖5和圖2可知,模型中豎桿的應變-應變曲線與輸入的本構關系完全一致,可見UMAT程序正確。
(本示例UMAT源碼、CAE模型均可在公眾號QQ群文件中免費獲得)
4
結語
Abaqus UMAT用戶子程序接口功能非常強大,編寫一個漂亮的UMAT子程序需要一定的力學基礎(尤其是有限元、連續介質力學)。本文旨在讓大家對UMAT有一個初步的了解,以及使用UMAT需要用到哪些基本知識,好在今后的學習中有側重點。后續的推文中,小編還會進一步結合我們有限元理論模塊的進度,進一步講解Abaqus UMAT的使用。
展開 abaqus子程序Umat基礎知識及實例解釋
UMAT子程序具有強大的功能,使用UMAT子程序:
(1)可以定義材料的本構關系,使用ABAQUS材料庫中沒有包含的材料進行計算,擴充程序功能。
(2)幾乎可以用于力學行為分析的任何分析過程,幾乎可以把用戶材料屬性賦予ABAQUS中的任何單元;
(3)必須在UMAT中提供材料本構模型的雅可比(Jacobian)矩陣,即應力增量對應變增量的變化率。
(4)可以和用戶子程序“USDFLD”聯合使用,通過“USDFLD”重新定義單元每一物質點上傳遞到UMAT中場變量的數值。
今天跟大家分享一篇關于用戶子程序的基礎知識總結以及實例講解,我覺得是我看過眾多資料里面講解的比較好的,三年前收集的,實在不知道作者是誰,只能先謝謝了。希望對你們有幫助,因為umat應該說是abaqus跟其他有限元軟件的最大不同之處了,是每個人學abaqus到最后無法避開的必經之路,希望大家學好。其他也整理了好多學習Umat的資料,有需要的各位找我自取。
下面是pdf正文:
1
2
3
4
5
6
7
8
9
10
11
也算是自己之前學習的一點總結,可惜自己寫不了這么好。加油吧。內容的pdf我也已經上傳到了技術鄰。
其他的一些資料如下,好久之前整理的,有需要的請私聊自取哈。
—End—
發布于 00:18
展開 Umat和uel的知識補充————
本來一直打算寫一下關于umat和uel的東西,上次也說了一下,打算給某人。我雖然說不是精通umat和 uel 也學了一些。從我個人體會和許多人的問題,我可以發現:雖然大家覺得有限元簡單 不值得學理論,什么都懂,就缺代碼了!有的老師認為從有限元的一部分學起可能簡單,所以umat開始吧 !我很慶幸我學umat的時候 , 我雖然連塑性回彈都不會,所以我只知道它是那么做的,但是我不知道為什么,但是我找到了本好書(我有提過)。當你從一個全局看問題時,你可以 看得更深更遠,這 應該也是 學長在子程序講編譯前,為什么要講abaqus工作的流程。umat 和uel的深度因問題而異,從基礎入手肯定是好的。但是 只從局部難免盲人摸象(不看有限元全過程)! 有些人連fortran一點點語法都不知道,怎么能 看懂fortran 寫的子程序。其實不難!加油 !愛你的少年
展開