User login

Navigation

You are here

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

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@purdue.edu

Another question is since I do not designate thermal expansion for abaqus, how Abaqus calculate the strain?

Frank Richter's picture

Get the file
http://imechanica.org/files/Writing User Subroutines with ABAQUS.pdf
it may show up as
http://imechanica.org/files/Writing%20User%20Subroutines%20with%20ABAQUS.pdf

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

Hi, thanks for your reply. I have that file in hand. I just do not know how abaqus with UMAT gets strain updated. Since I did not desigante any loading and thermal expansion property in abaqus at all.

Frank Richter's picture

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

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

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

Hi, Mandar, thanks for your reply,

But my question lies on how abaqus know DTRAN at the very beginning. Since I do not have any loading applied here.

 Basically, the DSTRAN or STRAN are calculated from displacement field and passed into UMAT to update STRESS by UMAT. 

Hi Chen,

Yes, even I have the same question myself. I am not sure about this.

Mandar 

I am kinda understanding it now. But only for this case...

Can you explain it? It would be very interesting to understand.

 Thanks,

Mandar

Frank Richter's picture

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

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

 

see .dat and .log file. These are messages files abaqus refers to.

Subscribe to Comments for "how abaqus obtain DSTRAN by using UMAT for non-isothermal case"

More comments

Syndicate

Subscribe to Syndicate