32 1 NEL ,NUVAR ,NVARTMP ,MFUNC ,
34 2 TF ,TIMESTEP,UPARAM ,RHO0 ,
35 3 THKLY ,ISRATE ,ASRATE ,EPSD_PG ,EPSD ,
36 4 EPSPXX ,EPSPYY ,EPSPXY ,
37 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
38 6 EPSXX ,EPSYY ,EPSXY ,
39 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
40 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
41 9 SOUNDSP,VISCMAX,THK ,PLA ,UVAR ,
42 A VARTMP ,OFF ,IPM ,IMAT ,
44 C DPLA_I ,GAMA_IMP,SIGNOR ,SHF ,HARDM ,
45 D FACYLDI,INLOC ,DPLANL ,DMG ,PLANL ,
46 E L_PLANL,SIGBXX,SIGBYY,SIGBXY ,LOFF)
50#include "implicit_f.inc"
100#include "param_c.inc"
101#include "impl1_c.inc"
105 INTEGER NEL, NUVAR, NVARTMP,ISRATE,INLOC
106 INTEGER IPLAS(*),IPM(,*)
107 INTEGER,
INTENT(IN) :: L_PLANL
108 my_real :: TIMESTEP,ASRATE
109 my_real :: UPARAM(*),RHO0(NEL),
110 . THKLY(NEL),PLA(NEL),FACYLDI(NEL),
117,
DIMENSION(NEL),
INTENT(IN) :: LOFF
118 my_real,
DIMENSION(NEL),
INTENT(IN) :: EPSD_PG
119 my_real,
DIMENSION(NEL),
INTENT(INOUT) :: EPSD
124 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
125 . soundsp(nel),viscmax(nel),etse(nel),
126 . dpla_i(nel),gama_imp(nel),signor(mvsiz,5)
131 . uvar(nel,nuvar), off(nel),thk(nel),yld(nel)
132 INTEGER,
INTENT(INOUT) :: VARTMP(NEL,NVARTMP)
133 DIMENSION(NEL)INTENT(INOUT)
137 INTEGER :: NPF(*), MFUNC, KFUNC(MFUNC)
142 INTEGER :: I,J,N,II,J1,J2,NINDX,VP,IFAIL,OPTE,NINDEX_PLA,
143 . NITER,NRATE,IPFUN,NFUNC,PFUN,IFUNCE,FUN1,FUN2,YLDCHECK,
145 INTEGER IAD1(MVSIZ),IPOS1(MVSIZ),ILEN1(MVSIZ),
146 . IAD2(MVSIZ),IPOS2(MVSIZ),ILEN2(MVSIZ),
147 . jj(mvsiz),index(mvsiz),iposp(mvsiz),ipospe(mvsiz),
148 . ifunc(100),iadp(mvsiz),ilenp(mvsiz)
149 INTEGER,
DIMENSION(MVSIZ) :: INDEX_PLA
150 my_real :: A,P2,R,FAC,DEZZ,SVM,
151 . HKIN,DTINV,AAA,SOUNDSP1,ALPHA,CE,,EPSP1,EPSP2,
152 . f,df,q2,yld_i,sigpxx,sigpyy,sigpxy,
153 . e1,a11,a21,g1,g31,nu11,nu21,nu_mnu,u_mnu,t_pnu,nux,nu3,
154 . epsmax,epsr1,epsr2,epsf,fisokin,s1,s2,s3,yld0
155 my_real :: fact(nel),e(mvsiz),a1(mvsiz),a2(mvsiz),g(mvsiz),
156 . dydx1(mvsiz),dydx2(mvsiz),rfac(mvsiz),
157 . y1(mvsiz),y2(mvsiz),dr(mvsiz),yfac(mvsiz,2),escale(mvsiz),
158 . aa(mvsiz),bb(mvsiz),dpla_j(mvsiz),
159 . pp(mvsiz),qq(mvsiz),fail(mvsiz),h(mvsiz),hk(mvsiz),
160 . sigexx(mvsiz),sigeyy(mvsiz),sigexy(mvsiz),
161 . svm2(mvsiz),yld2(mvsiz),hi(mvsiz),g3(mvsiz),epst(mvsiz),
162 . pfac(mvsiz),p0(mvsiz),dfdp(mvsiz),pscale(mvsiz),
163 . dydxe(mvsiz),plap(mvsiz)
164 my_real,
DIMENSION(MVSIZ) :: tab_loc
172 ifunc(j) = ipm(10+j,imat)
174 ipfun = ifunc(nfunc-1)
181 nrate = nint(uparam(1))
182 epsmax = uparam(2*nrate + 7)
183 epsr1 = uparam(2*nrate + 8)
184 epsr2 = uparam(2*nrate + 9)
185 g31 = uparam(2*nrate + 11)
186 fisokin= uparam(2*nrate + 14)
187 epsf = uparam(2*nrate + 15)
188 pfun = nint(uparam(2*nrate + 16))
189 soundsp1 = uparam(2*nrate + 18)
190 nu_mnu = uparam(2*nrate + 19)
191 t_pnu = uparam(2*nrate + 20)
192 u_mnu = uparam(2*nrate + 21)
193 opte = uparam(2*nrate + 23)
194 einf = uparam(2*nrate + 24)
195 ce = uparam(2*nrate + 25)
196 vp = nint(uparam(2*nrate + 26))
197 ifail = nint(uparam(2*nrate + 27))
198 yldcheck = nint(uparam(2*nrate + 28))
199 ismooth = nint(uparam(2*nrate + 29))
202 viscmax(1:nel) = zero
209 soundsp(1:nel) = soundsp1
212 ifunce = uparam(2*nrate + 22)
215 IF(pla(i) > zero)
THEN
216 nindex_pla = nindex_pla + 1
217 index_pla(nindex_pla) = i
219 iadp(nindex_pla) = npf(kfunc(ifunce)) / 2 + 1
220 ilenp(nindex_pla) = npf(kfunc(ifunce)+1) / 2 - iadp(nindex_pla) - ipospe(nindex_pla)
221 tab_loc(nindex_pla) = pla(i)
224 CALL vinter2(tf,iadp,ipospe,ilenp,nindex_pla,tab_loc,dydxe,escale)
225 vartmp(index_pla(1:nindex_pla),1) = ipospe(1:nindex_pla)
228#include "vectorize.inc"
231 e(i) = escale(ii)* e1
232 a1(i) = e(i)/(one - nux*nux)
234 g(i) = half*e(i)/(one+nux)
236 gs(i) = g(i) * shf(i)
237 soundsp(i) = sqrt(e(i)/(one - nux*nux)/rho0(i))
239 ELSEIF (ce /= zero)
THEN
241 IF (pla(i) > zero)
THEN
242 e(i) = e1-(e1-einf)*(one-exp(-ce*pla(i)))
243 a1(i) = e(i)/(one - nux*nux)
245 g(i) = half*e(i)/(one+nux)
247 gs(i) = g(i) * shf(i)
248 soundsp(i) = sqrt(e(i)/(one - nux*nux)/rho0(i))
256 epst(1:nel) = half*( epsxx(1:nel)+epsyy(1:nel)
257 . + sqrt( (epsxx(1:nel)-epsyy(1:nel))*(epsxx(1:nel)-epsyy(1:nel))
258 . + epsxy(1:nel)*epsxy(1:nel) ) )
259 fail(1:nel) =
max(em20,
min(one,(epsr2-epst(1:nel))/(epsr2-epsr1)))
260 dmg(1:nel) = one -
max(zero,
min(one,(epsr2-epst(1:nel))/(epsr2-epsr1)))
271 sigoxx(1:nel) = sigoxx(1:nel) - sigbxx(1:nel)
272 sigoyy(1:nel) = sigoyy(1:nel) - sigbyy(1:nel)
273 sigoxy(1:nel) = sigoxy(1:nel) - sigbxy(1:nel)
275 p0(1:nel) = -(sigoxx(1:nel) + sigoyy(1:nel))*third
276 signxx(1:nel) = sigoxx(1:nel)+a1
277 signyy(1:nel) = sigoyy(1:nel)+a2(1:nel)*depsxx(1:nel)+a1(1:nel)*depsyy(1:nel)
278 signxy(1:nel) = sigoxy(1:nel)+g(1:nel) *depsxy(1:nel)
279 signyz(1:nel) = sigoyz(1:nel)+gs(1:nel) *depsyz(1:nel)
280 signzx(1:nel) = sigozx(1:nel)+gs(1:nel) *depszx(1:nel)
281 sigexx(1:nel) = signxx(1:nel)
282 sigeyy(1:nel) = signyy(1:nel)
283 sigexy(1:nel) = signxy(1:nel)
287 IF (israte == 0)
THEN
289 epsd(i) = half*( abs(epspxx(i)+epspyy(i))
290 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
291 . + epspxy(i)*epspxy(i) ) )
294 epsd(1:nel) = asrate*epsd_pg(1:nel) + (one-asrate)*epsd(1:nel)
301 pscale(1:nel) = uparam(17 + 2*nrate )*p0(1:nel)
303 iposp(i) = vartmp(i,2)
304 iadp(i) = npf(ipfun) / 2 + 1
305 ilenp(i) = npf(ipfun) / 2 - iadp(i) - iposp(i)
308 pfac(1:nel) =
max(zero, pfac(1:nel))
309 vartmp(1:nel,2) = iposp(1:nel)
317 ipos1(1:nel) = vartmp(1:nel,3)
318 iad1(1:nel) = npf(ifunc(1)) / 2 + 1
319 ilen1(1:nel) = npf(ifunc(1)+1) / 2 - iad1(1:nel) - ipos1(1:nel)
321 CALL vinter(tf,iad1,ipos1,ilen1,nel,pla,dydx1,y1)
323 yfac(1:nel,1) = uparam(6+nrate+1)*facyldi(1:nel)
324 vartmp(1:nel,3) = ipos1(1:nel)
325 fact(1:nel) = fail(1:nel) * pfac(1:nel) * yfac(1:nel,1)
326 h(1:nel) = dydx1(1:nel) * fact(1:nel)
328 IF (fisokin == zero)
THEN
329 yld(1:nel) = y1(1:nel) * fact(1:nel)
330 ELSE IF (fisokin == one)
THEN
331 yld0 = tf(npf(ifunc(1))+1)
332 yld(1:nel) = yld0 * fact(1:nel)
333 ELSE IF (fisokin > zero)
THEN
334 yld0 = tf(npf(ifunc(1))+1)
335 yld(1:nel) = ((one-fisokin)*y1(1:nel) + fisokin *yld0)*fact(1:nel)
342 IF (epsd(i) >= uparam(6+j)) jj(i) = j
345 IF (ismooth == 2)
THEN
346#include "vectorize.inc"
348 epsp1 =
max(uparam(6+jj(i)), em20)
349 epsp2 = uparam(7+jj(i))
350 rfac(i) = log(
max(epsd(i),em20)/epsp1) / log(epsp2/epsp1)
351 yfac(i,1) = uparam(6+nrate+jj(i)) * facyldi(i)
352 yfac(i,2) = uparam(7+nrate+jj(i)) * facyldi(i)
355#include "vectorize.inc"
357 epsp1 = uparam(6+jj(i))
358 epsp2 = uparam(7+jj(i))
359 rfac(i) = (epsd(i) - epsp1) / (epsp2 - epsp1)
360 yfac(i,1) = uparam(6+nrate+jj(i)) * facyldi(i)
361 yfac(i,2) = uparam(7+nrate+jj(i)) * facyldi(i)
365#include "vectorize.inc"
371 ipos1(i) = vartmp(i,2+j1)
372 ipos2(i) = vartmp(i,2+j2)
373 iad1(i) = npf(fun1) / 2 + 1
374 ilen1(i) = npf(fun1+1) / 2 - iad1(i)-ipos1(i)
375 iad2(i) = npf(fun2) / 2 + 1
376 ilen2(i) = npf(fun2+1) / 2 - iad2(i)-ipos2(i)
379 CALL vinter(tf,iad1,ipos1,ilen1,nel,pla,dydx1,y1)
380 CALL vinter(tf,iad2,ipos2,ilen2,nel,pla,dydx2,y2)
382 IF (fisokin == zero)
THEN
383#include "vectorize.inc"
387 y1(i) = y1(i)*yfac(i,1)
388 y2(i) = y2(i)*yfac(i,2)
390 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
391 yld(i) =
max(yld(i),em20)
392 dydx1(i)=dydx1(i)*yfac(i,1)
393 dydx2(i)=dydx2(i)*yfac(i,2)
394 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
395 yld(i) = yld(i)*
max(zero,pfac(i))
396 h(i) = h(i)*
max(zero,pfac(i))
401 vartmp(i,2+j1) = ipos1(i)
402 vartmp(i,2+j2) = ipos2(i)
404 ELSEIF (fisokin == one)
THEN
405#include "vectorize.inc"
412 dydx1(i)=dydx1(i)*yfac(i,1)
413 dydx2(i)=dydx2(i)*yfac(i,2)
414 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
416 y1(i)=tf(npf(fun1)+1)
417 y2(i)=tf(npf(fun2)+1)
418 y1(i)=y1(i)*yfac(i,1)
419 y2(i)=y2(i)*yfac(i,2)
420 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
421 yld(i) = yld(i)*
max(zero,pfac(i))
422 h(i) = h(i)*
max(zero,pfac(i))
427 vartmp(i,2+j1) = ipos1(i)
428 vartmp(i,2+j2) = ipos2(i)
431#include "vectorize.inc"
437 y1(i)=y1(i)*yfac(i,1)
438 y2(i)=y2(i)*yfac(i,2)
440 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
441 yld(i) =
max(yld(i),em20)
442 dydx1(i)=dydx1(i)*yfac(i,1)
443 dydx2(i)=dydx2(i)*yfac(i,2)
444 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
445 y1(i)=tf(npf(fun1)+1)
446 y2(i)=tf(npf(fun2)+1)
447 y1(i)=y1(i)*yfac(i,1)
448 y2(i)=y2(i)*yfac(i,2)
449 yld(i) = (one - fisokin) * yld(i) +
450 . fisokin * (fail(i)*(y1(i) + fac
451 yld(i) = yld(i)*
max(zero,pfac(i))
452 h(i) = h(i)*
max(zero,pfac(i))
457 vartmp(i,2+j1) = ipos1(i)
458 vartmp(i,2+j2) = ipos2(i)
463 IF (yldcheck == 1)
THEN
465 yld(i) =
max(yld(i), em20)
471 IF (iplas(1) == 0)
THEN
475 svm2(i)= signxx(i)*signxx(i)
476 . + signyy(i)*signyy(i)
477 . - signxx(i)*signyy(i)
478 . + three*signxy(i)*signxy(i)
479 IF (svm2(i)>yld(i)*yld(i))
THEN
482 signxx(i)=signxx(i)*r
483 signyy(i)=signyy(i)*r
484 signxy(i)=signxy(i)*r
485 dpla_i(i) = off(i)*svm*(one-r)/(g3(i)+h(i))
486 pla(i) = pla(i) + dpla_i(i)
488 IF(yld(i) .NE. 0)
THEN
491 dezz = dpla_i(i) * half*(signxx(i)+signyy(i)) / yld(i)
495 dezz=-(depsxx(i)+depsyy(i))*nu_mnu-nu3*dezz
496 thk(i) = thk(i) + dezz*thkly(i)*off(i)
498 etse(i)= h(i)/(h(i)+e(i))
502 ELSEIF (iplas(1) == 1)
THEN
507 h(i) =
max(zero,h(i))
508 s1=signxx(i)+signyy(i)
509 s2=signxx(i)-signyy(i)
512 bb(i)= three_over_4*s2*s2 + three*s3*s3
517 dezz = -(depsxx(i)+depsyy(i))*nu_mnu
518 thk(i) = thk(i) + dezz*thkly(i)*off(i)
526 IF (svm2(i) > yld(i)*yld(i) .AND. off(i) == one)
THEN
536#include "vectorize.inc"
540 dpla_j(i)=(svm-yld(i))/(g3(i)+h(i))
541 etse(i)= h(i)/(h(i)+e(i))
542 hi(i) = h(i)*(one-fisokin)
543 hk(i) = two_third*h(i)*fisokin
548#include "vectorize.inc"
552 yld_i = yld(i) + hi(i)*dpla_i(i)
553 dr(i) = half*e(i)*dpla_i(i)/yld_i
554 aaa = three*hk(i)/e(i)
557 pp(i) = one/(one+dr(i)*nu11)
558 qq(i) = one/(one+dr(i)*nu21)
561 f = aa(i)*p2+bb(i)*q2-yld_i*yld_i
562 df =-(aa(i)*nu11*p2*pp(i)+bb(i)*nu21*q2*qq(i))
563 . *(e(i)-two*dr(i)*hi(i))/yld_i
565 df = sign(
max(abs(df),em20),df)
566 IF(dpla_i(i) > zero)
THEN
567 dpla_j(i)=
max(zero,dpla_i(i)-f/df)
576#include "vectorize.inc"
579 pla(i) = pla(i) + dpla_i(i)
580 s1=(signxx(i)+signyy(i))*pp(i)
581 s2=(signxx(i)-signyy(i))*qq(i)
582 signxx(i)=half*(s1+s2)
583 signyy(i)=half*(s1-s2)
584 signxy(i)=signxy(i)*qq(i)
586 dezz = - nu3*dr(i)*s1/e(i)
587 thk(i) = thk(i) + dezz*thkly(i)*off(i)
590 yld(i) =yld(i)+hi(i)*dpla_i(i)
594 ELSEIF (iplas(1) == 2)
THEN
599 h(i) =
max(zero,h(i))
600 svm2(i) = signxx(i)*signxx(i) + signyy(i)*signyy(i)
601 . - signxx(i)*signyy(i) + three*signxy(i)*signxy(i)
603 dezz = -(depsxx(i)+depsyy(i))*nu_mnu
604 thk(i) = thk(i) + dezz*thkly(i)*off(i)
612 yld2(i)=yld(i)*yld(i)
613 IF (svm2(i) > yld2(i) .AND. off(i
THEN
624#include "vectorize.inc"
627 a = (svm2(i)-yld2(i))
628 . / (five*svm2(i)+three*(-signxx(i)*signyy(i)+signxy(i)*signxy(i)))
629 s1= (one-two*a)*signxx(i)+ a*signyy(i)
630 s2= a*signxx(i)+(one-two*a)*signyy(i)
631 s3=(one-three*a)*signxy(i)
638 hk(i) = h(i)*(one-fisokin)
639 yld(i) =yld(i)+hk(i)*dpla_i(i)
644 svm = sqrt( signxx(i)*signxx(i)
645 . +signyy(i)*signyy(i)
646 . -signxx(i)*signyy(i)
647 . +three*signxy(i)*signxy(i))
648 r =
min(one,yld(i)/
max(em20,svm))
649 signxx(i)=signxx(i)*r
650 signyy(i)=signyy(i)*r
651 signxy(i)=signxy(i)*r
652 pla(i) = pla(i) + dpla_i(i)
654 dezz = dpla_i(i) * half*(signxx(i)+signyy(i)) / yld(i)
656 thk(i) = thk(i) + dezz*thkly(i)*off(i)
658 etse(i)= h(i)/(h(i)+e(i))
667 sigoxx(1:nel) = sigoxx(1:nel) - sigbxx(1:nel)
668 sigoyy(1:nel) = sigoyy(1:nel) - sigbyy(1:nel)
669 sigoxy(1:nel) = sigoxy(1:nel) - sigbxy(1:nel)
671 p0(1:nel) = -(sigoxx(1:nel) + sigoyy(1:nel))*third
672 signxx(1:nel) = sigoxx(1:nel)+a1(1:nel)*depsxx(1:nel)+a2(1:nel)*depsyy(1:nel)
673 signyy(1:nel) = sigoyy(1:nel)+a2(1:nel)*depsxx(1:nel)+a1(1:nel)*depsyy(1:nel)
674 signxy(1:nel) = sigoxy(1:nel)+g(1:nel) *depsxy(1:nel)
675 signyz(1:nel) = sigoyz(1:nel)+gs(1:nel) *depsyz(1:nel)
676 signzx(1:nel) = sigozx(1:nel)+gs(1:nel) *depszx(1:nel)
677 sigexx(1:nel) = signxx(1:nel)
678 sigeyy(1:nel) = signyy(1:nel)
679 sigexy(1:nel) = signxy(1:nel)
684 pscale(1:nel) = uparam(17 + 2*nrate )*p0(1:nel)
686 iposp(i) = vartmp(i,2)
687 iadp(i) = npf(ipfun) / 2 + 1
688 ilenp(i) = npf(ipfun) / 2 - iadp(i) - iposp(i)
690 CALL vinter2(tf,iadp,iposp,ilenp,nel,pscale,dfdp,pfac)
691 pfac(1:nel) =
max(zero, pfac(1:nel))
692 vartmp(1:nel,2) = iposp(1:nel)
699 plap(1:nel) = uvar(1:nel,2)
706 IF (plap(i) >= uparam(6+j)) jj(i) = j
710 IF (ismooth == 2)
THEN
711#include "vectorize.inc"
713 epsp1 =
max(uparam(6+jj(i)), em20)
714 epsp2 = uparam(7+jj(i))
715 rfac(i) = log(
max(plap(i),em20)/epsp1) / log(epsp2/epsp1)
718#include "vectorize.inc"
720 epsp1 = uparam(6+jj(i))
721 epsp2 = uparam(7+jj(i))
722 rfac(i) = (plap(i) - epsp1) / (epsp2 - epsp1)
725#include "vectorize.inc"
727 yfac(i,1) = uparam(6+nrate+jj(i)) * facyldi(i)
728 yfac(i,2) = uparam(7+nrate+jj(i)) * facyldi(i)
731#include"vectorize.inc"
737 ipos1(i) = vartmp(i,2+j1)
738 ipos2(i) = vartmp(i,2+j2)
739 iad1(i) = npf(fun1) / 2 + 1
740 ilen1(i) = npf(fun1+1) / 2 - iad1(i)-ipos1(i
741 iad2(i) = npf(fun2) / 2 + 1
742 ilen2(i) = npf(fun2+1) / 2 - iad2(i)-ipos2(i)
745 CALL vinter(tf,iad1,ipos1,ilen1,nel,pla,dydx1,y1)
746 CALL vinter(tf,iad2,ipos2,ilen2,nel,pla,dydx2,y2)
748 IF (fisokin == zero)
THEN
750#include "vectorize.inc"
754 y1(i)= y1(i)*yfac(i,1)
755 y2(i)= y2(i)*yfac(i,2)
757 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
758 yld(i) =
max(yld(i),em20)
759 dydx1(i)= dydx1(i)*yfac(i,1)
760 dydx2(i)= dydx2(i)*yfac(i,2)
761 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
762 yld(i) = yld(i)*
max(zero,pfac(i))
763 h(i) = h(i)*
max(zero,pfac(i))
768 vartmp(i,2+j1) = ipos1(i)
769 vartmp(i,2+j2) = ipos2(i)
772 ELSEIF (fisokin == one)
THEN
774#include "vectorize.inc"
781 dydx1(i)=dydx1(i)*yfac(i,1)
782 dydx2(i)=dydx2(i)*yfac(i,2)
783 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
784 y1(i) = tf(npf(fun1)+1)
785 y2(i) = tf(npf(fun2)+1)
786 y1(i) = y1(i)*yfac(i,1)
787 y2(i) = y2(i)*yfac(i,2)
788 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
789 yld(i) = yld(i)*
max(zero,pfac(i))
790 h(i) = h(i)*
max(zero,pfac(i))
795 vartmp(i,2+j1) = ipos1(i)
796 vartmp(i,2+j2) = ipos2(i)
801#include "vectorize.inc"
807 y1(i)= y1(i)*yfac(i,1)
808 y2(i)= y2(i)*yfac(i,2)
810 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
811 yld(i) =
max(yld(i),em20)
812 dydx1(i)= dydx1(i)*yfac(i,1)
813 dydx2(i)= dydx2(i)*yfac(i,2)
814 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
815 y1(i) = tf(npf(fun1)+1)
816 y2(i) = tf(npf(fun2)+1)
817 y1(i) = y1(i)*yfac(i,1)
818 y2(i) = y2(i)*yfac(i,2)
819 yld(i) = (one - fisokin) * yld(i) +
820 . fisokin * (fail(i)*(y1(i) + fac*(y2(i)-y1(i))))
821 yld(i) = yld(i)*
max(zero,pfac(i
827 vartmp(i,2+j1) = ipos1(i)
828 vartmp(i,2+j2) = ipos2(i)
837 h(i) =
max(zero,h(i))
838 s1=signxx(i)+signyy(i)
839 s2=signxx(i)-signyy(i)
845 dezz = -(depsxx(i)+depsyy(i))*nu_mnu
846 thk(i) = thk(i) + dezz*thkly(i)*off(i)
854 IF(svm2(i) > yld(i)*yld(i) .AND. off(i) == one)
THEN
864#include "vectorize.inc"
868 dpla_j(i)=(svm-yld(i))/(g3(i)+h(i))
869 etse(i)= h(i)/(h(i)+e(i))
870 hi(i) = h(i)*(one-fisokin)
871 hk(i) = two_third*h(i)*fisokin
876#include "vectorize.inc"
880 yld_i =yld(i)+hi(i)*dpla_i(i)
881 dr(i) =half*e(i)*dpla_i(i)/yld_i
882 aaa = three*hk(i)/e(i)
885 pp(i) = one/(one+dr(i)*nu11)
886 qq(i) = one/(one+dr(i)*nu21)
889 f = aa(i)*p2+bb(i)*q2-yld_i*yld_i
890 df =-(aa(i)*nu11*p2*pp(i)+bb(i)*nu21*q2*qq(i))
891 . *(e(i)-two*dr(i)*hi(i))/yld_i
893 df = sign(
max(abs(df),em20),df)
894 IF(dpla_i(i) > zero)
THEN
895 dpla_j(i)=
max(zero,dpla_i(i)-f/df)
904#include "vectorize.inc"
907 pla(i) = pla(i) + dpla_i(i)
909 s2=(signxx(i)-signyy(i))*qq(i)
910 signxx(i)=half*(s1+s2)
911 signyy(i)=half*(s1-s2)
912 signxy(i)=signxy(i)*qq(i)
914 dezz = - nu3*dr(i)*s1/e(i)
915 thk(i) = thk(i) + dezz*thkly(i)*off(i)
918 yld(i) =yld(i)+hi(i)*dpla_i(i)
930 IF (epsmax < ep20) dmg(i) = planl(i)/epsmax
931 IF (off(i) == one .AND. planl(i) > epsmax) off(i) = four_over_5
935 IF (epsmax < ep20) dmg(i) = pla(i)/epsmax
936 IF (off(i) == one .AND. pla(i) > epsmax) off(i) = four_over_5
939 ELSEIF (ifail == 2)
THEN
942 IF (epsmax < ep20) dmg(i) =
max(dmg(i),planl(i)/epsmax)
943 IF (off(i) == one .AND. (planl(i) > epsmax .OR. epst(i) > epsf)) off(i) = four_over_5
947 IF (epsmax < ep20) dmg(i) =
max
948 IF (off(i) == one .AND. (pla(i) > epsmax .OR. epst(i) > epsf)) off(i) = four_over_5
956 IF (dpla_i(i) > zero)
THEN
958 gama_imp(i)= three_half*dpla_i(i)/yld(i)
960 signor(i,4)=fisokin*h(i)
961 signor(i,5)=(one-fisokin)*h(i)
963 signor(i,1)=third*(two*signxx(i)-signyy(i))
964 signor(i,2)=third*(two*signyy(i)-signxx(i))
965 signor(i,3)=two*signxy(i)
976 dtinv = one/
max(timestep,em20)
978 plap(i) = asrate*dpla_i(i)*dtinv + (one - asrate)*uvar(i,2)
985 IF (fisokin > zero)
THEN
988 alpha = hkin*dpla_i(i)/yld(i)
989 sigpxx = alpha*signxx(i)
990 sigpyy = alpha*signyy(i)
991 sigpxy = alpha*signxy(i)
993 sigbxx(i) = sigbxx(i) + sigpxx
994 sigbyy(i) = sigbyy(i) + sigpyy
995 sigbxy(i) = sigbxy(i) + sigpxy
997 signxx(i) = signxx(i) + sigbxx(i)
998 signyy(i) = signyy(i) + sigbyy(i)
999 signxy(i) = signxy(i) + sigbxy(i)
1013 IF (loff(i) == one)
THEN
1014 svm = sqrt(signxx(i)*signxx(i)
1015 . + signyy(i)*signyy(i)
1016 . - signxx(i)*signyy(i)
1017 . + three*signxy(i)*signxy(i))
1018 dezz =
max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/
max(svm,em20)
1019 dezz = -nux*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/e(i)) - dezz