33 1 NEL ,NUVAR ,TIME ,TIMESTEP,
35 4 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
36 5 PLAS ,DPLA ,EPSP ,UVAR ,
44#include "implicit_f.inc"
74 my_real TIME,TIMESTEP,UPARAM(*),
75 . SIGNXX(NEL),SIGNYY(NEL),SIGNZZ(NEL),
76 . signxy(nel),signyz(nel),signzx(nel),
77 . plas(nel),dpla(nel),epsp(nel)
86 . uvar(nel,nuvar), off(nel),dfmax(nel),tdele(nel)
90 INTEGER I,J,JJ,K,IR,IADBUF,NINDX,IFAIL
91 INTEGER,
DIMENSION(NEL) ::
95 . seq,inv2,eta,sigm,xi,epsf,
96 . devxx,devyy,devzz,bcoef,lode,dam,
97 . bfrac,gama,cfrac,deps0,
98 . plap,f1,f2,f3,afrac,nfrac
99 my_real :: df12, df23, df13
119 IF (off(i) < 0.1) off(i)=zero
120 IF (off(i) < one) off(i)=off(i)*four_over_5
122 IF (plas(i) > zero .and. off(i) == one)
THEN
125 plap = dpla(i)/timestep
127 sigm = (signxx(i)+signyy(i)+signzz(i))*third
128 devxx = signxx(i) - sigm
129 devyy = signyy(i) - sigm
130 devzz = signzz(i) - sigm
131 seq = sqrt(three_half*(devxx*devxx
134 . + two*(signxy(i)*signxy(i)
135 . +signyz(i)*signyz(i)
136 . +signzx(i)*signzx(i))))
139 inv2 = devxx * devyy * devzz
140 . + two*signxy(i)*signzx(i)*signyz(i)
141 . - devxx*signyz(i)**2 - devyy*signzx(i)**2
142 . - devzz*signxy(i)**2
144 IF (seq == zero)
THEN
150 xi = half*twenty7*inv2*xi
153 IF (xi < -one) xi =-one
154 IF (xi > one) xi = one
156 lode = one - two*acos(xi)/pi
158 f1 = two_third*cos((one -lode)*pi/six)
159 f2 = two_third*cos((three+lode)*pi/six)
160 f3 =-two_third*cos((one +lode)*pi/six)
162 bcoef = bfrac*(one+gama*log(plap/deps0))
164 IF (eta < -third)
THEN
167 df12 =
max(em20,f1-f2)
168 df23 =
max(em20,f2-f3)
169 df13 =
max(em20,f1-f3)
170 epsf = bcoef*(one+cfrac)**(one/nfrac)
171 . * ((half*(df12**afrac
173 . +df13**afrac))**(one/afrac)
174 . + cfrac*(two*eta+f1+f3))**(-one/nfrac
178 dam = uvar(i,2) + (plas(i) - uvar(i,1))/epsf
182 dfmax(i) =
min(one,
max(dfmax(i),dam ))
198 WRITE(iout, 1000) ngl(indx(j))
199 WRITE(istdo,1100) ngl(indx(j)),time
200#include "lockoff.inc"
205 1000
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10)
206 1100
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10,
207 .
' AT TIME :',1pe12.4)
subroutine fail_emc(nel, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, plas, dpla, epsp, uvar, off, dfmax, tdele)