Hill VUMat 子程序(
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,
3 stressOld, stateOld, enerInternOld, enerInelasOld,
6 tempNew, stretchNew, defgradNew, fieldNew,
C Write only -
5 stressNew, stateNew, enerInternNew, enerInelasNew )
C
include 'vaba_param.inc'
C
C All arrays dimensioned by (*) are not used in this algorithm
dimension props(nprops), density(nblock),
1 coordMp(nblock,*),
2 charLength(*), strainInc(nblock,ndir+nshr),
3 relSpinInc(*), tempOld(*),
4 stretchOld(*), defgradOld(*),
5 fieldOld(nblock,nfieldv), stressOld(nblock,ndir+nshr),
6 stateOld(nblock,nstatev), enerInternOld(nblock),
7 enerInelasOld(nblock), tempNew(*),
8 stretchNew(*), defgradNew(*), fieldNew(*),
9 stressNew(nblock,ndir+nshr), stateNew(nblock,nstatev),
1 enerInternNew(nblock), enerInelasNew(nblock)
C
character*80 cmname
C
parameter ( zero = 0.d0, one = 1.d0, two = 2.d0,
* third = 1.d0 / 3.d0, half = 0.5d0, op5 = 1.5d0)
C
C For 3D cases using
C bilinear isotropic hardening.
C
C The state variable is stored as:
C
C STATE(*,1) = equivalent plastic strain
C
C User needs to input
C props(1) Young’s modulus
C props(2) Poisson’s ratio
C props(3..) syield and hardening data
C calls vuhard for curve of yield stress vs. plastic strain
C
e = props(1)
xnu = props(2)
twomu = e / ( one + xnu )
alamda = xnu * twomu / ( one - two * xnu )
thremu = op5 * twomu
nvalue = nprops/2-1
C 定义常数
r0=0.4910
r45=0.5256
r90=0.5613
F=r0/(r90*(r0+1))
G=1/(r0+1)
H=r0/(r0+1)
N=1/2*(r0+r90)*(1+2*r45)/(r90*(r0+1))
L=N
M=N
TOL=0.1