LS-DYNA的材料模型二次開發過程

  摘自:上海仿坤(LS-DYNA  China)官網

http://lsdyna-china.com/display/247699.html

LS-DYNA的材料模型二次開發過程

Zhidong Han, Brian Wainscott

Livermore Software Technology Corp.

 

摘要

上期我們介紹了LS-DYNA 新一代二次開發環境的編譯連接過程和新增功能,多個用戶子程序可以通過動態連接庫的方式同時動態加載。本文是其續篇,將以一個簡單的材料模型來演示在新的環境下的一個完整的開發過程,包括編譯,連接,動態加載,源程序跟蹤調試,以及模型驗證等環節。

 

引言

LS-DYNA 作為一個大型的通用有限元程序,對于多重非線性的大規模問題的解決具有獨特的優勢,在實際工程中也得到非常廣泛的應用。目前材料庫有300 種材料模型,其中多數都提供二維平面應力和三維應力兩個版本。LS-DYNA 提供完整的用戶材料模型的開發模板,讓用戶可以開發自己的材料模型。與一般的隱式算法相比,顯式有限元分析的時間步長很小,計算規模大,導致對用戶子程序的調用非常頻繁。LS-DYNA 為減少子程序的調用,內部采用批處理的方式調用用戶子程序,要求一次調用能處理幾百個單元,這也為用戶子程序實現矢量化計算提供了方便。因此,考慮到大變形,LS-DYNA 對用戶子程序的特殊要求也增加了用戶開發的復雜度。另外,對于一個對初次接觸LS-DYNA 的用戶來說,主程序的執行碼不帶調試信息,較難在源程序上跟蹤調試,加大了二次開發中的程序查錯的難度。

本文以一個簡單大變形下的線彈性材料模型為例,演示在新的開發環境下的完整的開發, 調試和驗證過程。

線彈性材料物理模型

1)應力應變關系

在LS-DYNA 中應力和應變都是6 個分量,排列順序為

1.png

LS-DYNA的材料模型二次開發過程的圖2

其中E和v分別為楊氏模量和泊松比。

2)驗證算例

本文的驗證算例為只有一個8 節點體單元的模型,如圖一所示,長為L=2.0m,寬和高均為b=1.0m。加載條件為在X 方向單拉,而在Y 及Z 方向的位移為零。上述應力應變關系在小變形的情況下則簡化為

2.png LS-DYNA 用戶子程序開發和調試

1)UMAT 子程序的編譯和連接

LS-DYNA 中的用戶材料號是從41 號到50 號,對應的第一級用戶入口子程序是dyn21.f 中的usrmat,受關鍵字*MAT_USER_DEFINED_MATERIAL_MODELS 控制。

subroutine usrmat (lft,llt,cm,bqs,capa,eltype,mt,ipt,

. npc,plc,crv,nnpcrv,rcoor,scoor,tcoor,nnm1,nip,ipt_thk)

進入這個子程序后,再根據不同的單元類型選擇不同的第二級材料子程序

l  urmathn: 體單元的三維材料模型

l  urmats: 殼單元的二維平面應力材料模型

l  urmatb, urmatd, urmatt: 三種不同的梁單元模型

這三個不同子程序根據各自的單元特點對應力應變進行相應的第二級處理之后,再進入的第三級的用戶子程序umat41, umat42, … , umat50。這10 個子程序是標準的串行版本模板,演示不同類型的材料模型。一般的開發過程中,第一級和第二級入口程序都不需要改動,只需要從第三級這10 個子程序模板中選一個較為貼近的開始。本文選擇umat41 這個子程序。

進入LS-DYNA 開發包的目錄后,進行如下幾個操作步驟:

1.       把umat41 子程序從dyn21.f 中刪除,并復制到另一個新的源文件umat41.f

subroutine umat41 (cm,eps,sig,epsp,hsv,dt1,capa,etype,tt,

1 temper,failel,crv,nnpcrv,cma,qmat,elsiz,idele,reject)

2. 編輯開發包中的Makefile,把umat41.f的obj文件加到MY_OBJS變量中

MY_OBJS = dyn21.o dyn21b.o init_dyn21.o couple2other_user.o dynrfn_user.o umat41.o 

3. 選擇編譯器

原來的編譯器設置是和主程序一致的,LINUX系統一般是INTEL或者PGI的Fortran編譯器,這些商業編譯器的執行代碼一般來說效率比較高。在LS-DYNA新的編譯環境下,用戶子程序的編譯器不要求和主程序一致,本文采用開源的gfortran來演示編譯過程。編譯環境為:

Linux系統:OpenSUSE LEAP 42.1

編譯器:gfortran 4.8.5

MPI: platformmpi Community Edition 9.1.2

