有限元理論基礎及Abaqus內部實現方式研究系列23: 編寫簡單面內拉伸問題UEL Step By
(原創,轉載請注明出處)
![有限元理論基礎及Abaqus內部實現方式研究系列23: 編寫簡單面內拉伸問題UEL Step By的圖1]()
==概述==
本系列文章研究成熟的有限元理論基礎及在商用有限元軟件的實現方式,通過
(1) 基礎理論
(2) 商軟操作
(3) 自編程序
三者結合的方式將復雜繁瑣的結構有限元理論通過簡單直觀的方式展現出來,同時深層次的學習有限元理論和商業軟件的內部實現原理。
有限元的理論發展了幾十年已經相當成熟,商用有限元軟件同樣也是采用這些成熟的有限元理論,只是在實際應用過程中,商用CAE軟件在傳統的理論基礎上會做相應的修正以解決工程中遇到的不同問題,且各家軟件的修正方法都不一樣,每個主流商用軟件手冊中都會注明各個單元的理論采用了哪種理論公式,但都只是提一下用什么方法修正,很多沒有具體的實現公式。商用軟件對外就是一個黑盒子,除了開發人員,使用人員只能在黑盒子外猜測內部實現方式。

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


http://www.yqgqt.org.cn/college/video/c12884
==第23篇:編寫簡單面內拉伸問題UEL Step By Step==
面內拉伸問題是彈塑性力學的經典基礎問題之一,即僅考慮平面里受力拉伸,而忽略力垂直于該面方向的情況。Abaqus在二維情況下采用平面應力單元,三維情況下采用殼單元。當然殼單元考慮的不僅僅是面內拉伸問題,還包括彎曲、剪切等其它問題,具體內容可以參照我們之前的文章:《有限元理論基礎及Abaqus內部實現方式研究系列1:S4殼單元剛度矩陣研究》。本次我們僅考慮面內拉伸問題,并以UEL的方式實現。
1.1 模型來源
本文中所使用的模型文件是從一個簡單殼單元的面內拉伸問題算例修改而來,即將單元定義和材料屬性部分改為自定義單元的屬性,具體修改方法,可以參照我們之前的文章:《有限元理論基礎及Abaqus內部實現方式研究系列20: UEL用戶子程序開發步驟》。也可直接從技術鄰網頁下下載,包含兩個模型文件,一個是原始S4R模型的inp文件,一個是修改后使用UEL的inp文件:
1.2 算法步驟
有限元方法有其基本步驟:
1、 離散化和選擇單元類型;
2、 選擇位移函數;
3、 定義應變/位移和應力/應變關系;
4、 推導單元剛度矩陣和方程。
5、 組裝單元方程得出總體方程并引進邊界條件
6、 解未知自由度(或廣義位移)
7、 求解單元應變和應力
8、 解釋結果
在Abaqus的建模過程中我們已經完成了步驟1,在求解過程中Abaqus會自動完成步驟5、6、7、8,本文的算法步驟則側重于計算單元剛度矩陣和方程,即步驟2、3、4,也就是UEL的編寫。
結合UEL接口,針對面內拉伸問題的一般算法步驟:
1、計算形函數
2、計算B矩陣,即應變/位移關系矩陣
3、計算D矩陣,即應力/應變關系矩陣
5、計算不平衡力
注:計算不平衡力用于Abaqus靜力分析時進行收斂判斷。
1.3 UEL編寫與運行
1.3.1 UEL編寫
UEL接口和For文件創建和使用方法可參照文章:《有限元理論基礎及Abaqus內部實現方式研究系列20: UEL用戶子程序開發步驟》,接下來就按照算法步驟編寫UEL文件。
1、計算形函數

2、計算B矩陣

3、計算D矩陣

