34 1 NEL ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,NPF ,
35 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,RHO ,
37 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
38 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
39 6 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
40 7 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
41 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
42 9 SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
43 A SOUNDSP,VISCMAX,UVAR ,OFF ,NGL ,IPT ,
44 B IPM ,MAT ,EPSP ,IPLA ,YLD ,PLA ,
50#include "implicit_f.inc"
100#include "param_c.inc"
101#include "parit_c.inc"
102#include "scr17_c.inc"
103#include "com01_c.inc"
104#include "com08_c.inc"
105#include "units_c.inc"
107 INTEGER NEL, NUPARAM, NUVAR,IPT,IPLA,
108 . NGL(NEL),MAT(NEL),IPM(NPROPMI,*)
110 . TIME,TIMESTEP,UPARAM(*),
111 . RHO(NEL),RHO0(NEL),VOLUME(NEL),EINT(NEL),
112 . EPSPXX(NEL),EPSPYY(),EPSPZZ(NEL),
113 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
114 . DEPSXX(NEL),DEPSYY(),DEPSZZ(NEL),
115 . DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
116 . EPSXX(NEL) ,EPSYY(NEL) ,(NEL) ,
117 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
118 . SIGOXX(NEL),SIGOYY(NEL),SIGOZZ(NEL),
119 . sigoxy(nel),sigoyz(nel),sigozx(nel),
125 . signxx(nel),signyy(nel),signzz(nel),
126 . signxy(nel),signyz(nel),signzx(nel),
127 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
128 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
129 . soundsp(nel),viscmax(nel),dpla(nel)
134 . uvar(nel,nuvar), off(nel), yld(nel),pla(nel)
138 INTEGER NPF(*), MFUNC, KFUNC(MFUNC)
152 INTEGER I,J,IADBUFV,J1,J2,JJ(MVSIZ),NFUNC,
153 . nrate,ipos1(mvsiz),ipos2(mvsiz),iad1(mvsiz),
154 . ilen1(mvsiz),iad2(mvsiz),ilen2(mvsiz),
155 . ifunc(100),nfuncv,pfun,
156 . iposp(mvsiz),iadp(mvsiz),ilenp(mvsiz),nfuncm,nratem,
157 . ipflag,iparam,npar,
158 . nindx,indx(mvsiz),mx
160 . e,nu,p,dav,vm,r,fac,epst,ep1,ep2,ep3,ep4,ep5,ep6,
161 . e1,e2,e3,e4,e5,e6,c,cc,d,y,yp,e42,e52,e62,epst2,
163 . epsmax,rate(mvsiz,2),yfac(mvsiz,2),
164 . y1(mvsiz),y2(mvsiz),h(mvsiz),dydx1(mvsiz),
165 . dydx2(mvsiz),fail(mvsiz),epsr1,
166 . epsr2,p0(mvsiz),pfac(mvsiz),
177 ifunc(j)=ipm(10+j,mx)
183 nfuncm =
max(nfuncm,nfuncv)
187 ifunc(j)=ipm(10+j,mx)
195 iadbufv = ipm(7,mx)-1
196 e = uparam(iadbufv+2)
197 g = uparam(iadbufv+5)
200 nu = uparam(iadbufv+6)
201 c1 = e/three/(one - two*nu)
203 nrate = nint(uparam(iadbufv+1))
204 nratem =
max(nratem,nrate)
205 epsmax=uparam(iadbufv+6+2*nrate+1)
207 IF(tf(npf(ifunc(1)+1)-1)==zero)
THEN
208 epsmax=tf(npf(ifunc(1)+1)-2)
213 epsr1 =uparam(iadbufv+6+2*nrate+2)
214 IF(epsr1==zero)epsr1=ep30
215 epsr2 =uparam(iadbufv+6+2*nrate+3)
216 IF(epsr2==zero)epsr2=twoep30
220 iparam = 15 + 2*nrate
224 IF (npar>=iparam)
THEN
226 ifunc(j)=ipm(10+j,mx)
227 pfun=nint(uparam(iadbufv+iparam))
228 IF (pfun>0) ipflag = ipflag + 1
240 IF (pfun>0) uvar(i,nrate+5)=zero
249 p0(i) = -(sigoxx(i)+sigoyy(i)+sigozz(i))*third
250 dav = (depsxx(i)+depsyy(i)+depszz(i))*third
251 signxx(i)=sigoxx(i)+p0(i)+g2*(depsxx(i)-dav)
252 signyy(i)=sigoyy(i)+p0(i)+g2*(depsyy(i)-dav)
253 signzz(i)=sigozz(i)+p0(i)+g2*(depszz(i)-dav)
254 signxy(i)=sigoxy(i)+g *depsxy(i)
255 signyz(i)=sigoyz(i)+g *depsyz(i)
256 signzx(i)=sigozx(i)+g *depszx(i)
258 soundsp(i) = sqrt((c1+four*g/three)/rho0(i))
278 dav = (epsxx(i)+epsyy(i)+epszz(i)) * third
294 c = - e1*e1 - e2*e2 - e3*e3 - e42 - e52 - e62
295 d = - e1*e2*e3 + e1*e52 + e2*e62 + e3*e42
300 y = (epst2 + c)* epst + d
304 y = (epst2 + c)* epst + d
306 IF(yp/=zero)epst = epst - y/yp
308 y = (epst2 + c)* epst + d
310 IF(yp/=zero)epst = epst - y/yp
312 y = (epst2 + c)* epst + d
314 IF(yp/=zero)epst = epst - y/yp
316 y = (epst2 + c)* epst + d
318 IF(yp/=zero)epst = epst - y/yp
324 fail(i) =
max(zero,
min(one,
325 . (epsr2-epst)/(epsr2-epsr1) ))
340 IF(epsp(i)>=uparam(iadbufv+6+j)) jj(i) = j
347 IF(epsp(i)>=uparam(iadbufv+6+j)) jj(i) = j
354 rate(i,1)=uparam(iadbufv+6+jj(i))
355 rate(i,2)=uparam(iadbufv+6+jj(i)+1)
356 yfac(i,1)=uparam(iadbufv+6+nrate+jj(i))
357 yfac(i,2)=uparam(iadbufv+6+nrate+jj(i)+1)
365 iad1(i) = npf(ifunc(j1)) / 2 + 1
366 ilen1(i) = npf(ifunc(j1)+1) / 2 - iad1(i) - ipos1(i)
368 ipos2(i) = nint(uvar(i,j2+2))
369 iad2(i) = npf(ifunc(j2)) / 2 + 1
370 ilen2(i) = npf(ifunc(j2)+1) / 2 - iad2(i) - ipos2(i)
373 CALL vinter(tf,iad1,ipos1,ilen1,nel,pla,dydx1,y1)
374 CALL vinter(tf,iad2,ipos2,ilen2,nel,pla,dydx2,y2)
377 IF (ipflag==nel.AND.(iparit==0))
THEN
382 iadp(i) = npf(ifunc(pfun)) / 2 + 1
383 ilenp(i) = npf(ifunc(pfun)+1) / 2 - iadp(i) - iposp(i)
385 CALL vinter2(tf,iadp,iposp,ilenp,nel,p0,dfdp,pfac)
387 uvar(i,nrate+5) = iposp(i)
389 ELSEIF (ipflag>0)
THEN
392 iposp(i) = nint(uvar(i,nrate+5))
393 iadp(i) = npf(ifunc(pfun)) / 2 + 1
394 ilenp(i) = npf(ifunc(pfun)+1) / 2
395 . - iadp(i) - iposp(i)
398 uvar(i,nrate+5) = iposp(i)
405 y1(i)=y1(i)*yfac(i,1)
406 y2(i)=y2(i)*yfac(i,2)
407 fac = (epsp(i) - rate(i,1))/(rate(i,2) - rate(i,1))
408 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
409 dydx1(i)=dydx1(i)*yfac(i,1)
410 dydx2(i)=dydx2(i)*yfac(i,2)
411 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
412 h(i) = h(i) *
max(zero, pfac(i))
413 yld(i) = yld(i) *
max(zero, pfac(i))
417 uvar(i,j1+2) = ipos1(i)
418 uvar(i,j2+2) = ipos2(i)
425 vm =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)
426 1 +signxy(i)**2+signyz(i)**2+signzx(i)**2
428 r =
min(one,yld(i)/
max(vm,em20))
431 signxx(i)=signxx(i)*r-p
432 signyy(i)=signyy(i)*r-p
433 signzz(i)=signzz(i)*r-p
434 signxy(i)=signxy(i)*r
435 signyz(i)=signyz(i)*r
436 signzx(i)=signzx(i)*r
437 pla(i)=pla(i) + (one - r)*vm/
max(g3+h(i),em20)
439 dpla(i) = (one - r)*vm/
max(g3+h(i),em20)
443 vm =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)
444 1 +signxy(i)**2+signyz(i)**2+signzx(i)**2
446 r =
min(one,yld(i)/
max(vm,em20))
449 signxx(i)=signxx(i)*r-p
450 signyy(i)=signyy(i)*r-p
451 signzz(i)=signzz(i)*r-p
452 signxy(i)=signxy(i)*r
453 signyz(i)=signyz(i)*r
454 signzx(i)=signzx(i)*r
455 pla(i)=pla(i) + (one-r)*vm/
max(g3,em20)
457 dpla(i) = (one-r)*vm/
max(g3,em20)
461 vm =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)
462 1 +signxy(i)**2+signyz(i)**2+signzx(i)**2
464 r =
min(one,yld(i)/
max(vm,em20))
466 dpla(i)=(one - r)*vm/
max(g3+h(i),em20)
468 yld(i)=
max(yld(i)+dpla(i)*h(i),zero)
469 r =
min(one,yld(i)/
max(vm,em20))
473 signxx(i)=signxx(i)*r-p
474 signyy(i)=signyy(i)*r-p
475 signzz(i)=signzz(i)*r-p
476 signxy(i)=signxy(i)*r
477 signyz(i)=signyz(i)*r
478 signzx(i)=signzx(i)*r
479 pla(i)=pla(i) + dpla(i)
485 IF(off(i)<em01) off(i)=zero
486 IF(off(i)<one) off(i)=off(i)*four_over_5
491 IF(pla(i)>epsmax.AND.off(i)==one)
THEN
500 WRITE(iout, 1000) ngl(indx(j))
501 WRITE(istdo,1100) ngl(indx(j)),tt
502#include "lockoff.inc"
506 1000
FORMAT(1x,
'RUPTURE OF SOLID ELEMENT NUMBER ',i10)
507 1100
FORMAT(1x,
'RUPTURE OF SOLID ELEMENT NUMBER ',i10,
508 .
' AT TIME :',g11.4)
subroutine sigeps56(nel, nuparam, nuvar, mfunc, kfunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, ngl, ipt, ipm, mat, epsp, ipla, yld, pla, dpla, amu)