36 1 NEL ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,NPF ,
37 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,RHO ,
39 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
40 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
41 6 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
42 7 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
43 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
44 9 SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
45 A SOUNDSP,VISCMAX,UVAR ,OFF ,NGL ,IPT ,
46 B IPM ,MAT ,EPSP ,IPLA ,YLD ,PLA ,
51#include "implicit_f.inc"
101#include "param_c.inc"
102#include "parit_c.inc"
103#include "scr17_c.inc"
104#include "com01_c.inc"
105#include "com08_c.inc"
106#include "units_c.inc"
108 INTEGER NEL, NUPARAM, NUVAR,IPT,
109 . NGL(NEL),MAT(NEL),IPLA, IPM(NPROPMI,*)
111 . TIME,TIMESTEP,UPARAM(*),
112 . RHO(NEL),RHO0(NEL),VOLUME(NEL),EINT(NEL),
113 . EPSPXX(NEL),EPSPYY(NEL),EPSPZZ(NEL),
114 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
115 . DEPSXX(NEL),DEPSYY(NEL),DEPSZZ(NEL),
116 . DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
117 . EPSXX(NEL) ,EPSYY(NEL) ,EPSZZ(NEL) ,
118 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
119 . SIGOXX(NEL),SIGOYY(NEL),SIGOZZ(NEL),
120 . sigoxy(nel),sigoyz(nel),sigozx(nel),
126 . signxx(nel),signyy(nel),signzz(nel),
127 . signxy(nel),signyz(nel),signzx(nel),
128 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
129 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
130 . soundsp(nel),viscmax(nel),dpla(nel)
135 . uvar(nel,nuvar), off(nel), yld(nel),pla(nel)
139 INTEGER NPF(*), MFUNC, KFUNC(MFUNC)
141 . FINTER2, TF(*),FINTER
142 EXTERNAL FINTER2,FINTER
154 INTEGER I,J,IADBUFV,JJ(MVSIZ),NFUNC,
155 . NRATE,IPOS1(MVSIZ),IPOS2(MVSIZ),IAD1(MVSIZ),
156 . ILEN1(MVSIZ),IAD2(MVSIZ),ILEN2(MVSIZ),
157 . IFUNC(100),NFUNCV,PFUN,
158 . IPOSP(MVSIZ),IADP(MVSIZ),ILENP(MVSIZ),NFUNCM,NRATEM,
159 . IPFLAG,IPARAM,NPAR,IPOS3(MVSIZ),IPOS4(MVSIZ),IAD3(MVSIZ),
160 . ILEN3(MVSIZ),IAD4(MVSIZ),ILEN4(MVSIZ),J1, J2, J3, J4,
161 . NINDX,INDX(MVSIZ), NN,OPTE,IFUNCE,MX
163 . E(MVSIZ),NU,P,DAV,VM,R,FAC,EPST,EP1,EP2,EP3,EP4,EP5,EP6,
164 . E1,E2,E3,E4,E5,E6,C,CC,D,Y,YP,E42,E52,E62,EPST2,
165 . C1(MVSIZ),G(MVSIZ),G2(MVSIZ),G3(MVSIZ),
166 . epsmax,rate(mvsiz,4),yfac(mvsiz,4),
167 . y1(mvsiz),y2(mvsiz),h(mvsiz),dydx1(mvsiz),
168 . dydx2(mvsiz),fail(mvsiz),epsr1,
169 . epsr2,p0(mvsiz),pfac(mvsiz),escale(mvsiz),
170 . dfdp(mvsiz),einf,ce,dydxe(mvsiz),
171 . y11, y22, y33, y44,x,
172 . x1, x2, x3, x4,y3(mvsiz),y4(mvsiz),
173 . dydx3(mvsiz),dydx4(mvsiz),pscale(mvsiz)
181 ifunc(j)=ipm(10+j,mx)
190 nfuncm =
max(nfuncm,nfuncv)
193 ifunc(j)=ipm(10+j,mx)
196 pfun= ifunc(nfuncv-1)
203 iadbufv = ipm(7,mx)-1
204 nu = uparam(iadbufv+6)
206 nrate = nint(uparam(iadbufv+1))
207 nratem =
max(nratem,nrate)
209 epsmax=uparam(iadbufv+6+2*nrate+1)
211 IF(tf(npf(ifunc(1)+1)-1)==zero)
THEN
212 epsmax=tf(npf(ifunc(1)+1)-2)
218 opte = uparam(iadbufv+2*nrate+18)
219 einf = uparam(iadbufv+2*nrate+19)
220 ce = uparam(iadbufv+2*nrate+20)
221 epsr1 =uparam(iadbufv+6+2*nrate+2)
222 IF(epsr1==zero)epsr1= ep30
223 epsr2 =uparam(iadbufv+6+2*nrate+3)
224 IF(epsr2==zero)epsr2= twoep30
226 e(i) = uparam(iadbufv+2)
227 g(i) = uparam(iadbufv+5)
230 c1(i) = e(i)/three/(one - two*nu)
231 pscale(i)= uparam(iadbufv+16+2*nrate)
237 IF(pla(i) > zero)
THEN
238 ifunce = uparam(iadbufv+2*nrate+17)
239 escale(i) = finter(kfunc(ifunce),pla(i),npf,tf,dydxe(i))
240 e(i) = escale(i)* e(i)
241 g(i) = half*e(i)/(one+nu)
244 c1(i) =e(i)/three/(one - two*nu)
245 soundsp(i) = sqrt((c1(i) + four_over_3*g(i))/rho0(i))
248 ELSEIF ( ce /= zero)
THEN
250 IF(pla(i) > zero)
THEN
251 e(i) = e(i)-(e(i)-einf)*(one-exp(-ce*pla(i)))
252 g(i) = half*e(i)/(one+nu)
255 c1(i) =e(i)/three/(one - two*nu)
256 soundsp(i) = sqrt((c1(i) + four_over_3*g(i))/rho0(i))
264 IF (pfun>0) ipflag = ipflag + 1
277 IF (pfun>0) uvar(i,nrate+5)=0
286 p0(i) = -(sigoxx(i)+sigoyy(i)+sigozz(i))*third
287 dav = (depsxx(i)+depsyy(i)+depszz(i))*third
288 signxx(i)=sigoxx(i)+p0(i)+g2(i)*(depsxx(i)-dav)
289 signyy(i)=sigoyy(i)+p0(i)+g2(i)*(depsyy(i)-dav)
290 signzz(i)=sigozz(i)+p0(i)+g2(i)*(depszz(i)-dav)
291 signxy(i)=sigoxy(i)+g(i) *depsxy(i)
292 signyz(i)=sigoyz(i)+g(i) *depsyz(i)
293 signzx(i)=sigozx(i)+g(i) *depszx(i)
294 pscale(i) = pscale(i)*p0(i)
295 soundsp(i) = sqrt((c1(i)+four_over_3*g(i))/rho0(i))
305 dav = (epsxx(i)+epsyy(i)+epszz(i))*third
321 c = - e1*e1 - e2*e2 - e3*e3 - e42 - e52 - e62
322 d = - e1*e2*e3 + e1*e52 + e2*e62 + e3*e42
327 y = (epst2 + c)* epst + d
331 y = (epst2 + c)* epst + d
335 y = (epst2 + c)* epst + d
337 IF(yp/=zero)epst = epst - y/yp
339 y = (epst2 + c)* epst + d
341 IF(yp/=zero)epst = epst - y/yp
343 y = (epst2 + c)* epst + d
345 IF(yp/=zero)epst = epst - y/yp
351 fail(i) =
max(zero,
min(one,
352 . (epsr2-epst)/(epsr2-epsr1) ))
363 IF(epsp(i)>=uparam(iadbufv+6+j)) jj(i) = j
371 IF(epsp(i)>=uparam(iadbufv+6+j)) jj(i) = j
383 ELSEIF(jj(i)==(nrate-1))
THEN
394 rate(i,1)=uparam(iadbufv + 6 + j1 )
395 rate(i,2)=uparam(iadbufv + 6 + j2 )
396 rate(i,3)=uparam(iadbufv + 6 + j3 )
397 rate(i,4)=uparam(iadbufv + 6 + j4 )
398 yfac(i,1)=uparam(iadbufv+6+nrate + j1 )
399 yfac(i,2)=uparam(iadbufv+6+nrate + j2 )
400 yfac(i,3)=uparam(iadbufv+6+nrate + j3 )
401 yfac(i,4)=uparam(iadbufv+6+nrate + j4 )
412 ELSEIF(jj(i)==(nrate-1))
THEN
423 ipos1(i) = nint(uvar(i,j1+2))
424 iad1(i) = npf(ifunc(j1)) / 2 + 1
425 ilen1(i) = npf(ifunc(j1)+1) / 2 - iad1(i) - ipos1(i)
426 ipos2(i) = nint(uvar(i,j2+2))
427 iad2(i) = npf(ifunc(j2)) / 2 + 1
428 ilen2(i) = npf(ifunc(j2)+1) / 2 - iad2(i) - ipos2(i)
429 ipos3(i) = nint(uvar(i,j3+4))
430 iad3(i) = npf(ifunc(j3)) / 2 + 1
431 ilen3(i) = npf(ifunc(j3)+1) / 2 - iad3(i) - ipos3(i)
432 ipos4(i) = nint(uvar(i,j4+4))
433 iad4(i) = npf(ifunc(j4)) / 2 + 1
434 ilen4(i) = npf(ifunc(j4)+1) / 2 - iad4(i) - ipos4(i)
437 CALL vinter(tf,iad1,ipos1,ilen1,nel,pla,dydx1,y1)
438 CALL vinter(tf,iad2,ipos2,ilen2,nel,pla,dydx2,y2)
439 CALL vinter(tf,iad3,ipos3,ilen3,nel,pla,dydx3,y3)
440 CALL vinter(tf,iad4,ipos4,ilen4,nel,pla,dydx4,y4)
445 IF (ipflag==nel.AND.(iparit==0))
THEN
449 iposp(i) = nint(uvar(i,nrate+5))
450 iadp(i) = npf(pfun) / 2 + 1
451 ilenp(i) = npf(pfun+1) / 2 - iadp(i) - iposp(i)
453 CALL vinter2(tf,iadp,iposp,ilenp,nel,pscale,dfdp,pfac)
455 uvar(i,nrate+5) = iposp(i)
457 ELSEIF (ipflag>0)
THEN
460 iposp(i) = nint(uvar(i,nrate+5))
461 iadp(i) = npf(pfun) / 2 + 1
462 ilenp(i) = npf(pfun+1) / 2 - iadp(i)-iposp(i)
463 pfac(i) = finter2(tf ,iadp(i),iposp(i),ilenp(i),
465 uvar(i,nrate+5) = iposp(i)
476 dydx1(i)= dydx1(i)*yfac(i,1)
477 dydx2(i) = dydx2(i)*yfac(i,2)
478 fac = (epsp(i) - rate(i,1))/(rate(i,2) - rate(i,1))
479 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
480 ELSEIF(jj(i)==(nrate-1))
THEN
485 dydx3(i) = dydx3(i)*yfac(i,3)
486 dydx4(i) = dydx4(i)*yfac(i,4)
487 fac = (epsp(i) - rate(i,3))/(rate(i,4) - rate(i,3))
488 h(i) = fail(i)*(dydx3(i) + fac*(dydx4(i)-dydx3(i)))
494 dydx2(i) = dydx2(i)*yfac(i,2)
495 dydx3(i) = dydx3(i)*yfac(i,3)
496 fac = (epsp(i) - rate(i,2))/(rate(i,3) - rate(i,2))
497 h(i) = fail(i)*(dydx2(i) + fac*(dydx3(i)-dydx2(i)))
505 y11 = y1(i)*yfac(i,1)
506 y22 = y2(i)*yfac(i,2)
507 y33 = y3(i)*yfac(i,3)
508 y44 = y4(i)*yfac(i,4)
509 CALL inter_rat(x1,x2,x3,x4,y11,y22,y33,y44,
520 yld(i) = yld(i) *
max(zero, pfac(i))
521 uvar(i,j1+2) = ipos1(i)
522 uvar(i,j2+2) = ipos2(i)
523 uvar(i,j3+2) = ipos3(i)
524 uvar(i,j4+2) = ipos4(i)
531 vm =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)
532 1 +signxy(i)**2+signyz(i)**2+signzx(i)**2
534 r =
min(one,yld(i)/
max(vm,em20))
537 signxx(i)=signxx(i)*r-p
538 signyy(i)=signyy(i)*r-p
539 signzz(i)=signzz(i)*r-p
540 signxy(i)=signxy(i)*r
541 signyz(i)=signyz(i)*r
542 signzx(i)=signzx(i)*r
543 pla(i)=pla(i) + (one - r)*vm/
max(g3(i)+h(i),em20)
545 dpla(i) = (one - r)*vm/
max(g3(i)+h(i),em20)
549 vm =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)
550 1 +signxy(i)**2+signyz(i)**2+signzx(i)**2
552 r =
min(one,yld(i)/
max(vm,em20))
555 signxx(i)=signxx(i)*r-p
556 signyy(i)=signyy(i)*r-p
557 signzz(i)=signzz(i)*r-p
558 signxy(i)=signxy(i)*r
559 signyz(i)=signyz(i)*r
560 signzx(i)=signzx(i)*r
561 pla(i)=pla(i) + (one - r)*vm/
max(g3(i),em20)
563 dpla(i) = (one - r)*vm/
max(g3(i),em20)
567 vm =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)
568 1 +signxy(i)**2+signyz(i)**2+signzx(i)**2
570 r =
min(one,yld(i)/
max(vm,em20))
572 dpla(i) = (one - r)*vm/
max(g3(i)+h(i),em20)
574 yld(i)=
max(yld(i)+dpla(i)*h(i),zero)
575 r =
min(one,yld(i)/
max(vm,em20))
579 signxx(i)=signxx(i)*r-p
580 signyy(i)=signyy(i)*r-p
581 signzz(i)=signzz(i)*r-p
582 signxy(i)=signxy(i)*r
583 signyz(i)=signyz(i)*r
584 signzx(i)=signzx(i)*r
585 pla(i)=pla(i) + dpla(i)
593 IF(off(i)<em01) off(i)=zero
594 IF(off(i)<one) off(i)=off(i)*four_over_5
601 IF(pla(i)>epsmax.AND.off(i)==one)
THEN
610 WRITE(iout, 1000) ngl(indx(j))
611 WRITE(istdo,1100) ngl(indx(j)),tt
612#include "lockoff.inc"
616 1000
FORMAT(1x,
'RUPTURE OF SOLID ELEMENT NUMBER ',i10)
617 1100
FORMAT(1x,
'RUPTURE OF SOLID ELEMENT NUMBER ',i10,
618 .
' AT TIME :',g11.4)
subroutine sigeps60(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)