4、計算剛度矩陣
K=B’*D*B*wt*h*det(Jacob)
5、計算不平衡力
RHS=RHS-K*U
完成以后保存for文件。編程過程中有不明白的問題可以參照我們的視頻教程:
http://www.yqgqt.org.cn/college/video/c14948
1.3.2 UEL運行和調試
UEL運行和單步調試的方法也可見我們之前的文章:《有限元理論基礎及Abaqus內部實現方式研究系列20: UEL用戶子程序開發步驟》,涉及到的單步調試插件DUS,見帖子:http://www.yqgqt.org.cn/content/post/424513。
1.3.3 結果對比
我們在運行完成之后,將Abaqus的S4R單元和我們編寫的UEL單元運行的結果進行對比,如下圖所示。結果上存在一些差異,這是由于Abaqus的S4R單元做了很多其它的工作,譬如厚度方向積分、基于工程經驗的修正等。

圖 25 位移云圖,左側為UEL,右側為S4R
==總結==
本文通過簡單面內拉伸問題UEL的編寫,介紹解決有限元問題從理論到算法再到編程實現的一般流程。文中介紹了有限元方法的基本步驟,面內拉伸問題的基本算法步驟,旨在讓大家對這些基本流程有初步的認識和了解,為后續的系列文章和視頻打下基礎。
如果有任何其它疑問或者項目合作意向,也歡迎聯系我們:
SnowWave02Fromwww.yqgqt.org.cn
email: snowwave02@qq.com
以往的系列文章:
1.5.1 ========第一階段========
第一篇:S4殼單元剛度矩陣研究。介紹Abaqus的S4剛度矩陣在普通厚殼理論上的修正。
http://www.yqgqt.org.cn/content/post/338859
第二篇:S4殼單元質量矩陣研究。介紹Abaqus的S4和Nastran的Quad4單元的質量矩陣。
http://www.yqgqt.org.cn/content/post/343905
第三篇:S4殼單元的剪切自鎖和沙漏控制。介紹Abaqus的S4單元如何來消除剪切自鎖以及S4R如何來抑制沙漏的。
http://www.yqgqt.org.cn/content/post/350865
第四篇:非線性問題的求解。介紹Abaqus在非線性分析中采用的數值計算的求解方法。
http://www.yqgqt.org.cn/content/post/360565
第五篇:單元正確性驗證。介紹有限元單元正確性的驗證方法,通過多個實例比較自研結構求解器程序iSolver與Abaqus的分析結果,從而說明整個正確性驗證的過程和iSolver結果的正確性。
http://www.yqgqt.org.cn/content/post/373743
第六篇:General梁單元的剛度矩陣。介紹梁單元的基礎理論和Abaqus中General梁單元的剛度矩陣的修正方式,采用這些修正方式可以得到和Abaqus梁單元完全一致的剛度矩陣。
http://www.yqgqt.org.cn/content/post/403932
第七篇:C3D8六面體單元的剛度矩陣。介紹六面體單元的基礎理論和Abaqus中C3D8R六面體單元的剛度矩陣的修正方式,采用這些修正方式可以得到和Abaqus六面體單元完全一致的剛度矩陣。
http://www.yqgqt.org.cn/content/post/430177
第八篇:UMAT用戶子程序開發步驟。介紹基于Fortran和Matlab兩種方式的Abaqus的UMAT的開發步驟,對比發現開發步驟基本相同,同時采用Matlab更加高效和靈活。
http://www.yqgqt.org.cn/content/post/432848
第九篇:編寫線性UMAT Step By Step。介紹基于Matlab線性零基礎,從零開始Step by Step的UMAT的編寫和調試方法,幫助初學者UMAT入門。
http://www.yqgqt.org.cn/content/post/440874
第十篇:耦合約束(Coupling constraints)的研究。介紹Abaqus中耦合約束的原理,并使用兩個簡單算例加以驗證。
http://www.yqgqt.org.cn/content/post/531029
1.5.2 ========第二階段========
第十一篇:自主CAE開發實戰經驗第一階段總結。介紹了iSolver開發以來的階段性總結,從整體角度上介紹一下自主CAE的一些實戰經驗,包括開發時間預估、框架設計、編程語言選擇、測試、未來發展方向等。
http://www.yqgqt.org.cn/content/post/532475
第十二篇:幾何梁單元的剛度矩陣。研究了Abaqus中幾何梁的B31單元的剛度矩陣的求解方式,以L梁為例,介紹General梁用到的面積、慣性矩、扭轉常數等參數在幾何梁中是如何通過幾何形狀求得的,根據這些參數,可以得到和Abaqus完全一致的剛度矩陣,從而對只有幾何梁組成的任意模型一般都能得到Abaqus完全一致的分析結果,并用一個簡單的算例驗證了該想法。
http://www.yqgqt.org.cn/content/post/534362
第十三篇:顯式和隱式的區別。介紹了顯式和隱式的特點,并給出一個數學算例,分別利用前向歐拉和后向歐拉求解,以求直觀表現顯式和隱式在求解過程中的差異,以及增量步長對求解結果的影響。
http://www.yqgqt.org.cn/content/post/537154
第十四篇:殼的應力方向。簡單介紹了一下數學上張量和Abaqus中殼的應力方向,并說明Abaqus這么選取的意義,最后通過自編程序iSolver來驗證殼的應力方向的正確性。
http://www.yqgqt.org.cn/content/post/1189260
第十五篇:殼的剪切應力。介紹了殼單元中實際的和板殼近似理論中的剪切應力,也簡單猜測了一下Abaqus的內部實現流程,最后通過一個算例來驗算Abaqus中的真實的剪切應力。
http://www.yqgqt.org.cn/content/post/1191641
第十六篇:Part、Instance與Assembly。介紹了Part、Instance與Assembly三者之間的關系,分析了Instance的網格形成原理,并猜測Abaqus的內部組裝實現流程,隨后針對某手機整機多part算例,通過自編程序iSolver的結果比對驗證我們的猜想。
http://www.yqgqt.org.cn/content/post/1195061
第十七篇:幾何非線性的物理含義。介紹了幾何非線性的簡單的物理含義,并通過幾何非線性的懸臂梁Abaqus和iSolver的小應變情況的結果,從直觀上理解幾何非線性和線性的差異。
http://www.yqgqt.org.cn/content/post/1198459
第十八篇:幾何非線性的應變。首先從位移、變形和應變的區別說起,然后通過一維的簡單例子具體介紹了幾何非線性下的應變的度量方式,并給出了工程應變、 真實應變、Green應變三者一維情況下在數學上的表達方式。
http://www.yqgqt.org.cn/content/post/1201375
第十九篇:Abaqus幾何非線性的設置和后臺。首先介紹了幾何非線性一般的分類,然后詳細說明了Abaqus中幾何非線性的設置方式和常用單元的分類,最后以一個殼單元的簡單算例為對象,可以發現應變理論、Abaqus和iSolver三者在線性、小應變幾何非線性和大應變幾何非線性三種情況下都完全一致,從而驗證Abaqus幾何非線性后臺采用的應變和我們的預想一致。
http://www.yqgqt.org.cn/content/post/1203064
第二十篇:UEL用戶子程序開發步驟。本文首先簡單的討論了UEL的一般含義,并詳細的介紹了基于Fortran和Matlab兩種方式的UEL的開發步驟,對比發現開發步驟基本相同,但Matlab更加高效和靈活。
http://www.yqgqt.org.cn/content/post/1204261
1.5.3 ========第三階段========
第二十一篇:自主CAE開發實戰經驗第二階段總結。從實戰角度介紹自主CAE在推廣和工程化應用的過程中的體會,同時說明一個CAE平臺最重要的兩個特點:可擴展和易維護。
http://www.yqgqt.org.cn/content/post/1204970
第二十二篇:幾何非線性的剛度矩陣求解。介紹幾何非線性下的剛度矩陣的理論推導和計算機求解方法,最后利用一個簡單的算例驗證我們對Abaqus幾何非線性的剛度矩陣的實現方式的猜測。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















