Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

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

Thermal Transient Analysis

Status
Not open for further replies.

Gyawali

Civil/Environmental
Sep 23, 2021
8
I want to solve the thermal transient analysis in Abaqus. The conductivity for my problem depends upon the temperature and time. Therefore, I have to use the Abaqus user subroutine. The temperature varies from 0 to 1. I have tried to run the analysis using the following USDFLD subroutine code which I have seen in the reply of thread799-281565 and modified for my equation. The problem is that whenever I change the equation, I still get the same result. What could be the problem? Can anyone help me, please?

For example If I use thermcond = D*exp(6*temper)*exp(currenttime*temp), instead of thermcond = D*exp(6*temper)/exp(currenttime*temp), I get the same result.
In the material section, I have assigned
Thermal conductivity, temperature, Field1 (which I have assigned equal to Thermal conductivity)
0.007346, 0, 0.007346
2.9634, 1, 2.9634



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,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(*),COORD(*)

C enter constant-coefficient
PARAMETER (D = 0.007346)

C Use the current time:
currenttime = TIME(2)
C
C Get the temperature at the current integration point:
CALL GETVRM('TEMP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,MATLAYO,LACCFLA)
C use the current temperature
temp = ARRAY(1)
C
C Determine the thermal conductivity:
thermcond = D*exp(6*temper)/exp(currenttime*temp)
C
C Set the field variable
FIELD(1) = thermcond
C
C Set the state variable
STATEV(1) = thermcond
C If error, write comment to .DAT file:
IF(JRCD.NE.0)THEN
WRITE(6,*) 'REQUEST ERROR IN USDFLD FOR ELEMENT NUMBER ',
1 NOEL,'INTEGRATION POINT NUMBER ',NPT
ENDIF

RETURN
END


Thank you in advance for your kind help.
 
Replies continue below

Recommended for you

Are there any warnings in the output files ? Have you tried testing it on a very simple model (like single element test) first ?
 
There is no warning in the output files. I haven't tried on a simple model. The simulation is for the shell section and the element is DS3. Does this make any difference?
 
In your formula:
thermcond = D*exp(6*temper)/exp(currenttime*temp)

What is temper? Where is it defined?

Use WRITE() to write thermcond into a file and check the values.
 
Actually, the equation is
thermcond = D*exp(6*temp)/exp(currenttime*temp)
May be it was typo-error.
Actually, I did a silly mistake. I have missed assigning the dependent variable as 1 due to which the subroutine was not called and I got the same result even when I change the equation.
Thank you all for your valuable time and suggestions.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor