Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

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

Calling SDV Calculated in a Previous Increment

Status
Not open for further replies.

LeeAPower

Mechanical
Nov 25, 2014
3
Folks,

I am working on HETVAL subroutine to calculate degree of cure/decomposition based on temperature history. Below code seperately calculate STATEV(1) during heating (DTEMP0 > 0) and cooling (DTEMP0 < 0). My goal is to permantenly update STATEV(1) based upon the highest temperature. Thus, if temperature decreases, STATEV(1) should not decrease. Am I missing something in my subroutine? I need your professional comments. Thank you.

J. Lee

-------------------------------------------------------------------------
SUBROUTINE HETVAL(CMNAME,TEMP,TIME,DTIME,STATEV,FLUX,PREDEF,DPRED)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
REAL(8) TEMP(2),STATEV(*),PREDEF(*),TIME(2),FLUX(2),DPRED(*),
1 DECOMP,TEMP0,DTEMP0,

C STATEV(1) = DEGREE OF LINEAR THERMAL DECOMPOISTION
C DEFINED IN THE RANGE OF 350~600C
DECOMP = STATEV(1)

C SAVE TEMPEATURE TO TEMP0
TEMP0 = TEMP(1)

C SAVE TEMPEATURE INCREASE TO DTEMP0
DTEMP0 = TEMP(2)

C RESIN BEGINS TO DECOMPOSE FROM 350-600C DURING HEATING
C FLUX(1) = HEAT FLUX
C FLUX(2) = RATE OF CHANGE OF HEAT FLUX PER TEMPERATURE

IF (DTEMP0 > 0.0) THEN
C UNDAMAGED RANGE
IF (TEMP0 < 350.0) THEN
STATEV(1) = 0.0
FLUX(1) = 0.0
FLUX(2) = 0.0

C PARTIALLY DAMAGED RANGE
ELSEIF (TEMP0 >= 350.0 .and. TEMP0 <= 600.0) THEN
STATEV(1) = (TEMP0-350.0)/250.0
FLUX(1) = 0.0
FLUX(2) = 0.0

C FULLY DAMAGED RANGE
ELSEIF (TEMP0 > 600.0) THEN
STATEV(1) = 1.0
FLUX(1) = 0.0
FLUX(2) = 0.0
END IF

C DURING COOLING
C DEGREE OF THE MATRIX DECOMPOSITION REMAINS CONSTANT
ELSEIF (DTEMP0 <= 0.0) THEN
STATEV(1) = DECOMP
FLUX(1) = 0.0
FLUX(2) = 0.0
END IF

C LIMIT UPPER BOUNDARY
C DEGREE OF THE MATRIX DECOMPOSITION NEVER EXCEED 1
IF (STATEV(1) > 1.0 ) THEN
STATEV(1) = 1.0
END IF

RETURN
END
 
 http://files.engineering.com/getfile.aspx?folder=cbdcb135-843e-4cf0-85a6-fd8788da53f1&file=SUB_MOD_Example.f
Status
Not open for further replies.

Part and Inventory Search

Sponsor