Skip to main content

how abaqus obtain DSTRAN by using UMAT for non-isothermal case

Submitted by chen1164 on

Hi, all,

I recently encounted a big question regarding to the temperature dependent UMAT case. 

I used the UMAT for non-isothermal elasticity as followed. The DDSDDE calculating part is not shown here.

You can see that I output  ETHERM(K1),EELAS(K1),STRAN(K1),DSTRAN(K1) at the beginning of the code.

And this UMAT also saves ETHERM and EELAS to state variable array.

Job set up is no loading and using the static general step. But essentially it is a free expansion with thermal expansion coef of 6e-6 and temperature from 0 to 80, which is reflected in UMAT only. After Abaqus completes the job, these resluts are all correct, SDV(1-6)=EELAS=0, SDV(7-9)=ETHERM=4.8e-4. And the DSTRAN is 4.8e-4 as well.

 My question is that how abaqus knows DSTRAN here, since I did not apply any mechanical loading and not tell abaqus that this is a thermal expansion analysis here. I think DSTRAN is supposed to be given by specific dispalcement or thermal expasion. 

 
Could someone help me with that? I have been struggling with this for a while.

       SUBROUTINE UMAT(STRESS, STATEV, DDSDDE, SSE, SPD, SCD, RPL,

     1 DDSDDT, DRPLDE, DRPLDT, STRAN, DSTRAN, TIME, DTIME, TEMP, DTEMP,

     2 PREDEF, DPRED, CMNAME, NDI, NSHR, NTENS, NSTATV, PROPS, NPROPS,

     3 COORDS, DROT, PNEWDT, CELENT, DFGRD0, DFGRD1, NOEL, NPT, LAYER,

     4 KSPT, KSTEP, KINC)

C

      INCLUDE 'ABA_PARAM.INC'

C

      CHARACTER*8 CMNAME

C

      DIMENSION STRESS(NTENS), STATEV(NSTATV), DDSDDE(NTENS, NTENS),

     1 DDSDDT(NTENS), DRPLDE(NTENS), STRAN(NTENS), DSTRAN(NTENS),

     2 PREDEF(1), DPRED(1), PROPS(NPROPS), COORDS(3), DROT(3, 3),

     3 DFGRD0(3, 3), DFGRD1(3, 3)



       DIMENSION EELAS(6), ETHERM(6), DTHERM(6), DELDSE(6,6)

C

       PARAMETER(ZERO=0.D0, ONE=1.D0, TWO=2.D0, THREE=3.D0, SIX=6.D0)

C ----------------------------------------------------------------

C     UMAT FOR ISOTROPIC THERMO-ELASTICITY WITH LINEARLY VARYING

C     MODULI - CANNOT BE USED FOR PLANE STRESS

C ----------------------------------------------------------------

C     PROPS(1) - E(T0)

C     PROPS(2) - NU(T0)

C     PROPS(3) - T0

C     PROPS(4) - E(T1)

C     PROPS(5) - NU(T1)

C     PROPS(6) - T1

C     PROPS(7) - ALPHA

C     PROPS(8) - T_INITIAL

C     ELASTIC PROPERTIES AT START OF INCREMENT

C



        WRITE (6,*) 'ENTER UMAT'




       DO K1=1, NTENS

       WRITE(6,*) ETHERM(K1),EELAS(K1),STRAN(K1),DSTRAN(K1)

       END DO

 

C

C     CALCULATE THERMAL EXPANSION

C



       DO K1=1,NDI

     ETHERM(K1)=PROPS(7)*(TEMP-PROPS(8))

     DTHERM(K1)=PROPS(7)*DTEMP



       END DO

       DO K1=NDI+1,NTENS

     ETHERM(K1)=ZERO

     DTHERM(K1)=ZERO

       END DO

C

C     CALCULATE STRESS, ELASTIC STRAIN AND THERMAL STRAIN

C

       DO K1=1, NTENS

     DO K2=1, NTENS

       STRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*(DSTRAN(K1)-DTHERM(K1))+DELDSE(K2,K1)*(STRAN(K1)-ETHERM(K1))

         END DO

       ETHERM(K1)=ETHERM(K1)+DTHERM(K1)

       EELAS(K1)=STRAN(K1)+DSTRAN(K1)-ETHERM(K1)

       END DO



C

C     STORE ELASTIC AND THERMAL STRAINS IN STATE VARIABLE ARRAY

C

       DO K1=1, NTENS

     STATEV(K1)=EELAS(K1)

     STATEV(K1+NTENS)=ETHERM(K1)

       END DO

       RETURN   

       END

 

Thanks for helping.

Chen

Email: chen1164 [at] purdue.edu

The strain incrementation is provided by Abaqus. See the chapter on UMAT in the common Subroutine Manual

------------------------------------------
Ruhr-University
Bochum
Germany

Thu, 03/07/2013 - 20:00 Permalink

STRAN and DSTRAN are already elastic strains only meaning that ABAQUS deducts thermal strains if any from the total strain and then provides it to UMAT as input. Bottomline line is that you can't deduct thermal strain again from STARN+DSTRAN inside the UMAT to calculate elastic strain. I hope this helps.

On the other hand, I have a question that you might be able to answer. Is it possible to update strain instead of stress in UMAT or any other subroutine for that matter? I know that I can update strain using UEXPAN but that subroutine is not serving me the purpose of my calculations.

 

Thanks,

Mandar

Sun, 03/10/2013 - 02:13 Permalink

User's manual

15.1.1 User subroutines: overview

User subroutines must perform their intended function without overwriting other parts of Abaqus. In particular, you should redefine only those variables identified in this chapter as “variables to be defined.” Redefining “variables passed in for information” will have unpredictable effects.

------------------------------------------
Ruhr-University
Bochum
Germany

Sun, 03/10/2013 - 20:02 Permalink

Hi Frank,

 Thanks for your reply. Here is some other issue.

I just finished coding UMAT for hyperelastic material and tested it on
one element for uniaxial and simple shear boundary conditions. It works
fine for one element. But, if I try to run a simulation for more than
one element, ABAQUS exits with an error. The message says that the error
can be found in message file if the file exists and obviously the .msg
file does not exist. Do you have any idea about what could be going wrong or
where should I look for the kind of error I am encountering with?

Thanks in advance.

Mandar

 

Mon, 03/11/2013 - 18:18 Permalink