
發(fā)布
注冊
/
登錄用戶子程序的案例
Abaqus用戶子程序調(diào)試插件DUS ¥1
=======背景=======
前段時間學(xué)習(xí)Abaqus的用戶子程序,本以為按照算法實現(xiàn)Fortran編碼應(yīng)該是比較快的,但沒想到在找用戶子程序的編譯和調(diào)試時浪費了不少時間,而且按照網(wǎng)上方法在命令行調(diào)試太麻煩,正好要做基于python的Abaqus二次開發(fā)培訓(xùn),所以就在Abaqus/CAE用python做了一個簡單的調(diào)試插件,希望能減少初學(xué)者自己摸索調(diào)試方法的時間,也為現(xiàn)在還在用命令行調(diào)試的人提供一種更加便捷的方式。
=======概述=======
DUS(Debug User Subroutine)是集成在ABAQUS/CAE中的一個插件,能夠一鍵啟動用戶配置的用戶子程序開發(fā)平臺(如Visual Studio 2008等),并進入對用戶定義子程序的單步調(diào)試模式。
Abaqus用戶子程序是用戶進行求解器二次開發(fā)的手段,如果想要加入自己的算法,就必須使用Abaqus用戶子程序,Abaqus/CAE中可以編譯并運行用戶子程序,但沒有提供對用戶子程序的調(diào)試功能,用戶在編寫用戶子程序時,如果通過打印數(shù)據(jù)信息輸出log信息來查看程序運行情況,查錯過程極其繁瑣。而用戶如果在dos窗口下調(diào)試,由于用戶子程序本身的復(fù)雜性,在得到最終正確結(jié)果前,需要反復(fù)編程->調(diào)試->再編程這個過程,來回切換也是極其不方便的。
本工具可在Abaqus/CAE中調(diào)試用戶子程序,實現(xiàn)以下功能:
(1) 讀取用戶在ABAQUS/CAE的計算任務(wù)中定義的用戶子程序信息;
(2) 自動啟動配置的用戶子程序開發(fā)平臺,進入調(diào)試模式;
(3) 對用戶子程序進行單步調(diào)試。
展開 設(shè)計仿真 | MSC Nastran用戶子程序功能的使用方法
3
用戶子程序應(yīng)用與運行命令
MSC Nastran用戶子程序功能的使用通常涉及以下方面:
?標識調(diào)用用戶子程序的少量選項;
?用戶子程序采用FORTRAN或C++語言編寫;
?將用戶子程序鏈接到MSC Nastran。
為了讓用戶掌握用戶子程序的使用功能,在用MSC Nastran 的手冊中有一些實際例子,比如在手冊“Demonstration Problems Manual- Implicit Nonlinear”中就有兩個詳細的例子,分別是第43章的定義剛體運動的用戶子程序和第44章的定義材料失效準則的用戶子程序(具體章的編號不同版本有所不同,此處是2022.3版本的編號)。下面以第43章的例題為例介紹用戶子程序的具體用法。
該例主要演示MSC Nastran熱機械耦合分析以及用戶子程序功能的使用,它模擬了考慮塑性功生熱和摩擦生熱效應(yīng)的圓柱體鐓粗過程,并將分析結(jié)果與實驗結(jié)果進行比較。該例的MSC Nastran計算的輸入文件:nug_73.dat和用戶子程序為:nug_73.f。如果已經(jīng)有了輸入文件名和用戶子程序名,就可以采用以下MSC Nastran計算命令運行(需要按軟件安裝的路徑略作調(diào)整,也可在圖形界面中提交計算):
D:\MSC.Software\MSC_Nastran\2022.3\bin\nastran.exe nug_73.dat uds=nug_73.f
說明:對于類似本例情形,MSC Nastran有兩個命令行相關(guān)關(guān)鍵字uds和udssave。
展開 MSC Nastran用戶子程序功能的使用方法
用戶子程序應(yīng)用與運行命令
MSC Nastran用戶子程序功能的使用通常涉及以下方面:
?標識調(diào)用用戶子程序的少量選項;
?用戶子程序采用FORTRAN或C++語言編寫;
?將用戶子程序鏈接到MSC Nastran。
為了讓用戶掌握用戶子程序的使用功能,在用MSC Nastran 的手冊中有一些實際例子,比如在手冊“Demonstration Problems Manual- Implicit Nonlinear”中就有兩個詳細的例子,分別是第43章的定義剛體運動的用戶子程序和第44章的定義材料失效準則的用戶子程序(具體章的編號不同版本有所不同,此處是2022.3版本的編號)。下面以第43章的例題為例介紹用戶子程序的具體用法。
該例主要演示MSC Nastran熱機械耦合分析以及用戶子程序功能的使用,它模擬了考慮塑性功生熱和摩擦生熱效應(yīng)的圓柱體鐓粗過程,并將分析結(jié)果與實驗結(jié)果進行比較。該例的MSC Nastran計算的輸入文件:nug_73.dat和用戶子程序為:nug_73.f。如果已經(jīng)有了輸入文件名和用戶子程序名,就可以采用以下MSC Nastran計算命令運行(需要按軟件安裝的路徑略作調(diào)整,也可在圖形界面中提交計算):
D:\MSC.Software\MSC_Nastran\2022.3\bin\nastran.exe nug_73.dat uds=nug_73.f
說明:
對于類似本例情形,MSC Nastran有兩個命令行相關(guān)關(guān)鍵字uds和udssave。其中uds用于指定用戶子程序文件;udssave用于指定用戶服務(wù)生成位置,如不指定則在當前計算目錄下。這些關(guān)鍵字的使用讓MSC Nastran在運行作業(yè)時首先建立用戶服務(wù),然后在計算過程中調(diào)用用戶子程序。
展開 設(shè)計仿真 | MSC Nastran用戶子程序功能的使用方法
3
用戶子程序應(yīng)用與運行命令
MSC Nastran用戶子程序功能的使用通常涉及以下方面:
?標識調(diào)用用戶子程序的少量選項;
?用戶子程序采用FORTRAN或C++語言編寫;
?將用戶子程序鏈接到MSC Nastran。
為了讓用戶掌握用戶子程序的使用功能,在用MSC Nastran 的手冊中有一些實際例子,比如在手冊“Demonstration Problems Manual- Implicit Nonlinear”中就有兩個詳細的例子,分別是第43章的定義剛體運動的用戶子程序和第44章的定義材料失效準則的用戶子程序(具體章的編號不同版本有所不同,此處是2022.3版本的編號)。下面以第43章的例題為例介紹用戶子程序的具體用法。
該例主要演示MSC Nastran熱機械耦合分析以及用戶子程序功能的使用,它模擬了考慮塑性功生熱和摩擦生熱效應(yīng)的圓柱體鐓粗過程,并將分析結(jié)果與實驗結(jié)果進行比較。該例的MSC Nastran計算的輸入文件:nug_73.dat和用戶子程序為:nug_73.f。如果已經(jīng)有了輸入文件名和用戶子程序名,就可以采用以下MSC Nastran計算命令運行(需要按軟件安裝的路徑略作調(diào)整,也可在圖形界面中提交計算):
D:\MSC.Software\MSC_Nastran\2022.3\bin\nastran.exe nug_73.dat uds=nug_73.f
說明:對于類似本例情形,MSC Nastran有兩個命令行相關(guān)關(guān)鍵字uds和udssave。
展開 
一個abaqus用戶材料子程序(UMAT)問題解決說明 附Abaqus用戶子程序專題下載
在開展abaqus用戶子程序的項目時,容易出現(xiàn)很多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”,這就意味著這個命令在系統(tǒng)路徑中無法被識別。實際上,“ifort”適用于編譯Fortran文件的,如果無法使用則無法完成編譯。
log文件內(nèi)容
為了解決這個問題,在系統(tǒng)文件中找到“ifort.exe”,并將其添加到環(huán)境變量path中,然后重啟軟件即可解決。
添加路徑
下載地址:Abaqus用戶子程序專題
展開 直播預(yù)告 | 從編譯到實戰(zhàn):Adams用戶子程序使用基礎(chǔ)
精彩直播預(yù)告
在復(fù)雜機械系統(tǒng)動力學(xué)仿真領(lǐng)域,Adams用戶子程序已被廣泛用于模擬各類非標準現(xiàn)象。作為突破軟件原生功能邊界的關(guān)鍵開發(fā)接口,用戶可通過編寫具體代碼實現(xiàn)功能擴展,實現(xiàn)特定場景的定制化建模。Adams軟件提供了豐富多樣的子程序類型,用戶編寫子程序用于代碼的具體實現(xiàn),實用子程序一般在用戶編寫子程序內(nèi)配合使用,它在系統(tǒng)狀態(tài)查詢、數(shù)學(xué)和信息傳遞、接口交互以及文件輸入、輸出等方面發(fā)揮著重要作用,極大增強了仿真系統(tǒng)的靈活性和適用性。
用戶選擇使用 Adams 用戶子程序,主要基于以下五個方面:
1、擴展Adams原生功能;
2、實現(xiàn)某個復(fù)雜邏輯;
3、引入元件或控制系統(tǒng);
4、進行數(shù)據(jù)交換;
5、隱藏源代碼。
然而,作為高級定制化開發(fā)工具,Adams 用戶子程序的應(yīng)用也面臨諸多挑戰(zhàn)。當前用戶普遍存在三大痛點:一是對子程序的基礎(chǔ)調(diào)用機制缺乏系統(tǒng)性認知;二是難以掌握用戶子程序的編寫技巧;三是在子程序編譯與鏈接環(huán)節(jié)存在操作障礙。
本次直播我們請到了Adams技術(shù)工程師狄亞鵬,通過介紹Adams用戶子程序的基本知識,使用方法,子程序編寫的最佳實踐以及如何編譯和鏈接用戶子程序,幫助用戶建立對Adams用戶子程序的基本認識,邁出使用和開發(fā)用戶子程序的第一步。精彩不容錯過,趕快預(yù)約報名!
4月18日 14:00
▲ 掃碼參與報名
立即預(yù)定
直播內(nèi)容聚焦
? Adams子程序的使用方法介紹
? Adams子程序關(guān)鍵參數(shù)介紹
? Adams子程序編寫的最佳實踐
狄亞鵬
海克斯康工業(yè)軟件技術(shù)工程師
具有多年Adams軟件使用經(jīng)驗,擅長Adams二次開發(fā)以及工程機械產(chǎn)品的動力學(xué)仿真分析。
展開 完全基于VS的Abaqus UMAT等用戶子程序編譯、運行和調(diào)試 ¥1
Abaqus用戶子程序提供了很多接口幫助用戶實現(xiàn)自定義單元、材料等重要功能,但是功能強大,卻不友好,一般來說,存在以下四個問題:
1、 環(huán)境配置相對比較復(fù)雜,很多用戶在配置VS、Fortran和Abaqus的鏈接時就選擇了放棄;
2、 用戶子程序代碼的編譯問題不容易發(fā)現(xiàn),用戶一般都需要在對應(yīng)Job的日志里去查看,然后再去修改代碼,重新提交Job,如此反復(fù),工作效率極低;
3、 調(diào)試不易,Abaqus自帶了調(diào)試Job的功能,但往往由于環(huán)境配置的問題,用戶不能正確地進入調(diào)試狀態(tài),對用戶子程序代碼進行調(diào)試;
4、 由于Abaqus的用戶子程序編譯是每次提交任務(wù)后都會 重新執(zhí)行的,即使用戶已經(jīng)調(diào)試好用戶子程序代碼,也仍然需要重新編譯。同時給在共享用戶子程序時,就需要在多臺機器配置好用戶子程序的開發(fā)環(huán)境,實在是麻煩。
筆者通過一段時間的摸索和研究,找到了一種無需鏈接VS、Fortran和Abaqus,完全在VS中配置用戶子程序編譯環(huán)境的方法。編譯生成的文件可直接用于Abaqus,別的機器使用無需再配置開發(fā)環(huán)境。同時,筆者也根據(jù)調(diào)試代碼的需要,給出了一個實現(xiàn)單步調(diào)試的技巧,且無需再擔心由于環(huán)境配置問題無法進入調(diào)試狀態(tài)。詳細內(nèi)容,見文檔。
方法指南.pdf
筆者也提供了配置好的vs工程。
展開 解鎖RecurDyn高級功能:用戶子程序USUB
USUB(User-Defined Subroutine)是RecurDyn提供的一個強大工具,允許用戶通過自定義子程序擴展仿真功能。USUB提供了在RecurDyn環(huán)境中實現(xiàn)復(fù)雜仿真任務(wù)的靈活性,使用戶能夠編寫自定義代碼來模擬特定的物理現(xiàn)象或控制策略。USUB主要采用C++語言編寫,并通過RecurDyn的API與仿真系統(tǒng)進行交互。
USUB的使用場景有哪些:
復(fù)雜力學(xué)模型的實現(xiàn):在標準的RecurDyn庫中,有些復(fù)雜的力學(xué)現(xiàn)象可能無法直接模擬。通過USUB,用戶可以編寫自己的子程序,定義特殊的力學(xué)關(guān)系和行為。例如,模擬非線性彈簧阻尼系統(tǒng)、特定材料的應(yīng)力應(yīng)變關(guān)系等。
控制系統(tǒng)的集成:對于包含控制系統(tǒng)的機械系統(tǒng)仿真,通過USUB,用戶可以將自己的控制算法嵌入到仿真模型中。這對于研究控制策略對系統(tǒng)動態(tài)行為的影響非常有用。
自定義約束和力:在多體動力學(xué)仿真中,某些特定的約束條件或作用力可能無法通過標準工具實現(xiàn)。USUB允許用戶定義這些自定義的約束和力,使得仿真更加貼近實際情況。
USUB向?qū)Ъ鞍惭b注意事項:
本文將介紹如何在Microsoft? Developer Studio中使用用戶子程序向?qū)Вp松創(chuàng)建并集成RecurDyn用戶子程序,幫助用戶實現(xiàn)復(fù)雜的仿真任務(wù)。
用戶子程序向?qū)Э稍?MicrosoftTM Developer Studio 中使用,可輕松創(chuàng)建用戶子程序。向?qū)紫葎?chuàng)建類似模板的源文件,然后創(chuàng)建 RecurDyn 用戶子程序的動態(tài)鏈接庫 (dll),在執(zhí)行過程中與 Solver.dll 鏈接。
注:
-建議安裝Visual Studio 和RecurDyn,否則需要手動安裝向?qū)А?/span>
展開 有限元理論基礎(chǔ)及Abaqus內(nèi)部實現(xiàn)方式研究系列8:UMAT用戶子程序開發(fā)步驟(原創(chuàng))
==第八篇:UMAT用戶子程序開發(fā)步驟==
用戶子程序主要是將用戶特定的材料本構(gòu)模型和單元算法等公式編寫為計算機語言表示的公式,并實現(xiàn)和商軟求解器之間的交互迭代,UMAT用戶自定義材料是其中比較重要的一類子程序。常用的商業(yè)有限元軟件都提供了用戶自定義子程序的功能,且一般都是Fortran語言開發(fā),F(xiàn)ortran是上世紀70年代的語言,相對現(xiàn)代化的流行語言編寫,格式要求非常嚴格,編譯調(diào)試都比較繁瑣,使得開發(fā)效率低下,而且接口限制較多,除了商軟提供的功能外用戶基本沒法改動,靈活性較差。由于用戶子程序很多都涉及復(fù)雜的公式編寫,用戶除了需要扎實的理論基礎(chǔ)外,還需要較強的能將公式表達為Fortran語言的編程能力,這對非計算機專業(yè)出身的人來說往往在浪費了很多額外精力,使得很多理論高手都對用戶子程序望而卻步,難以入門。
商軟的用戶子程序的內(nèi)部都是采用dll動態(tài)鏈接庫的形式實現(xiàn)的,商軟只是規(guī)定好接口并設(shè)置觸發(fā)尋找動態(tài)鏈接庫的機制,譬如當發(fā)現(xiàn)關(guān)鍵詞*User Material,主程序就調(diào)用指定dll中UMAT這個函數(shù),至于這個dll是用什么語言編譯過來的,主程序不會管,只要這個函數(shù)包括相同的變量名就行,主程序就會將數(shù)據(jù)傳遞到這些變量中,同時從規(guī)定的變量名中讀取子程序的運行結(jié)果,整體流程和一般的混編語言開發(fā)類似。
如果了解了商軟的用戶子程序的實現(xiàn)原理后,完全可以用Matlab來代替Fortran開發(fā)子程序。在實際工作中,很多工程師用Matlab來編寫和推導(dǎo)公式,Matlab被認為是市面上最接近草稿紙上推導(dǎo)公式的一款軟件了,而且有限元在數(shù)值層面上的計算其實就是矩陣運算,所以Matlab這種數(shù)據(jù)按矩陣來組織非常適合用來開發(fā)有限元相關(guān)的程序。
展開 ABAQUS用戶子程序小例子
Abaqus用戶子程序DISP入門實例2-kxh.zip
Abaqus用戶子程序DISP入門實例3-kxh.zip
Abaqus用戶子程序DISP入門實例-kxh.zip
有限元理論基礎(chǔ)及Abaqus內(nèi)部實現(xiàn)方式研究系列20: UEL用戶子程序開發(fā)步驟
iSolver介紹視頻:
http://www.yqgqt.org.cn/college/video/c12884
==第20篇:UEL用戶子程序開發(fā)步驟==
用戶子程序主要是將用戶特定的材料本構(gòu)模型和單元算法等公式編寫為計算機語言表示的公式,并實現(xiàn)和商軟求解器之間的交互迭代。
常用的商業(yè)有限元軟件都提供了用戶自定義子程序的功能,且一般都是Fortran語言開發(fā),F(xiàn)ortran是上世紀70年代的語言,相對現(xiàn)代化的流行語言編寫,格式要求非常嚴格,編譯調(diào)試都比較繁瑣,使得開發(fā)效率低下,而且接口限制較多,除了商軟提供的功能外用戶基本沒法改動,靈活性較差。由于用戶子程序很多都涉及復(fù)雜的公式編寫,用戶除了需要扎實的理論基礎(chǔ)外,還需要較強的能將公式表達為Fortran語言的編程能力,這對非計算機專業(yè)出身的人來說往往在浪費了很多額外精力,使得很多理論高手都對用戶子程序望而卻步,難以入門。
在實際工作中,很多工程師用Matlab來編寫和推導(dǎo)公式,Matlab被認為是市面上最接近草稿紙上推導(dǎo)公式的一款軟件了,而且有限元在數(shù)值層面上的計算其實就是矩陣運算,所以Matlab這種數(shù)據(jù)按矩陣來組織非常適合用來開發(fā)有限元相關(guān)的程序。而現(xiàn)在市面上還沒有采用Matlab來開發(fā)商軟子程序的案例。iSolver是市面上第一款基于Matlab來開發(fā)商軟用戶子程序的軟件工具,支持用Matlab編寫和調(diào)試用戶子程序。iSolver子程序的接口完全按照Abaqus的標準實現(xiàn),而Abaqus的子程序接口在近幾年內(nèi)已經(jīng)基本不再變化了,同樣的,雖然iSolver在不斷發(fā)展,但iSolver子程序接口將維持不變,所有在iSolver上編寫的算法子程序都只要維護自己的算法部分就行,而不是維護整個有限元求解的整個過程。
展開 
Abaqus用戶子程序簡單入門實例詳細步驟——DISP的應(yīng)用
1、問題描述
2、Fortran程序
3、結(jié)果
4、詳細步驟
Abaqus用戶子程序DISP入門實例-kxh.part3.rar
Abaqus用戶子程序DISP入門實例-kxh.part1.rar
Abaqus用戶子程序DISP入門實例-kxh.part2.rar
【7月20-21日 上海】Abaqus UMAT用戶子程序二次開發(fā)技術(shù)培訓(xùn)
理論和實際操作結(jié)合,一次性將abaqus UMAT用戶子程序開發(fā)課程講解透徹!
至于python的自動化和GUI部分內(nèi)容的操作練習(xí),如有此方面需求,將有老師帶領(lǐng)學(xué)習(xí)。
背景介紹:
Abaqus是當今最流行的通用結(jié)構(gòu)有限元軟件之一,以其強大的非線性和良好的用戶體驗著稱。但在實際工程應(yīng)用中,設(shè)計對象專業(yè)針對性強,通用的工具軟件往往解決不了專業(yè)問題,需要通過二次開發(fā)對商業(yè)軟件進行定制和優(yōu)化,集成高精度的計算方法和專有技術(shù),以更好的解決專業(yè)問題,甚至形成自主品牌的CAE軟件。
ABAQUS不僅提供標準的有限元分析程序,而且具有良好的開放性,可利用它提供的用戶子程序接口生成非標準的分析程序來滿足用戶的需要,在實際工程中得到廣泛應(yīng)用。
Abaqus UMAT是ABAQUS提供給用戶定義自材料屬性的程序接口。通過UMAT,用戶可以定義材料的本構(gòu)關(guān)系,建立Abaqus材料庫沒有的材料本構(gòu)模型,滿足實際工程分析的需要。
本次培訓(xùn)主要包括:
(1) Abaqus二次開發(fā)整體介紹;
(2) UMAT接口原理和使用方法;
(3) 材料本構(gòu)模型和基礎(chǔ)理論
(4) 基于Fortran和Matlab的UMAT編寫示例和練習(xí)。
通過本次培訓(xùn),學(xué)員可以:
(1) 學(xué)員在老師指導(dǎo)下完成用戶子程序開發(fā)環(huán)境配置;
(2) 建立UMAT編寫相關(guān)的理論基礎(chǔ);
(3) 可自行從零開始構(gòu)建UMAT算例;
(4) 學(xué)員實際項目問題現(xiàn)場交流;
(5) 和專家及其它行業(yè)用戶深入溝通,并獲得長期的技術(shù)支持。
培訓(xùn)方式:
培訓(xùn)主要采用:
(1) PPT介紹;
(2) 老師操作演示;
(3) 學(xué)員上機練習(xí)。
三者結(jié)合的方式直觀的學(xué)習(xí)各個知識點。
講師介紹:
技術(shù)鄰ID:SnowWave02 團隊,3個講師同時授課。
展開 Abaqus用戶子程序安裝、開發(fā)、調(diào)試
引言
Abaqus為用戶提供了大量的用戶子程序,用戶可以通過子程序接口開發(fā)Abaqus原本不具備的單元、材料、載荷等。此外,利用子程序能幫助我們?nèi)ダ斫?、推測Abaqus的計算過程,這對國產(chǎn)自主軟件對標Abaqus功能開發(fā)具有一定的參考意義。
告別Fortran,只需要C++就可以編寫Abaqus UMat等用戶子程序 ¥1
這里,筆者將給出使用C++編寫Abaqus用戶子程序的方法,并不是替代Fortran,而是給用戶多一種選擇。采用本文中的方法,用戶將無需再安裝Fortran編譯器。
從編程角度看本文方法的實現(xiàn)原理比較簡單。以UMAT為例,Abaqus在提交計算任務(wù)后會將用戶指定的for文件或者obj文件編譯成為standardU.dll,然后連同安裝目錄下的standard.exe一起拷貝到臨時目錄下,然后運行standard.exe進行計算。在計算進行到用戶自定義材料時,Abaqus會自動去standardU.dll里尋找umat函數(shù),也就是用戶指定源文件里的umat函數(shù)。因此,如果用C++寫出一個函數(shù)能夠讓standard.exe識別為 umat函數(shù),并且接口變量一致,那么用戶自然就可以用C++寫出umat的用戶子程序。至于如何讓standard.exe認為就是umat函數(shù),附件給出了具體的實現(xiàn)方法。
C++編寫用戶子程序實現(xiàn)方法.pdf
展開