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

Problem during linking Abaqus user Subroutines

wassenberg__nick
Beginner
8,592 Views

Hi everyone.

I would to link the Fortran compiler to Abaqus, to be able to make use of user subroutines. However, after following multipe guides on the internet I still have an error.

I added these 3 lines to the abaqus.bat and abq6141.bat :

@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64
call "C:\Program Files (x86)\Intel\Composer XE 2015\bin\ipsxe-comp-vars.bat" intel64 vs2010
call "C:\Program Files (x86)\Intel\Composer XE 2015\bin\ifortvars.bat" intel64 vs2010
"C:\SIMULIA\Abaqus\Commands\abq6141.bat" %*
 
The error I obtain is:Error in job Job-1: Problem during linking - Abaqus/Standard User Subroutines.   This error may be due to a mismatch in the Abaqus user subroutine arguments.   These arguments sometimes change from release to release, so user subroutines   used with a previous release of Abaqus may need to be adjusted
 
When I run the abaqus verification, it says PASS for everything (also subroutines), so I assume they are correctly linked. Also the user subroutine is correctly written I think since I did not get a compile error (see image). Do I still have to do something with visual studio code and Fortran (link them together in a seperate step, or make sure I select Fortran when I start a new project?). I am not familiar with both programs very well. 
 
The versions of software I use:
Visual studio code 10
Fortan visual studio(Fortran compiler) 15.1
Abaqus 6.14
 
If anyone has an idea to solve this issue, it would really help me a lot.
 
Kind regards,
Nick
 
userRoutine.PNG
 
0 Kudos
1 Solution
Greg_T_
Valued Contributor I
8,592 Views

Hi Nick,

Since the error message you provided indicates an issue with the UMAT subroutine argument list, I recommend first checking the documentation.  For the version of Abaqus you are using, take a look in the Abaqus documentation manuals in the "Abaqus User Subroutines Reference Guide", section 1.1.44 UMAT.  The information includes the UMAT call statement and the argument list for the version of Abaqus you are using.  You can double check your UMAT against those arguments.  Look for the same number of arguments, the same variables names, and the same variable types.  Some of the arguments are short arrays, so check that the dimensions of those arrays are correct.

I believe that the Abaqus validation for user subroutines may be calling just one user subroutine, perhaps DLOAD, to check linking with Abaqus.  The automatic validation may not be enough to check the UMAT subroutine.

UMAT can be one of the more challenging user subroutines to use.  Have you tried other, easier to use user subroutines in Abaqus?  DLOAD can be a good one to start with since the code in DLOAD could be simple to apply a traction load to a simple mesh.

Have you tried running Abaqus from the Intel Fortran command window?  I have good success opening the command window from:

Start -> Intel Parallel Studio XE 2018 -> Compiler ... Intel 64 ...

Then running my Abaqus job from that window to link to a user subroutine.

Another recommendation is to create a main program that can call your user subroutine to pass inputs and get the outputs to check that the UMAT by itself is working as expected.  This will help confirm that you can compile and link and run a test case.  That may help narrow the possibilities of what isn't working with Abaqus.  Have you been able to do this test case?

A previous post may be helpful too:

https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/599132

Maybe some of this information will help you discover more details about what isn't working for your Abaqus plus UMAT analysis.  Let us know what you find since it may help others in the future.

Regards, Greg

View solution in original post

11 Replies
TimP
Honored Contributor III
8,592 Views

The message suggests that you haven't adjusted a procedure call to the requirements of your Abaqus library version.  This doesn't look to be a problem which could be dealt with here.  Even for Abaqus support, it may be difficult to deal with obsolete versions.

Your source code uses the non-standard dimension (1) which became obsolete 40 years ago, so there is a possibility of a current compiler mis-interpreting.

0 Kudos
Greg_T_
Valued Contributor I
8,593 Views

Hi Nick,

Since the error message you provided indicates an issue with the UMAT subroutine argument list, I recommend first checking the documentation.  For the version of Abaqus you are using, take a look in the Abaqus documentation manuals in the "Abaqus User Subroutines Reference Guide", section 1.1.44 UMAT.  The information includes the UMAT call statement and the argument list for the version of Abaqus you are using.  You can double check your UMAT against those arguments.  Look for the same number of arguments, the same variables names, and the same variable types.  Some of the arguments are short arrays, so check that the dimensions of those arrays are correct.

I believe that the Abaqus validation for user subroutines may be calling just one user subroutine, perhaps DLOAD, to check linking with Abaqus.  The automatic validation may not be enough to check the UMAT subroutine.

UMAT can be one of the more challenging user subroutines to use.  Have you tried other, easier to use user subroutines in Abaqus?  DLOAD can be a good one to start with since the code in DLOAD could be simple to apply a traction load to a simple mesh.

Have you tried running Abaqus from the Intel Fortran command window?  I have good success opening the command window from:

Start -> Intel Parallel Studio XE 2018 -> Compiler ... Intel 64 ...

Then running my Abaqus job from that window to link to a user subroutine.

Another recommendation is to create a main program that can call your user subroutine to pass inputs and get the outputs to check that the UMAT by itself is working as expected.  This will help confirm that you can compile and link and run a test case.  That may help narrow the possibilities of what isn't working with Abaqus.  Have you been able to do this test case?

A previous post may be helpful too:

https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/599132

Maybe some of this information will help you discover more details about what isn't working for your Abaqus plus UMAT analysis.  Let us know what you find since it may help others in the future.

Regards, Greg

mecej4
Honored Contributor III
8,592 Views

Nick, you should realize that there is no recognizable problem with the code for the majority of forum members here, who do not use Abaqus (Greg T. is a notable exception).

