說(shuō)明
本系列文章本人基本沒(méi)有原創(chuàng)貢獻(xiàn),都是在學(xué)習(xí)過(guò)程中找到的相關(guān)書(shū)籍和教程相關(guān)內(nèi)容的匯總和梳理編輯鼠证。為了尊重原創(chuàng)者成果矩肩,本人在本系列文章后面列出了參考和引用的文獻(xiàn)來(lái)源。
abaqus二次開(kāi)發(fā)概述
導(dǎo)語(yǔ)
隨著計(jì)算技術(shù)和計(jì)算機(jī)的快速發(fā)展愧捕,有限元軟件的發(fā)展速度迅速奢驯,功能日漸強(qiáng)大。目前國(guó)際上被廣泛采用的通用有限元軟件有 ANSYS次绘、MSC瘪阁、ABAQUS 等。利用商業(yè)軟件進(jìn)行計(jì)算現(xiàn)在已是科學(xué)研究中的一項(xiàng)重要手段邮偎。由于工程問(wèn)題的千差萬(wàn)別管跺,不同的用戶(hù)有不同的專(zhuān)業(yè)背景和發(fā)展方向,通用軟件不免在具體的專(zhuān)業(yè)方面有所欠缺禾进,針對(duì)這些不足豁跑,大部分的通用軟件都提供了二次開(kāi)發(fā)功能,以幫助用戶(hù)減少重復(fù)性的編程工作泻云、提高開(kāi)發(fā)起點(diǎn)艇拍、縮短研發(fā)周期、降低開(kāi)發(fā)成本宠纯,并能簡(jiǎn)化后期維護(hù)工作淑倾,給用戶(hù)帶來(lái)很多方便≌鹘罚基于通用軟件平臺(tái)進(jìn)行開(kāi)發(fā)娇哆,是目前研究的一個(gè)重要發(fā)展方向。ABAQUS 也提供了若干用戶(hù)子程序(User Subroutines)接口勃救,它是一個(gè)功能非常強(qiáng)大且適用的分析工具碍讨,與命令行的程序格式相比,用戶(hù)子程序的限制少得多蒙秒,從而使用更加靈活方便勃黍。
ABAQUS不僅提供標(biāo)準(zhǔn)的有限元分析程序,而且具有良好的開(kāi)放性晕讲,可利用它提供的用戶(hù)子程序接口生成非標(biāo)準(zhǔn)的分析程序來(lái)滿(mǎn)足用戶(hù)的需要覆获,在實(shí)際工程中得到廣泛應(yīng)用马澈。abaqus的二次開(kāi)發(fā)包括用戶(hù)子程序的開(kāi)發(fā)以及abaqus和其他商業(yè)軟件接口處理兩種方式。本系列主要說(shuō)明子程序的開(kāi)發(fā)弄息。
ABAQUS 允許用戶(hù)通過(guò)子程序以代碼的形式來(lái)擴(kuò)展主程序的功能痊班,并給用戶(hù)提供了強(qiáng)大而又靈活的用戶(hù)子程序接口和應(yīng)用程序接口(Utility Routine),ABAQUS共有49個(gè)用戶(hù)子程序接口摹量,15個(gè)應(yīng)用程序接口涤伐,用戶(hù)可以定義包括邊界條件、荷載條件缨称、接觸條件凝果、材料特性以及利用用戶(hù)子程序和其它應(yīng)用軟件進(jìn)行數(shù)值交換等等。這些用戶(hù)子程序接口使得用戶(hù)解決一些問(wèn)題時(shí)有很大的靈活性睦尽,同時(shí)大大的擴(kuò)充了 ABAQUS 的功能器净。例如:通過(guò)用戶(hù)定義單元接口,用戶(hù)自定義的任何類(lèi)型的線性或非線性單元都可以被引入模型中当凡,對(duì)于線性單元?jiǎng)偠染仃嚭唾|(zhì)量矩陣可以直接確定掌动。例如:如果荷載條件是時(shí)間的函數(shù),這在ABAQUS/CAE 和INPUT文件中是難以實(shí)現(xiàn)的宁玫,但在用戶(hù)子程序DLOAD中就很容易實(shí)現(xiàn)粗恢。同時(shí),用戶(hù)子程序也可被用來(lái)定義這些單元的線性和非線性特性欧瘪。通過(guò)用戶(hù)材料子程序接口眷射,用戶(hù)可定義任何補(bǔ)充的材料模型,不但任意數(shù)量的材料常數(shù)都可以作為資料被讀取佛掖,而且 ABAQUS 對(duì)于任何數(shù)量的與解相關(guān)的狀態(tài)變量在每一材料計(jì)數(shù)點(diǎn)都提供了存儲(chǔ)功能妖碉,以便在這些子程序中應(yīng)用。
用戶(hù)子程序特點(diǎn)
- 如果abaqus的一些固有選項(xiàng)模型功能有限芥被,用戶(hù)子程序可以提高abaqus中這些選項(xiàng)的功能欧宜。
- 通常用戶(hù)子程序是用Fortran語(yǔ)言的代碼寫(xiě)成的。
- 子程序可以以幾種不同方式包還在模型中拴魄。
- 由于他們沒(méi)有儲(chǔ)存在restart文件中冗茸,如果需要的話,可以在重新開(kāi)始運(yùn)行時(shí)修改匹中。
- 在有些情況下夏漱,子程序可以直接調(diào)用abaqus允許的已有的程序。
abaqus用戶(hù)程序接口與調(diào)用方式
ABAQUS的用戶(hù)子程序是根據(jù)ABAQUS提供的相應(yīng)接口顶捷,按照Fortran語(yǔ)法挂绰,用戶(hù)自己編寫(xiě)的代碼。它是一個(gè)獨(dú)立的程序單元服赎,可以獨(dú)立的被存儲(chǔ)和編譯葵蒂,也能被其它程序單元引用交播,因此,利用它可帶回大量數(shù)據(jù)供引用程序使用践付,也可以用它來(lái)完成各種特殊的功能秦士。它的一般結(jié)構(gòu)形式是:
SUBROUTINE name (x1,x2,……,xn)
INCLUDE ‘ABA_PARAM.INC’ (用于 ABAQUS/Standard 用戶(hù)子程序中)
OR
INCLUDE ‘VABA_PARAM.INC’ (用于 ABAQUS/Explicit 用戶(hù)子程序中)
……
RETURN
END
其中,x1荔仁,x2,……芽死,xn是ABAQUS提供的用戶(hù)子程序的接口參數(shù)乏梁,有些參數(shù)是ABAQUS傳到用戶(hù)子程序中的,例如:SUBROUTINE DLOAD 中的 KSTEP关贵、KINC遇骑、COORDS;有些是需要用戶(hù)自己定義的揖曾,例如 F落萎。文件 aba_param.inc 和 vaba_param.inc隨著ABAQUS 軟件的安裝而包含在操作系統(tǒng)中,它們含有重要的參數(shù)炭剪,幫助ABAQUS 主求解程序?qū)τ脩?hù)子程序進(jìn)行編譯和鏈接练链。當(dāng)控制遇到RETURN語(yǔ)句時(shí)便返回到引用程序單元中去,END語(yǔ)句是用戶(hù)子程序結(jié)束的標(biāo)志奴拦。
在一個(gè)算例中媒鼓,用戶(hù)可以用到多個(gè)用戶(hù)子程序,但必須把它們放在一個(gè)以.for為擴(kuò)展名的文件中错妖。運(yùn)行帶有用戶(hù)子程序的算例有兩種方法:一是在 CAE 中運(yùn)行绿鸣,在 EDIT JOB 菜單中的 GENERAL 子菜單的 USER SUBROUTINE FILE 對(duì)話框中選擇用戶(hù)子程序所在的文件即可;另外是在 ABAQUS.COMMAND 中運(yùn)行暂氯,語(yǔ)法如下:
abaqus job=job-name user={source-file | object-file}
編制用戶(hù)子程序時(shí)應(yīng)注意:
- 用戶(hù)子程序相互之間不能調(diào)用潮模,但可以調(diào)用用戶(hù)自己編寫(xiě)的 Fortran 子程序和 ABAQUS 應(yīng)用程序。ABAQUS 應(yīng)用程序必須由用戶(hù)子程序調(diào)用痴施。當(dāng)用戶(hù)編寫(xiě)Fortran 子程序時(shí)擎厢,建議子程序名以K開(kāi)頭,以免和 ABAQUS 內(nèi)部程序沖突辣吃。
- 當(dāng)用戶(hù)在用戶(hù)子程序中利用 OPEN 打開(kāi)外部文件時(shí)锉矢,要注意以下兩點(diǎn):一是設(shè)備號(hào)的選擇是有限制的,只能取 15~18 和大于 100 的設(shè)備號(hào)齿尽,其余的都已被ABAQUS 占用沽损;二是用戶(hù)需提供外部文件的絕對(duì)路徑而不是相對(duì)路徑。
- 對(duì)于不同的用戶(hù)子程序 ABAQUS 調(diào)用的時(shí)間是不同的循头,有的是在每個(gè) STEP的開(kāi)始绵估,有的是 STEP 的結(jié)尾炎疆,有的是在每個(gè) INCREMENT 的開(kāi)始等等。當(dāng) ABAQUS調(diào)用用戶(hù)子程序時(shí)国裳,都會(huì)把當(dāng)前的 STEP 和 INCREMENT 利用用戶(hù)子程序的兩個(gè)實(shí)參 KSTEP 和 KINC 傳給用戶(hù)子程序形入,用戶(hù)可把它們輸出到外部文件中,這樣就可清楚知道 ABAQUS 何時(shí)調(diào)用該用戶(hù)子程序缝左。為保證用戶(hù)子程序的正確執(zhí)行亿遂,子程序的書(shū)寫(xiě)必須遵循 ABAQUS的相關(guān)規(guī)定。
此外渺杉,ABAQUS的腳本語(yǔ)言接口非常友好蛇数,其自嵌的腳本語(yǔ)言是Python系國(guó)際上廣泛使用、功能強(qiáng)大是越、具有良好開(kāi)放性的一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言耳舅。所以,應(yīng)用Python在ABAQUS中進(jìn)行二次開(kāi)發(fā)也比較方便倚评,且可移植性強(qiáng)浦徊。ABAQUS以基于Python的語(yǔ)法規(guī)則向二次開(kāi)發(fā)者提供了許多庫(kù)函數(shù),這些庫(kù)函數(shù)主要是用來(lái)增強(qiáng)ABAQUS的交互式(GUI)操作功能天梧。用戶(hù)可以通過(guò)ABAQUS的交互式(GUD界面實(shí)現(xiàn)分析對(duì)象的特征造型盔性、指定材料屬性、完成網(wǎng)格剖分和控制呢岗、提交并監(jiān)控分析作業(yè)纯出,也可以使用ABAQUS腳本語(yǔ)言越過(guò)ABAQUS的交互式(GUI)界面直接高效地向ABAQUS內(nèi)核提交任務(wù)。使用Python可以進(jìn)行參數(shù)化建模敷燎,修改交互式建立的模型暂筝,還可以一次提交多個(gè)作業(yè)。 在國(guó)外硬贯,眾多的有限元分析和研究者熱衷于使用ABAQUS焕襟,一個(gè)很重要的原因就在于ABAQUS給用戶(hù)提供了功能強(qiáng)大,使用方便的二次開(kāi)發(fā)工具和接口饭豹,使得用戶(hù)可以方便的進(jìn)行富含個(gè)性化的有限元建模鸵赖、分析和后處理,滿(mǎn)足特定工程問(wèn)題的需要拄衰。
abaqus用戶(hù)子程序分類(lèi)
ABAQUS用戶(hù)子程序大致可以分為7類(lèi)它褪,下面為具體的分類(lèi)及用戶(hù)常用子程序。
-
用戶(hù)定義的初始條件
利用此類(lèi)子程序可以在分析時(shí)定義初始條件翘悉,例如:初始應(yīng)力場(chǎng)的定義茫打,可以采用SIGINI用戶(hù)子程序來(lái)定義;在滲流場(chǎng)分析時(shí)定義初始孔隙水壓力分析可采用UPOREP用戶(hù)子程序;多孔介質(zhì)初始孔隙度分布的定義可采用VOIDRI用戶(hù)子程序老赤。 -
用戶(hù)定義的邊界條件
利用此類(lèi)子程序可以在結(jié)構(gòu)分析或耦合分析時(shí)定義特殊類(lèi)型的邊界條件轮洋,如定義節(jié)點(diǎn)位移,定義分布機(jī)械載荷抬旺,定義流體流速和流量等弊予。例如:定義非均布的滲流流速和流量可采用DFLOW和DFLUX用戶(hù)子程序,以及定義非均布的滲流系數(shù)可采用FLOW用戶(hù)子程序开财;定義特殊類(lèi)型的位移邊界可采用DISP用戶(hù)子程序汉柒;定義特殊類(lèi)型分布的面力載荷可采用DLOAD子程序;定義特殊分布的牽引力可采用UTRACLOAD子程序碾褂;定義溫度場(chǎng)邊界的UTEMP子程序。 - **用戶(hù)定義的材料特性和本構(gòu)關(guān)系 **
利用此類(lèi)子程序可以定義各種本構(gòu)模型薇搁,如各向異性或正交各向異性的彈性應(yīng)力-應(yīng)變關(guān)系斋扰,各種非線性彈塑性本構(gòu)關(guān)系渡八、也可以定義蠕變應(yīng)變率演化方程啃洋、定義非線性應(yīng)力-應(yīng)變關(guān)系,定義加工硬化或應(yīng)變硬化曲線等屎鳍。例如:采用UMAT子程序可以定義各類(lèi)本構(gòu)模型宏娄,包括非線性彈性、彈塑性以及蠕變等模型逮壁;例如采用CREEP子程序可以定義各類(lèi)蠕變或膨脹演化方程孵坚;關(guān)于材料的熱力學(xué)特性可以采用UMATHT子程序;定義粘彈性材料或超彈性材料可以采用UHYPEL和UHYPER子程序窥淆;Mullins材料模型的損傷特性定義可以采用UMULLINS用戶(hù)子程序卖宠。 -
用戶(hù)定義的單元
對(duì)于特殊類(lèi)型的單元,可采用UEL子程序進(jìn)行定義忧饭。 -
用戶(hù)定義的狀態(tài)變量
狀態(tài)變量主要包括定義場(chǎng)變量扛伍、與求解過(guò)程相關(guān)的狀態(tài)變量,以后重新定義材料點(diǎn)的狀態(tài)變量词裤,主要有UFIELD子程序刺洒、SDVINI子程序和USDFLD子程序。此外還包括定義摩擦接觸屬性的子程序吼砂,如定義摩擦接觸行為的FRIC子程序逆航,以及接觸面行為定義的UINTER子程序等。 -
定義輸出量的用戶(hù)子程序
此類(lèi)用戶(hù)子程序可以定義提取單元結(jié)果渔肩,將單元量輸出因俐,寫(xiě)到后處理結(jié)果文件中,如UVARM子程序;此外女揭,讀取結(jié)果文件可采用URDFIL子程序蚤假。 -
其他用戶(hù)子程序
此外,還包括特殊類(lèi)型用途的子程序吧兔,如定義多點(diǎn)約束的子程序MPC磷仰,定義局部坐標(biāo)的ORIENT子程序等。上述子程序的分類(lèi)僅限于在巖土工程領(lǐng)域境蔼,其他領(lǐng)域有不同的分類(lèi)方法灶平。
常用用戶(hù)子程序介紹
- 1.DLOAD子程序
- 2.DISP子程序
- 3.CREEP子程序
- 4.FLOW子程序
- 5.DFLOW子程序
- 6.SIGINI子程序
- 7.USDFLD子程序
- 8.UPOREP子程序
- 9.VOIDRI子程序
- 10.UEXTERNALDB子程序
- 11.URDFIL子程序
Refence
- 1.《基于ABAQUS的有限元分析和應(yīng)用》,莊茁箍土、由小川等 逢享, 清華大學(xué)出版社
- 2.《ABAQUSA有限元分析--從入門(mén)到精通》, 劉展吴藻、錢(qián)英莉 瞒爬,人民郵電出版社
- 3.《淺談ABAQUS用戶(hù)子程序》,李青 清華大學(xué)工程力學(xué)系
- 4.《ABAQUS_Fortran二次開(kāi)發(fā)》,百度文庫(kù)xueni408上傳文章(找不到原文出處沟堡,在此備注)
- 5.《Abaqus二次開(kāi)發(fā)高級(jí)專(zhuān)題》侧但,百度文庫(kù)54yiwei上傳
- 6.《ABAQUS二次開(kāi)發(fā)基礎(chǔ)》,百度文庫(kù)千山暮雪婷上傳