Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28496 Discussions

How to use UMAT subroutine in *.f90 form in ABAQUS?


Dear friends,

I am using 'Abaqus standard 6.14-4' with 'Microsoft Visual Studio Ultimate 2012' and 'Intel composer XE 2013 for windows'. I have written a UMAT subroutine in free form .f90 format (as it uses some features of fortran 90, 2003 and 2008, like modules etc.). Now, when I try to provide this subroutine in ABAQUS, it gives me a error message, 'User subroutine file name must have a .for or .obj extension'. I came to know that my issue could be solved if I change the following lines in 'abaqus_v6.env' file :


'/c','/DABQ_WIN86_64', '/extend-source', '/fpp',

'/iface:cref', '/recursive', '/Qauto-scalar',

'/QxSSE3', '/QaxAVX',


# '/Od', '/Ob0', # <-- Optimization Debugging

# '/Zi', # <-- Debugging


But, how this lines should be changed I didn't understand.

Please apologize my ignorance and suggest me a solution or point out my mistakes so that I can use my subroutines in ABAQUS standard Cae.

Thanking you,




0 Kudos
3 Replies
Honored Contributor III

Please take Abaqus questions to the maker of that product.

The source file extension (.for or .f90) serves only to specify that the file is in fixed form (.for) or free form (.f90), not the Fortran standard to be applied. The compiler options /fixed and /free may be used to override the form implied by the file extension.

0 Kudos
Valued Contributor I

Abaqus is expecting a fixed-format *.for Fortran source file when it runs the ifort compiler when the analysis starts.  I believe that Abaqus also supports linking to an already compiled object file: *.obj.  Since you described having a free format source file, would you want to try compiling your UMAT user subroutine from the Intel command line to get the *.obj object file?  Open the Start -> Intel Parallel Studio 2013 for Intel 64 (need 64 bit with Abaqus).  In that CMD window, change to the directory with your *.f90 file, and compile from the command line using the "ifort" command and "-c" option.  Then in the Abaqus command line use the object file name so that Abaqus will skip the compiling step and can link to the object for the analysis.  This may be easier than converting your free format source code to fixed format.

The Abaqus Analysis User's Guide, section 3.2.2 Abaqus/Standard Execution procedure may help.  That section does show that the Abaqus "user" keyword can take an object file name.

When running Abaqus with user subroutines, I have good success by first opening the Intel Fortran command window to initialize all the Fortran environment variables, then running the Abaqus job from that window.

Regards, Greg

0 Kudos
Honored Contributor II

The intel compiler assumes .for files are fixed form anf .f90 are freeform. If the script expects a .for file then you could create a .for file in freeform and add the directive on the first position and line of the file !DIR$ FREEFORM see


0 Kudos