有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟

(原創,歡迎轉載,轉載請說明出處)

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖1有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖21 概述

本系列文章研究成熟的有限元理論基礎及在商用有限元軟件的實現方式,通過

(1)   基礎理論

(2)   商軟操作

(3)   自編程序

三者結合的方式將復雜繁瑣的結構有限元理論通過簡單直觀的方式展現出來,同時深層次的學習有限元理論和商業軟件的內部實現原理。

有限元的理論發展了幾十年已經相當成熟,商用有限元軟件同樣也是采用這些成熟的有限元理論,只是在實際應用過程中,商用CAE軟件在傳統的理論基礎上會做相應的修正以解決工程中遇到的不同問題,且各家軟件的修正方法都不一樣,每個主流商用軟件手冊中都會注明各個單元的理論采用了哪種理論公式,但都只是提一下用什么方法修正,很多沒有具體的實現公式。商用軟件對外就是一個黑盒子,除了開發人員,使用人員只能在黑盒子外猜測內部實現方式。

                                       有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖3     有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖4

一方面我們查閱各個主流商用軟件的理論手冊并通過進行大量的資料查閱猜測內部修正方法,另一方面我們自己編程實現結構有限元求解器,通過自研求解器和商軟的結果比較來驗證我們的猜測,如同管中窺豹一般來研究的修正方法,從而猜測商用有限元軟件的內部計算方法。我們關注CAE中的結構有限元,所以主要選擇了商用結構有限元軟件中文檔相對較完備的Abaqus來研究內部實現方式,同時對某些問題也會涉及其它的Nastran/Ansys等商軟。為了理解方便有很多問題在數學上其實并不嚴謹,同時由于水平有限可能有許多的理論錯誤,歡迎交流討論,也期待有更多的合作機會。

通用結構有限元軟件iSolver介紹視頻:

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖5        有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖6

                                          http://www.yqgqt.org.cn/college/video/c12884

==第36篇: DLOAD用戶子程序開發步驟==

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖7

前段時間很多朋友都問我們iSolver怎么實現DLOAD子程序,相比前面第八、九篇介紹的UMAT用戶自定義材料的開發,第二十、二十三篇介紹的UEL用戶自定義單元的開發,DLOAD要簡單很多,可以說,沒有任何復雜的算法,所以我們在此也僅僅介紹一下DLOAD的開發步驟,也順便給iSolver用戶提供一個簡單的算例幫助大家更好的使用iSolver的DLOAD功能。

實際生活中很多時候載荷是隨著某些物理量變化的,最常見的是隨著時間或者位置的變化,如果僅僅是隨著時間變化,那么在Abaqus中可以用Amplitude設置一個載荷和時間的對應表就行了;如果僅僅是隨著加載位置變化,那么可以直接把載荷位置獨立劃分出來,譬如設成一個單獨Set,在整個時間段內都只在該位置加載就行。那如果載荷既隨時間變化,同時在時間推進過程中加載位置也在變怎么辦呢?

譬如大壩的水位隨著潮汐的作用一天內會不同,導致不同時間段對大壩的水壓也不同。再譬如汽車在大橋上行駛,每一個時刻車子所在位置不同,對橋的荷載自然也不同了。

                                             

1.jpg

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖9

上述這些情況就必須要用到子程序了,如果是分布載荷,那么就是DLOAD子程序,DLOAD主要是將用戶特定的分布載荷隨時間、單元、積分點等變化算法編寫為計算機語言表示的公式,并實現和求解器之間的交互迭代。

Abaqus的DLOAD采用Fortran語言實現,而iSolver的DLOAD采用Matlab實現。本文首先簡單的討論了DLOAD的輸入輸出參數,然后詳細的介紹了基于Fortran和MATLAB 兩種方式的DLOAD的開發步驟,對比發現開發步驟基本相同,同時采用MATLAB 更加高效和靈活。

 

