DEFORM子程序初探
本文首發(fā)于公眾號(hào):工科小學(xué)生
DEFORM本身已經(jīng)很強(qiáng)大了,但實(shí)際工程問(wèn)題復(fù)雜多變,DEFORM自有的求解方法無(wú)法面面俱到,因此軟件提供了子程序接口,用戶可以通過(guò)子程序二次開(kāi)發(fā)以達(dá)到自己的求解目的。DEFORM子程序二次開(kāi)發(fā)包括求解器和后處理的二次開(kāi)發(fā)。
求解器的二次開(kāi)發(fā)包括自定義流動(dòng)應(yīng)力應(yīng)變模型,自定義運(yùn)動(dòng)控制,自定義損傷模型,節(jié)點(diǎn)值和單元值的計(jì)算以及其他特定的需要。而后處理的二次開(kāi)發(fā)則是用戶利用儲(chǔ)存在DB文件中的計(jì)算結(jié)果來(lái)計(jì)算場(chǎng)變量。
這二者的開(kāi)發(fā)語(yǔ)言均為FORTRAN,并且是老式的FORTRAN 77。DEFORM指定的集成開(kāi)發(fā)環(huán)境是Absoft Fortran 9或者Absoft Fortran 11。其中,編譯64位程序只能通過(guò)后者編譯。
下面話不多說(shuō),先來(lái)展示一下怎么使用Absoft Fortran 9進(jìn)行二次開(kāi)發(fā)(因?yàn)橹挥蠥bsoft Fortran 9軟件)。
首先,在DEFORM安裝目錄下找到UserRoutine(例:D:\Program Files\SFTC\DEFORM\v11.0\3D\UserRoutine),2D與3D文件夾下各有一個(gè)UserRoutine,這里以3D為例。在文件夾下可以看到三個(gè)子文件夾,其中DEF_SIM就是求解器的開(kāi)發(fā)項(xiàng)目文件夾,另兩個(gè)分別是后處理以及元胞自動(dòng)機(jī)的二次開(kāi)發(fā)項(xiàng)目文件夾。
接著進(jìn)入DEF_SIM文件夾中,藍(lán)框就是Absoft Fortran 9的項(xiàng)目文件,綠框和藍(lán)框分別是Absoft Fortran 11的32位和64位項(xiàng)目文件。
用Absoft 9打開(kāi)DEF_SIM_USR_Absoftv90.gui。打開(kāi)之后,窗口中羅列出了所有二次開(kāi)發(fā)用到的文件。本次以修改本構(gòu)模型為一個(gè)小例子,雙擊usr_mtr.f
打開(kāi)之后可以看到整個(gè)代碼有10個(gè)UFLOW子程序和一個(gè)USRMTR子程序組成,USRMTR不用管,它主要起一個(gè)調(diào)用其它UFLOW子程序的作用。我們需要修改的是UFLOW子程序,DEFORM支持100個(gè)UFLOW子程序,不過(guò)一般我們只用到UFLOW一個(gè)子程序。UFLOW后面的數(shù)字要記住,后面要用到,先來(lái)看UFLOW1子程序,里面已經(jīng)有一個(gè)例子了,這個(gè)例子很簡(jiǎn)單。就紅框中的一段,具體每個(gè)變量代表什么意思,可以看一下上面注釋,學(xué)過(guò)英語(yǔ)的應(yīng)該都懂吧,沒(méi)錯(cuò),哪些密密麻麻的C開(kāi)頭的就是FORTRAN 77的注釋。
好,假設(shè)我們已經(jīng)寫(xiě)好了UFLOW1子程序,保存一下,記住我們修改的是UFLOW1。關(guān)閉編輯窗口,回到上一個(gè)窗口,點(diǎn)擊窗口上面的小錘子,進(jìn)行編譯和鏈接,出現(xiàn)Build completed的提示后,會(huì)在UserRoutine文件夾下生成一個(gè)DEF_SIM.exe文件,把這個(gè)文件拷貝到D:\Program Files\SFTC\DEFORM\v11.0\3D目錄下,替換原有的DEF_SIM.exe。注意,在拷貝替換前記得把原來(lái)的文件備份一下。至此,開(kāi)發(fā)階段就完成了。
下面進(jìn)行正常的模擬計(jì)算,計(jì)算的時(shí)候需要修改一個(gè)地方,就是在材料里面把Flow stress改成User routine,然后點(diǎn)擊右邊的筆,輸入1,就是剛剛我們修改的UFLOW1后面的數(shù)字1,其它正常設(shè)置即可。
然后我簡(jiǎn)單做了一個(gè)壓縮的計(jì)算進(jìn)行對(duì)比,先來(lái)看等效應(yīng)力
User routine結(jié)果
看云圖好像沒(méi)差,不過(guò)看右邊的顏色條表示的值,二者的差別將近50倍。
以上就是本構(gòu)模型二次開(kāi)發(fā)的一個(gè)完整過(guò)程了,這算一個(gè)簡(jiǎn)單的例子,復(fù)雜一些的就涉及到編寫(xiě)多個(gè)代碼文件了,而且最重要的是二次開(kāi)發(fā)前要建立可靠的物理模型和數(shù)學(xué)模型。個(gè)人認(rèn)為,二次開(kāi)發(fā)的難點(diǎn)也在于此。
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















