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

Linking Abaqus 6.14-5 with Intel Parallel XE 2013 with VS 2010

Jaime_G_1
Beginner
625 Views

 

I have been having trouble linking Abaqus with the compiler. I used the following tutorial to link the softwares: 

https://www.youtube.com/watch?v=ImWUFZAKlr4.

I'm using Abaqus 6.14-5 with Intel Parallel XE 2013 with VS 2010. The UMAT code is:

      SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
     1 RPL,DDSDDT,DRPLDE,DRPLDT,
     2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
     3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
     4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CMNAME
      DIMENSION STRESS(NTENS),STATEV(NSTATV),
     1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
     2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
     3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)
     4 JSTEP(4)
C     ELASTIC USER ROUTINE
      PARAMETER (ONE=1.0D0, TWO=2.0D0)
       E=PROPS(1)
         ANU=PROPS(2)
      ALAMBDA=E*ANU/(ONE+ANU)/(ONE-TWO*ANU)
      AMU=E/(ONE+ANU)/2
          DO I=1,NTENS
           DO J=1,NTENS
           DDSDDE(I,J)=0.0D0
           ENDDO
          ENDDO
      DDSDDE(1,1)=(ALAMBDA+TWO+AMU)
      DDSDDE(2,2)=(ALAMBDA+TWO+AMU)
      DDSDDE(3,3)=(ALAMBDA+TWO+AMU)
      DDSDDE(4,4)=AMU
      DDSDDE(5,5)=AMU
      DDSDDE(6,6)=AMU
      DDSDDE(1,2)=ALAMBDA
      DDSDDE(1,3)=ALAMBDA
      DDSDDE(2,3)=ALAMBDA
      DDSDDE(2,1)=ALAMBDA
      DDSDDE(3,1)=ALAMBDA
      DDSDDE(3,2)=ALAMBDA
      DO I=1,NTENS
       DO J=1,NTENS
       STRESS(I)=STRESS(I)+DDSDDE(I,J)+DSTRAN(J)
       ENDDO
      ENDDO
      RETURN
      END

 

The error message is shown below:


Abaqus 6.14-5
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 14.0.0.103 Build 20130728

UMAT.for(14): error #5082: Syntax error, found IDENTIFIER 'JSTEP' when expecting one of: , <END-OF-STATEMENT> ;
     4 JSTEP(4)
-------^
compilation aborted for UMAT.for (code 1)
Abaqus Error: Problem during compilation - C:\Users\labcfg\Downloads\UMAT.for
Abaqus/Analysis exited with errors

Can you please help me figuring out if my UMAT file is wrong or the compilation is the problem.

 

0 Kudos
2 Replies
Jaime_G_1
Beginner
625 Views

 

I tried this UMAT as well, from Abaqus documentation:

SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
     1 RPL,DDSDDT,DRPLDE,DRPLDT,
     2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
     3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
     4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CMNAME
      DIMENSION STRESS(NTENS),STATEV(NSTATV),
     1 DDSDDE(NTENS,NTENS),
     2 DDSDDT(NTENS),DRPLDE(NTENS),
     3 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
     4 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),
     5 JSTEP(4)
      DIMENSION DSTRES(6),D(3,3)
C
C  EVALUATE NEW STRESS TENSOR
C
      EV = 0.
      DEV = 0.
      DO K1=1,NDI
         EV = EV + STRAN(K1)
         DEV = DEV + DSTRAN(K1)
      END DO
C
      TERM1 = .5*DTIME + PROPS(5)
      TERM1I = 1./TERM1
      TERM2 = (.5*DTIME*PROPS(1)+PROPS(3))*TERM1I*DEV
      TERM3 = (DTIME*PROPS(2)+2.*PROPS(4))*TERM1I
C
      DO K1=1,NDI
         DSTRES(K1) = TERM2+TERM3*DSTRAN(K1)
     1     +DTIME*TERM1I*(PROPS(1)*EV
     2     +2.*PROPS(2)*STRAN(K1)-STRESS(K1))
         STRESS(K1) = STRESS(K1) + DSTRES(K1)
      END DO
C
      TERM2 = (.5*DTIME*PROPS(2) + PROPS(4))*TERM1I
      I1 = NDI
      DO K1=1,NSHR
         I1 = I1+1
         DSTRES(I1) = TERM2*DSTRAN(I1)+
     1     DTIME*TERM1I*(PROPS(2)*STRAN(I1)-STRESS(I1))
         STRESS(I1) = STRESS(I1)+DSTRES(I1)
      END DO
C
C  CREATE NEW JACOBIAN
C
      TERM2 = (DTIME*(.5*PROPS(1)+PROPS(2))+PROPS(3)+
     1  2.*PROPS(4))*TERM1I
      TERM3 = (.5*DTIME*PROPS(1)+PROPS(3))*TERM1I
      DO K1=1,NTENS
         DO K2=1,NTENS
            DDSDDE(K2,K1) = 0.
         END DO
      END DO
C
      DO K1=1,NDI
         DDSDDE(K1,K1) = TERM2
      END DO
C
      DO K1=2,NDI
         N2 = K1–1
         DO K2=1,N2
            DDSDDE(K2,K1) = TERM3
            DDSDDE(K1,K2) = TERM3
         END DO
      END DO
      TERM2 = (.5*DTIME*PROPS(2)+PROPS(4))*TERM1I
      I1 = NDI
      DO K1=1,NSHR
         I1 = I1+1
         DDSDDE(I1,I1) = TERM2
      END DO
C
C  TOTAL CHANGE IN SPECIFIC ENERGY
C
      TDE = 0.
      DO K1=1,NTENS
         TDE = TDE + (STRESS(K1)-.5*DSTRES(K1))*DSTRAN(K1)
      END DO
C
C  CHANGE IN SPECIFIC ELASTIC STRAIN ENERGY
C
      TERM1 = PROPS(1) + 2.*PROPS(2)
      DO  K1=1,NDI
         D(K1,K1) = TERM1
      END DO
      DO K1=2,NDI
         N2 = K1-1
         DO K2=1,N2
            D(K1,K2) = PROPS(1)
            D(K2,K1) = PROPS(1)
         END DO
      END DO
      DEE = 0.
      DO K1=1,NDI
         TERM1 = 0.
         TERM2 = 0.
         DO K2=1,NDI
            TERM1 = TERM1 + D(K1,K2)*STRAN(K2)
            TERM2 = TERM2 + D(K1,K2)*DSTRAN(K2)
         END DO
         DEE = DEE + (TERM1+.5*TERM2)*DSTRAN(K1)
      END DO
      I1 = NDI
      DO K1=1,NSHR
         I1 = I1+1
         DEE = DEE + PROPS(2)*(STRAN(I1)+.5*DSTRAN(I1))*DSTRAN(I1)
      END DO
      SSE = SSE + DEE
      SCD = SCD + TDE – DEE
      RETURN
      END

And I got this error message:

Error in job Job-4: 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.

 

0 Kudos
mecej4
Honored Contributor III
625 Views

In your first code, you are missing a comma between DFGRD1(3,3) and JSTEP(4).

As to your second code, I do not know what Abaqus probably is complaining about. That, however is not a compiler or Fortran issue, and you need to take up the question in an Abaqus support forum. Check that the number and type of every one of the arguments to the subroutine matches what Abaqus expects. I have seen 37 arguments some times and 38 at other times, so the number may well depend on the version of Abaqus being used.

Once you fix the first code, compilation will succeed, but you will probably see the same linker error as with the second one.

 

0 Kudos
Reply