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

Linking Abaqus 2025 with VS 2022 and OneAPI 2025 (Fortran)

Piskuandr
초급자
6,216 조회수

Hello, 

I have an issue to connect Abaqus with VS 2022 and oneAPI 2025. 

I tried various guides. Only way to detect Fortran compiler is to rename ifx.exe from "C:\Program Files (x86)\Intel\oneAPI\compiler\2025.2\bin" to ifort.exe 

Are there any other things, i should be aware of? 

Because for me it is little bit strange, as a lot of guides propose to change the compiler name in the "win86_64.env" file, from ifort to ifx.

Best regards, 
Andrey

9 응답
steinigo
초보자
5,882 조회수

This is right. Here is the file that i am using with Fortran 2024.2.
I tried to get the Fortran 2025 Version working, but it is not working yet. I am getting internal error.

This is my error message:

Begin Compiling Abaqus/Standard User Subroutines
10.07.2025 18:27:07
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.2.0 Build 20250605
Copyright (C) 1985-2025 Intel Corporation. All rights reserved.

xfortcom: Fatal: There has been an internal compiler error (C0000005).
compilation aborted for Composite-Fatigue-Umat-Subroutine.for (code 1)
Abaqus Error: Problem during compilation - Umat.for
Abaqus/Analysis exited with errors

 

Here the file, that is working with the 2024.2 version. You can rename the old file and paste it under:
C:\SIMULIA\EstProducts\<Year>\win_b64\SMA\site

 

"win86_64.env"-file

#-*- mode: python -*-

#############################################################################
# #
# Compile and Link commands for ABAQUS on the Windows 64 Platform #
# #
#############################################################################

# import os # <-- Debugging
# os.environ['GLOBAL_ENABLE_FPE'] = 'TRUE' # <-- Debugging

# Location of the /include directory in the ABAQUS installation
abaHomeInc = os.path.abspath(os.path.join(os.environ.get('ABA_HOME', ''), os.pardir))

compile_cpp=['cl', '/c', '/W0', '/MD', '/TP',
'/EHsc', '/DNDEBUG', '/DWIN32', '/DTP_IP', '/D_CONSOLE',
'/DNTI', '/DFLT_LIC', '/DOL_DOC', '/D__LIB__', '/DHKS_NT',
'/D_WINDOWS_SOURCE', '/DFAR=', '/D_WINDOWS', '/DABQ_WIN86_64', '%P',
# '/O1', # <-- Optimization
# '/Zi', # <-- Debug symbols
'/I%I', '/I'+abaHomeInc]

compile_fmu=['win64CmpWrp', '-m64', '-msvc9', 'cl', '/LD',
'/D_WINDOWS', '/TC', '/W0', '/I%I', '/I'+abaHomeInc]

## Fortran compile command for User Subroutines

compile_fortran=['ifx',
'/c', '/fpp', '/extend-source',
'/DABQ_WIN86_64', '/DABQ_FORTRAN',
'/iface:cref', '/recursive',
'/Qauto', # <-- important for thread-safety of parallel user subroutines
'/align:array64byte',
'/Qpc64', # set FPU precision to 53 bit significand
'/Qprec-div', # improve precision of FP divides
'/Qfma-', # disable floating point fused multiply-add
'/fp:precise', # floating point model: precise
'/Qimf-arch-consistency:true', # math library consistent results
'/Qfp-speculation:safe', # floating point speculations only when safe
'/Qprotect-parens', # honor parenthesis during expression evaluation
'/reentrancy:threaded', # important for thread-safety
#'/Qinit=zero','/Qinit=arrays', # automatically initialize all arrays to zero
#'/Qinit=snan', '/Qinit=arrays', # automatically initialize all arrays to SNAN
'/QxSSE3', '/QaxAVX', # generate SSE3, SSE2, and SSE instructions
# '/Od', '/Ob0', # <-- Disable Optimization for Debugging
# '/Zi', # <-- Debugging Information
'/include:%I', '/include:'+abaHomeInc, '%P']

link_sl=['LINK',
'/nologo', '/NOENTRY', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64',
'/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB',
'/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:LIBIFCOREMD.LIB', '/DEFAULTLIB:LIBIFPORTMD.LIB', '/DEFAULTLIB:LIBMMD.LIB',
'/DEFAULTLIB:kernel32.lib', '/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib',
'/FIXED:NO', '/dll',
#'/debug', # <-- Debugging
'/def:%E', '/out:%U', '%F', '%A', '%L', '%B',
'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib',
'advapi32.lib', 'msvcrt.lib', 'vcruntime.lib', 'ucrt.lib']

