Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
26758 Discussions

Intel Compiler show error while compiling my Fortran code

Bless__Max
Beginner
148 Views

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 6.13-1
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 13.1.0.149 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

Code : 

*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	  

 

0 Kudos
1 Solution
Lorri_M_Intel
Employee
148 Views

This line:
                call subroutine heat(r,c+1,s+1)

should simply be

                call heat(r,c+1,s+1)

 

View solution in original post

1 Reply
Lorri_M_Intel
Employee
149 Views

This line:
                call subroutine heat(r,c+1,s+1)

should simply be

                call heat(r,c+1,s+1)

 

View solution in original post

Reply