30 1 NEL ,NUPARAM ,NUVAR ,
31 2 TIME ,TIMESTEP ,UPARAM ,RHO0 ,RHO ,
32 3 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
33 4 SIG0XX ,SIG0YY ,SIG0ZZ ,SIG0XY ,SIG0YZ ,SIG0ZX ,
34 5 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
35 6 SOUNDSP ,UVAR ,OFF ,NGL ,YLD ,PLA ,
36 7 DPLA ,ETSE ,SEQ ,DMG ,INLOC ,DPLANL )
40#include
"implicit_f.inc"
52 INTEGER NEL,NUPARAM,NUVAR,IPT,NGL(NEL),INLOC
54 . TIME,TIMESTEP,UPARAM(NUPARAM),
56 . DEPSXX(NEL),DEPSYY(NEL),(NEL),
57 . DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
58 . SIG0XX(NEL),SIG0YY(NEL),SIG0ZZ(NEL),
59 . sig0xy(nel),sig0yz(nel),sig0zx(nel)
64 . signxx(nel),signyy(nel),signzz(nel),
65 . signxy(nel),signyz(nel),signzx(nel),
66 . soundsp(nel),yld(nel),etse(nel),dpla(nel)
71 . uvar(nel,nuvar),off(nel),pla(nel),seq(nel),
72 . dmg(nel),dplanl(nel)
76 INTEGER I,II,J,,INDX(MVSIZ),NITER,ITER
78 . e,nu,g,g2,a1,a2,bulk,lamhook,
83 . cc(mvsiz),dam(mvsiz),beta(mvsiz),
85 . f1,f2,f3,epsf,det,svm,theta,cos3theta,eta,
86 . sighl(mvsiz),h(mvsiz),dav,
87 . phi(mvsiz),normxx,normyy,normzz,
88 . normxy,normzx,normyz,dpxx(mvsiz),dpyy(mvsiz),
89 . dpzz(mvsiz),dpxy(mvsiz),dpzx(mvsiz),dpyz(mvsiz),
90 . sig_dfdsig,dfdsig2,dphi_dlam(mvsiz),dpla_dlam(mvsiz),
124 IF (time == zero)
THEN
134 IF (off(i) < one) off(i) = four_over_5*off(i)
135 IF (off(i) < em01) off(i) = zero
155 IF (off(i) == one)
THEN
156 IF ((dam(i) <= dc) .AND. (dam(i) >= one))
THEN
157 beta(i) = one/(
max(dc - one,em20))
158 beta(i) = (dc - dam(i))*beta(i)
159 beta(i) = beta(i)**mexp
163 cc(i) = pla(i) + eps0
164 yld(i) = beta(i)*sigy*exp(nexpo*log(cc(i)))
165 yld(i) =
max(yld(i), em10)
169 ! - computation of trial values
174 dav = (depsxx(i) + depsyy(i) + depszz(i)) * lamhook
175 signxx(i) = sig0xx(i) + depsxx(i)*g2 + dav
176 signyy(i) = sig0yy(i) + depsyy(i)*g2 + dav
177 signzz(i) = sig0zz(i) + depszz(i)*g2 + dav
178 signxy(i) = sig0xy(i) + depsxy(i)*g
179 signyz(i) = sig0yz(i) + depsyz(i)*g
180 signzx(i) = sig0zx(i) + depszx(i)*g
183 sighl(i) = ff*(signyy(i) - signzz(i))**2 + gg*(signzz(i) - signxx(i))**2 +
184 . hh*(signxx(i) - signyy(i))**2 + two*ll*signyz(i)**2 +
185 . two*mm*signzx(i)**2 + two*nn*signxy(i)**2
186 sighl(i) = sqrt(
max(zero,sighl(i)))
193 phi(1:nel) = sighl(1:nel) - yld(1:nel)
198 IF ((phi(i)>zero).AND.(off(i) == one))
THEN
213#include "vectorize.inc"
231 normxx = (gg*(signxx(i)-signzz(i)) + hh*(signxx(i)-signyy(i)))/(
max(sighl(i),em20))
232 normyy = (ff*(signyy(i)-signzz(i)) + hh*(signyy(i)-signxx(i)))/(
max(sighl(i),em20))
233 normzz = (ff*(signzz(i)-signyy(i)) + gg*(signzz(i)-signxx(i)))/(
max(sighl(i),em20))
234 normxy = two*nn*signxy(i)/(
max(sighl(i),em20))
235 normyz = two*ll*signyz(i)/(
max(sighl(i),em20))
236 normzx = two*mm*signzx(i)/(
max(sighl(i),em20))
243 dfdsig2 = normxx * normxx * g2
244 . + normyy * normyy * g2
245 . + normzz * normzz * g2
246 . + normxy * normxy * g
247 . + normyz * normyz * g
248 . + normzx * normzx * g
255 h(i) = beta(i)*nexpo*sigy*exp((nexpo-1)*log(cc(i)))
259 sig_dfdsig = signxx(i) * normxx
260 . + signyy(i) * normyy
261 . + signzz(i) * normzz
262 . + signxy(i) * normxy
263 . + signyz(i) * normyz
264 . + signzx(i) * normzx
265 dpla_dlam(i) = sig_dfdsig /
max(yld(i),em20)
271 dphi_dlam(i) = - dfdsig2 - h(i)*dpla_dlam(i)
272 dphi_dlam(i) = sign(
max(abs(dphi_dlam(i)),em20) ,dphi_dlam(i))
275 dlam = -phi(i)/dphi_dlam(i)
278 dpxx(i) = dlam * normxx
279 dpyy(i) = dlam * normyy
280 dpzz(i) = dlam * normzz
281 dpxy(i) = dlam * normxy
282 dpyz(i) = dlam * normyz
283 dpzx(i) = dlam * normzx
286 signxx(i) = signxx(i) - dpxx(i)*g2
287 signyy(i) = signyy(i) - dpyy(i)*g2
288 signzz(i) = signzz(i) - dpzz(i)*g2
289 signxy(i) = signxy(i) - dpxy(i)*g
290 signyz(i) = signyz(i) - dpyz(i)*g
291 signzx(i) = signzx(i) - dpzx(i)*g
294 ddep = dlam*dpla_dlam(i)
295 dpla(i) =
max(zero, dpla(i) + ddep)
296 pla(i) =
max(pla(i) + ddep,zero)
299 cc(i) = pla(i) + eps0
300 yld(i) = beta(i)*sigy*exp(nexpo*log(cc(i)))
301 yld(i) =
max(yld(i),em10)
304 sighl(i) = ff*(signyy(i) - signzz(i))**2 + gg*(signzz(i) - signxx(i))**2 +
305 . hh*(signxx(i) - signyy(i))**2 + two*ll*signyz(i)**2 +
306 . two*mm*signzx(i)**2 + two*nn*signxy(i)**2
307 sighl(i) = sqrt(
max(sighl(i),zero))
310 phi(i) = sighl(i) - yld(i)
325 IF (off(i) == one)
THEN
327 p = third*(signxx(i) + signyy(i) + signzz(i))
332 svm = half*(sd11**2 + sd22**2 + sd33**2) +
333 + signxy(i)**2 + signzx(i)**2 + signyz(i)**2
334 svm = sqrt(
max(three*svm,zero)
336 det = sd11*sd22*sd33 + two*signxy(i)*signzx(i)*signyz(i)
337 . - sd11*signyz(i)**2-sd33*signxy(i)**2 - sd22*signzx(i)**2
339 eta = p/
max(svm,em20)
340 IF (eta < -one) eta = -one
341 IF (eta > one ) eta = one
343 cos3theta = half*twenty7*det/
max(em20,svm**3)
344 IF (cos3theta < -one) cos3theta = -one
345 IF (cos3theta > one) cos3theta = one
346 theta = one - two*acos(cos3theta)/pi
349 f1 = cos(theta*pi/six)
350 f2 = sin(theta*pi/six)
351 f3 = c3 + (sqrt(three)/(two - sqrt(three)))*(one - c3)*(one/
max(f1,em20) - one)
354 epsf = (sigy/
max(c2,em20))*f3*(f1*sqrt(third*(one + c1**2)) + c1*(eta + f2*third))
359 dam(i) = dam(i) +
max(dplanl(i),zero)/
max(epsf,em20)
361 dam(i) = dam(i) + dpla(i)/
max(epsf,em20)
363 IF (dam(i) >= dc)
THEN
378 soundsp(i) = sqrt((bulk + four_over_3*g)/rho0(i))
380 IF (dpla(i) > zero)
THEN
381 etse(i) = h(i) / (h(i) + e)
391 WRITE(iout, 1000) ngl(indx(j))
392 WRITE(istdo,1100) ngl(indx(j)),tt
393#include "lockoff.inc"
397 1000
FORMAT(1x,'rupture of solid element number
',I10)
398 1100 FORMAT(1X,'rupture of solid element number
',I10,
399 . ' at time :
',G11.4)
subroutine sigeps72(nel, nuparam, nuvar, time, timestep, uparam, rho0, rho, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sig0xx, sig0yy, sig0zz, sig0xy, sig0yz, sig0zx, signxx, signyy, signzz, signxy, signyz, signzx, soundsp, uvar, off, ngl, yld, pla, dpla, etse, seq, dmg, inloc, dplanl)