link_exe=['LINK',
'/nologo', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64', '/STACK:20000000',
'/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB', '/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:LIBIFCOREMD.LIB',
'/DEFAULTLIB:LIBIFPORTMD.LIB', '/DEFAULTLIB:LIBMMD.LIB', '/DEFAULTLIB:kernel32.lib',
'/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib',
'/FIXED:NO', '/LARGEADDRESSAWARE',
# '/debug', # <-- Debugging
'/out:%J', '%F', '%M', '%L', '%B', '%O',
'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib',
'advapi32.lib', 'msvcrt.lib', 'vcruntime.lib', 'ucrt.lib']

## Link command to be used for ABAQUS/MAKE on machines without the Fortran compiler.
## Uncomment it to enable.
#
#link_exe=['LINK', '/nologo', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64', '/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB',
# '/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:MSVCRT.LIB', '/DEFAULTLIB:kernel32.lib', '/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib',
# '/FIXED:NO', '/LARGEADDRESSAWARE', '/out:%J', '%F', '%M', '%L', '%B', '%O',
# 'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib',
# 'advapi32.lib', 'msvcrt.lib', 'vcruntime.lib', 'ucrt.lib']

# Remove the temporary names from the namespace
del abaHomeInc

 

 

aai5_
초급자
5,791 조회수

Thank you for sharing your work - I likewise am having the same issue of the xfortcom Fatal error running ABQ 2024, Visual Studio 2022 17.14.8, and Intel Toolkit 2025.2. Any suggestions since downloading the previous 2024.2 toolkit is unavailable?

steinigo
초보자
5,140 조회수

After a little bit of research the official answer to this problem is, that abaqus is just supporting Intel Fortran ifort, even for newer releases like 2024, 2025. Transition to the newer ifx compiler is planned for abaqus 2026.

See https://support.3ds.com/knowledge-base/?q=docid:QA00000329750

 

If you'd like to transition to using ifx compiler, Dassault suggest modyfying the win86_64.env file.  Same changes that i shared above.

Here a downladpage for fortran 2024.2 (this was working for me):
https://github.com/Yazhuo-Liu/install-abaqus-with-fortran-on-windows

Hope this helps.


That the command abaqus info=system is still looking for the old ifort compiller and sometimes dont recognise the c++ is a known issue, but the cae will work with the new ifx compiller, as you'll see in the log file after running your jobs.
You can check the correct version of both after typing in abaqus command first:

abaqus info=system
ifx --version
cl

this will double check, that everything is working.

 

0 포인트
Piskuandr
초급자
5,560 조회수

What modification i did, and it seems okay for me. you can try on your PC as well : 

For abq202hf6 : (in the Abaqus_Command find this file, and check the installation path of the Abaqus) 

@Echo off
setlocal
call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" intel64 vs2022
call "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat"
set ABA_DRIVERNAME=%~nx0
"c:\SIMULIA\EstProducts\2024\win_b64\code\bin\SMALauncher.exe" %*
endlocal

For the abaqus_v6.env, in the end of the file add the following command : 

compile_fortran = 'ifort /c /DABQ_WIN86_64 /nologo /heap-arrays:1 /extend-source /iface:cref'

And in the win86_64.env : 

compile_fortran=['ifort',
                 '/c', '/fpp', '/extend-source', 
                 '/DABQ_WIN86_64',  '/DABQ_FORTRAN',
                 '/iface:cref', '/recursive',
                 '/Qauto',  # <-- important for thread-safety of parallel user subroutines
                 '/align:array64byte',
                 '/Qpc64',                    # set FPU precision to 53 bit significand
                 '/Qprec-sqrt','/Qprec-div',  # improve precision of FP divides and sqrt
#'/Qprec-div',  # improve precision of FP divides and sqrt (activate for ifx)
                 '/Qfma-',                    # disable floating point fused multiply-add
                 '/fp:precise',                # floating point model: precise 
                 '/Qimf-arch-consistency:true', # math library consistent results
                 '/Qfp-speculation:safe',      # floating point speculations only when safe
                 '/Qprotect-parens',          # honor parenthesis during expression evaluation
                 '/Qfp-stack-check',          # enable stack overflow protection checks (remove for ifx)
                 '/reentrancy:threaded',      # important for thread-safety
                 #'/Qinit=zero','/Qinit=arrays',  # automatically initialize all arrays to zero
                 #'/Qinit=snan','/Qinit=arrays', # automatically initialize all arrays to SNAN
                 '/QxSSE3', '/QaxAVX',        # generate SSE3, SSE2, and SSE instructions
                 # '/Od', '/Ob0',  # <-- Disable Optimization for Debugging
                 # '/Zi',          # <-- Debugging Information
                 '/include:%I', '/include:'+abaHomeInc, '%P']