1.1 DLOAD的關鍵輸入輸出參數

和UEL相比,DLOAD的網上資料較少。這里我們列出了Abaqus的DLOAD接口的關鍵輸入輸出參數,如下表所示:

 

1.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖11

從輸入參數可以看出,Abaqus的分布載荷可以是分析步、增量步、時間、單元序號、積分點、面名稱等相關,可變參數只能是這么多,沒法擴展,如果載荷用到其它變量參數就麻煩了,這也是大家用商軟的一個痛點,商軟的接口暴露出來的很少,很多復雜的問題往往由于商軟接口的限定而沒法在商軟平臺上實現,真正卡死了我們深入研究問題和創新的能力,而自主軟件就可以突破這個限定。由于工程實際用戶的需要,期望在瞬態分析時可以設置分布載荷隨速度的變化曲線,所以iSolver在DLOAD接口中特意增加了VELOCTIY參數,方便用戶將速度值傳入子程序進行計算。

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖121.2 基于Fortran的Abaqus的DLOAD的開發步驟

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖131.2.1 在Abaqus界面中定義DLOAD

一般在Abaqus界面中定義DLOAD,方法是在創建載荷時,在Distribution的下拉框中選擇User-defined:

1.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖15

也可直接在inp中定義DLOAD,方法是在定義載荷時將分布類型從P改成對應的用戶自定義載荷(面載荷為PNU,體載荷為BXNU), 如圖所示:

2.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖17

然后在創建Job時,在User subroutine file中選擇或輸入用戶編寫的DLOAD的Fortran程序:

1.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖19

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖201.2.2 編寫

使用任意編輯器編寫.for文件,比如UltraEdit

2.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖22

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖231.2.3 編譯(可選)

Abaqus沒有自帶Fortran編譯器,所以用戶需要自己去安裝Fortran編譯器和Visual Studio Build Tools,并配置相應環境。具體配置過程與UMAT一致,可以查看我們關于環境配置的視頻:

http://www.yqgqt.org.cn/college/video/c13034?chapter=1

在環境配置完成之后,打開命令提示框,輸入命令Abaqus make Library=XXX.for,即開始編譯,編譯過程中的警告和錯誤都會打印在命令提示框內。

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖24有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖251.2.4 運行

運行DLOAD有多種方法,除了前面所述的基于模型創建Job時直接選擇DLOAD程序外,還可以在命令提示框中輸入Abaqus job=XXX user=XXX.for,如下圖所示。

1.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖27

另一種就是在Abaqus中創建基于inp文件的任務,然后再選擇對應的用戶子程序for文件,在任務管理器中提交運行,如圖所示。

2.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖29

至此,基于Fortran的DLOAD開發流程已經完成,但結果的正確性還需要更加細致的驗證,為更方便的查找問題,建議先采用單個單元調試DLOAD,在確保單個單元正確后再將DLOAD用于實際問題。

1.2.5 調試(可選)

如果想要知道代碼的運行結果是否和預期的一致,一種笨辦法是用print打印到log文件中,高效的方法是采用斷點調試的方法進行運行中的調試。

1.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖31

Abaqus支持命令行調試,不過命令行反復運行也比較繁瑣,用戶也可選擇用一鍵調試Abaqus的用戶子程序的DUS插件工具。DUS(Debug User Subroutine)是集成在ABAQUS/CAE中的一個插件,能夠一鍵啟動用戶配置的用戶子程序開發平臺(如Visual Studio 2008等),并進入對用戶定義子程序的單步調試模式。

1.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖33

有興趣的可到下面網頁下載使用。

Abaqus用戶子程序調試插件:

http://www.yqgqt.org.cn/content/post/424513

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖34有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖35有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖361.3 基于MATLAB 的iSolver的DLOAD開發步驟

基于MATLAB 的Abaqus的DLOAD具體開發步驟和Abaqus類似,只不過某些步驟需要用到自研有限元求解器開發平臺iSolver。

