Hello there !
I am trying to run a simulation in Abaqus which involves linking Abaqus with user subroutine such as DFLUX (written in Fortran language). When I tried to run the simulation via Abaqus command window I receive the following error :
C:\donut\dynamic>abaqus job=plate_heat_movement user=subroutine_file interactive
Abaqus JOB plate_heat_movement
Abaqus License Manager checked out the following licenses:
Abaqus/Standard checked out 5 tokens.
<1019 out of 1024 licenses remain available>.
Begin Compiling Abaqus/Standard User Subroutines
7/17/2019 6:54:39 AM
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Inte
l(R) 64, Version 220.127.116.11 Build 20130118
Copyright (C) 1985-2013 Intel Corporation. All rights reserved.
End Compiling Abaqus/Standard User Subroutines
Begin Linking Abaqus/Standard User Subroutines
Creating library standardU.lib and object standardU.exp
subroutine_file.obj : error LNK2019: unresolved external symbol subroutineheat r
eferenced in function dflux
standardU.dll : fatal error LNK1120: 1 unresolved externals
Abaqus Error: 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.
Abaqus/Analysis exited with errors
I don't understand the error it shows. Moreover I am not able to figure out if the error is from the code I have written or is it from the compiler itself. I will attach the code that I have written below. I hope someone helps me to get around this problem TIA
*USER SUBROUTINE SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS, 1 JLTYP,TEMP,PRESS,SNAME) include 'ABA_PARAM.INC' DIMENSION FLUX(2),TIME(2),COORDS(3) CHARACTER*80 SNAME *code INTEGER :: KSTEP,NOEL,NPT INTEGER,PARAMETER :: total_vals = 6272 INTEGER :: row, col, max_rows = 50, max_cols = 100 INTEGER :: a = 12, b = 1, t = 1 REAL, DIMENSION(total_vals) :: hfl REAL, DIMENSION(total_vals) :: temp INTEGER, DIMENSION(50,100) :: elem_array open(unit=10,file='C:\donut\dynamic\output_hfl.csv') read(10,*)hfl close(10) open(unit=11,file='C:\donut\dynamic\output_temp.csv') read(11,*)temp close(11) open(unit=12,file='C:\donut\dynamic\output_file.csv') do row = 1, max_rows read(12,*)(elem_array(row,col), col = 1, max_cols) end do close(12) if(KSTEP.EQ.1)then call subroutine heat(a,b,t) end if contains recursive subroutine heat(r,c,s) INTEGER, INTENT(IN) :: r,c,s INTEGER :: m,n INTEGER :: k = 1, l = 0 if(TIME(2).gt.s)then do m = r+27,r,-1 do n = c,c+27 if(NOEL.eq.elem_array(m,n))then do p = 1,8 if(npt.eq.p)then Flux(1) = hfl(k+8*l)*temp(k+8*l) end if k=k+1 end do end if k = 1 l = l+1 end do end do end if if(s.gt.100)then stop else call subroutine heat(r,c+1,s+1) end if return end subroutine heat end