Notifications

Rubber Curing: ABAQUS UMATHT Subroutine Problem ...  


aravinda
Posts: 3
(@aravindaousl)
New Member
Joined: 6 years ago

Dear All,

I am writing a UMATHT subroutine (Abaqus) to simulate rubber curing process and predict state of cure. In this effort I used the empirical model by Kamal and Sourer. The reference is shown below.

https://www.sciencedirect.com/science/article/abs/pii/S0927025609003668

the UMATHT code I written is mentioned below. The problem i noticed is, the state variable to show state of cure is not displaying in abaqus. When I inquired through the code, I realised the "time" parameter is not properly assigned to X (bolded in red color as shown below)

 

SUBROUTINE UMATHT(U,DUDT,DUDG,FLUX,DFDT,DFDG,
1 STATEV,TEMP,DTEMP,DTEMDX,TIME,DTIME,PREDEF,DPRED,
2 CMNAME,NTGRD,NSTATV,PROPS,NPROPS,COORDS,PNEWDT,
3 NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION DUDG(NTGRD),FLUX(NTGRD),DFDT(NTGRD),
1 TIME(2),DFDG(NTGRD,NTGRD),STATEV(NSTATV),DTEMDX(NTGRD),
2 PREDEF(1),DPRED(1),PROPS(NPROPS),COORDS(3),G(1),alpha(1)

Real*8 CPu,CPc,K,TEMP,C
Real*8 B,RATE,A,D,alpha,G,X

C CPu is the specific heat capacity of uncured rubber
C CPc is the specific heat capacity of cured rubber
C RATE IS THE RATE CONSTANT
C F IS THE MATERIAL CONSTANT
C A IS THE INDUCTION TIME
C Ku is the thermal conductance of uncured rubber
C Kc is the thermal conductance of cured rubber

CPu= PROPS(1)
CPc= PROPS(2)
Ku= PROPS(3)
Kc= PROPS(4)
E = PROPS(5)
R = PROPS(6)
k0 = PROPS(7)
F = PROPS(8)
N = PROPS(9)
t0 = PROPS(10)

C Calculation of Specific Heat Capacity
CP=(CPu+CPc)
C Calculation of Thermal Conductivity
K=(Ku+Kc)
C Calculation of Rate Constant
C= E/(R*TEMP)
B=EXP(C)
RATE=k0*B
C Calculation of Induction Time
D=EXP(F/TEMP)
A=t0*D
X=TIME(1)
C Calculation of state of cure (alpha)
G=RATE*[(X-A)**N]
alpha = G/(1-G)
DUDT = CP
DU = DUDT*DTEMP
U = U+DU
DO I=1,NTGRD
FLUX(I)= -K*DTEMDX(I)
DFDG(I,I) =-K
END DO
c do i=1,nstatv
statev(1)=alpha
c end do
RETURN
END

Could you please help me a way to assign this value, so that this model can be run smoothly.

I used single element input file to run this code. It is attached.

Any suggestion is welcome.

Thanks a lot

BR,

Aravinda 

4 Replies
Jorgen
Posts: 3870
Moderator
(@jorgen)
Member
Joined: 5 months ago

I looked at your code quickly, and I seems that TIME(1) is assigned to the local variable X. What happens if you add a

print '(a,g16.6)', "X=", X

statement?

-Jorgen

Reply
1 Reply
aravinda
(@aravindaousl)
Joined: 6 years ago

New Member
Posts: 3

@jorgen

Hi Jorgen, I bought your book on polymer mechanics and it was very useful. Thanks by the way.

I did what you have asked. and what happened was I got nice time values for the time(1) as follows...

X= 0.00000
X= 0.00000
X= 0.00000
X= 0.00000
X= 0.00000
X= 0.00000
X= 0.00000
X= 0.00000
X= 0.100000E-02
X= 0.100000E-02
X= 0.100000E-02
X= 0.100000E-02
X= 0.100000E-02
X= 0.100000E-02
X= 0.100000E-02
X= 0.100000E-02
X= 0.200000E-02
X= 0.200000E-02

It goes for a long run.....and it seems to me now the X is defined properly. but when I define 

STATEV(1) = alpha

there is a compilation error as

umatht.for(60): error #6366: The shapes of the array expressions do not conform. [STATEV]

I do not know why it happens like that.

could you please help me what have i done wrong in this case.

Thanks Jorgen

Aravinda

Reply
Jorgen
Posts: 3870
Moderator
(@jorgen)
Member
Joined: 5 months ago

I think I see the problem. You fined alpha by:

DIMENSION DUDG(NTGRD),FLUX(NTGRD),DFDT(NTGRD),
1 TIME(2),DFDG(NTGRD,NTGRD),STATEV(NSTATV),DTEMDX(NTGRD),
2 PREDEF(1),DPRED(1),PROPS(NPROPS),COORDS(3),G(1),alpha(1)

This means alpha is a vector with length one.

I suggest that you remove alpha(1) from the DIMENSION statement. That should take care of the problem.

-Jorgen

Reply
1 Reply
aravinda
(@aravindaousl)
Joined: 6 years ago

New Member
Posts: 3

@jorgen

Hi Jorgen,

 

Many thanks, as you requested I removed alpha (1) from dimension statement and G(1) also, but when I remove those  I am getting that

umatht.for(50): error #6366: The shapes of the array expressions do not conform. [G]
G=RATE*[(X-A)**N]

my updated routine is shown below... I do not understand what I have done anything wrong.... It is really mysterious to me.

Glad if you can help me...

 

SUBROUTINE UMATHT(U,DUDT,DUDG,FLUX,DFDT,DFDG,
1 STATEV,TEMP,DTEMP,DTEMDX,TIME,DTIME,PREDEF,DPRED,
2 CMNAME,NTGRD,NSTATV,PROPS,NPROPS,COORDS,PNEWDT,
3 NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION DUDG(NTGRD),FLUX(NTGRD),DFDT(NTGRD),
1 TIME(2),DFDG(NTGRD,NTGRD),STATEV(NSTATV),DTEMDX(NTGRD),
2 PREDEF(1),DPRED(1),PROPS(NPROPS),COORDS(3)

Real*8 CPu,CPc,K,TEMP,C
Real*8 B,RATE,A,D,alpha,G,X

C CPu is the specific heat capacity of uncured rubber
C CPc is the specific heat capacity of cured rubber
C RATE IS THE RATE CONSTANT 
C F IS THE MATERIAL CONSTANT 
C A IS THE INDUCTION TIME
C Ku is the thermal conductance of uncured rubber
C Kc is the thermal conductance of cured rubber

CPu= PROPS(1)
CPc= PROPS(2)
Ku= PROPS(3)
Kc= PROPS(4)
E = PROPS(5)
R = PROPS(6)
k0 = PROPS(7)
F = PROPS(8)
N = PROPS(9)
t0 = PROPS(10)

C Calculation of Specific Heat Capacity 
CP=(CPu+CPc)
C Calculation of Thermal Conductivity 
K=(Ku+Kc)
C Calculation of Rate Constant
C= E/(R*TEMP)
B=EXP(C)
RATE=k0*B
C Calculation of Induction Time
D=EXP(F/TEMP)
A=t0*D 
X=TIME(1) 
C Calculation of state of cure (alpha)
G=RATE*[(X-A)**N]
alpha = G/(1-G)
DUDT = CP
DU = DUDT*DTEMP
U = U+DU
DO I=1,NTGRD 
FLUX(I)= -K*DTEMDX(I) 
DFDG(I,I) =-K
END DO
c do i=1,nstatv
statev(1)=alpha
c end do
RETURN
END

 

Reply
Share: