如何在沒有fortran的機(jī)器上運(yùn)行子程序
(此貼只針對abaqus用戶)
對于需要使用子程序進(jìn)行分析計(jì)算的用戶來說,配置子程序環(huán)境較為繁瑣,并且有時要在一臺沒有fortran運(yùn)行環(huán)境的機(jī)器上運(yùn)行子程序(例如云計(jì)算等等),這時要怎么做?
abaqus官方為我們提供了make的方法:
abaqus make library=usd.for/.f90/.cpp/...
該方法將會把子程序進(jìn)行預(yù)編譯并生成相應(yīng)的共享庫(share library)文件。
.obj文件就是我們子程序經(jīng)過預(yù)編譯得到的二進(jìn)制文件。
.dll文件就是相應(yīng)的共享庫文件,其中包含了我們所用子程序中所用的全部執(zhí)行信息(像算法信息,+,-,*,/之類的)
2025.10.3添加:.obj文件可以在已關(guān)聯(lián)的設(shè)備Job頁面子程序位置上直接提供,.dll文件中包含已經(jīng)編寫過的子程序中全部內(nèi)容,可以使用環(huán)境變量進(jìn)行索引在沒關(guān)聯(lián)的設(shè)備上運(yùn)行,不用在提供obj文件,兩個文件是獨(dú)立的。
若是Standard模塊,則會生成standardU.dll;若是Explicit模塊,則會生成ExplicitU.dll和ExplicitU-D.dll(加D的是雙精度,沒的是單精度)
如果想要在沒有Fortran的計(jì)算機(jī)上運(yùn)行子程序,需要分兩部分進(jìn)行,接下來將詳細(xì)說明:
First(該部分需要在已經(jīng)配置好fortran運(yùn)行環(huán)境的計(jì)算機(jī)中完成):
首先準(zhǔn)備好要使用的子程序,建議將其直接放置在abaqus的工作目錄(一般情況下abaqus command和abaqus CAE的工作目錄相同)下,也可以將其放置在任意一個文件夾中,后期可以通過cd索引。
這里就按放在工作目錄下來說明。
將子程序放在工作目錄后,打開abaqus command,并輸入abaqus make library=usd.for/.f90/.cpp/...(這里的usd要替換為自己的子程序的文件名,并加上擴(kuò)展名)
稍等后生成.obj以及.dll文件(std2個,ex共4個)
至此,這部分完成。
Second(該部分在目標(biāo)并沒配置fortran運(yùn)行環(huán)境的計(jì)算機(jī)中完成):
將上述生成的庫文件(.dll結(jié)尾的文件)存儲到任意目錄(文件夾中)。
找到abaqus環(huán)境變量設(shè)置文件abaqus_v6.env, 末尾增加如下語句(要用英文字符)
usub_lib_dir="_:\\_\\..."
引號中的是儲存共享庫文件的路徑。要將\改為\\。
2025.10.3添加:環(huán)境變量文件是以python語言為基礎(chǔ),上述的“要將\改為\\”非唯一,主要是防止出現(xiàn)轉(zhuǎn)義字符,也可以改變斜杠的方向或在路徑前加“r”等等,只要防止轉(zhuǎn)義都行。
到此,基本配置結(jié)束。
然后就是建立模型并施加約束、劃分網(wǎng)格之類的等等。
最后全部弄完之后,創(chuàng)建job,并指定目標(biāo)文件(.obj文件),如圖所示:2025.10.3修改
2025.10.3添加:在User subroutine file:處不要提供任何文件,其余正常運(yùn)行就行。
然后寫出.inp文件,不可以直接提交運(yùn)算,不然回報錯。2025.10.3修改:該處非必要,也可以通過命令行提交
通過abaqus命令行進(jìn)行提交運(yùn)算:
abaqus job=...
提交成功后只需要等待結(jié)果就行。
親測成功有效(已經(jīng)在自己的筆記本上實(shí)驗(yàn)過,沒有問題,我的筆記本沒有fortran)。
對于已經(jīng)配置好fortran的用戶來說,.dll文件(共享庫文件)是不必要的,可以使用.obj文件直接提交運(yùn)算,也不需要寫出inp文件,再通過命令行運(yùn)行這么麻煩。2025.10.3修改
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















