#-*- 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=['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-div', '/Qprec-sqrt', # improve precision of FP divides and sqrt
'/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
'/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
Uncomment all the lines that end with comment of Debugging.
Add some codes like this to pause at the subroutine after the declaration of variables, like this:
If you have added some code to pause in the subroutine, the program will stop in the command window, like this
Add a breakpoint in the subroutine file in Visual Studio, resume running the subroutine in the command window, i.e., input the temporary value, the subroutine will stop in Visual Studio, and now you can debug your subroutine in Visual Studio!
Abaqus CAE cannot be opened if the debug mode is activated, change the configuration file to the old version and you can open Abqus CAE again.