如何在沒有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)行就行。

如何在沒有fortran的機(jī)器上運(yùn)行子程序的圖1

然后寫出.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修改

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP

5
2
12