umat二次开发超弹性本构汇编.docx
- 文档编号:12161585
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:13
- 大小:17KB
umat二次开发超弹性本构汇编.docx
《umat二次开发超弹性本构汇编.docx》由会员分享,可在线阅读,更多相关《umat二次开发超弹性本构汇编.docx(13页珍藏版)》请在冰豆网上搜索。
umat二次开发超弹性本构汇编
APPENDIX
Neo-HookeanHyperelaticMaterialUserSubroutine
Thisprogramisbasedonthederivationofhyperelasticmaterialconstitutivemodelin
Section4.4.Astressandstrainrelationshipwasderivedfromtheneo-Hookeanhyperelasticmaterialconstitutivemodelthatisnormallyrepresentedasthestrainenergywithstraininvariants.
subroutinevumat(
CReadonly(unmodifiable)variables-
1nblock,ndir,nshr,nstatev,nfieldv,nprops,lanneal,
2stepTime,totalTime,dt,cmname,coordMp,charLength,
3props,density,strainInc,relSpinInc,
4tempOld,stretchOld,defgradOld,fieldOld,
5stressOld,stateOld,enerlnternOId,enerlnelasOld,
6tempNew,stretchNew,defgradNew,fieldNew,
CWriteonly(modifiable)variables-|
7stressNew,stateNew,enerlnternNew,enerlnelasNew)
C
include'vaba_param.inc'
C
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)
C
character*80cmname
C
if(cmname(1:
6).eq.'VUMAT0')then|
callVUMAT0(nblock,ndir,nshr,nstatev,nfieldv,nprops,lanneal,
2stepTime,totalTime,dt,cmname,coordMp,charLength,
3props,density,strainInc,relSpinInc,
4tempOld,stretchOld,defgradOld,fieldOld,
5stressOld,stateOld,enerlnternOId,enerlnelasOld,
6tempNew,stretchNew,defgradNew,fieldNew,
7stressNew,stateNew,enerlnternNew,enerlnelasNew)
elseif(cmname(1:
6).eq.'VUMAT1')thencallVUMAT1(nblock,ndir,nshr,nstatev,nfieldv,nprops,lanneal,
2stepTime,totalTime,dt,cmname,coordMp,charLength,
3props,density,strainInc,relSpinInc,
4tempOld,stretchOld,defgradOld,fieldOld,
5stressOld,stateOld,enerlnternOId,enerlnelasOld,
6tempNew,stretchNew,defgradNew,fieldNew,
7stressNew,stateNew,enerlnternNew,enerlnelasNew)
endif
end
C
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)
C
include'vaba_param.inc'
C
dimensioncoordMp(nblock,),charLength(nblock),props(nprops),
1density(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),
9defgradNew(nblock,ndir+nshr+nshr),
1fieldNew(nblock,nfieldv),
2stressNew(nblock,ndir+nshr),stateNew(nblock,nstatev),
3enerlnternNew(nblock),enerlnelasNew(nblock)
C
dimensiondevia(nblock,ndir+nshr),
1BBar(nblock,4),stretchNewBar(nblock,4),intv
(2)
C
character*80cmname
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
C
intv
(1)=ndir
intv
(2)=nshr
C
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
endif
C
C10=props
(1)
D1=props
(2)
CC10=1.11619E6D仁4.48E-8
C
ak=two/D1
amu=two*C10|
twomu=four*C10
alamda=(three*ak-twomu)/three
C
CifstepTimeequalszero,assumepureelasticmaterialanduseinitialelastic
modulus
C
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)
C
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)
C
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)
C
CCALCULATESTRESStensor
C
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)
C
CUpdatethespecificinternalenergy
C
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
C
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)
enddo
vonMises=0.
dok1=1,ndir
vonMises=vonMises+devia(k,k1)**2
enddo
dok1=ndir+1,ndir+nshr
vonMises=vonMises+2*devia(k,k1)**2
enddo
vonMises=sqrt(3./2*vonMises)
Cuse3/2willget2(int)!
C
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)
C
CFailureCriteria
C
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
enddo
endif
return
end
C
subroutinevumatl(
CReadonly-
*nblock,ndir,nshr,nstatev,nfieldv,nprops,lanneal,_|
*stepTime,totalTime,dt,cmname,coordMp,charLength,
*props,density,strainInc,relSpinInc,
*tempOld,stretchOld,defgradOld,fieldOld,
121
*stressOld,stateOld,enerlnternOId,enerlnelasOld,
*tempNew,stretchNew,defgradNew,fieldNew,
CWriteonly-
*stressNew,stateNew,enerlnternNew,enerlnelasNew)
C
include'vaba_param.inc'
dimensioncoordMp(nblock,*),charLength(nblock),props(nprops),
1density(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),
9defgradNew(nblock,ndir+nshr+nshr),
1fieldNew(nblock,nfieldv),
2stressNew(nblock,ndir+nshr),stateNew(nblock,nstatev),
3enerlnternNew(nblock),enerlnelasNew(nblock)
C
dimensiondevia(nblock,ndir+nshr),
1BBar(nblock,4),stretchNewBar(nblock,4),intv
(2)
C
character*80cmname
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
C
intv
(1)=ndir
intv
(2)=nshr
C
callxplbabqerr(1,'SubroutineVUMATisimplemented7/
*'onlyforplanestrainandaxisymmetriccases'//
*'(ndir=3andnshr=1)',0,zero,'')
callxplbabqerr(-2,'SubroutineVUMAThasbeencalled'//
*'withndir=%landnshr=%l',intv,zero,'')callxplbexit
endif
C
C10=
props(lH
D1=props
(2)
CC10=1.11619E6D仁4.48E-8
C
ak=two/D1
amu=two*C10
122
twomu=four*C10
alamda=(three*ak-twomu)/three
C
CifstepTimeequalszero,assumepureelasticmaterialanduseinitialelasticmodulus
C
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*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)
Cwrite(6,*)totalTime,k,defgradNew(k,1),stretchNew(k,1),
C1stressNew(k,2),stressNew(k,3),stressNew(k,4)
enddo
else
dok=1,nblock
C
CJACOBlANOFSTRETCHTENSOR(Uissymmetricandinlocalaxis)
C
det=stretchNew(k,3)*
1(stretchNew(k,1)*stretchNew(k,2)-stretchNew(k,4)**two)
stretchNewBar(k,1)=stretchNew(k,1)*scalestretchNewBar(k,2)=stretchNew(k,2)*scalestretchNe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- umat 二次开发 弹性 汇编
![提示](https://static.bdocx.com/images/bang_tan.gif)