ABAQUS顯式子程序調用規則及nblock變量解釋
在使用ABAQUS進行有限元仿真時,調用用戶子程序可以使用戶解決一些問題時具有很大的靈活性。在實現更加復雜的計算過程時,ABAQUS軟件與子程序之間的交互關系是需要了解的。Vxxxxxx(VUMAT/VUHARD/VUSDFLD等)子程序內需要將用戶自定義變形部分寫入(do k=1,nblock → end do)語句內,理解nblock的含義將對子程序的改進大有幫助。本文以VUHARD子程序為例,測試了ABAQUS顯式算法在調用用戶子程序時的基本規則。
首先建立了三維Part,為其賦予熱變形本構參數(用戶可參考Johnson-Cook模型),單元采用C3D8RT單元,具有8個節點,1個積分點。固定Z0面,施加沿Z+方向的位移載荷。
對模型劃分成不同網格數量進行測試,測試結果下表所示。
| 單元數 |
核數 |
nblock |
k |
| 8 | 1 | 8 |
1-8 |
| 64 | 1 | 64 | 1-64 |
| 125 |
1 | 125 |
1-125 |
| 216 |
1 | 136;80 |
1-136;1-80 |
| 343 |
1 | 136×2;71 |
(1-136)×2;1-71 |
| 1000 |
1 | 136×7;48 |
(1-136)×7;1-48 |
統計結果表明,nblock的最大值為136。可得單元數和nblock的關系為:
單元數=136*A+B
以表中1000單元為例,A=7,B=48。
ABAQUS在調用VUHARD子程序時,每次向子程序提供136個單元(單元數<136則提供所有單元)進行計算,使用(do k=1,nblock → end do)計算每一個單元的相關變量。因此對于1000單元來說,一共調用8次子程序。
設置全局變量commom /globals/ kdtest,在ABAQUS每一次調用子程序之后,給其加一,統計模擬過程中的總循環數,在(do k=1,nblock → end do) 循環內部輸出變量kdtest的值。(全局變量可以不跟著k的循環而變化,用戶可以根據需求設置其在代碼中的功能),結果截圖如下:
共1000個數據,1~7各重復了136次,8重復了48次,與上述分析一致。
因此在nblock實際代表的是ABAQUS提供給子程序的材料點塊,這個塊區包含的單元數與模型單元數有關,而k則是對該材料點塊實現一個遍歷,確保每個單元都被考慮到。本研究僅針對于單核計算來講,多核模擬將在后續展開介紹。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















