上期介紹了Radioss的二次開發的準備工作,本期我們將繼續深入,為大家帶來Radioss 材料本構的二次開發。本講我們將主要圍繞二次開發簡介、材料二次開發介紹、材料本構二次開發的starter、材料本構二次開發的engine這四點展開
上一期我們主要講了:二次開發背景知識,安裝Fortran編譯器,設置環境變數,編譯二次開發的程式,使用二次開發的程式。錯過上一期的小夥伴,可以點擊下方按鈕查看文章:
二次開發介紹
二次開發的内容
我們先用一張圖形象的說明一下Radioss的二次開發能開發哪一些內容:
Radioss支援單元屬性、實體單元、殼單元、SPH、材料本構、失效模型及狀態方程的二次開發,這些都需要和Radioss主程序協同工作。
Starter 和 Engine
Radioss的二次開發主要分為兩塊:Starter和Engine。
(點擊圖片可查看大圖)
Starter主要用於資料的讀取,例如讀取材料的參數等。圖中Starter Input file其實就是000.rad檔,Starter可以讀取其中定義的一些參數之後,形成Restart file,傳遞給Engine。Starter和Engine是通過一些參數進行資訊交換的。
Engine主要用於計算,Engine Input file就是0001.rad文件。Engine讀取Engine中的一些設置以及Starter檔當中的Restart file資訊進行計算,最後輸出結果檔。
Starter讀取用戶輸入然後通過UPARAM傳遞給Engine,Starter還可用於用戶輸入的列印,以便後期校驗。
Engine對於材料本構的二次開發來說,實際上就是計算每個單元中的應力,所以每個單元都需要迴圈。
和上一期一樣,我們會以視頻的形式對這一部分進行詳細講解,更方便大家學習~
材料二次開發介紹
二次開發本構卡片
例如,本講我們要開發一個材料本構的卡片,在什麼地方放上什麼參數,放幾行都可以自己定義。
需要注意的是,二次開發本構卡片必須名為:
USER1 或 LAW29
USER2 或 LAW30
USER3 或 LAW31
不能是其他名字,比如USER01,會出錯。
編寫兩個副程式的名字必須為:
LECMnn 的starter副程式
SIGEPSnn的engine副程式
如下圖所示:
如果是實體單元,副程式名字後直接接對應編號,如果是殼體的話,在編號後會有“c”。
LAW29-31做的材料本構開發可以用於2D或3D的單元,但是不可以用於彈簧(spring)或杆(Truss)單元。
SUBROUTINE
我們以 LAW29 為例,看一下材料本構的二次開發中的starter和engine分別有那些SUBROUTINE。
Starter(LECM29.f)
(點擊圖片可查看大圖)
如上圖所示,Starter中有LECMnn的SUBROUTINE,以LAW29為例,就是LECM29。。
同樣,Engine有SIGEPSnn的SUBROUTINE,以LAW29為例,就是SIGEPS29。Starter和engine中的LECM和SIGEPS名稱都不能更改,下圖中用於實體單元和殼單元的參數名稱也都不可更改。
(用於實體單元)
(用於殼單元)
材料本構二次開發的starter
接下來我們來詳細分析一下Starter的每一個參數分別起到什麼作用。
首先,副程式中的參數名稱不要改變,他們是用於和Radioss其他內部程式進行交流的。
IIN:讀取資料的參數
例如:
IOUT:輸出資料的參數
例如:
以1100處定義的格式輸出E和NU這兩個資料。
NUVAR
NUVAR:用於engine副程式的許多內部變數的存儲。
IFUNC
IFUNC:用於存儲材料模型中所用到的曲線(function)的陣列。
曲線的數目必須儲存在這個陣列中,同樣這個陣列的維數是定義在NFUNC中,維數的上限是定義在MAXFUNC。
PARMAT
PARMAT:用於存儲用於計算接觸剛度的材料模量。比如E-模量,G-模量,這些也用於在Starter中計算時間步長。
UPARAM
UPARAM:用於存儲材料參數的雙精度陣列,用於engine副程式。
例如存儲讀取的材料資料E-模量,泊松比,最大應變值,屈服應力,內部計算得到的G-模量等資料。陣列的維數是定義在NUPARAM中,陣列的維數的上限是定義在MAXUPARAM中。
文字表達可能有點複雜,建議大家看視頻學習哈~
材料本構二次開發的engine
在詳細介紹engine之前,因為在材料本構中engine就是計算每個單元中的應力,所以我們以實體單元線彈性各向同性材料本構來講一下演算法:
公式
實體單元中的應力應變:
線彈性各向同性材料本構:
放大看一下:
ENGINE參數
Engine(SIGEPS29.f)
第1-3行參數:
Engine的前三行用於存儲基本材料資料。
(用於實體單元)
NEL
NEL:需要計算的模型中的單元個數。
UPARAM
UPARAM:在Starter中讀取並存儲材料參數的雙精度陣列,陣列的維數是定義在NUPARAM中。
NUVAR
NUVAR:用於engine副程式的許多內部變數的存儲。
IFUNC
IFUNC:用於存儲材料模型中所用到的曲線(function)的陣列。曲線的數目必須儲存在這個陣列中,同樣這個陣列的維數是定義在NFUNC中。
NPF,TF
NPF,TF:用於FINTER的陣列參數。FINTER是Radioss讀取曲線以後用內插法再次表述。
NPT,IPT
NPT:積分點的數目,IPT是指當前的積分點。
TIME,TIMESTEP
TIME,TIMESTEP:當前時間和時間步長。
RHO0,RHO
RHO0,RHO:初始和當前的密度。
VOLUME,AREA
VOLUME,AREA:單元體積(用於實體單元solid),單元的面積(用於殼單元shell)。
EINT
EINT:總內能
第4-9行參數:
最後一行參數:
最後一行參數用於內部參數的計算存儲。
SOUNDSP
SOUNDSP:聲速,一般是可以在副程式中如下描述,實體單元solid:
VISCMAX
VISCMAX:最大阻尼,比如對viscous材料,他是用於穩定計算步長的
OFF
OFF:用於指示單元刪除的參數,單元不刪除為1,刪除就位0
如果是殼單元還有如下參數:
THK
THK:單元的厚度
PLA
PLA:用於存儲塑性應變的陣列
函数
除了參數以外,還可以在engine副程式中調特定用函數用於比如曲線讀取等。
這一部分內容比較多而且相對複雜,視頻講解學起來可能更輕鬆喲~
幫助手冊
關於材料本構的二次開發,大家可以查看幫助手冊:User Subroutines中chapter2,手冊中有更多的詳細資訊供大家查閱學習。
課後練習
因為本講內容較多,材料本構的實例介紹就留作大家的課後練習供大家學習鞏固。實例講解除了文檔也有視頻的介紹供大家學習~
本講所有材料及實例介紹下載:
材料及實例下載
我們下期再見啦~
留言列表