32 2 TF ,TIME ,UPARAM ,RHO0 ,
34 4 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
35 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
36 5 DEPBXX ,DEPBYY ,DEPBXY ,
37 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
38 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
39 7 MOMOXX ,MOMOYY ,MOMOXY ,
40 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
41 8 MOMNXX ,MOMNYY ,MOMNXY ,
42 9 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
43 A SOUNDSP,VISCMAX,THK ,PLA ,UVAR ,
44 B OFF ,NGL ,IPM ,MAT ,ETSE ,
45 C GS ,YLD ,EPSP ,ISRATE ,IPLA)
55#include "implicit_f.inc"
67 INTEGER NEL, NUVAR,IPLA, NGL(NEL), MAT(NEL),,
71 . AREA(NEL),RHO0(NEL),EINT(,2),
73 . EPSPXX(NEL),EPSPYY(NEL),
74 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
75 . DEPSXX(NEL),DEPSYY(NEL),DEPSXY(NEL),
76 . DEPBXX(NEL),DEPBYY(NEL),DEPBXY(NEL),
77 . DEPSYZ(NEL),DEPSZX(NEL),
78 . EPSXX(NEL) ,EPSYY(NEL) ,
79 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
80 . SIGOXX(NEL),SIGOYY(NEL),SIGOXY(NEL),
81 . MOMOXX(NEL),MOMOYY(NEL),MOMOXY(NEL),
82 . sigoyz(nel),sigozx(nel),gs(*),epsp(nel)
87 . signxx(nel),signyy(nel),signxy(nel),
88 . momnxx(nel),momnyy(nel),momnxy(nel),
89 . signyz(nel),signzx(nel),
90 . sigvxx(nel),sigvyy(nel),
91 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
92 . soundsp(nel),viscmax(nel),etse(nel)
97 . uvar(nel,nuvar), off(nel),thk(nel),yld(nel)
114 INTEGER I,J,NRATE,J1,J2,N,NINDX,NMAX,NFUNC,
115 . IAD1(MVSIZ),IPOS1(MVSIZ),ILEN1(MVSIZ),
116 . iad2(mvsiz),ipos2(mvsiz),ilen2(mvsiz),
117 . jj(mvsiz),index(mvsiz),ifunc(100),nfuncv,
118 . nfuncm, nratem, iadbufv,mx
120 . e,nu,a,b,fac,dezz,s1(mvsiz),s2(mvsiz),
121 . dpla,epst,a1,a2,g,g3,
122 . dydx1(mvsiz),dydx2(mvsiz),rate(mvsiz,2),svm(mvsiz),
123 . y1(mvsiz),y2(mvsiz),dr,
124 . yfac(mvsiz,2),nnu1,nu1(mvsiz),
125 . nu2(mvsiz),nu3(mvsiz),dpla_i,dpla_j(mvsiz),h(mvsiz),
126 . fail(mvsiz),epsmax,epsr1,epsr2,
127 . err,f,df,yld_i,tol,
128 . c1,cp1,cq1,cp2,cq2,sm1(mvsiz),sm2(mvsiz),sm3,fn,fm,fnm,
129 . pn2,qn2,pm2,qm2,dfn,dfm,dfnm,da,db,a_i,b_i,
130 . dfnp,dfnq,dfmp,dfmq,dfnmp,dfnmq,xp,xq,xpg,xqg,
131 . gm(mvsiz),cm(mvsiz),p_m,qm,pnm1,pnm2,qtier(mvsiz),
132 . cnm(mvsiz),am(mvsiz),bm(mvsiz),anm(mvsiz),bnm(mvsiz),
133 . num1(mvsiz),num2(mvsiz),an(mvsiz),bn(mvsiz),
134 . nvm(mvsiz),mvm(mvsiz),nmvm(mvsiz),pn,qn,sn1,sn2,s,
135 . qnm1,qnm2,fnp,fnq,fmp,fmq,fnmp,fnmq,s3,aa,bb,m1,m2,
136 . lfn(mvsiz),qfn(mvsiz),qfnm(mvsiz),rr(mvsiz),
137 . d1,d2,dwt,dwe,dwp,aaa,bbb,ccc,fs,ms,
138 . am1(mvsiz),am2(mvsiz),gama(mvsiz),gama2(mvsiz)
149 ifunc(j)=ipm(10+j,mx)
151 iadbufv = ipm(7,mx)-1
152 e = uparam(iadbufv+2)
153 a1 = uparam(iadbufv+3)
154 a2 = uparam(iadbufv+4)
155 g = uparam(iadbufv+5)
157 nu = uparam(iadbufv+6)
158 nrate = nint(uparam(iadbufv+1))
159 epsmax=uparam(iadbufv+6+2*nrate+1)
162 IF(tf(npf(ifunc(1)+1)-1)==zero)
THEN
163 epsmax=tf(npf(ifunc(1)+1)-2)
169 nnu1 = nu / (one - nu)
170 epsr1 =uparam(iadbufv+6+2*nrate+2)
171 IF(epsr1==zero)epsr1=ep30
172 epsr2 =uparam(iadbufv+6+2*nrate+3)
173 IF(epsr2==zero)epsr2=twoep30
176 c1=thk0(i)*one_over_12
185 nfuncm =
max(nfuncm,nfuncv)
188 ifunc(j)=ipm(10+j,mx)
193 iadbufv = ipm(7,mx)-1
194 e = uparam(iadbufv+2)
195 a1 = uparam(iadbufv+3)
196 a2 = uparam(iadbufv+4)
197 g = uparam(iadbufv+5)
199 nu = uparam(iadbufv+6)
200 nrate = nint(uparam(iadbufv+1))
201 nratem =
max(nratem,nrate)
202 epsmax=uparam(iadbufv+6+2*nrate+1)
204 IF(tf(npf(ifunc(1)+1)-1)==zero)
THEN
205 epsmax=tf(npf(ifunc(1)+1)-2)
211 nnu1 = nu / (one - nu)
212 epsr1 =uparam(iadbufv+6+2*nrate+2)
213 IF(epsr1==zero)epsr1=ep30
214 epsr2 =uparam(iadbufv+6+2*nrate+3)
215 IF(epsr2==zero)epsr2=twoep30
217 c1=thk0(i)*one_over_12
238 signxx(i)=sigoxx(i)+a1*depsxx(i)+a2*depsyy(i)
239 signyy(i)=sigoyy(i)+a2*depsxx(i)+a1*depsyy(i)
240 signxy(i)=sigoxy(i)+g *depsxy(i)
241 momnxx(i)=momoxx(i)+am1(i)*depbxx(i)+am2(i)*depbyy(i)
242 momnyy(i)=momoyy(i)+am2(i)*depbxx(i)+am1(i)*depbyy(i)
243 momnxy(i)=momoxy(i)+gm(i) *depbxy(i)
244 signyz(i)=sigoyz(i)+gs(i) *depsyz(i)
245 signzx(i)=sigozx(i)+gs(i) *depszx(i)
247 soundsp(i) = sqrt(a1/rho0(i))
253 IF (israte == 0) epsp(i) = half*( abs(epspxx(i)+epspyy(i))
254 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
255 . + epspxy(i)*epspxy(i) ) )
259 epst = half*( epsxx(i)+epsyy(i)
260 . + sqrt( (epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
261 . + epsxy(i)*epsxy(i) ) )
262 fail(i) =
max(zero,
min(one,(epsr2-epst)/(epsr2-epsr1)))
274 IF(epsp(i)>=uparam(iadbufv+6+j)) jj(i) = j
281 IF(epsp(i)>=uparam(iadbufv+6+j)) jj(i) = j
288 rate(i,1)=uparam(iadbufv+6+jj(i))
289 rate(i,2)=uparam(iadbufv+6
290 yfac(i,1)=uparam(iadbufv+6+nrate+jj(i))
291 yfac(i,2)=uparam(iadbufv+6+nrate+jj(i)+1)
297 ipos1(i) = nint(uvar(i,j1))
298 iad1(i) = npf(ifunc(j1)) / 2 + 1
299 ilen1(i) = npf(ifunc(j1)+1) / 2 - iad1(i) - ipos1(i)
300 ipos2(i) = nint(uvar(i,j2))
301 iad2(i) = npf(ifunc(j2)) / 2 + 1
302 ilen2(i) = npf(ifunc(j2)+1) / 2 - iad2(i) - ipos2(i)
305 CALL vinter(tf,iad1,ipos1,ilen1,nel,pla,dydx1,y1)
306 CALL vinter(tf,iad2,ipos2,ilen2,nel,pla,dydx2,y2)
311 y1(i)=y1(i)*yfac(i,1)
312 y2(i)=y2(i)*yfac(i,2)
313 fac = (epsp(i) - rate(i,1))/(rate(i,2) - rate(i,1))
314 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
315 yld(i) =
max(yld(i),em20)
316 dydx1(i)=dydx1(i)*yfac(i,1)
317 dydx2(i)=dydx2(i)*yfac(i,2)
318 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
319 uvar(i,j1) = ipos1(i)
320 uvar(i,j2) = ipos2(i)
327 ms=momnxx(i)+momnyy(i)
328 fs=signxx(i)+signyy(i)
329 svm(i) = sixteen*(ms*ms +three*(momnxy(i)*momnxy(i)
330 . - momnxx(i)*momnyy(i)))
331 . + fs*fs+ three*(signxy(i)*signxy(i)-signxx(i)*signyy(i))
332 svm(i) = sqrt(
max(svm(i),em20))
333 rr(i) =
min(one,yld(i)/svm(i))
334 IF(rr(i)<one) etse(i)= h(i)/(h(i)+e)
337 signxx(i) = signxx(i)*rr(i)
338 signyy(i) = signyy(i)*rr(i)
339 signxy(i) = signxy(i)*rr(i)
340 momnxx(i) = momnxx(i)*rr(i)
341 momnyy(i) = momnyy(i)*rr(i)
342 momnxy(i) = momnxy(i)*rr(i)
343 d1 = signxx(i)-sigoxx(i)
344 d2 = signyy(i)-sigoyy(i)
345 nu = uparam(iadbufv+6)
346 dwe =((signxx(i)+sigoxx(i))*(d1-nu*d2)+
347 . (signyy(i)+sigoyy(i))*(-nu*d1+d2))/e+
348 . (signxy(i)+sigoxy(i))*(signxy(i)-sigoxy(i))/g
349 d1 = momnxx(i)-momoxx(i)
350 d2 = momnyy(i)-momoyy(i)
352 . ((momnxx(i)+momoxx(i))*(d1-nu*d2)
353 . +(momnyy(i)+momoyy(i))*(-nu*d1+d2))/e
354 . +(momnxy(i)+momoxy(i))*(momnxy(i)-momoxy(i))/g )
355 dwt = (signxx(i)+sigoxx(i))*depsxx(i)+
356 . (signyy(i)+sigoyy(i))*depsyy(i)+
357 . (signxy(i)+sigoxy(i))*depsxy(i)
358 dwt = dwt+thk0(i)*((momnxx(i)+momoxx(i))*depbxx(i)+
359 . (momnyy(i)+momoyy(i))*depbyy(i)+
360 . (momnxy(i)+momoxy(i))*depbxy(i))
362 dpla = off(i)*
max(zero,half*dwp/yld(i))
366 ccc =
max(em20,aaa+bbb)
367 dezz = - (depsxx(i)+depsyy(i)) * (nnu1*aaa + bbb) / ccc
368 thk(i) = thk(i) * (one + dezz*off(i))
370 ELSEIF(codvers<44)
THEN
379 gama(i) = three_half*(c1+yld(i))/(three_half*c1+yld(i))
380 gama2(i) = gama(i)*gama(i)
381 cm(i) = sixteen*gama2(i)
382 cnm(i) = sqr16_3*gama(i)
383 qtier(i) = four_over_3*gama2(i)
384 h(i) =
max(zero,h(i))
385 s1(i) = (signxx(i)+signyy(i))*half
386 s2(i) = (signxx(i)-signyy(i))*half
388 sm1(i) = (momnxx(i)+momnyy(i))*half
389 sm2(i) = (momnxx(i)-momnyy(i))*half
392 bn(i) = three*(s2(i)*s2(i)+s3*s3)
394 am(i) = sm1(i)*sm1(i)*cm(i)
395 bm(i) =three*(sm2(i)*sm2(i)+sm3*sm3)*cm(i)
397 anm(i) = s1(i)*sm1(i)*cnm(i)
398 bnm(i) = three*(s2(i)*sm2(i)+s3*sm3)*cnm(i)
399 nmvm(i) = anm(i)+bnm(i)
400 svm(i) = sqrt(nvm(i)+mvm(i)+abs(nmvm(i)))
401 dezz = -(depsxx(i)+depsyy(i))*nnu1
402 thk(i) = thk(i) +thk(i)* dezz*off(i)
409 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
421 nu1(i) = one/(one-nu)
422 nu2(i) = one/(one+nu)
424 num1(i) = nu1(i)*qtier(i)
425 num2(i) = nu2(i)*qtier(i)
426 dpla_j(i)=(svm(i)-yld(i))/(g3*qtier(i)+h(i))
427 etse(i)= h(i)/(h(i)+e)
433#include "vectorize.inc"
437 yld_i =yld(i)+h(i)*dpla_i
438 dr =half*e*dpla_i/yld_i
441 xpg =xp*zep444*gama2(i)
442 xqg =xq*zep444*gama2(i)
444 da=c1+twop444*gama2(i)*xp
445 db=c1+twop444*gama2(i)*xq
446 a=one +(da+c1)*xp*half
447 b=one +(db+c1)*xq*half
452 dfnp=fivep5+sixteenp5*xpg
453 fnp=one+(dfnp+fivep5)*xpg*half
454 dfnq=fivep5+sixteenp5*xqg
455 fnq=one+(dfnq+fivep5)*xqg*half
456 dfmp=onep8333*(xp+one)
457 fmp=one+(dfmp+onep8333)*xp*half
458 dfmq=onep8333*(xq+one)
459 fmq=one+(dfmq+onep8333)*xq*half
460 dfnmp=-twop444*xp*gama2(i)
461 fnmp=one+dfnmp*xp*half
462 dfnmq=-twop444*xq*gama2(i)
463 fnmq=one+dfnmq*xq*half
464 fn=aa*fnp*an(i)+bb*fnq*bn(i)
465 fm=aa*fmp*am(i)+bb*fmq*bm(i)
466 fnm=aa*fnmp*anm(i)+bb*fnmq*bnm(i)
473 f =fn+fm+fnm-yld_i*yld_i
477 c1=three*nu2(i)*bb*b_i
481 dfn=an(i)*(cp1*dfnp*c1-fnp*cp2)
482 . + bn(i)*(cq1*dfnq*c1-fnq*cq2)
483 dfm=am(i)*(cp1*dfmp-fmp*cp2)
484 . + bm(i)*(cq1*dfmq-fmq*cq2)
485 dfnm=anm(i)*(cp1*dfnmp-fnmp*cp2)
486 . + bnm(i)*(cq1*dfnmq-fnmq*cq2)
487 df =(dfn+dfm+s*dfnm)*
488 . (e*half-dr*h(i))/yld_i-two*h(i)*yld_i
489 dpla_j(i)=
max(zero,dpla_i-f/df)
495#include "vectorize.inc"
498 pla(i) = pla(i) + dpla_j(i)
500 yld_i =yld(i)+h(i)*dpla_i
501 dr =half*e*dpla_i/yld_i
504 xpg =xp*zep444*gama2(i)
505 xqg =xq*zep444*gama2(i)
507 a=one+c1*xp+twop444*gama2(i)*xp*xp
508 b=one+c1*xq+twop444*gama2(i)*xq*xq
513 fnmp=one-onep222*gama2(i)*xp*xp
514 fnmq=one-onep222*gama2(i)*xq*xq
515 fnm=aa*fnmp*anm(i)+bb*fnmq*bnm(i)
521 pn=(one+qtier(i)*xp)*a_i
523 pnm1=-sqr4_3*gama(i)*s*xp*a_i
524 pnm2=pnm1*one_over_12
525 qn=(one+qtier(i)*xq)*b_i
527 qnm1=-sqr4_3*xq*gama(i)*s*b_i
528 qnm2=qnm1*one_over_12
529 sn1=s1(i)*pn+sm1(i)*pnm1
530 sn2=s2(i)*qn+sm2(i)*qnm1
531 s3=signxy(i)*qn+momnxy(i)*qnm1
532 m1=sm1(i)*p_m+s1(i)*pnm2
533 m2=sm2(i)*qm+s2(i)*qnm2
534 momnxy(i)=signxy(i)*qnm2+momnxy(i)*qm
540 dezz = - nu3(i)*dr*sn1*2./e
541 thk(i) = thk(i) + dezz*thk(i)*off(i)
555 ccc=exp(-twop6667*c1/yld(i))
556 gama(i) = two/(three-ccc)
557 gama2(i) = gama(i)*gama(i)
558 cm(i) = thirty6*gama2(i)
559 cnm(i) = threep4641*gama(i)
560 qtier(i) = three*gama2(i)
561 h(i) =
max(zero,h(i))
562 s1(i) = (signxx(i)+signyy(i))*half
563 s2(i) = (signxx(i)-signyy(i))*half
565 sm1(i) = (momnxx(i)+momnyy(i))*half
566 sm2(i) = (momnxx(i)-momnyy(i))*half
569 bn(i) = three*(s2(i)*s2(i)+s3*s3)
571 am(i) = sm1(i)*sm1(i)*cm(i)
572 bm(i) = three*(sm2(i)*sm2(i)+sm3*sm3)*cm(i)
574 anm(i) = s1(i)*sm1(i)*cnm(i)
575 bnm(i) = three*(s2(i)*sm2(i)+s3*sm3)*cnm(i)
576 nmvm(i) = anm(i)+bnm(i)
577 svm(i) = sqrt(nvm(i)+mvm(i)+abs(nmvm(i)))
578 dezz = -(depsxx(i)+depsyy(i))*nnu1
579 thk(i) = thk(i) +thk(i
586 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
598 nu1(i) = half*(one + nu)
599 nu2(i) = three_half*(one-nu)
601 num1(i) = one+qtier(i)
602 num2(i) = fivep5*gama2(i)
604 qfn(i)=sixteenp5*gama2(i)*gama2(i)
606 dpla_j(i)=(svm(i)-yld(i))/(g3*qtier(i)+h(i))
613#include "vectorize.inc"
617 yld_i =yld(i)+h(i)*dpla_i
621 da=num1(i)+num2(i)*xp
622 db=num1(i)+num2(i)*xq
623 a=one+(da+num1(i))*xp*half
624 b=one+(db+num1(i))*xq*half
629 dfnp=lfn(i)+qfn(i)*xp
630 dfnq=lfn(i)+qfn(i)*xq
631 dfmp=onep8333*(xp+one)
632 dfmq=onep8333*(xq+one)
637 fnp=one+(dfnp+lfn(i))*xp
638 fnq=one+(dfnp+lfn(i))*xq
639 fmp=one+(dfmp+onep8333)*xp
640 fmq=one+(dfmq+onep8333)*xq
643 fnm=aa*fnmp*anm(i)+bb*fnmq*bnm(i)
649 cp1 =(fnp*an(i)+s*fnmp*anm(i)+fmp*am(i))*aa
650 cq1 =(fnq*bn(i)+s*fnmq*bnm(i)+fmq*bm(i))*bb
651 cp2 =(dfnp*an(i)+s*dfnmp*anm(i)+dfmp*am(i))*aa
652 cq2 =(dfnq*bn(i)+s*dfnmq*bnm(i)+dfmq*bm(i))*bb
653 xpg =two*nu1(i)*da*a_i
654 xqg =two*nu2(i)*db*b_i
655 f =cp1 +cq1-yld_i*yld_i
656 df =(cp2*nu1(i)+cq2*nu2(i)-cp1*xpg-cq1*xqg)*
657 . (a1-dr*h(i))/yld_i-two*h(i)*yld_i
658 dpla_j(i)=
max(zero,dpla_i-f/df)
664#include "vectorize.inc"
667 pla(i) = pla(i) + dpla_j(i)
669 yld_i =yld(i)+h(i)*dpla_i
675 a=one + num1(i)*xp+num2(i)*xpg
676 b=one+num1(i)*xq+num2(i)*xqg
683 fnm=aa*fnmp*anm(i)+bb*fnmq*bnm(i)
691 qnm2=qnm1*one_over_12
692 sn1=(s1(i)*(1.+qtier(i)*xp)-sm1(i)*s*xp)*a_i
693 sn2=(s2(i)*qn-sm2(i)*qnm1)*b_i
694 s3=(signxy(i)*qn-momnxy(i)*qnm1)*b_i
695 m1=(sm1(i)*(one+xp)-s1(i)*s*xp*one_over_12)*a_i
696 m2=(sm2(i)*(1.+xq)-s2(i)*qnm2)*b_i
697 momnxy(i)=(momnxy(i)*(1.+xq)-signxy(i)*qnm2)*b_i
703 dezz = - nu3(i)*dr*sn1/e
704 thk(i) = thk(i) + dezz*thk(i)*off(i)
709 IF(pla(i)>epsmax.AND.off(i)==one)
THEN