umat二次开发超弹性本构汇编Word下载.docx
《umat二次开发超弹性本构汇编Word下载.docx》由会员分享,可在线阅读,更多相关《umat二次开发超弹性本构汇编Word下载.docx(13页珍藏版)》请在冰点文库上搜索。
dimensionprops(nprops),density(nblock),coordMp(nblock,*),
1charLength(nblock),strainlnc(nblock,ndir+nshr),
2relSpinlnc(nblock,nshr),tempOld(nblock),
3stretchOld(nblock,ndir+nshr),
4defgradOld(nblock,ndir+nshr+nshr),
5fieldOld(nblock,nfieldv),stressOld(nblock,ndir+nshr),
6stateOld(nblock,nstatev),enerlnternOld(nblock),
7enerlnelasOld(nblock),tempNew(nblock),
8stretchNew(nblock,ndir+nshr),
8defgradNew(nblock,ndir+nshr+nshr),
9fieldNew(nblock,nfieldv),
1stressNew(nblock,ndir+nshr),stateNew(nblock,nstatev),
2enerlnternNew(nblock),enerlnelasNew(nblock)
character*80cmname
if(cmname(1:
6).eq.'
VUMAT0'
)then|
callVUMAT0(nblock,ndir,nshr,nstatev,nfieldv,nprops,lanneal,
7stressNew,stateNew,enerlnternNew,enerlnelasNew)
elseif(cmname(1:
VUMAT1'
)thencallVUMAT1(nblock,ndir,nshr,nstatev,nfieldv,nprops,lanneal,
endif
end
subroutinevumatO(
CReadonly-
*nblock,ndir,nshr,nstatev,nfieldv,nprops,lanneal,
*stepTime,totalTime,dt,cmname,coordMp,charLength,
*props,density,strainInc,relSpinInc,
*tempOld,stretchOld,defgradOld,fieldOld,
*stressOld,stateOld,enerlnternOId,enerlnelasOld,
*tempNew,stretchNew,defgradNew,fieldNew,
CWriteonly-
*stressNew,stateNew,enerlnternNew,enerlnelasNew)
dimensioncoordMp(nblock,),charLength(nblock),props(nprops),
1density(nblock),strainlnc(nblock,ndir+nshr),
8stretchNew(nblock,ndir+nshr),
9defgradNew(nblock,ndir+nshr+nshr),
1fieldNew(nblock,nfieldv),
2stressNew(nblock,ndir+nshr),stateNew(nblock,nstatev),
3enerlnternNew(nblock),enerlnelasNew(nblock)
dimensiondevia(nblock,ndir+nshr),
1BBar(nblock,4),stretchNewBar(nblock,4),intv
(2)
parameter(zero=0.D00,one=1.D00,two=2.D00,three=3.D00,realC10,D1,ak,twomu,amu,alamda,hydro,vonMises,maxShear,
1midStrain,maxPrincipalStrain
118
intv
(1)=ndir
intv
(2)=nshr
if(ndir.ne.3.or.nshr.ne.1)then
callxplbabqerr(1,'
SubroutineVUMATisimplemented7/
*'
onlyforplanestrainandaxisymmetriccases'
//
(ndir=3andnshr=1)'
0,zero,'
'
)
callxplbabqerr(-2,'
SubroutineVUMAThasbeencalled'
withndir=%landnshr=%l'
intv,zero,'
callxplbexit
C10=props
(1)
D1=props
(2)
CC10=1.11619E6D仁4.48E-8
ak=two/D1
amu=two*C10|
twomu=four*C10
alamda=(three*ak-twomu)/three
CifstepTimeequalszero,assumepureelasticmaterialanduseinitialelastic
modulus
if(stepTime.EQ.zero)then
dok=1,nblock
trace1=strainlnc(k,1)+strainInc(k,2)+strainlnc(k,3)
stressNew(k,1)=stressOld(k,1)|
*+twomu*strainlnc(k,1)+alamda*trace1
stressNew(k,2)=
=stressOld(k,2)
*+twomu*strainInc(k,2)+alamda*trace1stressNew(k,3)=stressOld(k,3)
*+twomu*strainInc(k,3)+alamda*trace1stressNew(k,4)=stressOld(k,4)I
*+twomu*strainlnc(k,4)
Cwrite(6,*)totalTime,k,defgradNew(k,1),stretchNew(k,1),
C1stressNew(k,2),stressNew(k,3),stressNew(k,4)enddoelse
CJACOBIANOFSTRETCHTENSOR(Uissymmetricandinlocalaxis)
det=stretchNew(k,3)*
119
1(stretchNew(k,1)*stretchNew(k,2)-stretchNew(k,4)**two)scale=det**(-ONE/THREE)
stretchNewBar(k,1)=stretchNew(k,1)*scalestretchNewBar(k,2)=stretchNew(k,2)*scalestretchNewBar(k,3)=stretchNew(k,3)*scalestretchNewBar(k,4)=stretchNew(k,4)*scaleC
CCALCULATELEFTCAUCHY-GREENTENSOR(Bissymmetric)
BBar(k,1)=stretchNewBar(k,1)**two+stretchNewBar(k,4)**two
BBar(k,2)=stretchNewBar(k,2)**two+stretchNewBar(k,4)**two
BBar(k,3)=stretchNewBar(k,3)**two
BBar(k,4)=stretchNewBar(k,1)*stretchNewBar(k,4)+
1stretchNewBar(k,2)*stretchNewBar(k,4)
CCALCULATESTRESStensor
TRBBar=BBar(k,1)+BBar(k,2)+BBar(k,3)EG=two*C10/det
PR=two/D1*(det-one)stressNew(k,1)=EG*(BBar(k,1)-TRBBar/Three)+PRstressNew(k,2)=EG*(BBar(k,2)-TRBBar/Three)+PRstressNew(k,3)=EG*(BBar(k,3)-TRBBar/Three)+PRstressNew(k,4)=EG*BBar(k,4)
CUpdatethespecificinternalenergy
stressPower=half*(
1(stressOld(k,1)+stressNew(k,1))*strainInc(k,1)+
2(stressOld(k,2)+stressNew(k,2))*strainInc(k,2)+
3(stressOld(k,3)+stressNew(k,3))*strainInc(k,3))+
stateNew(k,1)=stateOld(k,1)+strainInc(k,1)
stateNew(k,2)=stateOld(k,2)+strainInc(k,2)
stateNew(k,3)=stateOld(k,3)+strainlnc(k,3)|
stateNew(k,4)=stateOld(k,4)+strainlnc(k,4)C
CCalculatevonMises
hydro=(stressNew(k,1)+stressNew(k,2)+
120
1stressNew(k,3))/3.
dok1=1,ndir
devia(k,k1)=stressNew(k,k1)-hydro
enddo
dok1=ndir+1,ndir+nshr
devia(k,k1)=stressNew(k,k1)
vonMises=0.
vonMises=vonMises+devia(k,k1)**2
vonMises=vonMises+2*devia(k,k1)**2
vonMises=sqrt(3./2*vonMises)
Cuse3/2willget2(int)!
Cwrite(6,*)totalTime,defgradNew(k,4),stretchNew(k,4)
C1,defgradNew(k,3),defgradNew(k,4),defgradNew(k,5)
C,det,TRBBar
C1,stressNew(k,1),stressNew(k,2),stressNew(k,3),stressNew(k,4)
CFailureCriteria
midStrain=stateNew(k,1)+stateNew(k,2)
maxShear=sqrt((stateNew(k,1)-midStrain)**2.+
1stateNew(k,4)**2.)
if(midStrain.GE.0.)then
maxPrincipalStrain=midStrain+maxShearelse
maxPrincipalStrain=maxShear-midStrainendif
if(vonMises.GE.10.8565e6)then
return
subroutinevumatl(
*nblock,ndir,nshr,nstatev,nfieldv,nprops,lanneal,_|
121
dimensioncoordMp(nblock,*),charLength(nblock),props(nprops),
1BBar(nblock,4),stretchNewBar(nblock,4),intv
(2)
parameter(zero=0.D00,one=1.D00,two=2.D00,three=3.D00,
*four=4.D00,half=0.5D0)
realC10,D1,ak,twomu,amu,alamda,hydro,vonMises
*'
SubroutineVUMAThasbeencalled'
)callxplbexit
C10=
props(lH
amu=two*C10
122
CifstepTimeequalszero,assumepureelasticmaterialanduseinitialelasticmodulus
if(stepTime.EQ.zero)then
stressNew(k,1)=stressOld(k,1)
*+twomu*strainlnc(k,1)+alamda*tracel
stressNew(k,2)=stressOld(k,2)
*+twomu*strainInc(k,2)+alamda*tracel
stressNew(k,3)=
=stressOld(k,3)
*+twomu*strainInc(k,3)+alamda*tracelstressNew(k,4)=stressOld(k,4)
*+twomu*strainlnc(k,4)
C1stressNew(k,2),stressNew(k,3),stressNew(k,4)
else
CJACOBlANOFSTRETCHTENSOR(Uissymmetricandinlocalaxis)
1(stretchNew(k,1)*stretchNew(k,2)-stretchNew(k,4)**two)
stretchNewBar(k,1)=stretchNew(k,1)*scalestretchNewBar(k,2)=stretchNew(k,2)*scalestretchNe