[Solved] Rubber Curing: ABAQUS UMATHT Subroutine Problem ...
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
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
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
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
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
- VUMAT for Hyperelastic Materials - Update to Bergstrom's Example2 years ago
- UMAT: Tangent stiffness for linear perturbation steps / steady state dynamics / vibration analysis2 years ago
- Running with Matlab an Abaqus python script involving a subroutine3 years ago
- UMAT subroutine for 3d solid4 years ago
- About the VUMAT in the books by Dr. Jorgen Bergstrom6 years ago
- 21 Forums
- 3,865 Topics
- 13.2 K Posts
- 8 Online
- 29.3 K Members