JerryHe1
Mechanical
- Jul 13, 2016
- 9
Dear members:
I was trying to model the distribution of the temperature and degree of cure for a material. And as you can see from my codes,I used field(1) for the temperature and Fiedl(2) for the degree of cure,and each of them were stored in Statev(1) and Statev(2) respectively.But what confused me a lot is that the output for the SDV(2)--degree of cure, was always zero and didn't change with time.It seems like ABAQUS didn't call the subroutine at all. So can you help me check what's the problems with my subroutines? Thank you so much!!
Here is the codes:
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),
1 COORD(*)
Real T_g,C_p0,C_p1,C_p,KK_1,KK_0,KK,E_1,k_1,k_2
PARAMETER(K_0=0.188)
PARAMETER(m=1.06,n=1.79,A_1=2.6e11,A_2=1.19e3,
1 E_1=1.24e4-273.15,E_2=5.7e3-273.15)
C
CALL GETVRM('TEMP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,MATLAYO,LACCFLA)
FIELD(1)=ARRAY(1)
STATEV(1)=FIELD(1)
IF (KINC.EQ.1) THEN
FIELD(2)=1E-4
FIELD(3)=0.0
ELSE
END IF
STATEV(2)=FIELD(2)
STATEV(3)=FIELD(3)
C CALCULATE THE GLASS TRANSFORMING TEMPERATURE (unit:C)
T_g=0.44*STATEV(2)*178/(1.0-0.56*STATEV(2))-42.
C
C
C CALCULATE THE SPECIFIC HEAT CAPACITY (unit:J/g*C)
C_p0=1.8500+2.625*1.0e-3*STATEV(1)
IF(STATEV(1).LT.T_g) THEN
C_p1=1.3125+4.437*1.0e-3*STATEV(1)
ELSE
C_p1=1.8500+2.265*e-3*STATEV(1)
END IF
C_p=(1-STATEV(2))*C_p0+STATEV(2)*C_p1
C
C CALCULATE THE COEFFICIENT OF HEAT CONDUCTION (unit: W/m*C)
KK_1=(3555.529*e-4)-2.727*e-4*STATEV(1)
KK_0=0.188
KK=(1-STATEV(2))*KK_0+STATEV(2)*KK_1
C
C THE KINETIC MODEL FOR CURING REACTION
k_1=A_1*EXP(-E_1/STATEV(1))
k_2=A_2*EXP(-E_2/STATEV(1))
STATEV(3)=(k_1+k_2*STATEV(2)**m)*(1-STATEV(2))**n
STATEV(2)=STATEV(2)+STATEV(3)*DTIME
RETURN
END
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 DFDG(NTGRD,NTGRD),STATEV(NSTATV),DTEMDX(NTGRD),
2 TIME(2),PREDEF(1),DPRED(1),PROPS(NPROPS),COORDS(3)
C
Real T_g,C_p0,C_p1,C_p,KK_1,KK_0,KK,E_1,k_1,k_2
PARAMETER(K_0=0.188)
PARAMETER(m=1.06,n=1.79,A_1=2.6e11,A_2=1.19e3,
1 E_1=1.24e4-273.15,E_2=5.7e3-273.15)
C
C CALCULATE THE GLASS TRANSFORMING TEMPERATURE (unit:C)
T_g=0.44*STATEV(2)*178/(1.0-0.56*STATEV(2))-42.
C
C
C CALCULATE THE SPECIFIC HEAT CAPACITY (unit:J/g*C)
C_p0=1.8500+2.625*1.0e-3*STATEV(1)
IF(STATEV(1).LT.T_g) THEN
C_p1=1.3125+4.437*1.0e-3*STATEV(1)
ELSE
C_p1=1.8500+2.265*e-3*STATEV(1)
END IF
C_p=(1-STATEV(2))*C_p0+STATEV(2)*C_p1
C
C CALCULATE THE COEFFICIENT OF HEAT CONDUCTION (unit: W/m*C)
KK_1=(3555.529*e-4)-2.727*e-4*STATEV(1)
KK_0=0.188
KK=(1-STATEV(2))*KK_0+STATEV(2)*KK_1
C
C THE KINETIC MODEL FOR CURING REACTION
k_1=A_1*EXP(-E_1/STATEV(1))
k_2=A_2*EXP(-E_2/STATEV(1))
STATEV(3)=(k_1+k_2*STATEV(2)**m)*(1-STATEV(2))**n
STATEV(2)=STATEV(2)+STATEV(3)*DTIME
C
DUDT=C_p
DU = DUDT*DTEMP
U = U+DU
C
DO I=1, NTGRD
FLUX(I) = -KK_1*DTEMDX(I)
DFDG(I,I) = -KK_1
ENDDO
C
RETURN
END
I was trying to model the distribution of the temperature and degree of cure for a material. And as you can see from my codes,I used field(1) for the temperature and Fiedl(2) for the degree of cure,and each of them were stored in Statev(1) and Statev(2) respectively.But what confused me a lot is that the output for the SDV(2)--degree of cure, was always zero and didn't change with time.It seems like ABAQUS didn't call the subroutine at all. So can you help me check what's the problems with my subroutines? Thank you so much!!
Here is the codes:
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),
1 COORD(*)
Real T_g,C_p0,C_p1,C_p,KK_1,KK_0,KK,E_1,k_1,k_2
PARAMETER(K_0=0.188)
PARAMETER(m=1.06,n=1.79,A_1=2.6e11,A_2=1.19e3,
1 E_1=1.24e4-273.15,E_2=5.7e3-273.15)
C
CALL GETVRM('TEMP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,MATLAYO,LACCFLA)
FIELD(1)=ARRAY(1)
STATEV(1)=FIELD(1)
IF (KINC.EQ.1) THEN
FIELD(2)=1E-4
FIELD(3)=0.0
ELSE
END IF
STATEV(2)=FIELD(2)
STATEV(3)=FIELD(3)
C CALCULATE THE GLASS TRANSFORMING TEMPERATURE (unit:C)
T_g=0.44*STATEV(2)*178/(1.0-0.56*STATEV(2))-42.
C
C
C CALCULATE THE SPECIFIC HEAT CAPACITY (unit:J/g*C)
C_p0=1.8500+2.625*1.0e-3*STATEV(1)
IF(STATEV(1).LT.T_g) THEN
C_p1=1.3125+4.437*1.0e-3*STATEV(1)
ELSE
C_p1=1.8500+2.265*e-3*STATEV(1)
END IF
C_p=(1-STATEV(2))*C_p0+STATEV(2)*C_p1
C
C CALCULATE THE COEFFICIENT OF HEAT CONDUCTION (unit: W/m*C)
KK_1=(3555.529*e-4)-2.727*e-4*STATEV(1)
KK_0=0.188
KK=(1-STATEV(2))*KK_0+STATEV(2)*KK_1
C
C THE KINETIC MODEL FOR CURING REACTION
k_1=A_1*EXP(-E_1/STATEV(1))
k_2=A_2*EXP(-E_2/STATEV(1))
STATEV(3)=(k_1+k_2*STATEV(2)**m)*(1-STATEV(2))**n
STATEV(2)=STATEV(2)+STATEV(3)*DTIME
RETURN
END
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 DFDG(NTGRD,NTGRD),STATEV(NSTATV),DTEMDX(NTGRD),
2 TIME(2),PREDEF(1),DPRED(1),PROPS(NPROPS),COORDS(3)
C
Real T_g,C_p0,C_p1,C_p,KK_1,KK_0,KK,E_1,k_1,k_2
PARAMETER(K_0=0.188)
PARAMETER(m=1.06,n=1.79,A_1=2.6e11,A_2=1.19e3,
1 E_1=1.24e4-273.15,E_2=5.7e3-273.15)
C
C CALCULATE THE GLASS TRANSFORMING TEMPERATURE (unit:C)
T_g=0.44*STATEV(2)*178/(1.0-0.56*STATEV(2))-42.
C
C
C CALCULATE THE SPECIFIC HEAT CAPACITY (unit:J/g*C)
C_p0=1.8500+2.625*1.0e-3*STATEV(1)
IF(STATEV(1).LT.T_g) THEN
C_p1=1.3125+4.437*1.0e-3*STATEV(1)
ELSE
C_p1=1.8500+2.265*e-3*STATEV(1)
END IF
C_p=(1-STATEV(2))*C_p0+STATEV(2)*C_p1
C
C CALCULATE THE COEFFICIENT OF HEAT CONDUCTION (unit: W/m*C)
KK_1=(3555.529*e-4)-2.727*e-4*STATEV(1)
KK_0=0.188
KK=(1-STATEV(2))*KK_0+STATEV(2)*KK_1
C
C THE KINETIC MODEL FOR CURING REACTION
k_1=A_1*EXP(-E_1/STATEV(1))
k_2=A_2*EXP(-E_2/STATEV(1))
STATEV(3)=(k_1+k_2*STATEV(2)**m)*(1-STATEV(2))**n
STATEV(2)=STATEV(2)+STATEV(3)*DTIME
C
DUDT=C_p
DU = DUDT*DTEMP
U = U+DU
C
DO I=1, NTGRD
FLUX(I) = -KK_1*DTEMDX(I)
DFDG(I,I) = -KK_1
ENDDO
C
RETURN
END