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),ISRATE,
71 . AREA(NEL),RHO0(NEL),EINT(NEL,2),
73 . EPSPXX(NEL),EPSPYY(NEL),
74 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
75 . DEPSXX(NEL),DEPSYY(),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),
88 . signxx(nel),signyy(nel),signxy(nel),
89 . momnxx(nel),momnyy(nel),momnxy(nel),
90 . signyz(nel),signzx(nel),
91 . sigvxx(nel),sigvyy(nel),
92 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
93 . soundsp(nel),viscmax(nel),etse(nel)
98 . uvar(nel,nuvar), off(nel),thk(nel),yld(nel)
115 INTEGER I,J,NRATE,J1,J2,N
118 . jj(mvsiz),index(mvsiz),ifunc(100),nfuncv,
119 . nfuncm, nratem, iadbufv,mx
121 . e,nu,a,b,fac,dezz,s1(mvsiz),s2(mvsiz),
122 . dpla,epst(mvsiz),a1,a2,g,g3,
123 . dydx1(mvsiz),dydx2(mvsiz),rate(mvsiz),svm(mvsiz),
124 . y1(mvsiz),y2(mvsiz),dr,
125 . yfac(mvsiz,2),nnu1,nu1(mvsiz),
126 . nu2(mvsiz),nu3(mvsiz),dpla_i,dpla_j(mvsiz),h(mvsiz),
127 . fail(mvsiz),epsmax,epsr1,epsr2,
128 . err,f,df,yld_i,tol,
129 . c1,cp1,cq1,cp2,cq2,sm1(mvsiz),sm2(mvsiz),sm3,fn,fm,fnm,
130 . pn2,qn2,pm2,qm2,dfn,dfm,dfnm,da,db,a_i,b_i,
131 . dfnp,dfnq,dfmp,dfmq,dfnmp,dfnmq,xp,xq,xpg,xqg,
132 . gm(mvsiz),cm(mvsiz),p_m,qm,pnm1,pnm2,qtier(mvsiz),
133 . cnm(mvsiz),am(mvsiz),bm(mvsiz),anm(mvsiz),bnm(mvsiz),
134 . num1(mvsiz),num2(mvsiz),an(mvsiz),bn(mvsiz),
135 . nvm(mvsiz),mvm(mvsiz),nmvm(mvsiz),pn
136 . qnm1,qnm2,fnp,fnq,fmp,fmq,fnmp,fnmq,s3,aa,bb,m1,m2,
137 . lfn(mvsiz),qfn(mvsiz),qfnm(mvsiz),rr(mvsiz),
138 . d1,d2,dwt,dwe,dwp,aaa,bbb,ccc,fs,ms,
139 . am1(mvsiz),am2(mvsiz),gama(mvsiz),gama2(mvsiz),
152 nfuncm =
max(nfuncm,nfuncv)
155 ifunc(j) = ipm(10+j,mx)
161 iadbufv = ipm(7,mx)-1
162 e = uparam(iadbufv+2)
163 a1 = uparam(iadbufv+3)
164 a2 = uparam(iadbufv+4)
165 g = uparam(iadbufv+5)
167 nu = uparam(iadbufv+6)
168 nrate = nint(uparam(iadbufv+1))
169 nratem =
max(nratem,nrate)
170 epsmax=uparam(iadbufv+6+2*nrate+1)
171 epsr1 =uparam(iadbufv+6+2*nrate+2)
172 IF(epsr1==zero)epsr1=ep30
173 epsr2 =uparam(iadbufv+6+2*nrate+3)
174 IF(epsr2==zero)epsr2=twoep30
175 epsf = uparam(iadbufv+6+2*nrate+9)
176 nnu1 = nu / (one - nu)
178 c1=thk0(i)*one_over_12
189 IF(tf(npf(ifunc(1)+1)-1)==zero)
THEN
190 epsmax=tf(npf(ifunc(1)+1)-2)
199 IF(tf(npf(ipm(11,mat(i))+1)-1)==zero)
THEN
200 epsmax=tf(npf(ipm(11,mat(i))+1)-2)
222 signxx(i)=sigoxx(i)+a1*depsxx(i)+a2*depsyy(i)
223 signyy(i)=sigoyy(i)+a2*depsxx(i)+a1*depsyy(i)
224 signxy(i)=sigoxy(i)+g *depsxy(i)
225 momnxx(i)=momoxx(i)+am1(i)*depbxx(i)+am2(i)*depbyy(i)
226 momnyy(i)=momoyy(i)+am2(i)*depbxx(i)+am1(i)*depbyy(i)
227 momnxy(i)=momoxy(i)+gm(i) *depbxy(i)
228 signyz(i)=sigoyz(i)+gs(i) *depsyz(i)
229 signzx(i)=sigozx(i)+gs(i) *depszx(i)
231 soundsp(i) = sqrt(a1/rho0(i))
237 IF (israte == 0) epsp(i) = half*( abs(epspxx(i)+epspyy(i))
238 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
239 . + epspxy(i)*epspxy(i) ) )
243 epst(i) = half*( epsxx(i)+epsyy(i)
244 . + sqrt( (epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
245 . + epsxy(i)*epsxy(i) ) )
246 fail(i) =
max(zero,
min(one,(epsr2-epst(i))
258 IF(epsp(i)>=uparam(iadbufv+6+j)) jj(i) = j
264 fac=uparam(iadbufv+6+jj(i))
265 rate(i)=(epsp(i) - fac)/(uparam(iadbufv+7+jj(i)) - fac)
266 yfac(i,1)=uparam(iadbufv+6+nrate+jj(i))
267 yfac(i,2)=uparam(iadbufv+7+nrate+jj(i))
274 ipos1(i) = nint(uvar(i,j1))
275 iad1(i) = npf(ifunc(j1))/2 + 1
276 ilen1(i) = npf(ifunc(j1)+1)/2 - iad1(i) - ipos1(i)
277 ipos2(i) = nint(uvar(i,j2))
278 iad2(i) = npf(ifunc(j2))/2 + 1
279 ilen2(i) = npf(ifunc(j2)+1)/2 - iad2(i) - ipos2(i)
285 ipos1(i) = nint(uvar(i,j1))
286 iad1(i) = npf(ipm(10+j1,mat(i))) / 2 + 1
287 ilen1(i) = npf(ipm(10+j1,mat(i))+1) / 2 - iad1(i) - ipos1(i)
288 ipos2(i) = nint(uvar(i,j2))
289 iad2(i) = npf(ipm(10+j2,mat(i))) / 2 + 1
290 ilen2(i) = npf(ipm(10+j2,mat(i))+1) / 2 - iad2(i) - ipos2(i)
294 CALL vinter(tf,iad1,ipos1,ilen1,nel,pla,dydx1,y1)
295 CALL vinter(tf,iad2,ipos2,ilen2,nel,pla,dydx2,y2)
300 y1(i)=y1(i)*yfac(i,1)
301 y2(i)=y2(i)*yfac(i,2)
303 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
304 yld(i) =
max(yld(i),em20)
305 dydx1(i)=dydx1(i)*yfac
306 dydx2(i)=dydx2(i)*yfac(i,2)
307 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
308 uvar(i,j1) = ipos1(i)
309 uvar(i,j2) = ipos2(i)
316 ms=momnxx(i)+momnyy(i)
317 fs=signxx(i)+signyy(i)
318 svm(i) = sixteen*(ms*ms +three*(momnxy(i)*momnxy(i)
319 . - momnxx(i)*momnyy(i)))
320 . + fs*fs+ three*(signxy(i)*signxy(i)-signxx(i)*signyy(i))
321 svm(i) = sqrt(
max(svm(i),em20))
323 IF(rr(i)<one) etse(i)= h(i)/(h(i)+e)
326 signxx(i) = signxx(i)*rr(i)
327 signyy(i) = signyy(i)*rr(i)
328 signxy(i) = signxy(i)*rr(i)
329 momnxx(i) = momnxx(i)*rr(i)
330 momnyy(i) = momnyy(i)*rr(i)
331 momnxy(i) = momnxy(i)*rr(i)
332 d1 = signxx(i)-sigoxx(i)
333 d2 = signyy(i)-sigoyy(i)
334 nu = uparam(iadbufv+6)
335 dwe =((signxx(i)+sigoxx(i))*(d1-nu*d2)+
336 . (signyy(i)+sigoyy(i))*(-nu*d1+d2))/e+
337 . (signxy(i)+sigoxy(i))*(signxy(i)-sigoxy(i))/g
338 d1 = momnxx(i)-momoxx(i)
339 d2 = momnyy(i)-momoyy(i)
341 . ((momnxx(i)+momoxx(i))*(d1-nu*d2)
342 . +(momnyy(i)+momoyy(i))*(-nu*d1
343 . +(momnxy(i)+momoxy(i))*(momnxy(i)-momoxy(i))/g )
344 dwt = (signxx(i)+sigoxx(i))*depsxx(i)+
345 . (signyy(i)+sigoyy(i))*depsyy(i)+
346 . (signxy(i)+sigoxy(i))*depsxy(i)
347 dwt = dwt+thk0(i)*((momnxx(i)+momoxx
348 . (momnyy(i)+momoyy(i))*depbyy(i)+
349 . (momnxy(i)+momoxy(i))*depbxy(i))
351 dpla = off(i)*
max(zero,half*dwp/yld(i))
355 ccc =
max(em20,aaa+bbb)
356 dezz = - (depsxx(i)+depsyy(i)) * (nnu1*aaa + bbb) / ccc
357 thk(i) = thk(i) * (one + dezz*off(i))
359 ELSEIF(codvers<44)
THEN
369 gama(i) = three_half*(c1+yld(i))/(three_half*c1+yld(i))
370 gama2(i) = gama(i)*gama(i)
371 cm(i) = sixteen*gama2(i)
372 cnm(i) = sqr16_3*gama(i)
373 qtier(i) = four_over_3*gama2(i)
374 h(i) =
max(zero,h(i))
375 s1(i) = (signxx(i)+signyy(i))*half
376 s2(i) = (signxx(i)-signyy(i))*half
378 sm1(i) = (momnxx(i)+momnyy(i))*half
379 sm2(i) = (momnxx(i)-momnyy(i))*half
382 bn(i) = three*(s2(i)*s2(i)+s3*s3)
384 am(i) = sm1(i)*sm1(i)*cm(i)
385 bm(i) =three*(sm2(i)*sm2(i)+sm3*sm3)*cm(i)
387 anm(i) = s1(i)*sm1(i)*cnm(i)
388 bnm(i) = three*(s2(i)*sm2(i)+s3*sm3)*cnm(i)
389 nmvm(i) = anm(i)+bnm(i)
390 svm(i) = sqrt(nvm(i)+mvm(i)+abs(nmvm(i)))
391 dezz = -(depsxx(i)+depsyy(i))*nnu1
392 thk(i) = thk(i) +thk(i)* dezz*off(i)
399 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
411 nu1(i) = one/(one-nu)
412 nu2(i) = one/(one+nu)
414 num1(i) = nu1(i)*qtier(i)
415 num2(i) = nu2(i)*qtier(i)
416 dpla_j(i)=(svm(i)-yld(i))/(g3*qtier(i)+h(i
417 etse(i)= h(i)/(h(i)+e)
423#include "vectorize.inc"
427 yld_i =yld(i)+h(i)*dpla_i
428 dr =half*e*dpla_i/yld_i
431 xpg =xp*zep444*gama2(i)
432 xqg =xq*zep444*gama2(i)
434 da=c1+twop444*gama2(i)*xp
435 db=c1+twop444*gama2(i)*xq
436 a=one +(da+c1)*xp*half
437 b=one +(db+c1)*xq*half
442 dfnp=fivep5+sixteenp5*xpg
443 fnp=one+(dfnp+fivep5)*xpg*half
444 dfnq=fivep5+sixteenp5*xqg
445 fnq=one+(dfnq+fivep5)*xqg*half
446 dfmp=onep8333*(xp+one)
447 fmp=one+(dfmp+onep8333)*xp*half
448 dfmq=onep8333*(xq+one)
449 fmq=one+(dfmq+onep8333)*xq*half
450 dfnmp=-twop444*xp*gama2(i)
451 fnmp=one+dfnmp*xp*half
452 dfnmq=-twop444*xq*gama2(i)
453 fnmq=one+dfnmq*xq*half
454 fn=aa*fnp*an(i)+bb*fnq*bn(i)
455 fm=aa*fmp*am(i)+bb*fmq*bm(i)
456 fnm=aa*fnmp*anm(i)+bb*fnmq*bnm(i
463 f =fn+fm+fnm-yld_i*yld_i
467 c1=three*nu2(i)*bb*b_i
471 dfn=an(i)*(cp1*dfnp*c1-fnp*cp2)
472 . + bn(i)*(cq1*dfnq*c1-fnq*cq2)
473 dfm=am(i)*(cp1*dfmp-fmp*cp2)
474 . + bm(i)*(cq1*dfmq-fmq*cq2)
475 dfnm=anm(i)*(cp1*dfnmp-fnmp*cp2)
476 . + bnm(i)*(cq1*dfnmq-fnmq*cq2)
477 df =(dfn+dfm+s*dfnm)*
478 . (e*half-dr*h(i))/yld_i-2.*h(i)*yld_i
488 dpla_j(i)=
max(zero,dpla_i-f/df)
494#include "vectorize.inc"
497 pla(i) = pla(i) + dpla_j(i)
499 yld_i =yld(i)+h(i)*dpla_i
500 dr =half*e*dpla_i/yld_i
503 xpg =xp*zep444*gama2(i)
504 xqg =xq*zep444*gama2(i)
506 a=one+c1*xp+twop444*gama2(i)*xp*xp
507 b=one+c1*xq+twop444*gama2(i)*xq*xq
512 fnmp=one-onep222*gama2(i)*xp*xp
513 fnmq=one-onep222*gama2(i)*xq*xq
514 fnm=aa*fnmp*anm(i)+bb*fnmq*bnm(i)
520 pn=(one+qtier(i)*xp)*a_i
522 pnm1=-sqr4_3*gama(i)*s*xp*a_i
523 pnm2=pnm1*one_over_12
524 qn=(one+qtier(i)*xq)*b_i
526 qnm1=-sqr4_3*xq*gama(i)*s*b_i
527 qnm2=qnm1*one_over_12
528 sn1=s1(i)*pn+sm1(i)*pnm1
529 sn2=s2(i)*qn+sm2(i)*qnm1
530 s3=signxy(i)*qn+momnxy(i)*qnm1
531 m1=sm1(i)*p_m+s1(i)*pnm2
532 m2=sm2(i)*qm+s2(i)*qnm2
533 momnxy(i)=signxy(i)*qnm2+momnxy(i)*qm
539 dezz = - nu3(i)*dr*sn1*2./e
540 thk(i) = thk(i) + dezz*thk(i)*off(i)
570 ccc=exp(-twop6667*c1/yld(i))
571 gama(i) = two/(three-ccc)
572 gama2(i) = gama(i)*gama(i)
573 cm(i) = thirty6*gama2(i)
574 cnm(i) = threep4641*gama(i)
575 qtier(i) = three*gama2(i)
576 h(i) =
max(zero,h(i))
577 s1(i) = (signxx(i)+signyy(i))*half
578 s2(i) = (signxx(i)-signyy(i))*half
580 sm1(i) = (momnxx(i)+momnyy(i))*half
581 sm2(i) = (momnxx(i)-momnyy(i))*half
584 bn(i) = three*(s2(i)*s2(i)+s3*s3)
586 am(i) = sm1(i)*sm1(i)*cm(i)
587 bm(i) = three*(sm2(i)*sm2(i)+sm3*sm3)*cm(i)
589 anm(i) = s1(i)*sm1(i)*cnm(i)
590 bnm(i) = three*(s2(i)*sm2(i)+s3*sm3)*cnm(i)
591 nmvm(i) = anm(i)+bnm(i)
592 svm(i) = sqrt(nvm(i)+mvm(i)+abs(nmvm(i)))
593 dezz = -(depsxx(i)+depsyy(i))*nnu1
594 thk(i) = thk(i) +thk(i)* dezz*off(i)
601 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
613 nu1(i) = half*(one + nu)
614 nu2(i) = three_half*(one-nu)
616 num1(i) = one+qtier(i)
617 num2(i) = fivep5*gama2(i)
619 qfn(i)=sixteenp5*gama2(i)*gama2(i)
621 dpla_j(i)=(svm(i)-yld(i))/(g3*qtier(i)+h(i))
622 etse(i)= h(i)/(h(i)+e)
628#include "vectorize.inc"
632 yld_i =yld(i)+h(i)*dpla_i
636 da=num1(i)+num2(i)*xp
637 db=num1(i)+num2(i)*xq
638 a=one+(da+num1(i))*xp*half
639 b=one+(db+num1(i))*xq*half
644 dfnp=lfn(i)+qfn(i)*xp
645 dfnq=lfn(i)+qfn(i)*xq
646 dfmp=onep8333*(xp+one)
647 dfmq=onep8333*(xq+one)
652 fnp=one+(dfnp+lfn(i))*xp
653 fnq=one+(dfnp+lfn(i))*xq
654 fmp=one+(dfmp+onep8333)*xp
655 fmq=one+(dfmq+onep8333)*xq
658 fnm=aa*fnmp*anm(i)+bb*fnmq*bnm(i)
664 cp1 =(fnp*an(i)+s*fnmp*anm(i)+fmp*am(i))*aa
665 cq1 =(fnq*bn(i)+s*fnmq*bnm(i)+fmq*bm(i))*bb
666 cp2 =(dfnp*an(i)+s*dfnmp*anm(i)+dfmp*am(i))*aa
667 cq2 =(dfnq*bn(i)+s*dfnmq*bnm(i)+dfmq*bm(i))*bb
668 xpg =two*nu1(i)*da*a_i
669 xqg =two*nu2(i)*db*b_i
670 f =cp1 +cq1-yld_i*yld_i
671 df =(cp2*nu1(i)+cq2*nu2(i)-cp1*xpg-cq1*xqg)*
672 . (a1-dr*h(i))/yld_i-two*h(i)*yld_i
682 dpla_j(i)=
max(zero,dpla_i-f/df)
688#include "vectorize.inc"
691 pla(i) = pla(i) + dpla_j(i)
693 yld_i =yld(i)+h(i)*dpla_i
699 a=one + num1(i)*xp+num2(i)*xpg
700 b=one+num1(i)*xq+num2(i)*xqg
707 fnm=aa*fnmp*anm(i)+bb*fnmq*bnm(i)
715 qnm2=qnm1*one_over_12
716 sn1=(s1(i)*(1.+qtier(i)*xp)-sm1(i)*s*xp)*a_i
717 sn2=(s2(i)*qn-sm2(i)*qnm1)*b_i
718 s3=(signxy(i)*qn-momnxy(i)*qnm1)*b_i
719 m1=(sm1(i)*(one+xp)-s1(i)*s*xp*one_over_12)*a_i
721 momnxy(i)=(momnxy(i)*(1.+xq)-signxy(i)*qnm2)*b_i
727 dezz = - nu3(i)*dr*sn1/e
728 thk(i) = thk(i) + dezz*thk(i)*off(i)
748 IF((pla(i)>epsmax.OR.epst(i)>epsf).
749 . and.off(i)==one)
THEN