
發布
注冊
/
登錄ABAQUS用戶子程序開發的案例
【7月20-21日 上海】Abaqus UMAT用戶子程序二次開發技術培訓
理論和實際操作結合,一次性將abaqus UMAT用戶子程序開發課程講解透徹!
至于python的自動化和GUI部分內容的操作練習,如有此方面需求,將有老師帶領學習。
背景介紹:
Abaqus是當今最流行的通用結構有限元軟件之一,以其強大的非線性和良好的用戶體驗著稱。但在實際工程應用中,設計對象專業針對性強,通用的工具軟件往往解決不了專業問題,需要通過二次開發對商業軟件進行定制和優化,集成高精度的計算方法和專有技術,以更好的解決專業問題,甚至形成自主品牌的CAE軟件。
ABAQUS不僅提供標準的有限元分析程序,而且具有良好的開放性,可利用它提供的用戶子程序接口生成非標準的分析程序來滿足用戶的需要,在實際工程中得到廣泛應用。
Abaqus UMAT是ABAQUS提供給用戶定義自材料屬性的程序接口。通過UMAT,用戶可以定義材料的本構關系,建立Abaqus材料庫沒有的材料本構模型,滿足實際工程分析的需要。
本次培訓主要包括:
(1) Abaqus二次開發整體介紹;
(2) UMAT接口原理和使用方法;
(3) 材料本構模型和基礎理論
(4) 基于Fortran和Matlab的UMAT編寫示例和練習。
通過本次培訓,學員可以:
(1) 學員在老師指導下完成用戶子程序開發環境配置;
(2) 建立UMAT編寫相關的理論基礎;
(3) 可自行從零開始構建UMAT算例;
(4) 學員實際項目問題現場交流;
(5) 和專家及其它行業用戶深入溝通,并獲得長期的技術支持。
培訓方式:
培訓主要采用:
(1) PPT介紹;
(2) 老師操作演示;
(3) 學員上機練習。
三者結合的方式直觀的學習各個知識點。
講師介紹:
技術鄰ID:SnowWave02 團隊,3個講師同時授課。
展開 Abaqus用戶子程序安裝、開發、調試
引言
Abaqus為用戶提供了大量的用戶子程序,用戶可以通過子程序接口開發Abaqus原本不具備的單元、材料、載荷等。此外,利用子程序能幫助我們去理解、推測Abaqus的計算過程,這對國產自主軟件對標Abaqus功能開發具有一定的參考意義。
一個abaqus用戶材料子程序(UMAT)問題解決說明 附Abaqus用戶子程序專題下載
在開展abaqus用戶子程序的項目時,容易出現很多bug問題,下面是一個比較典型的容易遇到的報錯。
The job input file "Job-1.inp" has been submitted for analysis.
Job Job-1: Analysis Input File Processor aborted due to errors.
Error in job Job-1: Analysis Input File Processor exited with an error.
檢查工作路徑下的log文件(Job-1.log),提示無法識別“ifort”,這就意味著這個命令在系統路徑中無法被識別。實際上,“ifort”適用于編譯Fortran文件的,如果無法使用則無法完成編譯。
log文件內容
為了解決這個問題,在系統文件中找到“ifort.exe”,并將其添加到環境變量path中,然后重啟軟件即可解決。
添加路徑
下載地址:Abaqus用戶子程序專題
展開 有限元理論基礎及Abaqus內部實現方式研究系列36:DLOAD用戶子程序開發步驟
至此,基于Fortran的DLOAD開發流程已經完成,但結果的正確性還需要更加細致的驗證,為更方便的查找問題,建議先采用單個單元調試DLOAD,在確保單個單元正確后再將DLOAD用于實際問題。
1.2.5 調試(可選)
如果想要知道代碼的運行結果是否和預期的一致,一種笨辦法是用print打印到log文件中,高效的方法是采用斷點調試的方法進行運行中的調試。
Abaqus支持命令行調試,不過命令行反復運行也比較繁瑣,用戶也可選擇用一鍵調試Abaqus的用戶子程序的DUS插件工具。DUS(Debug User Subroutine)是集成在ABAQUS/CAE中的一個插件,能夠一鍵啟動用戶配置的用戶子程序開發平臺(如Visual Studio 2008等),并進入對用戶定義子程序的單步調試模式。
有興趣的可到下面網頁下載使用。
Abaqus用戶子程序調試插件:
https://www.yqgqt.org.cn/content/post/424513
1.3 基于MATLAB 的iSolver的DLOAD開發步驟
基于MATLAB 的Abaqus的DLOAD具體開發步驟和Abaqus類似,只不過某些步驟需要用到自研有限元求解器開發平臺iSolver。
1.3.1 定義DLOAD
如果是通過Abaqus界面定義DLOAD,則與Abaqus相應的操作一致(見2.2.1 節),
1.3.2 編寫
在MATLAB 中創建并編寫DLOAD.m的文件,放入Abaqus工作目錄下。該文件只包括一個DLOAD函數,前面參數接口和Abaqus的接口參數完全一致,功能也是計算分布載荷的幅值,相對Fortran,利用MATLAB 可以更容易的編寫計算公式,同時可以利用MATLAB 在矩陣計算中各種強大功能和算法庫。
展開 
有限元理論基礎及Abaqus內部實現方式研究系列20: UEL用戶子程序開發步驟
在實際工作中,很多工程師用Matlab來編寫和推導公式,Matlab被認為是市面上最接近草稿紙上推導公式的一款軟件了,而且有限元在數值層面上的計算其實就是矩陣運算,所以Matlab這種數據按矩陣來組織非常適合用來開發有限元相關的程序。而現在市面上還沒有采用Matlab來開發商軟子程序的案例。iSolver是市面上第一款基于Matlab來開發商軟用戶子程序的軟件工具,支持用Matlab編寫和調試用戶子程序。iSolver子程序的接口完全按照Abaqus的標準實現,而Abaqus的子程序接口在近幾年內已經基本不再變化了,同樣的,雖然iSolver在不斷發展,但iSolver子程序接口將維持不變,所有在iSolver上編寫的算法子程序都只要維護自己的算法部分就行,而不是維護整個有限元求解的整個過程。
前面第八、九篇介紹了UMAT用戶自定義材料的開發,這里將介紹UEL用戶自定義單元的開發,本文首先簡單的討論了UEL的一般含義,并詳細的介紹了基于Fortran和Matlab兩種方式的UEL的開發步驟,對比發現開發步驟基本相同,同時采用Matlab更加高效和靈活。
展開 有限元理論基礎及Abaqus內部實現方式研究系列8:UMAT用戶子程序開發步驟(原創)
一方面我們查閱Abaqus軟件手冊得到修正方法的說明,另一方面我們自己編程實現簡單的結構有限元求解器,通過自研求解器和Abaqus的結果比較結合理論手冊如同管中窺豹一般來研究Abaqus的修正方法,從而猜測商用有限元軟件的內部計算方法。在研究的同時,準備將自己的研究成果記錄下來寫成一個系列文章,希望對那些不僅僅滿足使用軟件,而想了解軟件內部實現方法和想要突破商軟接口限制的朋友有些幫助。由于水平有限,里面可能有許多錯誤,歡迎交流討論。
==第八篇:UMAT用戶子程序開發步驟==
用戶子程序主要是將用戶特定的材料本構模型和單元算法等公式編寫為計算機語言表示的公式,并實現和商軟求解器之間的交互迭代,UMAT用戶自定義材料是其中比較重要的一類子程序。常用的商業有限元軟件都提供了用戶自定義子程序的功能,且一般都是Fortran語言開發,Fortran是上世紀70年代的語言,相對現代化的流行語言編寫,格式要求非常嚴格,編譯調試都比較繁瑣,使得開發效率低下,而且接口限制較多,除了商軟提供的功能外用戶基本沒法改動,靈活性較差。由于用戶子程序很多都涉及復雜的公式編寫,用戶除了需要扎實的理論基礎外,還需要較強的能將公式表達為Fortran語言的編程能力,這對非計算機專業出身的人來說往往在浪費了很多額外精力,使得很多理論高手都對用戶子程序望而卻步,難以入門。
商軟的用戶子程序的內部都是采用dll動態鏈接庫的形式實現的,商軟只是規定好接口并設置觸發尋找動態鏈接庫的機制,譬如當發現關鍵詞*User Material,主程序就調用指定dll中UMAT這個函數,至于這個dll是用什么語言編譯過來的,主程序不會管,只要這個函數包括相同的變量名就行,主程序就會將數據傳遞到這些變量中,同時從規定的變量名中讀取子程序的運行結果,整體流程和一般的混編語言開發類似。
展開 LS-DYNA用戶子程序(UMAT)開發案例
最近在International Journal of Impact Engineering(中科院一區)上看到一篇文章,題目是”Plasticity based material model for concrete subjected to dynamic loadings(https://doi.org/10.1016/j.ijimpeng.2020.103581)“,作者開發了一個適用于描述動態荷載作用下混凝土力學響應的塑性模型,并在LS-DYNA中通過用戶自定義子程序(UMAT)二次開發的方式實現了模型。論文中展示的模擬效果圖如下:
模擬鋼筋混凝土板的爆炸響應
我和這個作者要到了他開發的UMAT源代碼,在這里給大家共享一下,對于想學習LS-DYNA子程序開發的絕對是不可多得的資料(免費共享,不負責答疑哦)
(希望大家下載了關注我一下就行,有空可以看看我發的各種教學視頻和資料貼,985高校在讀博士,長期穩定更新各種內容)
UMAT.f
展開 Abaqus內置LaRC05失效準則子程序(附cohesive單元umat子程序開發教程)
Abaqus從2017版本開始,內置了UVARM和DMGINI兩種子程序供用戶調用。UVARM子程序需要以“ABQ_LARC05_DMGCRT”作為材料名的前綴,可以用來評估是否滿足LaRC05強度指標;DMGINI子程序需要以“ABQ_LARC05_DMGINI”作為材料名前綴,可以結合XFEM來分析裂紋萌生和擴展。
在abaqus中可以通過修改關鍵字來進行模型設置
UVARM設置
DMGINI設置
輸出變量的含義
計算結果
此外,如果有小伙伴希望學習cohesive單元的umat子程序開發相關技術,可以關注下圖的教程:
點擊鏈接進入了解詳情:Abaqus Cohesive單元介紹及其本構的Umat子程序開發教程
最后,有ABAQUS子程序開發相關需求歡迎通過微信公眾號聯系我們。
微信公眾號:320科技工作室。
展開 ABAQUS用戶子程序小例子
希望能幫到剛開始學二次開發的人。
Abaqus用戶子程序DISP入門實例2-kxh.zip
Abaqus用戶子程序DISP入門實例3-kxh.zip
Abaqus用戶子程序DISP入門實例-kxh.zip
淺談ABAQUS用戶子程序
下載地址:
http://www.caenet.cn/paper/Paper.aspx?ID=451
ABAQUS用戶子程序VUMAT
Abaqus用戶子程序VUMAT.pdf

Abaqus用戶子程序調試插件DUS ¥1
=======背景=======
前段時間學習Abaqus的用戶子程序,本以為按照算法實現Fortran編碼應該是比較快的,但沒想到在找用戶子程序的編譯和調試時浪費了不少時間,而且按照網上方法在命令行調試太麻煩,正好要做基于python的Abaqus二次開發培訓,所以就在Abaqus/CAE用python做了一個簡單的調試插件,希望能減少初學者自己摸索調試方法的時間,也為現在還在用命令行調試的人提供一種更加便捷的方式。
=======概述=======
DUS(Debug User Subroutine)是集成在ABAQUS/CAE中的一個插件,能夠一鍵啟動用戶配置的用戶子程序開發平臺(如Visual Studio 2008等),并進入對用戶定義子程序的單步調試模式。
Abaqus用戶子程序是用戶進行求解器二次開發的手段,如果想要加入自己的算法,就必須使用Abaqus用戶子程序,Abaqus/CAE中可以編譯并運行用戶子程序,但沒有提供對用戶子程序的調試功能,用戶在編寫用戶子程序時,如果通過打印數據信息輸出log信息來查看程序運行情況,查錯過程極其繁瑣。而用戶如果在dos窗口下調試,由于用戶子程序本身的復雜性,在得到最終正確結果前,需要反復編程->調試->再編程這個過程,來回切換也是極其不方便的。
本工具可在Abaqus/CAE中調試用戶子程序,實現以下功能:
(1) 讀取用戶在ABAQUS/CAE的計算任務中定義的用戶子程序信息;
(2) 自動啟動配置的用戶子程序開發平臺,進入調試模式;
(3) 對用戶子程序進行單步調試。
展開 ABAQUS用戶材料子程序管道爆炸
在ABAQUS中做管道內壓爆炸CEL模擬,采用vumat進行子程序定義
當管道為單層網格時,流固耦合效果好。當管道為多層網格時,采用abaqus自帶的材料及損傷可以實現模擬,使用vumat進行模擬流固耦合效果就很差(內部氣體漏氣、等效塑性應變分布不正確、計算迭代等),這是什么原因
ABAQUS用戶子程序USDFLD應用實例
一、引言
為滿足用戶多樣化的分析需求,ABAQUS提供了眾多子程序接口。其中USDFLD可用于復雜材料模型的建模分析,例如粉末冶金、損傷分析等。本文以某藥物粉末的模壓為例,介紹了ABAQUS用戶子程序USDFLD的使用方法。
二、用戶子程序USDFLD簡介
1.USDFLD即Use Defined Field,通過將材料屬性定義為場變量fi的函數,來實現復雜材料行為的建模
①ABAQUS/Standard中的大多數材料屬性都可定義為場變量的函數。
②USDFLD允許用戶在單元的每個積分點處定義fi。
展開 abaqus子程序開發:fortran-c-python混合編程開發
abaqus子程序開發語言不局限fortran和c了,還能支持python!
這是一套自研的開發框架,源于客戶需要獲取分析過程的中間數據作為python機器學習程序的輸入這樣的需求。這種需求乍一聽確實非主流、非常規。
后來仔細做了一些了解,這種需求有其合理性。第一,python在數據分析、機器學習方面有豐富的資源;第二,python程序嵌入abaqus求解器一起運行,那開發就會很方便高效;第三,借助python的pdb可以隨心所欲的設置斷點,調試程序。在此之前,python一般作為獨立程序,依賴數據文件的順序傳遞,實現與abaqus的協同。直白的講,abaqus算完了,形成數據文件再導入python。
于是火力全開研究解決方案,結果可謂“大快人心”:實現了abaqus的子程序對python的支持,而且還實現了fortran、c、python三種語言的混合編程,真正讓不同的編程語言在它最擅長的領域發揮作用。
以上介紹了abaqus子程序fortran-c-python混合編程,如有這方面的需求,歡迎私信聯系開展合作。
展開