what's wrong with the UMAT subroutine

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

what's wrong with the UMAT subroutine

lei1024747@sina.com
hi,

    Thanks for your time and patience reading this email.

     Recently I've been trying to define a coordinate-dependent Young's modulus in a 2D plane stress model. I've write a user subroutine as below, but there's a error message ('Problem during compilation') when running the subroutine with ABAQUS/CAE.

    Could anyone tell me what's going wrong with the subroutine?  Thanks again!  Frankey

      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     VARIED YOUNG'S MODULUS WITH COORDINATE
      PARAMETER (poiss = .3D0, ONE = 1.D0, TWO= 2.D0, YY=20000.D0)
      X=COORDS(2)
      young = YY*X
      Lamda = young/(ONE - poiss*poiss)
      DO I=1,NTENS
       DO J=1,NTENS
        DDSDDE(I,J) = 0.
       ENDDO
      ENDDO
      DDSDDE(1,1) = Lamda
      DDSDDE(2,2) = Lamda
      DDSDDE(1,2) = Lamda*poiss
      DDSDDE(2,1) = Lamda*poiss
      DDSDDE(3,3) = (1.-poiss)*Lamda/TWO
     
      DO K=1,NTENS
       DO L=1,NTENS
          STRESS(K)=STRESS(K)+DDSDDE(K,L)* DSTRAIN(L)
       ENDDO
      ENDDO
     
      RETURN
      END




[hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: what's wrong with the UMAT subroutine

Martin Baeker
don't know what's wrong with your routine, but it would be much simpler
to make Young's modulus dependent on a field variable and use
UFIELD/USDFLD to determine its value.

On Fri, 7 Dec 2018 10:00:57 +0800
"'[hidden email]' [hidden email] [Abaqus]"
<[hidden email]> wrote:

> hi,
>
>     Thanks for your time and patience reading this email.
>
>      Recently I've been trying to define a coordinate-dependent Young's modulus in a 2D plane stress model. I've write a user subroutine as below, but there's a error message ('Problem during compilation') when running the subroutine with ABAQUS/CAE.
>
>     Could anyone tell me what's going wrong with the subroutine?  Thanks again!  Frankey
>
>       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     VARIED YOUNG'S MODULUS WITH COORDINATE
>       PARAMETER (poiss = .3D0, ONE = 1.D0, TWO= 2.D0, YY=20000.D0)
>       X=COORDS(2)
>       young = YY*X
>       Lamda = young/(ONE - poiss*poiss)
>       DO I=1,NTENS
>        DO J=1,NTENS
>         DDSDDE(I,J) = 0.
>        ENDDO
>       ENDDO
>       DDSDDE(1,1) = Lamda
>       DDSDDE(2,2) = Lamda
>       DDSDDE(1,2) = Lamda*poiss
>       DDSDDE(2,1) = Lamda*poiss
>       DDSDDE(3,3) = (1.-poiss)*Lamda/TWO
>
>       DO K=1,NTENS
>        DO L=1,NTENS
>           STRESS(K)=STRESS(K)+DDSDDE(K,L)* DSTRAIN(L)
>        ENDDO
>       ENDDO
>
>       RETURN
>       END
>
>
>
>
> [hidden email]


--
                   Priv.-Doz. Dr. Martin Bäker
                   Institut für Werkstoffe
                   Technische Universität Braunschweig
                   Langer Kamp 8
                   38106 Braunschweig
                   Germany
                   Tel.: 00-49-531-391-3065
                   Fax   00-49-531-391-3058
                   e-mail <[hidden email]>
                   http://www.tu-braunschweig.de/ifw/institut/mitarbeiter/baeker
                http://www.scienceblogs.de/hier-wohnen-drachen
Reply | Threaded
Open this post in threaded view
|

RE: what's wrong with the UMAT subroutine

David Lindeman
In reply to this post by lei1024747@sina.com
  1.  Note that ABA_PARAM.INC contains the line ‘IMPLICIT REAL*8 (A-H,O-Z)’.  This means that variables starting with I through N are assumed to be integers.  Thus, your ‘Lambda’ variable would be an integer.
  2.  At least as posted in the e-mail, there seem to be some extraneous characters, for example:

      SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
    ! ; 1 RPL,DDSDDT,DRPLDE,DRPLDT,

     DDSDDE(3,3) = (1! .-poiss)*Lamda/TWO

Regards,

Dave Lindeman
Staff Scientist
Corporate Research Systems Laboratory
3M Center 235-3G-08
St. Paul, MN 55144
651-733-6383

From: [hidden email] [mailto:[hidden email]]
Sent: Thursday, December 06, 2018 8:01 PM
To: [hidden email]
Subject: [EXTERNAL] [Abaqus] what's wrong with the UMAT subroutine


hi,

    Thanks for your time and patience reading this email.

     Recently I've been trying to define a coordinate-dependent Young's modulus in a 2D plane stress model. I've write a user subroutine as below, but there's a error message ('Problem during compilation') when running the subroutine with ABAQUS/CAE.

    Could anyone tell me what's going wrong with the subroutine?  Thanks again!  Frankey

      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     VARIED&! nbsp;YOUNG'S MODULUS WITH COORDINATE
 &! nbsp;    PARAMETER (poiss = .3D0, ONE = 1.D0, TWO= 2.D0, YY=20000.D0)
      X=COORDS(2)
      young = YY*X
      Lamda = young/(ONE - poiss*poiss)
      DO I=1,NTENS
       DO J=1,NTENS
        DDSDDE(I,J) = 0.
       ENDDO
      ENDDO
      DDSDDE(1,1) = Lamda
      DDSDDE(2,2) = Lamda
      DDSDDE(1,2) = Lamda*poiss
      DDSDDE(2,1) = Lamda*poiss
      DDSDDE(3,3) = (1! .-poiss)*Lamda/TWO

      DO K=1,NTENS
       DO L=1,NTENS
          STRESS(K)=STRESS(K)+DDSDDE(K,L)*DSTRAIN(L)
       ENDDO
      ENDDO

      RETURN
      END


________________________________
[hidden email]





________________________________



3M Notice: This communication is from an [EXTERNAL] sender.
If this email looks suspicious, do NOT click or open any links or attachments in the email. To report a suspicious email, click on the Report Phishing – PhishMe icon in the Outlook ribbon or forward this email using the report email as spam link in the text below.

Click here<https://spam.mmm.com/pem/pages/digestProcess/digestProcess.jsf?content=aedaaa864ecbae94140305c08d43986d739753923c2cddf483049b16f02976bac6c4ff5fb22097b592aab29dac82584f30f60c161a797f8d8d8a621478a2f25250f75f3a4b570e12125b08ef0dd8e5d1dbc7a045714a146255659761471276b9c37b570f20a98a734732948327931bff93d08ba9b6d561fece99c327acde977017d051a1b719785d> to report this email as spam





[Non-text portions of this message have been removed]

Reply | Threaded
Open this post in threaded view
|

Re: what's wrong with the UMAT subroutine

Amir Molavizadeh
In reply to this post by lei1024747@sina.com
Hi,
I strongly recommend you to open .log file type and investigate errors.You
can simply understand errors by checking this file.So, you can resolve it.

Also you can join to this group in order to gain suitable answers.

https://chat.whatsapp.com/JiBFoAQ8sP05JyjN8Wyr3L


On Fri, 7 Dec 2018, 15:31 '[hidden email]' [hidden email]
[Abaqus], <[hidden email]> wrote:

>
>
> hi,
>
>     Thanks for your time and patience reading this email.
>
>      Recently I've been trying to define a coordinate-dependent Young's
> modulus in a 2D plane stress model. I've write a user subroutine as below,
> but there's a error message ('Problem during compilation') when running
> the subroutine with ABAQUS/CAE.
>
>     Could anyone tell me what's going wrong with the subroutine?  Thanks
> again!  Frankey
>
>       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     VARIED YOUNG'S MODULUS WITH COORDINATE
>       PARAMETER (poiss = .3D0, ONE = 1.D0, TWO= 2.D0, YY=20000.D0)
>       X=COORDS(2)
>       young = YY*X
>       Lamda = young/(ONE - poiss*poiss)
>       DO I=1,NTENS
>        DO J=1,NTENS
>         DDSDDE(I,J) = 0.
>        ENDDO
>       ENDDO
>       DDSDDE(1,1) = Lamda
>       DDSDDE(2,2) = Lamda
>       DDSDDE(1,2) = Lamda*poiss
>       DDSDDE(2,1) = Lamda*poiss
>       DDSDDE(3,3) = (1.-poiss)*Lamda/TWO
>
>       DO K=1,NTENS
>        DO L=1,NTENS
>           STRESS(K)=STRESS(K)+DDSDDE(K,L)* DSTRAIN(L)
>        ENDDO
>       ENDDO
>
>       RETURN
>       END
>
>
> ------------------------------
> [hidden email]
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: what's wrong with the UMAT subroutine

cpmorena
In reply to this post by lei1024747@sina.com
Reply | Threaded
Open this post in threaded view
|

Re: what's wrong with the UMAT subroutine

lei1024747@sina.com
In reply to this post by lei1024747@sina.com
hey,

    thanks for all the suggestions!

    I think I should solve this problem in two steps, the first step is to comfirm that the link between abaqus and fortran compiler is successful (which I've solved last night through a re-installation of abaqus software), and the second is to check for syntax errors in the subroutine.

   Also, if there's anything relevant to this topic, advices or questions, please feel free to contact me.

  Thanks!

Frankey Zhang



[hidden email]