Vusdfld\vumat等顯示動力學子程序獲取單元編號的一種方法

在編寫vusdfld\vumat等子程序的時候,有時需要知道單元編號,以便對單元直接賦值,不同于usdfld,umat子程序,他們的單元編號信息會傳入子程序中。但是顯示動力學對應的子程序傳入的是積分點編號,并沒有單元編號。可以有一種取巧的方法來實現積分點和單元編號的對應。具體思路如下:

以邊長為50mm立方體為例,網格種子密度為5,共1000個單元,單元類型C3R8R。而在顯示動力學中,使用單核運算時,abaqus會一次性傳入136個積分點,1000個單元會傳入8次,最后一次為48個積分點,可以通過write(*,*) ‘nblock’,nblock輸出來看傳入積分點的變化情況。因此可以在程序中設置一個全局變量,每8次循環后就歸0,重新循環。利用狀態變量statenew(k,1)來存儲單元。

在后處理中顯示單元編號,可以看出云圖從1到1000,正好對應所有單元的個數,利用查詢值功能,可以看到單元ID和狀態變量的值是相同的。

Vusdfld\vumat等顯示動力學子程序獲取單元編號的一種方法的圖1

知道單元編號之后就可以對單元進行賦值操作,比如讀取一個隨機材料場文件,然后將數據賦值給單元。還可以利用該功能,實現類似“生死單元”的功能。一開始就根據單元編號抑制一部分,在之后的分析步在激活。比如第一個分析步殺死一些單元,然后下一個分析步在激活,比如刪除編號為501的單元。

Vusdfld\vumat等顯示動力學子程序獲取單元編號的一種方法的圖2Vusdfld\vumat等顯示動力學子程序獲取單元編號的一種方法的圖3

可以看到編號501的狀態變量為值為0,單元應力為0,說明該單元被刪除,不參與運算過程。如果在場輸出中把STATUS勾選上,可以視覺上顯示出來單元刪除的效果。結果如下圖所示:

Vusdfld\vumat等顯示動力學子程序獲取單元編號的一種方法的圖4

需要注意的是如果一個單元有多個積分點,則循環中需要跳過一部分積分點。該方法需要單核計算才能使用。

最后有子程序開發等相關需求,歡迎聯系我們。

微信公眾號.jpg


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

TOP

1
1
9