(完整)在Abaqus中使用.f90格式的子程序的方法

一、前言

Fortran語言發(fā)展至今已經(jīng)推出了若干版本,那么究竟采用哪個版本來編寫Abaqus子程序呢?這是困擾很多同學的問題,因為我們能買的Fortran教材基本都是講解的Fortran90/95以上的版本。但是直接采用90或者95以上的版本編寫子程序,Abaqus卻又不能識別。

這里需要說明一點,Abaqus原生支持的FORTRAN77的語法形式,因此采用77寫子程序肯定是沒有問題的,但是實際上更高級的比如90也是能夠支持的,需要對.env文件進行修改,加入支持90的語句即可。

二、方法

Abaqus默認支持的是固定(FORTRAN77)格式的Fortran子程序。編譯或者調(diào)用子程序時會自動搜索文件后綴為:*.for, *.f, *.C, *.c, *.cc, *.CPP, *.cpp, *.CXX, *.cxx 的源代碼文件。

如果想使用.f90自由格式的Fortran子程序,需要修改Abaqus的環(huán)境配置文件。Abaqus2018環(huán)境配置文件的位置與2016的位置不同,在我的電腦中是:D:\Program Files\Dassault Systemes\SimulationServices\V6R2018x\win_b64\SMA\site\win86_64.env

在該環(huán)境配置文件的Fortran編譯選項中增加'/free':

compile_fortran=['ifort',
                 '/c','/DABQ_WIN86_64', '/extend-source', '/fpp',
                 '/iface:cref', '/recursive', '/Qauto-scalar',
                 '/QxSSE3', '/QaxAVX',
                 '/heap-arrays:1',
                 # '/Od', '/Ob0', # <-- Optimization Debugging
                 # '/Zi', # <-- Debugging
                  '/include:%I', '/include:'+abaHomeInc, '%P', '/free']

并且需要將子程序文件后綴改為.for,之后,將該子程序編譯為obj文件(umat-std.obj):

abaqus make library=umat.for

在執(zhí)行計算任務時將該obj文件作為用戶子程序文件調(diào)用:

abaqus job=myumatjob user=umat-std.obj

這樣就可以正常執(zhí)行計算了。

(完整)在Abaqus中使用.f90格式的子程序的方法的圖1

三、后記

雖然能夠修改使用,那么有沒有必要采用更高級別的版本呢?就個人經(jīng)驗來說,采用77的語法即可,因為Abaqus子程序有其特殊性,并不是一個完整意義上的軟件開發(fā),只是為了實現(xiàn)理論公式的植入或者實現(xiàn)某些算法,比如應力的拉回算法等等。因此無需特別高級Fortran版本就能夠?qū)崿F(xiàn)子程序的編寫,換個角度想想,很多計算力學的理論早已在有限元軟件中實現(xiàn),那時候有如今高版本的Fortran語言嗎?

另外,高版本的Fortran包含了低版本的所有語法形式和函數(shù),因此從應用的角度講,沒必要花費太多的時間去學習Fortran語言,只需要掌握最基本的語法和函數(shù)即可,更多的是需要自己在實際的編寫中鍛煉編程技術(shù),而不是執(zhí)拗于某個版本。切記,比版本重要的是是公式要正確,算法要正確!形式主義要不得。

祝順利,收斂!

技術(shù)鄰普通用戶

附件:


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

TOP

5
2
11