技術鄰?>? CAE仿真?>? Abaqus 在abaqus中如何將損耗模量的值代入子程序中? 瀏覽:2499 回答:3 abaqus擬合prony級數來表示材料的粘彈性,也會自動的生成損耗模量和儲存模量。如果我要在子程序中使用損耗模量參與計算,請問該如何調用這個材料屬性?
你這個問法有點問題啊,得先理清楚Abaqus里粘彈性參數的底層邏輯。Prony級數本來就是時間域的松弛模量展開,而損耗模量是頻域里的概念,這倆不是直接等價的。你要在子程序里調用損耗模量,得先搞明白兩件事:
第一,Abaqus自動生成的損耗模量存哪了?在材料庫里選好Prony級數后,軟件確實會根據你輸入的瞬時模量E0和各Prony項系數,通過傅里葉變換算出存儲模量E'和損耗模量E''。但這些頻域參數不會直接塞進材料屬性數組里,而是藏在材料定義的后臺數據里。你要在子程序里調用,得通過*MATERIAL定義里手動輸入的參數名來索引,比如用props(1)到props(n)傳你自定義的模量值。
第二,你確定要用損耗模量參與計算?如果子程序是UMAT或VUMAT,默認處理的是應力更新,而粘彈性本構在時間域里用松弛模量更直接。要是非得用損耗模量,得先做頻時轉換。這時候得在子程序里自己實現Prony級數到復模量的轉換公式:E*(ω)=E'+iE''=E0[1+Σ(gi/(1+iωτj))],其中gi和τj是Prony項的系數和松弛時間。
不過這里有個坑——Abaqus生成的E'和E''是基于你指定的頻率范圍離散計算的,直接調用的話得先搞清楚軟件用了多少個頻率點。你檢查過.inp文件里*VISCOELASTIC選項卡的FREQUENCY參數沒?要是沒指定,軟件默認用10個對數等分頻率點,從1e-3到1e3 rad/s。這時候你的子程序里得預先知道這些頻率點,或者動態獲取頻率數組。
再問個關鍵問題:你寫的子程序是用于顯式還是隱式分析?隱式求解器(Standard)里可以用*FREQUENCY提取模量數據,但顯式(Explicit)里得自己處理時間積分。要是用UMATHT做熱粘彈性耦合,那又得考慮溫度場的影響。
最后給你個實操建議:在子程序開頭用GETVRM函數讀取材料參數,像這樣CALL GETVRM('E',ARRAY=e_array,JARRAY=jarray,JRCD=jrcd),但這個只能拿到瞬時模量E0。損耗模量得你自己根據Prony系數算,或者提前在材料定義里用*USER MATERIAL把E''作為自定義參數傳進去。比如:
*USER MATERIAL, CONSTANTS=3
1.0, 0.3, 0.1 ! 這里第三個參數就是E''
然后在子程序里通過props(3)調用。不過這么做就繞開了Abaqus自動生成的E'',你得自己保證參數一致性。