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

Linking Fortran compiler with Abaqus (minimal required installation; no need to install Intel oneAPI

Prafull_Bhosale_IITB
832 Views
  1. Download and install Visual Studio Build tools 2022 with default options checked. (DO NOT UNCHECK OR CHECK ANY OTHER OPTIONS.)

    https://visualstudio.microsoft.com/downloads/?q=build+tools 

    Prafull_Bhosale_IITB_0-1645257912191.png

    Prafull_Bhosale_IITB_0-1645257770524.png

  2. Install Fortran compiler from this website

https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html

Prafull_Bhosale_IITB_0-1645257538109.png

 

  1. Install Math kernel Library also from above website

Prafull_Bhosale_IITB_1-1645257538123.png

 

  1. Add following in paths in Path environment variable in system:

C:\Program Files (x86)\Intel\oneAPI\compiler\latest\env\

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build

  1. Add following lines in abaqus.bat file

call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"

call "C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.2\env\vars.bat" -arch intel64

call "C:\Program Files (x86)\Intel\oneAPI\mkl\2022.0.2\env\vars.bat" intel64

 

Prafull_Bhosale_IITB_2-1645257538126.png

 

  1. To check if linking is done, run:

First open Abaqus Command prompt and then enter following:

abaqus info=system

 

Output should be like shown below:

Prafull_Bhosale_IITB_3-1645257538127.png

 

  1. To check if fortran file is running:

First fetch a sample file from Abaqus repository.

               abaqus fetch job=std_user

 

This command will fetch sample file with user subroutine from Abaqus repository and put it in current directory.

 

  1. *******IMP step: Remove the commented lines; otherwise, the program will not work. This is due to some bug in intel oneAPI *********

std_user.for file after removing commented lines should look like as shown below:

     

Prafull_Bhosale_IITB_4-1645257538131.png

 

  1. Run

abaqus job=std_user user=std_user.for

 

Check std_user.log file. It should have "Abaqus JOB std_user COMPLETED" at the end of file.

Prafull_Bhosale_IITB_5-1645257538136.png

 

******DONE**********

 

References:

 https://community.intel.com/t5/Intel-Fortran-Compiler/The-Easy-and-Fast-Way-to-Install-JUST-Fortran-... 

6 Replies
Steve_Lionel
Black Belt Retired Employee
817 Views

Please show the source file before the commented lines are removed. I am curious to know what the perceived bug is. (I am not an Abaqus user.)

Hayel
Beginner
262 Views

Why this complier can not compile subroutines contain ABA_PARAM.INC? 

 

Arjen_Markus
Honored Contributor I
238 Views

Like Steve, I do not use Abaqus, I merely know of its existence. As you do not indicate what the compiler complains about and why it fails to compile such subroutines, I can only guess what is going wrong: it cannot find the include file "ABA_PARAM.INC". You need to specify its location to the compiler, if that file is not in the same directory as the source file.

Hayel
Beginner
201 Views

Thank you for you help. 

Abaqus compile the subroutine correctly and the analysis started, but then the analysis aborted and there is no results at all. 

Hayel
Beginner
201 Views

This analysis is completed before in Abaqus 2017 and the link with VS2012 and Intel composer EX 2013. So why it is aborted in Abaqus 2022?

 

Arjen_Markus
Honored Contributor I
183 Views

First of all: you may want to start a new thread, rather than continuing with this old one. It will allow you to give it a more appropriate title.

You do not give us much clues as to what is going on and wrong, I am afraid. Apparently, there are at least two components that are different from your working version: Abaqus went from version "2017" to "2022" and the Intel Fortran compiler evidently changed also. As I do not know Abaqus, I have no idea if that is responsible for the observed failure. But be aware that newer versions of compilers can bring out lurking mistakes and errors in programs.

Given that you do not indicate HOW the analysis is aborted (nor show any code), I can only give you general advice:

  • Try to find out if the analysis program printed a stacktrace, so that you can at least get some information on what went wrong.
  • Lacking that, try with an empty routine, possibly merely printing a message to a file on disk, so that you know it has been called.
  • If that succeeds, add print statements in the routine to see where it fails. At some point you may see the exact location - or, if you are unlucky, the problem will have gone. The latter is usually an indication that something like an uninitialised variable caused a runtime problem (accessing an array way out of bounds for instance).
  • What you can also try is creating a small program that simply calls your routine with the right set of arguments, to see if in such an isolated case things work or do not work.

Just very general advice ;).

 

Reply