29 1 NEL ,NUPARAM ,NUVAR ,
30 2 TIME ,TIMESTEP ,UPARAM ,RHO0 ,THKLY ,
31 3 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
32 4 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
33 5 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
34 6 SOUNDSP ,THK ,PLA ,UVAR ,OFF ,
35 7 ETSE ,GS ,YLD ,HARDM ,SEQ ,
36 8 DPLA ,DMG ,INLOC ,DPLANL ,LOFF )
40#include "implicit_f.inc"
53 INTEGER NEL,NUPARAM,NUVAR,INLOC
55 . TIME,TIMESTEP(NEL),UPARAM(NUPARAM),
56 . RHO0(NEL),THKLY(NEL),PLA(NEL),
60),SIGOYZ(NEL),SIGOZX(),
61 . gs(*),hardm(nel),seq(nel),dmg(nel),
63 my_real,
DIMENSION(NEL),
INTENT(IN) :: loff
68 . signxx(nel),signyy(nel),
69 . signxy(nel),signyz(nel),signzx(nel),
70 . soundsp(nel),etse(nel),dpla(nel)
75 . uvar(nel,nuvar), off(nel),thk(nel),yld(nel)
79 INTEGER I,II,J,NMAX,NINDX,INDEX(MVSIZ)
86 . eta,cos3theta,theta,f1,f2,f3,cc(mvsiz),
87 . beta(mvsiz),dam(mvsiz),dezz(mvsiz),
88 . epsf,p,sighl(mvsiz),h(mvsiz),svm(mvsiz),
89 . normxx,normyy,normxy,dpxx(mvsiz),dpyy(mvsiz),
90 . dpzz(mvsiz),dpxy(mvsiz),deelzz(mvsiz),
91 . dpla_dlam(mvsiz),dlam,sig_dfdsig,dfdsig2,
92 . phi(mvsiz),dphi_dlam(mvsiz),ddep
121 IF (time == zero)
THEN
131 IF (off(i) < one) off(i) = four_over_5*off(i)
132 IF (off(i) < em01) off(i) = zero
150 IF (off(i) == one)
THEN
151 IF ((dam(i) <= dc) .AND. (dam(i) >= one))
THEN
152 beta(i) = one/(
max(dc - one,em20))
153 beta(i) = (dc - dam(i))*beta(i)
154 beta(i) = beta(i)**mexp
158 cc(i) = pla(i) + eps0
159 yld(i) = beta(i)*sigy*exp(nexp*log(cc(i)))
160 yld(i) =
max(yld(i), em10)
169 signxx(i) = sigoxx(i) + a11*depsxx(i)+a12*depsyy(i)
170 signyy(i) = sigoyy(i) + a12*depsxx(i)+a11*depsyy(i)
171 signxy(i) = sigoxy(i) + g*depsxy(i)
172 signyz(i) = sigoyz(i) + gs(i)*depsyz(i)
173 signzx(i) = sigozx(i) + gs(i)*depszx(i)
176 sighl(i) = (ff+hh)*signyy(i)**2 + (gg+hh)*signxx(i)**2
177 . - two*hh*signxx(i)*signyy(i) + two*nn*signxy(i)**2
178 sighl(i) = sqrt(
max(zero,sighl(i)))
185 phi(1:nel) = sighl(1:nel) - yld(1:nel)
190 IF ((phi(i)>zero).AND.(off(i) == one))
THEN
205#include "vectorize.inc"
222 normxx = (gg*signxx(i) + hh*(signxx(i)-signyy(i)))/(
max(sighl(i),em20))
223 normyy = (ff*signyy(i) + hh*(signyy(i)-signxx(i)))/(
max(sighl(i),em20))
224 normxy = two*nn*signxy(i)/(
max(sighl
231 dfdsig2 = normxx * (a11*normxx + a12*normyy)
232 . + normyy * (a11*normyy + a12*normxx)
233 . + normxy * normxy * g
240 h(i) = beta(i)*nexp*sigy*exp((nexp-1)*log(cc(i)))
244 sig_dfdsig = signxx(i) * normxx
245 . + signyy(i) * normyy
246 . + signxy(i) * normxy
247 dpla_dlam(i) = sig_dfdsig /
max(yld(i),em20)
253 dphi_dlam(i) = - dfdsig2 - h(i)*dpla_dlam(i)
254 dphi_dlam(i) = sign(
max(abs(dphi_dlam(i)),em20) ,dphi_dlam(i))
257 dlam = -phi(i)/dphi_dlam(i)
260 dpxx(i) = dlam * normxx
261 dpyy(i) = dlam * normyy
262 dpxy(i) = dlam * normxy
265 signxx(i) = signxx(i) - (a11*dpxx(i) + a12*dpyy(i))
266 signyy(i) = signyy(i) - (a11*dpyy(i) + a12*dpxx(i))
267 signxy(i) = signxy(i) - dpxy(i)*g
270 ddep = dlam*dpla_dlam(i)
271 dpla(i) =
max(zero, dpla(i) + ddep)
272 pla(i) =
max(pla(i) + ddep,zero)
275 cc(i) = pla(i) + eps0
276 yld(i) = beta(i)*sigy*exp(nexp*log(cc(i)))
277 yld(i) =
max(yld(i),em10)
280 sighl(i) = (ff+hh)*signyy(i)**2 + (gg+hh)*signxx(i)**2
281 . - two*hh*signxx(i)*signyy(i) + two*nn*signxy(i)**2
282 sighl(i) = sqrt(
max(zero,sighl(i)))
285 phi(i) = sighl(i) - yld(i)
288 dpzz(i) = dpzz(i) - (dpxx(i)+dpyy(i))
301 IF (off(i) == one)
THEN
303 p = third*(signxx(i) + signyy(i))
305 svm(i) = signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i) +
307 svm(i) = sqrt(svm(i))
310 eta = p/
max(svm(i),em20)
311 IF (eta < -two_third) eta = -two_third
312 IF (eta > two_third) eta = two_third
314 cos3theta = -half*twenty7*eta*(eta**2 - third)
315 IF (cos3theta < -one ) cos3theta = -one
316 IF (cos3theta > one ) cos3theta = one
317 theta = one - two*acos(cos3theta)/pi
320 f1 = cos(theta*pi/six)
321 f2 = sin(theta*pi/six)
322 f3 = c3 + (sqrt(three)/(two - sqrt(three)))*(one - c3)*(one/
max(f1,em20) - one)
325 epsf = (sigy/
max(c2,em20))*f3*(f1*sqrt(third*(one + c1**2)) + c1*(eta + f2*third))
326 epsf =
max(epsf,em20)**(-one/nexp)
330 dam(i) = dam(i) +
max(dplanl(i),zero)/
max(em20,epsf)
332 dam(i) = dam(i) + dpla(i)/
max(em20,epsf)
334 IF (dam(i) >= dc)
THEN
347 soundsp(i) = sqrt(a11/rho0(i))
349 IF (dpla(i) > zero)
THEN
350 etse(i) = h(i) / (h(i) + e)
357 deelzz(i) = -nu*(signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/e
359 IF (loff(i) == one)
THEN
360 normxx = (gg*signxx(i) + hh*(signxx(i)-signyy(i)))/(
max(sighl(i),em20))
361 normyy = (ff*signyy(i) + hh*(signyy(i)-signxx(i)))/(
max(sighl(i),em20))
362 dezz(i) = deelzz(i) -
max(dplanl(i),zero)*(normxx+normyy)
365 dezz(i) = deelzz(i) + dpzz(i)
367 thk(i) = thk(i) + dezz(i)*thkly(i)*off(i)
subroutine sigeps72c(nel, nuparam, nuvar, time, timestep, uparam, rho0, thkly, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, soundsp, thk, pla, uvar, off, etse, gs, yld, hardm, seq, dpla, dmg, inloc, dplanl, loff)