[原創]Abaqus UFIELD 和 USDFLD子程序詳解

UFIELDUSDFLD子程序詳解

                                      ———公眾號‘CAE仿真實驗室’出品

    UFIELDUSDFLDAbaqus極具迷惑性的兩個子程序,這兩個家伙長得就比較像兄弟,而且是用來自定義場變量的,同時還有一個狀態變量state variable摻和在中間,再加上幫助里面的解釋也基本上不是人話,很容易就把人搞二了今天帖主就來理一理這兩個子程序。

1、自定義場變量

    Abaqus場變量可以先簡單理解為每個單元或者每個節點都有一個值的變量,像結果輸出中的溫度、應力和應變等。有時候我們也需要定義Abaqus中不存在的一些稀奇古怪,有意義或無意義的場變量,比如濃度場,固化度場,損傷度。場變量最場用于定義變化的材料參數,即讓材料屬性如密度,彈性模量和一個場變量相關,通過更新場變量的值來改變材料參數(這一點和溫度相關的材料參數本質上是一致的),而場變量的更新在這兩個子程序中均可以完成,UFIELD是用來指定預定義變量的USDFLD對積分點的場變量重新定義UFIELDUSDFLD的本質上的區別是一個是定義在節點上的,一個是定義在單元材料積分點上的,同時這兩個又可以相互搭配,干不累

2、簡單實例

通過一個小例子來領會一下它們的要義實例通過自定義場變量來定義隨時間變化的彈性模量,如圖所示,定義彈性常數的時候,number of field variable 設為1下面兩行參數表示Field變量1彈性模量為10000Field變量為2彈性模量為20000


[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖1 

 inp中定義Ufield和Usdfld的關鍵字和Ufield代碼如下:

[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖2[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖3 

 

[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖4 

     如下應力應變曲線可以看出,時間步0.5s之前彈性模量為10000,0.5s后彈性模量為20000,確實是按照預期效果改變的。

[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖5 

通過給定field 不同的值,研究彈性模量的變化,發現當場變量小1時候,取1對應的值,大于2時候,是2對應的值,在12之間,則是通過插值得到。

blob.png    

當然這個例子比較簡單,可以不用子程序,直接通過*field 實現

[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖7

    最后,通過USDFLD也可以實現單元生死,將在以后說明。

3UFIELD

Abaqus可以通過關鍵字*Field來定義預定義場變量,對于簡單的問題,可以直接通過數據行的形式來定義場變量值,如下小例子,可以通過inp文件直接給定節點場變量的值,在field output中可以選上FV就可以在后處理中查看場變量云圖了但需要注意的是云圖顯示的并非節點值而是插值得到的積分點的值。對于較為復雜的場變量,往往沒辦法直接通過數據行的形式定義,這個時候就需要用到自定義場變量子程序了,即UFIELD子程序。

[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖8[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖9 

UFIELD中可以隨時更新場變量,有兩種更新方法,獨立更新方法(Individual variable updates)和同時更新方法Simultaneous variable updates),獨立更新就是每次調用子程序只更新一個場變量,如果有多個場變量需要更新,就調用多次同時更新就是一次調用子程序時,更新多個場變量,獨立更新是默認的更新方法,同時更新一般用于場變量之間相互關聯的時候兩者的子程序格式和inp文件中的接口 略有差異,說明如下

獨立更新時,FIELD(NSECPT,NFIELD)的大小為FIELD(1,1),但是可以通過KFIELD的值來判別這個場變量屬于哪一個,Inp中*FIELD,USER中也需要指定哪一個場變量,下圖中為三個場變量,所以需要添加三行,子程序中通過IF(KFIELD=1or2or3)來判斷對應關系。

         *Field,user,variable=1

         *Field,user,variable=2

         *Field,user,variable=3.

[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖10 

  同時更新時,FIELD(NSECPT,NFIELD)大小為FIELD(1,NFIELD),這時NFIELD=3,FIELD(1,1)FIELD1,2),FIELD1,3)之間是相互關聯的,用獨立更新的辦法顯然比較難實現,Inp中,子程序關鍵字則為*FIELD,user,number=3  

[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖11 

4USDFLD 

USDFLD子程序我已之前的一帖子[ http://www.yqgqt.org.cn/content/post/315597  Abaqus傳熱分析HETVAL和USDFLD子程序聯合]介紹過,它與UFIELD不同的地方是對積分點的場變量進行重新定義。通過initial condition 或者*field定義的預定義場變量是定義在節點上的,調用USDFLD之前,積分點處的場變量值是通過節點處的值插值得到的(插值方法和溫度場插值一樣),在調用USDFLD積分點處的場變量被重新定義

1UFIELD可以指定預定,并且可以更節點處場變量,并且可以插值到積分點

2USDFLD可以直接重定義結分店的值,不影響節點處的值

3依賴于場變量的材料屬性是根據積分點處的場變量值來更新材料參數的

USDFLD 還有一個比較有用的功能就是可以和其他子程序聯合使用,以達到傳遞數據的作用STATEV ()數組可以傳遞到 CREEP, HETVAL, UEXPAN, UMAT, UMATHT, UTRS子程序。

5USDFLDDFIELD聯合使用,

   當同時定義了這兩個子程序的時候讓人較為困惑的是場變量到底根據那個子程序來更新,這就和先調用哪一個程序關系很大了我們通過輸出場變量的值和時間進行測試:

[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖12 [原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖13 

 

我們可以發現,abaqus是先調用UFIELD再調用USDFLD 由于材料參數用在材料積分點上的,因而場變量相關的材料參數,依賴積分點的場變量,而不是節點的場變量也就同時通過UFIELDUSDFLD來定義場變量時,實際是根據USDFLD更新材料參數了。下圖說明了UFIELDUSDFLD調用的情況USDFLD調用增量步開始,UFIELD調用增量步結束

[原創]Abaqus UFIELD 和 USDFLD子程序詳解的圖14 

3幾點總結

UFIELD指定預定義節點場變量的、USDFLD是用來重新定義材積分點的場變量當沒有USDFLD定義材料積分點的場變量時,會通過節點場變量插值得到。當改變材料積分點場變量時,節點值不會改變。

USDFLD定義后是沒有激活的,必須通過*Field*initial conditiontype=field關鍵字來激活,或者定義場變量依賴的材料參數也可以激活

*field*initial condition關鍵字都不支持abaqus CAE操作,可以編輯inp或者edit keyword

學習有限元奇巧淫技

學習有限元理論知識

了然于心、游刃有余

CAE仿真實驗室,更多有限元干貨等你來拿!歡迎留言討論、若有疑問可私信~

https://mmbiz.qlogo.cn/mmbiz_jpg/ZKtYgmRdvjvCyNCM9Bib9iakX2vLpPqRNWLEV4jh9kyegl0hp4KRWIE0z3ZDXib8xzeKsh8NjQGV86sPSPUNVt5cQ/0?wx_fmt=jpeg


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

TOP

24
6
63