and here : C:\Program Files (x86)\Intel\oneAPI\compiler\2025.2\bin -> change the name of the ifx.exe to ifort.exe 

And add this path as environment variables to your PC, plus you need to add the following path as well : 

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build

C:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin
 
C:\Program Files (x86)\Intel\oneAPI\dpcpp-ct\2025.2\env
 
0 포인트
steinigo
초보자
5,409 조회수

i tried your setup and getting the same:

Begin Compiling Abaqus/Standard User Subroutines
11.07.2025 22:06:49
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.2.0 Build 20250605
Copyright (C) 1985-2025 Intel Corporation. All rights reserved.

xfortcom: Fatal: There has been an internal compiler error (C0000005).
0 포인트
andrew_4619
명예로운 기여자 III
4,096 조회수

can you post the code that failed as that is a compiler bug relating to your code content.

 

0 포인트
steinigo
초보자
3,735 조회수

i used the internal verify command, that is compiling the abaqus example code for fortran:

 

      SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION U(3),TIME(2),COORDS(3)
C
C THE PRIMARY FUNCTION IS F(T)=1.5 SIN(OMEGA T) + .5 COS(OMEGA T)
C WHERE OMEGA IS .1 PI AND T THE CURRENT TIME.
C THE APPROPRIATE INTEGRALS AND DERIVATIVES ARE COMPUTED ACCORDINGLY.
C
      OMEGA=.314159
      AOMGT=OMEGA*TIME(2)
      CS=COS(AOMGT)
      SN=SIN(AOMGT)
      AN=.5
      BN=1.5
      IF(NODE.EQ.2.AND.JDOF.EQ.1) THEN
C        THE FUNCTION IS DISPLACEMENT FOR NODE 2
C        (DIFFERENTIATE FOR VEL AND ACC)
         U(1)=AN*CS+BN*SN
         U(2)=OMEGA*(-AN*SN+BN*CS)
         U(3)=-OMEGA**2*(AN*CS+BN*SN)
      ELSE IF(NODE.EQ.3.AND.JDOF.EQ.1) THEN
C        THE FUNCTION IS VELOCITY FOR NODE 3 (INTEGRATE FOR DISP,
C        DIFFERENTIATE FOR ACCELERATION)
         U(1)=(AN*SN+BN*(1.0-CS))/OMEGA
         U(2)=AN*CS+BN*SN
         U(3)=OMEGA*(-AN*SN+BN*CS)
      ELSE IF(NODE.EQ.4.AND.JDOF.EQ.1) THEN
C        THE FUNCTION IS ACCELERATION FOR NODE 4
C        (INTEGRATE FOR DISP AND VELOCITY)
         U(1)=(AN*(1.0-CS)+BN*(AOMGT-SN))/OMEGA**2
         U(2)=(AN*SN+BN*(1.0-CS))/OMEGA
         U(3)=AN*CS+BN*SN
      ENDIF
      RETURN
      END

 The aba_param.inc file contain:

!=============================================================================
! COPYRIGHT DASSAULT SYSTEMES 2001-2019
!
! @CAA2Level L0
! @CAA2Usage U0
!
!=============================================================================
      implicit real*8(a-h,o-z)
      parameter (nprecd=2)

 i tried different other Fortran Subroutines for Abaqus 2022 codes, but they fail with the same error.
This is just the one example, that we all use to check that abaqus fortran is working correct.

0 포인트
Greg251
초급자
3,142 조회수

Hi, 

 

I had the same problem when I tried to compile a user defined element with Abaqus2024, ifx, and Visual Studio 2022. After I disabled the compiler setting /Qimf-arch-consistency:true, it worked.

 

Best regards,

Greg

 

 

steinigo
초보자
2,785 조회수

Thank you very much! This worked!

 

i upgraded now to fortran 2025.

0 포인트
응답