lsdyna材料本構(gòu)模型二次開發(fā)經(jīng)驗分享(umat41)

Lsdyna材料umat子程序二次開發(fā)心得

                                                                        -----技術(shù)鄰:小土它月半

一、lsdyna二次開發(fā)基本介紹

 

進行DYNA的二次開發(fā),首先要知道相關(guān)的背景知識。下面對DYNA二次開發(fā)進行科普性的介紹。

(1)DYNA只是一個求解器(一個固定的可執(zhí)行的exe文件),它可以讀取K文件,并進行計算,最終輸出結(jié)果

(2)DYNA開發(fā)過程:DYNA源代碼——DYNA.OBJ文件或DYNA.lib——DYNA.exe文件(可執(zhí)行文件)

(3)二次開發(fā),實際上就是要修改原有的exe文件,在其中加入自己的程序(子材料什么的)。而不管你是“一般用戶”還是正版用戶,都不太可能直接修改exe文件。所以目前DYNA開發(fā)商,給正版用戶提供了下面的方式進行二次開發(fā):

從上面可以看出二次開發(fā)實際上是重新生成了一個全新的可執(zhí)行程序,這一過程需要F文件、DYNA.lib和其它資源文件,而不需要原來的DYNA.EXE文件,所以不管你是正版還是別的,如果沒有DYNA.lib文件等都是不可能進行二次開發(fā)的。

而一般用戶和正版用戶的區(qū)別在于:

1、正版用戶可以直接要求開發(fā)商提供F文件、DYNA.lib和其它資源文件,而一般用戶只有通過其它渠道。

2、將K文件提交DYNA.EXE計算時,正版用戶由于有l(wèi)icense,可以直接通過檢查并進行計算;而“一般用戶”目前基本上是通過修改DYNA.exe文件。跳過檢查,最終實現(xiàn)計算的。“一般用戶”完全有可能進行二次開發(fā),關(guān)鍵是要通過其它渠道得到正版用戶才有的F文件、DYNA.lib和其它資源文件。

 

二、lsdyna二次開發(fā)前期儲備

2.1 軟件安裝(最基本最簡單)

(1)必須擁有對應(yīng)版本的ls-dynalib文件包。需要根據(jù)不同的系統(tǒng)平臺(32位/64位、SMP/MPP)、版本(971R5.1.1/R711/R8.0.0)得到對應(yīng)的lib包。

(2)裝IFC之前需要先裝MVS

(3)有l(wèi)stc授權(quán)文件,即ls‐dyna求解器可求解。

下面是版本對應(yīng)關(guān)系:

1.png
2.png

2.2 力學知識儲備(最難)

因為做lsdyna本構(gòu)模型二次開發(fā)和直接使用內(nèi)置本構(gòu)進行計算難易程度差距很大,采用內(nèi)置本構(gòu)進行計算不用過多了解本構(gòu)底層邏輯。而二次開發(fā)自己的本構(gòu)需要對整套本構(gòu)的內(nèi)在邏輯有很好的理解,包括基本的應(yīng)力應(yīng)變關(guān)系、應(yīng)力偏量、靜水應(yīng)力、應(yīng)變率、應(yīng)力不變量、應(yīng)力偏量不變量等等。如果有做二次開發(fā)的打算,建議提早學習一下以上知識點,可以查閱相關(guān)書籍,個人建議如果想速成可以在B站上去學習,有一位女老師講的線上網(wǎng)課非常受用。

2.3 Fortran語言基礎(chǔ)(相對較容易)

二次開發(fā)對于編程的要求是很低的,只需要掌握最基本的即可。比如用到最多的條件語句里的比較:gt為大于、le為小于等于、ge為大于等于。其他的也都和上邊這些最基本的一樣,在具備以上兩點之后可以在lsdyna手冊里看一下具體代碼,先讀一遍,主要是學習套路和編程語言。

如果以上三點你都基本具備了,那么就可以自己嘗試去根據(jù)推導的本構(gòu)去編一下umat代碼了。

如果umat代碼寫完了,那么恭喜你,可以進入下一道難關(guān)了:編譯生成求解器。如果你是初學者,那么寫完之后的代碼肯定會錯誤百出,不過不要慌,這很好解決。因為在編譯的時候如果你的語法有錯誤,他都會提示的,在vs里打開行號就可以清晰地看到具體哪一行出錯了,fortran語法以及umat書寫格式問題就可以通過一次次改錯而解決掉了。

解決掉以上問題,你終于編譯成功了,生成了屬于你自己的lsdyna.exe,這時候你就可以使用它去計算了,需要用你的求解器把ansys內(nèi)置的lsdyna求解器給替換掉。在計算之前呢,還需要對k文件進行處理。我們都知道,正常使用內(nèi)置本構(gòu)模型需要調(diào)用不同的材料,比如111HJC以及272RHT等等。自定義本構(gòu)也是一樣的,在lspp里找到41-50打開進行賦值即可,需要注意的就是,你的代碼里邊可以沒有彈性模量E、泊松比μ,但是絕對要有體積模量K和剪切模量G,因為在卡片里要調(diào)用的。而且還需要注意的就是,你材料卡片參數(shù)賦值順序一定要和umat子程序里編寫的參數(shù)順序保持一致。

接下來,k文件已經(jīng)準備好了,就可以進行計算了。如果你一次就得到了想要的結(jié)果,那么恭喜你。大部分時候,編譯成功之后的求解試算過程是很漫長的。因為編譯只會提示你語法錯誤,而代碼本身的邏輯錯誤只能靠自己去發(fā)現(xiàn),這也就回歸了前面講到的必須要有扎實的力學基礎(chǔ)。代碼調(diào)試是很枯燥乏味而又不得不去做的一件事情,為了幫助調(diào)試,你需要在編寫的時候就把你想看的所有變量都賦值給歷史變量,這樣你在lspp里才可以看到,方便查錯誤。

查錯誤時候重點看每一個變量的力學公式你是否真的理解正確,是否真的在代碼里編寫正確了,還有就是你的一整套邏輯是否行得通,你可以把自己帶入到整個代碼里,思想先走一遍,看看是否可以循環(huán)往復(fù)地運行下去,置身代碼很重要。查錯誤時候一定要注意細節(jié),有時候一個正負號就有可能使整個代碼運算錯誤。我個人在進行計算時候報錯最多的就是負體積以及損傷云圖某些步驟不出現(xiàn),出現(xiàn)這些沒有特定的原因,最有可能就是某一個變量的公式你理解錯誤,仔細檢查!

最后給大家展示一下我用自定義本構(gòu)做的一個混凝土板中心爆炸的粉碎區(qū)形成及爆破裂紋擴展的結(jié)果:

3.png

lsdyna材料本構(gòu)模型二次開發(fā)經(jīng)驗分享(umat41)的圖4

如果大家對二次開發(fā)感興趣,關(guān)注我技術(shù)鄰號:“小土它月半”,可以私信來交流。

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

TOP

36
86
67