The subroutine UMAT has a large number of arguments that go unused. The subroutine updates the array  STRESS, using some values in the array PROPS and the input array DDSTRAN.  The code can be compiled and a DLL built that exports the symbol UMAT.

So, what does Abaqus attempt to do when it builds the DLL? We do not know, unless we can see the batch file that Abaqus uses for doing that task. You should ask the Abaqus vendor, or turning echoing on in the batch file. The bland "Problem during linking" is useless without more information: what were the linker inputs and options, and what was the linker error message?

It's as if one went to the doctor's, had lots of tests done, and then was told merely "you may be sick".

0 Kudos
wassenberg__nick
Beginner
8,592 Views
Hi Tim, Greg and Mecej,
 
Thanks for your replies and help. My apologies for describing the problem not so clearly. I do not have a lot of experience with compilers and coding overall. However, I followed your advice and tried to run it with a simple DLOAD subroutine and it finally worked! I think indeed there was a problem in the subroutine. I followed a youtube tutorial for the UMAT subroutine where ABAQUS 6.14-2 was used, and I used 6.14-1. Maybe this was causing the error. 
 
If anyone else is having problems with linking the Fortran compiler to Abaqus, I can give the following advice:
 
  • Make sure you use correct versions of Intel fortran compiler with visual studio and Abaqus. Multiple combinations are possible but for me the following worked:
    • Visual studio 2010
    • Visual Fortran compiler 2015
    • Abaqus 6.14-1
  • The order of installation of the software is important. I recommend first installing visual studio. Then if you install the Fortran compiler, you can already see if it works well with your visual studio. If you have the wrong version, it says during installation that it can not find visual studio. In this case, make sure to download other versions that work well together.
  • Paste the 3 lines in abaqus.bat and abq6141.bat  as seen above. This turorial from GrabCad is pretty clear: https://grabcad.com/tutorials/linking-abaqus-and-fortran
  • Run the abaqus vertification (type abaqus vertification in start). If it says PASS for user subroutines the compiler is linked correctly. 
  • If you still have some errors after obtaining a PASS, the problem is likely either a compile error (maybe you missed a comma), or your definition for your subroutine is for an other version of abaqus. Then first try a simple DLOAD case as Greg proposed. Make sure you obtain the template for this from the correct version of the Abaqus maual.
Kind regards,
 
Nick
0 Kudos
Ghosh_D_
Beginner
8,592 Views

Hello Nick,

I am suffering from a problem about the linking of abaqus with fortran. The versions I used are i) Abaqus 6.14-2 ii) Intel parallel studio 2016 iii) visual studio 2010. When I try to run a subroutine it always shows the compilation error. I think there is a problem in linking because when the verification is going on it shows error for i) Abaqus/Standard with user subroutine ii) Abaqus/Explicit with user subroutines (Single Precision) iii) Abaqus/Explicit with user subroutines (Double Precision) iv) Abaqus make utility with fortran v) Abaqus make utility with C++. In all the above cases it shows that "Abaqus did not complete successfully".

  I am in hurry and in great problem too about my M tech project. I will be highly obliged to you if you kindly help me promptly.

0 Kudos
Ghosh_D_
Beginner
8,592 Views

hi nick,

I have followed your steps yet it is not working . Please help.

0 Kudos
Ghosh_D_
Beginner
8,592 Views

Hi everybody,

 

Please help me. When I am trying to run abaqus program after linking it properly it shows error for user subroutine both in single and double precision. What should I do right now.

0 Kudos
andrew_4619
Honored Contributor II
8,592 Views

What error what are the error messages? If it is a compile error a copy of the source code and the messages would help someone help you.....

 

0 Kudos
JohnNichols
Valued Contributor III
8,588 Views

mecej4 wrote:

It's as if one went to the doctor's, had lots of tests done, and then was told merely "you may be sick".

 

having a significnat number of Doctors in the family, I can say that often they are in the dark about the exact cause and have a guess. 

 

0 Kudos
JohnNichols
Valued Contributor III
8,588 Views

Ghosh D. wrote:

Hi everybody,

 

Please help me. When I am trying to run abaqus program after linking it properly it shows error for user subroutine both in single and double precision. What should I do right now.

If you are running this at a University then I suggest you find the Civil Engineering Dept and find the person who does this all the time. 

If you are a student at a University and this is an assignment then you should go and see your Professor. 

If you are a graduate student then you need to read the manuals, this is not a forum that can help grad students in learning. 

If you are in a company and are starting this by yourself, find the nearest major University and make an appointment with a structures expert who has Abaqus experience and go see that person.  Most professors will give you a hearing.  if you are at a major company find the expert. 

Whilst Fortran is common and Abacus is common - using them together is mainly civil engineers and they are not really people who freqeunt this forum. 

 

 

0 Kudos
Ghosh_D_
Beginner
8,592 Views

Hello everybody,

I am very much sorry for not dictating my problem in detail. The versions I am using right now are i) Abaqus 6.14-2

                                                                                                                                                           ii) Intel parallel studio 2015

                                                                                                                                                           iii) visual studio 2010.

  • Visual studio 2010 is a trial version and other two are downloaded from different sites but not the student version.
  • The process that I have followed are
  1. Installed visual studio followed by parallel studio and abaqus
  2. Then I have pasted the following paths in the path of environment variables      C:\Program Files (x86)\Intel\Composer XE 2013\bin    C:\Program Files (x86)\Intel\Composer XE 2013\bin\intel64
  3. After that I pasted the path @call ifortvars.bat intel64 vs2010 in abaqus6142.bat

then when I run the fllowing windows are showing that I attach.

please help

0 Kudos
Reply