Discussion:
CREEP subroutine with state variable
bscarpin
2013-07-30 19:16:10 UTC
Permalink
Dear all,

I have made a subroutine to characterize a material under creep conditions and I am having some issues running it. I am using it in just one element under traction load to test if it works.
The equation is made of the strain rate (function of some constants and a state variable "H") and the state variable rate. The evolution of the state variable characterizes the first stage of creep, and it saturates in a given value, so the second stage starts.
The analisys starts but it is aborted due to an "system error code 144". I know this can be because a division by zero, but it is not the case.I've tried iniializing the STATEV(1) as a value diferent from zero and it doesn't work.
Looking at the log file, the STATE(1) stays with the value zero and the strain grows slowly...until the error occurs.

I don't know if i have to use another subroutine (like USDFLD) to increment the state variable and how I can do this.

I would be grateful if someone could help me..thank you!

Bruno

SUBROUTINE CREEP(DECRA,DESWA,STATEV,SERD,EC,ESW,P,QTILD,
1 TEMP,DTEMP,PREDEF,DPRED,TIME,DTIME,CMNAME,LEXIMP,LEND,
2 COORDS,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
C
DIMENSION DECRA(5),DESWA(5),STATEV(1),PREDEF(*),DPRED(*),
1 TIME(2),COORDS(*),EC(2),ESW(2)
C
C Defining material constants

A = 5E-010
B = 0.8
h = 926.
n = 0.9
H_SAT = 0.2
C
C State Variable (back stress)
C
H = STATEV(1)
C
C Strain increment for implicit and explicit integration
C
DECRA(1) = A*(sinh(B*QTILD*(1.-H)))*DTIME
IF(LEXIMP.EQ.1) THEN
DECRA(5) = A*B*(1.-H)*cosh(B*QTILD*(1.-H))*DTIME
ENDIF
C
C State variable increment
C
inc_H = (A*(sinh(B*QTILD*(1.-H))))*(h/(QTILD**n))*
1 (1.-(H/H_SAT))
C
C Updating state variable
C
H = H + inc_H*DTIME
STATEV(1) = H
C
WRITE(*,*)'STATEV1',STATEV(1)
WRITE(*,*)'DECRA1',DECRA(1)
C
RETURN
END
Dave Lindeman
2013-07-30 21:34:18 UTC
Permalink
FORTRAN is not case-sensitive. It will interpret "H" and "h" as the
same variable. Therefore, you should choose a different name for one of
the two variables.

Regards,

Dave Lindeman
Lead Research Specialist
3M Company
3M Center 235-3F-08
St. Paul, MN 55144
651-733-6383
Post by bscarpin
Dear all,
I have made a subroutine to characterize a material under creep
conditions and I am having some issues running it. I am using it in
just one element under traction load to test if it works.
The equation is made of the strain rate (function of some constants
and a state variable "H") and the state variable rate. The evolution
of the state variable characterizes the first stage of creep, and it
saturates in a given value, so the second stage starts.
The analisys starts but it is aborted due to an "system error code
144". I know this can be because a division by zero, but it is not the
case.I've tried iniializing the STATEV(1) as a value diferent from
zero and it doesn't work.
Looking at the log file, the STATE(1) stays with the value zero and
the strain grows slowly...until the error occurs.
I don't know if i have to use another subroutine (like USDFLD) to
increment the state variable and how I can do this.
I would be grateful if someone could help me..thank you!
Bruno
SUBROUTINE CREEP(DECRA,DESWA,STATEV,SERD,EC,ESW,P,QTILD,
1 TEMP,DTEMP,PREDEF,DPRED,TIME,DTIME,CMNAME,LEXIMP,LEND,
2 COORDS,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
C
DIMENSION DECRA(5),DESWA(5),STATEV(1),PREDEF(*),DPRED(*),
1 TIME(2),COORDS(*),EC(2),ESW(2)
C
C Defining material constants
A = 5E-010
B = 0.8
h = 926.
n = 0.9
H_SAT = 0.2
C
C State Variable (back stress)
C
H = STATEV(1)
C
C Strain increment for implicit and explicit integration
C
DECRA(1) = A*(sinh(B*QTILD*(1.-H)))*DTIME
IF(LEXIMP.EQ.1) THEN
DECRA(5) = A*B*(1.-H)*cosh(B*QTILD*(1.-H))*DTIME
ENDIF
C
C State variable increment
C
inc_H = (A*(sinh(B*QTILD*(1.-H))))*(h/(QTILD**n))*
1 (1.-(H/H_SAT))
C
C Updating state variable
C
H = H + inc_H*DTIME
STATEV(1) = H
C
WRITE(*,*)'STATEV1',STATEV(1)
WRITE(*,*)'DECRA1',DECRA(1)
C
RETURN
END
[Non-text portions of this message have been removed]
Frank Richter
2013-07-30 20:57:58 UTC
Permalink
3 ideas:
define the type of the constants as REAL
check if sinh and cosh are known in FORTRAN by default
if inc_H is really the increment in H, you are well advised to spend a thought on the command H = H + inc_H*DTIME
 
-----------------------------------------------------------------------
Frank Richter
Institute of Materials Science
Ruhr-Universitaet Bochum
Bochum
Germany
 
 

Gesendet: Dienstag, 30. Juli 2013 um 21:16 Uhr
Von: bscarpin <***@gmail.com>
An: ***@yahoogroups.com
Betreff: [Abaqus] CREEP subroutine with state variable

 

Dear all,

I have made a subroutine to characterize a material under creep conditions and I am having some issues running it. I am using it in just one element under traction load to test if it works.
The equation is made of the strain rate (function of some constants and a state variable "H") and the state variable rate. The evolution of the state variable characterizes the first stage of creep, and it saturates in a given value, so the second stage starts.
The analisys starts but it is aborted due to an "system error code 144". I know this can be because a division by zero, but it is not the case.I've tried iniializing the STATEV(1) as a value diferent from zero and it doesn't work.
Looking at the log file, the STATE(1) stays with the value zero and the strain grows slowly...until the error occurs.

I don't know if i have to use another subroutine (like USDFLD) to increment the state variable and how I can do this.

I would be grateful if someone could help me..thank you!

Bruno

SUBROUTINE CREEP(DECRA,DESWA,STATEV,SERD,EC,ESW,P,QTILD,
1 TEMP,DTEMP,PREDEF,DPRED,TIME,DTIME,CMNAME,LEXIMP,LEND,
2 COORDS,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
C
DIMENSION DECRA(5),DESWA(5),STATEV(1),PREDEF(*),DPRED(*),
1 TIME(2),COORDS(*),EC(2),ESW(2)
C
C Defining material constants

A = 5E-010
B = 0.8
h = 926.
n = 0.9
H_SAT = 0.2
C
C State Variable (back stress)
C
H = STATEV(1)
C
C Strain increment for implicit and explicit integration
C
DECRA(1) = A*(sinh(B*QTILD*(1.-H)))*DTIME
IF(LEXIMP.EQ.1) THEN
DECRA(5) = A*B*(1.-H)*cosh(B*QTILD*(1.-H))*DTIME
ENDIF
C
C State variable increment
C
inc_H = (A*(sinh(B*QTILD*(1.-H))))*(h/(QTILD**n))*
1 (1.-(H/H_SAT))
C
C Updating state variable
C
H = H + inc_H*DTIME
STATEV(1) = H
C
WRITE(*,*)'STATEV1',STATEV(1)
WRITE(*,*)'DECRA1',DECRA(1)
C
RETURN
END
 

Loading...