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+方向的位移載荷。

ABAQUS顯式子程序調用規則及nblock變量解釋的圖1

對模型劃分成不同網格數量進行測試,測試結果下表所示。

單元數
核數
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=7B=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的循環而變化,用戶可以根據需求設置其在代碼中的功能),結果截圖如下:

ABAQUS顯式子程序調用規則及nblock變量解釋的圖2

1000個數據,1~7各重復了136次,8重復了48次,與上述分析一致。

因此在nblock實際代表的是ABAQUS提供給子程序的材料點塊,這個塊區包含的單元數與模型單元數有關,而k則是對該材料點塊實現一個遍歷,確保每個單元都被考慮到。本研究僅針對于單核計算來講,多核模擬將在后續展開介紹。

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

TOP

12
2
17