1.3.1 定義DLOAD

如果是通過Abaqus界面定義DLOAD,則與Abaqus相應的操作一致(見2.2.1 節),

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖371.3.2 編寫

在MATLAB 中創建并編寫DLOAD.m的文件,放入Abaqus工作目錄下。該文件只包括一個DLOAD函數,前面參數接口和Abaqus的接口參數完全一致,功能也是計算分布載荷的幅值,相對Fortran,利用MATLAB 可以更容易的編寫計算公式,同時可以利用MATLAB 在矩陣計算中各種強大功能和算法庫。因為Abaqus的DLOAD接口和計算功能各個版本相對固定,這個MATLAB 的DLOAD接口參數也相對固定,不會因為iSolver的版本不同而重新修改接口。

1.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖39

具體接口函數可直接查看iSolver的設置界面,在View Interface中選擇DLOAD就可查看,復制到DLOAD.m即可。

2.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖41

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖421.3.3 編譯(無)

由于MATLAB 是腳本語言,不需要編譯。

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖431.3.4 調試(可選)

在Abaqus菜單欄的Plug-ins里選擇iSolver插件的菜單。

1.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖45

點擊iSolver->Engine,按照下圖所示,在功能項User Subroutine中選擇DLOAD,勾選Debug。點擊Submit進行調試運行。

2.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖47

程序會自動打開MATLAB 并加載DLOAD.m文件,手動打上斷點

1.png

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖49

點擊在Debug菜單下的Run DLOAD 運行。

程序將在斷點處停止,且將鼠標移動到需要調試查看的參數上,能夠查看到對應的值。

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖50

1.png

按F10可以進行單步調試。

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖521.3.5 運行

在上述步驟的基礎上去掉勾選Debug選項,點擊Submit運行計算,此時將采用iSolver求解器聯合DLOAD.m進行求解分析,運行完畢點擊Results在Abaqus中查看結果。

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖531.4 視頻講解和操作驗證演示

如果覺得上面的文字太復雜,也可以看一下視頻的簡要講解和軟件演示,里面包括DLOAD在Abaqus和iSolver實現的從零開始的一個Step By Step操作的算例演示:

http://www.yqgqt.org.cn/college/video/c12884 20理論系列文章36-DLOAD用戶子程序開發步驟.mp4

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖54

 

1.png

1.5 總結

本文首先簡單的討論了DLOAD的一般含義,并詳細的介紹了基于Fortran和MATLAB 兩種方式的DLOAD的開發步驟,對比發現開發步驟基本相同,但MATLAB 更加高效和靈活。同時,由于iSolver基本單元類型和Abaqus算法完全一致,可以發現同一個算例驗證兩者分析結果完全一致,從而證明基于MATLAB 的DLOAD的流程和結果的正確性。

DLOAD的開發一方面要有扎實的公式推導能力,另一方面需要基礎的編程能力和開發工具應用水平,后者不是重點,但往往浪費了大家很多的精力,善用工具方能提高效率,基于Fortran和MATLAB 兩種方式的DLOAD的開發步驟和開發工具如下表:

 

項次

步驟

基于Fortran的

開發工具

基于MATLAB 的

開發工具

1

參數設置

Abaqus/CAE

Abaqus/CAE

2

編寫

文本編譯器

MATLAB

3

編譯

VS+iVF

無需編譯

4

調試

VS+iVF+DUS插件

MATLAB +iSolver插件

5

運行

Standard.exe+DLOAD.for

iSolver.exe+DLOAD.m

 

如果有任何其它疑問或者項目合作意向,也歡迎聯系我們:

SnowWave02 From www.yqgqt.org.cn

email: snowwave02@qq.com

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖56

以往的系列文章:

 ========第一階段========

第一篇:S4殼單元剛度矩陣研究。

http://www.yqgqt.org.cn/content/post/338859