( http://www-03.ibm.com/systems/platformcomputing/products/mpi/ )

將Makefile中的編譯變量設置為

MY_FLAG = -g -fPIC -fcray-pointer -I/opt/platform_mpi/include

FC = /usr/bin/gfortran

LD = /usr/bin/gfortran -shared

export MPI_F77 := /usr/bin/gfortran

MY_TARGET = gnu.so

其中-g是讓編譯的用戶模塊帶源程序的調試跟蹤信息。這些變量的詳細解釋請參閱上期的“LS-DYNA用戶子程序的編譯和連接”一節。

4.用make命令編譯,生成gnu.so,就完成了編輯和連接。

2)UMAT子程序的調用

上面編譯好的gnu.so可以做為開發好的用戶模塊配合模型使用。這個模塊和LS-DYNA主執行程序是分開的,即使將來LS-DYNA主程序的版本升級也不影響這個模塊。調用的方法是在模型的.k文件里面加入三行

*MODULE_LOAD

myumat41

gnu.so

其中:第一行是關鍵字,第二行是這個模塊在這個模型的id,第三行是這個模塊的編譯后文件。然后就可以按照原來的方法執行LSDYNA主程序就可以了。這個關鍵字有很多匹配規則,詳見上期的“LS-DYNA用戶子程序的動態連接庫的調用”一節。本文演示的是MPP版本的主程序,單個單元模型只能用一個CPU來運行:

mppdyna i=demo.k

3)UMAT子程序的跟蹤調試

當子程序運行遇到問題的時候,最簡單直接方法是用打印命令,與LS-DYNA的59號文件對應的是message文件,對于MPP程序,每個CPU都有一個自己的message文件,因此打印方法不容易混亂,也很方便。比如:

WRITE(59,*)’sig=’,sig(1),sig(2),sig(3)

WRITE(59,*)’hsv=’,hsv(1),hsv(2)

有些情況下,還是要進入到源程序里面,在源程序上進行跟蹤調試。本文以gdb為例,啟動調試程序,進行以下步驟:

1. 調入主程序

gdb mppdyna

2. 設置斷點

b umat41

(此時會顯示umat41 不存在,可能要用set breakpoint pending on 激活在調用時補設斷點)

3. 運行程序

r i=demo.k

4. 程序在進入umat41 后,就會停下來。比如,打印變量

p cm(1)

這是* MAT_USER_DEFINED_MATERIAL_MODELS 卡片輸入的第一個材料常數P1。

材料模型的驗證

根據前面定義的物理模型,利用LS-Prepost 建立一個有限元模型,包含一個八節點的實體單元,長度L=2m,寬和高為b=1m。并用LS-Prepost 施加所有的邊界條件和給定位移以及材料屬性后,有限元模型如圖二所示:

3.png

圖二 簡單的單向加載有限元模型

所有的節點都固定,只有2,4,6,8 節點在X 方向有指定速度為1.0m/s。分析時間為1s, 則節點位移和工程應變時間曲線為:

4.png

與圖三的結果吻合得很好。

5.png

LS-DYNA的材料模型二次開發過程的圖7

圖三 單向加載位移時間曲線

材料模型為線彈性,E=150x109 及v=0.25,則應力時間曲線為:

 ? σ(t)=180 x109ε(t)=90x109t

而圖四中計算結果給出的最大應力則只有σmax =73 x109Pa 

LS-DYNA的材料模型二次開發過程的圖8

6.png

圖四 單向加載真實應力時間曲線

 

原因是LS-DYNA 中的應變都是真實應變,而不是上面計算的工程應變。真實應變的計算方法為:

LS-DYNA的材料模型二次開發過程的圖10

7.png

得到最大真實應變e max=ln(1.5)=0.405

代入應力計算公式可以得到最大真實應力的理論值是73 x109Pa,與有限元的分析結果完全吻合。同時計算結果也表明,當時間t=0.001, 工程應變ε(0.001)=0.005,僅為千分之五, 而此時的真實應力為σ(0.001)=89.7x109t, 與線性公式相差0.3%,而當時間t=0.2時,工程應變達到百分之十,ε(0.2)=0.1,真實應力為σ(0.2)=171 x109t, 與線性公式相差4.7%。

在開發LS-DYNA 的用戶子程序的時候,一定要考慮大變形情況下的本構關系。一般來說, 把線性小變形的本構關系直接放進LS-DYNA,真實應力會有很大的差別。這點與一般的小變形下的本構模型開發有很大的不同,也加大了LS-DYNA 二次開發的難度。

8.png
9.png
10.png

作者簡介

*韓志東/Zhidong Han博士1998年畢業于清華大學計算固體力學專業,于2011年加入LSTC。他目前從事材料損傷斷裂分析及厚殼單元等方面研發。

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

TOP

13
3
26