- 积分
- 0
- 注册时间
- 2008-7-1
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 nuaa10526 于 2015-5-12 20:41 编辑
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,jmtyp,matlayo,laccfla)
c redefine field variables at a material point.
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(*),coord(*) !jmatyp(*),
c this subroutine must call utility routine GETVRM to access material point data.
c Get temperatures from previous increment
call getvrm('TEMP',array,jarray,flgray,jrcd,
$ jmac, jmtyp, matlayo, laccflg)
temp = array(1)
c field(1) : la valeur du degré de cuisson dans chaque point d'integration de l'incrément. 0.0001 est la valeur initiale définie.
c kinc: Increment number
if(kinc.eq.1)then
statev(1)=1E-4
else
field(1)=statev(1)
endif
c
return
end
SUBROUTINE HETVAL(CMNAME,TEMP,TIME,DTIME,STATEV,FLUX,
&PREDEF, DPRED)
C DEFINE THE HEAT FLUX DUE TO INTERNAL HEAT GENERATION (THE CHEMICAL REACTION)
INCLUDE'ABA_PARAM.INC'
C
c real*8 STATEV
CHARACTER*80 CMNAME
DIMENSION TEMP(2),STATEV(3),PREDEF(1),TIME(2),FLUX(2),DPRED(1)
C TEMP(1): CURRENT TEMPERATURE
IF(TEMP(1).LT.358.)THEN
STATEV(2) = 0.0
ELSE
STATEV(2)=1.5E10*EXP(-11396.4/TEMP(1))*((1-STATEV(1))**1.877)
&*(STATEV(1)**0.45)
C STATEV(1): THE VALUE OF DEGRE OF CURE PASSED FROM THE SUBROUTINE USDFLD,
C STATEV(2): da/dt (a=degre of cure)
STATEV(1) = STATEV(1)+ STATEV(2)* DTIME
END IF
C FLUX(1) HEAT FLUX J/TIME/VOLUME, AT THIS MATERIAL CALCULATION POINT.
FLUX(1) = 242971740* STATEV(2)
C
RETURN
END
程序如上所示,计算结果STATEV(2)一直为0,若去掉 &*(STATEV(1)**0.45)则可以计算,麻烦纠正一下,谢谢!
|
|