第二篇:S4殼單元質量矩陣研究

http://www.yqgqt.org.cn/content/post/343905

第三篇:S4殼單元的剪切自鎖和沙漏控制

http://www.yqgqt.org.cn/content/post/350865

第四篇:非線性問題的求解。

http://www.yqgqt.org.cn/content/post/360565

第五篇:單元正確性驗證。

http://www.yqgqt.org.cn/content/post/373743

第六篇:General梁單元的剛度矩陣

http://www.yqgqt.org.cn/content/post/403932

第七篇:C3D8六面體單元的剛度矩陣

http://www.yqgqt.org.cn/content/post/430177

第八篇:UMAT用戶子程序開發步驟。

http://www.yqgqt.org.cn/content/post/432848

第九篇:編寫線性UMAT Step By Step

http://www.yqgqt.org.cn/content/post/440874

第十篇:耦合約束(Coupling constraints)的研究

http://www.yqgqt.org.cn/content/post/531029

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖57有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖58========第二階段========

第十一篇:自主CAE開發實戰經驗第一階段總結。

http://www.yqgqt.org.cn/content/post/532475

第十二篇:幾何梁單元的剛度矩陣

http://www.yqgqt.org.cn/content/post/534362

第十三篇:顯式和隱式的區別

http://www.yqgqt.org.cn/content/post/537154

第十四篇:殼的應力方向。

http://www.yqgqt.org.cn/content/post/1189260

第十五篇:殼的剪切應力。

http://www.yqgqt.org.cn/content/post/1191641

第十六篇:Part、Instance與Assembly。

http://www.yqgqt.org.cn/content/post/1195061

第十七篇:幾何非線性的物理含義。

http://www.yqgqt.org.cn/content/post/1198459

第十八篇:幾何非線性的應變。

http://www.yqgqt.org.cn/content/post/1201375

第十九篇:Abaqus幾何非線性的設置和后臺。

http://www.yqgqt.org.cn/content/post/1203064

第二十篇:UEL用戶子程序開發步驟

http://www.yqgqt.org.cn/content/post/1204261

有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖59有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟的圖60========第三階段========

第二十一篇:自主CAE開發實戰經驗第二階段總結。

http://www.yqgqt.org.cn/content/post/1204970

第二十二篇:幾何非線性的剛度矩陣求解

http://www.yqgqt.org.cn/content/post/1254435

第二十三篇:編寫簡單面內拉伸問題UEL Step By  Step

http://www.yqgqt.org.cn/content/post/1256835

第二十四篇:顯式求解Step By Step。

http://www.yqgqt.org.cn/content/post/1261165

第二十五篇:顯式分析的穩定時間增量。

http://www.yqgqt.org.cn/content/post/1263601

第二十六篇:編寫線性VUMAT Step By Step。

http://www.yqgqt.org.cn/content/post/1266640

第二十七篇:Abaqus內部計算和顯示的應變。

http://www.yqgqt.org.cn/content/post/1273788

第二十八篇:幾何非線性的T.L.和U.L.描述方法

http://www.yqgqt.org.cn/content/post/1282956

第二十九篇:幾何非線性的T.L.和U.L.轉換關系

http://www.yqgqt.org.cn/content/post/1286065

第三十篇:諧響應分析原理

http://www.yqgqt.org.cn/content/post/1290151

========第四階段========

第三十一篇:自主CAE開發實戰經驗第三階段總結

http://www.yqgqt.org.cn/content/post/1294824

第三十二篇:諧響應分析算法

http://www.yqgqt.org.cn/content/post/1299983

第三十三篇:線性瞬態動力學

http://www.yqgqt.org.cn/content/post/1302074

第三十四篇:非線性瞬態分析

http://www.yqgqt.org.cn/content/post/1787283

第三十五篇:接觸求解算法

http://www.yqgqt.org.cn/content/post/1792869

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

TOP

11
3
32