- 积分
- 0
- 注册时间
- 2012-5-15
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2013-3-2 16:31:53
|
显示全部楼层
来自 重庆沙坪坝区
下面的代码中facyld的正常值应该为0或1,但是当以状态变量的形式查看该值时,发现其并不是0或1这两个数,求帮忙看一下是判断有问题还是其他的原因
subroutine vumat(
C Read only -
1 nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,
2 stepTime, totalTime, dt, cmname, coordMp, charLength,
3 props, density, strainInc, relSpinInc,
4 tempOld, stretchOld, defgradOld, fieldOld,
5 stressOld, stateOld, enerInternOld, enerInelasOld,
6 tempNew, stretchNew, defgradNew, fieldNew,
C Write only -
7 stressNew, stateNew, enerInternNew, enerInelasNew )
C
include 'vaba_param.inc'
C
dimension props(nprops), density(nblock),
1 coordMp(nblock,*),
2 charLength(*), strainInc(nblock,ndir+nshr),
3 relSpinInc(*), tempOld(nblock),
4 stretchOld(*), defgradOld(nblock, ndir+nshr),
5 fieldOld(nblock,nfieldv), stressOld(nblock,ndir+nshr),
6 stateOld(nblock,nstatev), enerInternOld(nblock),
7 enerInelasOld(nblock), tempNew(nblock),
8 stretchNew(*), defgradNew(nblock, ndir+nshr),
9 fieldNew(nblock,nfieldv),
1 stressNew(nblock,ndir+nshr), stateNew(nblock,nstatev),
2 enerInternNew(nblock), enerInelasNew(nblock)
C 实验中所使用本构方程为
C Stress=a*strain^b*strainrate^c*exp(-d*T-e*strain)
C 参数说明
C e=props(1) 杨氏模量
C xnu=props(2) 泊松比
C a=props(3)
C b=props(4)
C c=props(5)
C d=props(6)
C e=props(7)
C 状态变量
C STATE(*,1)=等效塑性应变
C STATE(*,2)=等效塑性应变速率
C STATE(*,3)=损伤变量
character*80 cmname
C
parameter(zero=0., one=1., two=2.,three=3.,nine=9.,
1 twothird=two/three,third=one/three,
2 half=.5,op5=1.5,PI=3.14)
C 输入材料参数
e=props(1)
xnu=props(2)
twomu=e/(one+xnu)
alamda=xnu*twomu/(one-two*xnu)
thremu=op5*twomu
a=props(3)
b=props(4)
c=props(5)
d=props(6)
e=props(7)
do 100 i=1, nblock
peeqOld=stateOld(i,1)
peeqrateOld=stateOld(i,2)
T=tempOld(i)
C 本构方程中参数的定义
trace=strainInc(i,1)+strainInc(i,2)+strainInc(i,3)
s11=stressOld(i,1)+twomu*strainInc(i,1)+alamda*trace
s22=stressOld(i,2)+twomu*strainInc(i,2)+alamda*trace
s33=stressOld(i,3)+twomu*strainInc(i,3)+alamda*trace
s12=stressOld(i,4)+twomu*strainInc(i,4)
s13=stressOld(i,5)+twomu*strainInc(i,5)
s23=stressOld(i,6)+twomu*strainInc(i,6)
smean=third*(s11+s22+s33)
ds1=s11-smean
ds2=s22-smean
ds3=s33-smean
ds4=s12
ds5=s13
ds6=s23
vmises = sqrt(op5*(ds1**2+ds2**2+ds3**2+two*(ds4**2+ds5**2+ds6**2
* )))
peeqOld=stateOld(i,1)
peeqrateOld=stateOld(i,2)
T=tempOld(i)
toler=1e-12
coef=a*exp(-d*T)*(peeqrateOld+toler)**c
yieldOld=coef*(peeqOld+toler)**b*exp(-e*peeqOld)
hard=coef*exp(-e*peeqOld)*(b*(peeqOld+toler)**(b-1)-
* (peeqOld+toler)**b*e)
sigdif = vmises-yieldOld
facyld = zero
if (sigdif .GT. zero) facyld = one
deqps=facyld*sigdif/(thremu+hard)
yieldNew=yieldOld+hard*deqps
factor=yieldNew/(yieldNew+thremu*deqps)
stressNew(i,1)=ds1*factor+smean
stressNew(i,2)=ds2*factor+smean
stressNew(i,3)=ds3*factor+smean
stressNew(i,4)=s12*factor
stressNew(i,5)=s13*factor
stressNew(i,6)=s23*factor
stateNew(i,1)=stateOld(i,1)+deqps
stateNew(i,2)=deqps/dt
stateNew(i,3)=facyld
100 continue
C
return
end
|
|