Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations MintJulep on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Implementation of resin kinetic model using HETVAL and USDFLD in Abaqus

Status
Not open for further replies.

jreis

Mechanical
Jun 3, 2016
4
Dear all,

I need help to implement a resin kinetic model based on an equation of Arrhenius type to simulate the curing process, using Abaqus. The corresponding analytical model quantifies the dependency of the rate of the degree of cure dα/dt with the temperature T and the degree of cure α, as follows:
dα/dt = k * (e^(E/RT)) * (1-α)^n
where k is the pre-exponential constant, E is the activation energy, R is the universal gas constant and n is the order of reaction. All these variables are known, except α and dα/dt. The corresponding internal heat generation due to the resin exothermic cure reaction is given by the following expression:
Q = H * dα/dt
where H is the total heat of reaction.
The subroutine HETVAL works well on my model if I define a constant value for heat flux (variable FLUX(1), which corresponds to the heat generated), but what I need is to implement the equations above and I don't know how to do it because the first one depends constantly of two unknown variables - α and dα/dt. From my research I found that the degree of cure α can be updated using the USDFLD subroutine, but I don't know how to do it.

I would be grateful if anyone could help me.

Best regards,
João
 
Replies continue below

Recommended for you

Hi,João

Based on your problem,I think you can set the degree of cure and its rate as two field variables and save the two field varibales(Field()) into Statev().Both of that can be done in USDFLD subroutine.Next,in the HETVAL subroutine,you can make some variables dependent on degree of cure and its rate of change.Here is what I did for my problems:

SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,
3 LACCFLA)
C
INCLUDE 'ABA_PARAM.INC'
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(*)
C
CALL GETVRM('TEMP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,MATLAYO,LACCFLA) !get temperatue at each material point at the start of the increment
FIELD(1)=ARRAY(1)
STATEV(1)=FIELD(1)
IF (KINC.EQ.1) THEN
FIELD(2)=1E-4 (degree of cure)
FIELD(3)=0.0 (rate of change)
ELSE
END IF
STATEV(2)=FIELD(2)
STATEV(3)=FIELD(3)

C
RETURN
END

Best regards,
Ge
 
Many thanks. I solved my problem saving the variables into field() and statev() inside the USDFLD subroutine.

Now, I have other question: Is it possible to use the HETVAL subroutine in a explicit analysis? I test the subroutine in a standard/implicit analysis and works fine, but now I need to use it in a explicit analysis and it is not working. I get following error in the .log file:

End Compiling Single Precision Abaqus/Explicit User Subroutines
Begin Linking Single Precision Abaqus/Explicit User Subroutines
Creating library explicitU.lib and object explicitU.exp
uhetvalx.obj : error LNK2019: unresolved external symbol getvrm referenced in function usdfld
explicitU.dll : fatal error LNK1120: 1 unresolved externals
Abaqus Error: Problem during linking - Single Precision Abaqus/Explicit User Subroutines.
This error may be due to a mismatch in the Abaqus user subroutine arguments.
These arguments sometimes change from release to release, so user subroutines
used with a previous release of Abaqus may need to be adjusted.
Abaqus/Analysis exited with errors

Best regards,
João
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor