36 1 NEL0 ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,
37 2 NPF ,NPT0 ,IPT ,IFLAG ,ASRATE ,
38 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,
39 3 AREA ,EINT ,THKLY ,L_DMG ,DMG ,
40 4 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
41 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
42 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
43 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
44 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
45 9 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
46 A SOUNDSP,VISCMAX,THK ,PLA ,UVAR ,
47 B OFF ,NGL ,IPM ,MAT ,ETSE ,
48 C GS ,YLD ,EPSD_PG ,TABLE ,EPSD )
55#include "implicit_f.inc"
111#include "param_c.inc"
117 INTEGER NEL0, NUPARAM, NUVAR, NPT0, IPT,IFLAG(*),
118 . NGL(NEL0),(NEL0),IPM(NPROPMI,*),NSG
119 my_real TIME,TIMESTEP(NEL0),UPARAM(*),
120 . AREA(NEL0),RHO0(NEL0),EINT(,2),
122 . EPSPXX(NEL0),EPSPYY(),
123 . EPSPXY(NEL0),EPSPYZ(NEL0),EPSPZX(NEL0),
124 . DEPSXX(NEL0),DEPSYY(NEL0),
125 . DEPSXY(NEL0),DEPSYZ(NEL0),DEPSZX(NEL0),
126 . EPSXX() ,EPSYY(NEL0) ,
127 . EPSXY(NEL0) ,EPSYZ(NEL0) ,EPSZX(NEL0)
129(NEL0),SIGOYZ(NEL0),(NEL0),
132 INTEGER,
INTENT(IN) :: L_DMG
137 . SIGNXX(NEL0),SIGNYY(NEL0),
138 . SIGNXY(NEL0),SIGNYZ(),SIGNZX(NEL0),
139 . SIGVXX(NEL0),SIGVYY(NEL0),
140 . (NEL0),SIGVYZ(NEL0),SIGVZX(NEL0),
141 . SOUNDSP(NEL0),VISCMAX(NEL0),ETSE(NEL0)
145 my_real uvar(nel0,nuvar), off(nel0),thk(nel0),yld(nel0)
146 my_real,
DIMENSION(NEL0,L_DMG),
INTENT(INOUT) :: dmg
147 my_real ,
INTENT(IN) :: asrate
148 my_real ,
DIMENSION(NEL0) ,
INTENT(IN) :: epsd_pg
149 my_real ,
DIMENSION(NEL0) ,
INTENT(INOUT) :: epsd
153 INTEGER NPF(*), MFUNC, KFUNC(MFUNC),ITER, IFLA
154 my_real FINTER ,TF(*)
167 INTEGER I,J,(MVSIZ),J1,J2,NINDX,NMAX,,NFUNC,
168 . iad1(mvsiz),ipos1(mvsiz),ilen1(mvsiz),
169 . iad2(mvsiz),ipos2(mvsiz),ilen2(mvsiz),
170 . jj(mvsiz),index(mvsiz),nratem,
171 . nrate1,ifunc(mfunc),iadbufv,
172 . nfuncm,israte,iyeild_tab,
173 . itab(100),ntable,nxh,ndim,ipos,nxk,mx
178 . f(mvsiz), sigm(mvsiz), epsp1(mvsiz),
179 . lamda(mvsiz), fstar(mvsiz),p0(mvsiz),pn(mvsiz),
184 . sigxx(mvsiz),sigyy(mvsiz),sigxy(mvsiz),
185 . sigzx(mvsiz),sigyz(mvsiz),en
188 . dp11,dp22,dp33,dp12,dp13,dp23,a22,a11,
189 . d11,d22,d33,d12,d13,d23,dcrf,dcrm, dsepp,dcd,lam1,
190 . c2,df,coh,sih,va,crit,conv,fg(mvsiz),fn1(mvsiz),yldc,
191 . c11,p1, var,c1,nn1,dezz,
192 . dtinv,sqr22, va1, va2, vm1, sigm1, sigm2, a21,yp1,yp2,
193 . df1,df2, xfac,yfac,dx2,xx(2),dft,yy
200 ntable = ipm(226,mat(1))
204 itab(1)=ipm(227,mat(1))
205 iadbuf = ipm(7,mat(1))-1
206 xfac = uparam(iadbuf + 22 )
207 yfac = uparam(iadbuf + 23 )
210 iadbufv = ipm(7,mx)-1
211 e = uparam(iadbufv+1)
212 nu = uparam(iadbufv+2)
213 yeild0 = uparam(iadbufv+3)
214 et = uparam(iadbufv+4)
215 en = uparam(iadbufv+5)
216 csd = one/uparam(iadbufv+6)
217 visp = uparam(iadbufv+7)
218 q1 = uparam(iadbufv+8)
219 q2 = uparam(iadbufv+9)
220 q3 = uparam(iadbufv+10)
221 sn = uparam(iadbufv+11)
222 IF(sn==zero) sn = ep20
223 epsn = uparam(iadbufv+12)
224 fi = uparam(iadbufv+13)
225 fn = uparam(iadbufv+14)
226 fc = uparam(iadbufv+15)
227 ff = uparam(iadbufv+16)
228 fu = uparam(iadbufv+17)
229 ifla = nint(uparam(iadbufv+18))
230 israte = nint(uparam(iadbufv+19))
234 g = half*e/(one + nu)
236 c1 = e*(one -nu) /((one + nu)*(one - two*nu))
237 c2 = c1*nu/(one - nu)
244 IF (en<one) pla(i) = em20
250 IF(iyeild_tab > 0)
THEN
260 sqr22 = one/sqrt(two*pi)
272 signxx(i) = sigoxx(i) + a1 * depsxx(i) + a2 * depsyy(i)
273 signyy(i) = sigoyy(i) + a2 * depsxx(i) + a1 * depsyy(i)
274 signxy(i) = sigoxy(i) + g * depsxy(i)
275 signyz(i) = sigoyz(i) + gs(i) *depsyz
276 signzx(i) = sigozx(i) + gs(i) *depszx(i)
278 soundsp(i) = sqrt(a1/rho0(i))
284 IF (israte == 0)
THEN
285 epsd(i) = half*( abs(epspxx(i)+epspyy(i))
286 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
287 . + epspxy(i)*epspxy(i) ) )
289 epsd(i) = asrate*epsd_pg(i) + (one-asrate)*epsd(i)
292 dezz = -nn1*(depsxx(i) + depsyy(i))
293 thk(i) = thk(i) + dezz*thkly(i)*off(i)
313 fstar(i) = fc + df*(f(i)-fc)
315 vm = (signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i)
316 . + three * (signxy(i)**2 + signzx(i)**2 + signyz(i)**2))
318 pn(i) = (signxx(i)+signyy(i)) * third
319 sigm1 = one/
max(em20, sigm(i))
320 var = three_half * q2* pn(i) * sigm1
322 coh = half * (var + one/
max(em20,var))
323 sih = half * (var - one/
max(em20,var))
325 va = one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
326 va = sqrt(
max(zero,va))
331 IF(vm < yldc .OR. yldc == zero )
THEN
347 dtinv =timestep(i)/
max(timestep(i)**2,em20)
351 a21 = sigm1 /(one - f(i))
353 a11 = fn*exp(-half*((pla(i)-epsn)/sn)**2)/sn
357 vm1 = one/
max(em20, vm)
358 va1 = one/
max(em20, va)
359 va2 = half * q1*q2*fstar(i)*sih*va1
360 d11 = half * (two*signxx(i)-signyy(i))*vm1 + va2
361 d22 = half * (two*signyy(i)-signxx(i))*vm1 + va2
362 d33 = half * (-signxx(i)-signyy(i))*vm1 + va2
363 d12 = three * signxy(i)*vm1
364 d13 = three * signzx(i)*vm1
365 d23 = three * signyz(i)*vm1
366 a22 = d11 * signxx(i) + d22 * signyy(i) +
367 . two*(d12 * signxy(i) + d13 * signzx(i) +
371 dcrf = - sigm(i)*(q3*fstar(i)*df - q1*coh*df)*va1
372 dcrm = - va - three*va2*pn(i)*sigm1
373 dsepp = et * en * pla(i) ** (en - one)*
374 . (one + ( epsd(i)*csd)**visp)
375 dcd = c1*(d11**2 + d22**2 + d33**2) +
376 . two*c2*(d11*d22 + d11*d33 + d22*d33) +
377 . two*g * d12**2 + 2*gs(i) * ( d13**2 + d23**2 )
379 lam1= dcd - dcrm * dsepp * a22 -
380 . dcrf *((one -f(i)) * (d11 + d22 + d33) + a11*a22)
381 IF(lam1/=zero)lamda(i)=
max(zero,( vm - yldc ))/lam1
382 dp11 = dp11 + lamda(i) * d11
383 dp22 = dp22 + lamda(i) * d22
384 dp33 = dp33 + lamda(i) * d33
385 dp12 = dp12 + lamda(i) * d12
386 dp13 = dp13 + lamda(i) * d13
387 dp23 = dp23 + lamda(i) * d23
389 signxx(i)= sigxx(i) - a1 * dp11 - a2 * dp22
390 signyy(i)= sigyy(i) - a1 * dp22 - a2 * dp11
391 signxy(i)= sigxy(i) - two*g * dp12
392 signzx(i)= sigzx(i) - two*gs(i) * dp13
393 signyz(i)= sigyz(i) - two*gs(i) * dp23
395 epsp1(i)= signxx(i) * dp11 + signyy(i) * dp22 +
396 . two*(signxy(i) * dp12 + signzx(i) * dp13 +
398 epsp1(i)= epsp1(i)* a21
399 epsp1(i) =
max(zero, epsp1(i))
400 vm = signxx(i)**2 + signyy(i)**2
401 . + three*(signxy(i)**2 + signzx(i)**2 +signyz(i)**2)
402 . - signxx(i)*signyy(i)
405 pn(i) = (signxx(i)+signyy(i))*third
406 var = three_half * q2 * pn(i) * sigm1
408 coh = half * ( var + one/
max(em20,var))
409 sih = half * ( var - one/
max(em20,var))
410 va = one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
411 va= sqrt(
max(zero,va))
416 vm1 = one/
max(em20, vm)
417 va1 = one/
max(em20, va)
418 va2 = half * q1*q2*fstar(i)*sih*va1
419 d11 = half * (two*signxx(i)-signyy(i))*vm1 + va2
420 d22 = half * (two*signyy(i)-signxx(i))*vm1 + va2
421 d33 = half*( - signxx(i)-signyy(i))*vm1 + va2
422 d12 = three * signxy(i) * vm1
423 d13 = three * signzx(i) * vm1
424 d23 = three * signyz(i) * vm1
425 a22 = d11 * signxx(i) + d22 * signyy(i) +
426 . two*(d12 * signxy(i) + d13 * signzx(i) +
429 dcrf = - sigm(i)*(q3*fstar(i)*df - q1*coh*df)*va1
430 dcrm = - va - three*va2*pn(i)*sigm1
431 dsepp = et*(one+ ( epsd(i)*csd)**visp)
432 dcd = c1*(d11**2 + d22**2 + d33**2) +
433 . two*c2*(d11*d22 + d11*d33 + d22*d33) +
434 . two*g*d12**2 + two*gs(i)*( d13**2 + d23**2)
436 lam1= dcd - dcrm * dsepp * a22 -
437 . dcrf *((one - f(i)) * (d11 + d22+d33) + a11*a22)
438 IF(lam1/=zero) lamda(i)=
max(zero,( vm - yldc ))/lam1
439 dp11 = dp11 + lamda(i) * d11
440 dp22 = dp22 + lamda(i) * d22
441 dp33 = dp33 + lamda(i) * d33
442 dp12 = dp12 + lamda(i) * d12
443 dp13 = dp13 + lamda(i) * d13
446 signxx(i)= sigxx(i) - a1 * dp11 - a2 * dp22
447 signyy(i)= sigyy(i) - a1 * dp22 - a2 * dp11
448 signxy(i)= sigxy(i) - two*g * dp12
449 signzx(i)= sigzx(i) - two*gs(i) * dp13
450 signyz(i)= sigyz(i) - two*gs(i) * dp23
452 epsp1(i)= signxx(i) * dp11 + signyy(i) * dp22 +
453 . two*(signxy(i) * dp12 + signzx(i) * dp13 +
455 epsp1(i)= epsp1(i)*a21
456 epsp1(i) =
max(zero, epsp1(i))
457 vm = signxx(i)**2 + signyy(i)**2
458 . + three*(signxy(i)**2 + signzx(i)**2 + signyz(i)**2)
459 . - signxx(i)*signyy(i)
462 pn(i) = (signxx(i)+signyy(i))*third
463 var = three_half * q2 * pn(i) * sigm1
465 coh = half * ( var + one/
max(em20,var))
466 sih = half * ( var - one/
max(em20,var))
467 va = one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
468 va = sqrt(
max(zero,va))
473 etse( i) = dsepp/(dsepp+e)
474 dezz = nn1*(dp11 +dp22) + dp33
475 thk(i) = thk(i) + dezz*thkly(i)*off(i)
476 fg(i) = fg(i) + (one - f(i)) * (dp11 + dp22 +dp33)
477 fn1(i) = fn1(i) + a11 * epsp1(i)
478 pla(i) = pla(i) + epsp1(i)
479 f(i) = fi + fg(i) + fn1(i)
483 IF(f(i)<zero)f(i)=zero
484 sigm(i)= (yeild0 + et*pla(i)**en)* (one+(epsd(i)*csd)**visp)
492 fstar(i) =fc+(fu-fc)*(f(i)-fc)/(ff-fc)
498 IF(off(i)==one.AND.fstar(i)>=ff) off(i)=four_over_5
511 df =(fu - fc)/(ff - fc)
512 fstar(i) = fc + df*(f(i)-fc)
515 vm = (signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i)
516 . + three*(signxy(i)**2 + signzx(i)**2 + signyz(i)**2))
517 pn(i) = (signxx(i)+signyy(i))*third
518 sigm1 = one/
max(em20,sigm(i))
520 var = three_half * q2 * pn(i) * sigm1
522 coh = half *(var + one/
max(em20,var))
523 sih = half *(var - one/
max(em20,var))
526 va = one + q3*fstar(i)**2 - two*q1*fstar(i)
528 va= one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
533 crit = vm * sigm2 - va
534 yld( i ) = sigm(i) * sqrt(
max(zero,va))
535 IF(crit < zero .OR. yld(i) == zero )
THEN
550 dtinv =timestep(i)/
max(timestep(i)**2,em20)
555 a21 = sigm1 /(one - f(i))
557 a11 = fn*exp(-half*((pla(i)-epsn)/sn)**2)/sn
563 d11 = (two*signxx(i)-signyy(i))*sigm2
564 d22 = (two*signyy(i)-signxx(i))*sigm2
565 d33 = ( - signxx(i) - signyy(i))*sigm2
566 d12 = six*signxy(i)*sigm2
567 d13 = six*signzx(i)*sigm2
568 d23 = six*signyz(i)*sigm2
569 dcrm = -two*vm*sigm1*sigm2
570 dcrf = two*q1*df - two*q3*df*fstar(i)
572 va2 = q1 * q2 * fstar(i) * sih * sigm1
573 d11 = (two*signxx(i) - signyy(i))*sigm2 + va2
574 d22 = (two*signyy(i) - signxx(i))*sigm2 + va2
575 d33 = ( - signxx(i) - signyy(i))*sigm2 + va2
576 d12 = six*signxy(i)*sigm2
577 d13 = six*signzx(i)*sigm2
578 d23 = six*signyz(i)*sigm2
579 dcrm = -two*vm*sigm1*sigm2 - three*va2*pn(i)*sigm1
580 dcrf = two * q1 * df * coh - two*q3*df*fstar(i)
583 a22 = d11*signxx(i) + d22*signyy(i) +
584 . three*(d12*signxy(i)+ d13*signzx(i)+ d23*signyz(i))
586 dsepp = et * en * pla(i) ** (en - 1)*
587 . (one + ( epsd(i)*csd)**visp)
589 . two*c2*(d11*d22 + d11*d33 + d22*d33) +
590 . two*g*d12**2 + two*gs(i)*( d13**2 + d23**2)
592 lam1= dcd - dcrm * dsepp*a22 -
593 . dcrf*((one-f(i))*(d11 + d22 +d33) + a11*a22)
594 IF(lam1/=zero) lamda(i) =
max(zero,(vm*sigm2 - va))/lam1
596 dp11 = dp11 + lamda(i) * d11
597 dp22 = dp22 + lamda(i) * d22
598 dp33 = dp33 + lamda(i) * d33
599 dp12 = dp12 + lamda(i) * d12
600 dp13 = dp13 + lamda(i) * d13
603 signxx(i) = sigxx(i) - a1*dp11 - a2*dp22
604 signyy(i) = sigyy(i) - a1*dp22 - a2*dp11
605 signxy(i) = sigxy(i) - two*g*dp12
606 signzx(i)= sigzx(i) - two*gs(i)*dp13
607 signyz(i)= sigyz(i) - two*gs(i)*dp23
609 epsp1(i)= signxx(i)*dp11 + signyy(i)*dp22 +
610 . two*(signxy(i)*dp12 + signzx(i)*dp13 + signyz(i)*dp23)
611 epsp1(i) = epsp1(i)*a21
612 epsp1(i) =
max(zero, epsp1(i))
613 vm= signxx(i)**2 + signyy(i)**2
614 . + three*(signxy(i)**2 + signzx(i)**2 + signyz(i)**2)
615 . - signxx(i)*signyy(i)
617 pn(i) = (signxx(i) + signyy(i)) * third
618 var = three_half * q2*pn(i)*sigm1
620 coh = half * (var + one/
max(em20,var))
621 sih = half * (var - one/
max(em20,var))
624 va = one + q3*fstar(i)**2 - two*q1*fstar(i)
626 va = one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
634 d11 = (two*signxx(i)-signyy(i))*sigm2
635 d22 = (two*signyy(i)-signxx(i))*sigm2
636 d33 = ( - signxx(i) - signyy
637 d12 = six*signxy(i)*sigm2
638 d13 = six*signzx(i)*sigm2
639 d23 = six*signyz(i)*sigm2
640 dcrm = -two*vm*sigm1*sigm2
641 dcrf = two*q1*df - two*q3*df*fstar(i)
643 va2 = q1 * q2 * fstar(i) * sih * sigm1
644 d11 = (two*signxx(i) - signyy(i))*sigm2 + va2
645 d22 = (two*signyy(i) - signxx(i))*sigm2 + va2
646 d33 = ( - signxx(i) - signyy(i))*sigm2 + va2
647 d12 = six*signxy(i)*sigm2
648 d13 = six*signzx(i)*sigm2
649 d23 = six*signyz(i)*sigm2
650 dcrm = -two*vm*sigm1*sigm2 - three*va2*pn(i)*sigm1
651 dcrf = two * q1 * df * coh - two*q3*df*fstar(i)
654 a22 = d11*signxx(i) + d22*signyy(i) +
655 . three*(d12*signxy(i)+ d13*signzx(i
657 dsepp = et*(one+ ( epsd(i)*csd)**visp)
658 dcd = c1*(d11**2 + d22**2 + d33**2) +
659 . two*c2*(d11*d22 + d11*d33 + d22*d33) +
660 . two*g*d12**2 + 2*gs(i)*( d13**2 + d23**2)
662 lam1= dcd - dcrm * dsepp*a22 -
663 . dcrf*((one -f(i))*(d11 + d22 + d33) + a11*a22)
664 IF(lam1/=zero)lamda(i) =
max(zero,(vm*sigm2 - va))/lam1
666 dp11 = dp11 + lamda(i) * d11
667 dp22 = dp22 + lamda(i) * d22
668 dp33 = dp33 + lamda(i) * d33
669 dp12 = dp12 + lamda(i) * d12
670 dp13 = dp13 + lamda(i) * d13
671 dp23 = dp23 + lamda(i) * d23
673 signxx(i) = sigxx(i) - a1*dp11 - a2*dp22
674 signyy(i) = sigyy(i) - a1*dp22 - a2*dp11
675 signxy(i) = sigxy(i) - two*g*dp12
676 signzx(i)= sigzx(i) - two*gs(i)*dp13
677 signyz(i)= sigyz(i) - two*gs(i)*dp23
679 epsp1(i)= signxx(i)*dp11 + signyy(i)*dp22 +
680 . two*(signxy(i)*dp12 + signzx(i)*dp13 + signyz(i)*dp23)
681 epsp1(i) = epsp1(i)*a21
683 epsp1(i) =
max(zero, epsp1(i))
684 vm= signxx(i)**2 + signyy(i)**2
685 . + three*(signxy(i)**2 + signzx(i)**2 + signyz(i)**2)
686 . - signxx(i)*signyy(i)
688 pn(i) = (signxx(i) + signyy(i)) * third
689 var = three_half * q2*pn(i)*sigm1
691 coh = half * (var + one/
max(em20,var))
692 sih = half * (var - one/
max(em20,var))
695 va = one + q3*fstar(i)**2 - two*q1*fstar(i)
697 va = one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
702 yld(i ) = sigm(i)*sqrt(
max(zero,va))
703 etse( i) = dsepp/(dsepp+e)
704 dezz = nn1*(dp11 +dp22) + dp33
705 thk(i) = thk(i) + dezz*thkly(i)*off(i)
706 fg(i) = fg(i) + (one - f(i))*(dp11 + dp22 + dp33)
707 fn1(i) = fn1(i) + a11*epsp1(i)
708 pla(i) = pla(i) + epsp1(i)
709 f(i) = fi + fg(i) + fn1(i)
713 IF(f(i)<zero)f(i)=zero
714 sigm(i)= (yeild0 + et*pla(i)**en)*(one+(epsd(i)*csd)**visp)
722 fstar(i) = fc+ (fu-fc)*(f(i)-fc)/(ff-fc)
734 IF(off(i)==one.AND.fstar(i)>=ff) off(i)=four_over_5
748 df =(fu - fc)/(ff - fc)
749 fstar(i) = fc + df*(f(i)-fc)
752 vm = (signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i)
753 . + three*(signxy(i)**2 + signzx(i)**2 + signyz(i)**2))
754 pn(i) = (signxx(i)+signyy(i))*third
756 sigm1 = one/
max(em20,sigm(i))
758 var = three_half * q2 * pn(i) * sigm1
760 coh = half *(var + one/
max(em20,var))
761 sih = half *(var - one/
max(em20,var))
764 va = one + q3*fstar(i)**2 - two*q1*fstar(i)
766 va= one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
771 crit = vm * sigm2 - va
773 yld( i ) = sigm(i) * sqrt(
max(zero,va))
774 IF(crit < zero .OR. yld(i) == zero)
THEN
791 dtinv =timestep(i)/
max
796 a21 = sigm1 /(one - f(i))
798 a11 = fn*exp(-half*((pla(i)-epsn)/sn)**2)/sn
803 d11 = (two*signxx(i)-signyy(i))*sigm2
804 d22 = (two*signyy(i)-signxx(i))*sigm2
805 d33 = ( - signxx(i) - signyy(i))*sigm2
806 d12 = six*signxy(i)*sigm2
807 d13 = six*signzx(i)*sigm2
808 d23 = six*signyz(i)*sigm2
809 dcrm = -two*vm*sigm1*sigm2
810 dcrf = two*q1*df - two*q3*df*fstar(i)
812 va2 = q1 * q2 * fstar(i) * sih * sigm1
813 d11 = (two*signxx(i) - signyy(i))*sigm2 + va2
814 d22 = (two*signyy(i) - signxx(i))*sigm2 + va2
815 d33 = ( - signxx(i) - signyy(i))*sigm2 + va2
816 d12 = six*signxy(i)*sigm2
817 d13 = six*signzx(i)*sigm2
818 d23 = six*signyz(i)*sigm2
819 dcrm = -two*vm*sigm1*sigm2 - three*va2*pn(i)*sigm1
820 dcrf = two * q1 * df * coh - two*q3*df*fstar(i)
823 a22 = d11*signxx(i) + d22*signyy(i) +
824 . three*(d12*signxy(i)+ d13*signzx(i)+ d23*signyz(i))
827 dsepp = et * en * pla(i) ** (en - one)*
828 . (one + ( epsd(i)*csd)**visp)
830 dcd = c1*(d11**2 + d22**2 + d33**2) +
831 . two*c2*(d11*d22 + d11*d33 + d22*d33) +
832 . two*g*d12**2 + two*gs(i)*( d13**2 + d23**2)
834 lam1= dcd - dcrm * dsepp*a22 -
835 . dcrf*((1-f(i))*(d11 + d22 +d33) + a11*a22)
836 IF(lam1/=zero) lamda(i) =
max(zero,(vm*sigm2 - va))/lam1
838 dp11 = dp11 + lamda(i) * d11
840 dp33 = dp33 + lamda(i) * d33
841 dp12 = dp12 + lamda(i) * d12
842 dp13 = dp13 + lamda(i) * d13
843 dp23 = dp23 + lamda(i) * d23
845 signxx(i) = sigxx(i) - a1*dp11 - a2*dp22
846 signyy(i) = sigyy(i) - a1*dp22 - a2*dp11
847 signxy(i) = sigxy(i) - two*g*dp12
848 signzx(i)= sigzx(i) - two*gs(i)*dp13
849 signyz(i)= sigyz(i) - two*gs(i)*dp23
851 epsp1(i)= signxx(i)*dp11 + signyy(i)*dp22 +
852 . two*(signxy(i)*dp12 + signzx(i)*dp13 + signyz(i)*dp23)
853 epsp1(i) = epsp1(i)*a21
854 epsp1(i) =
max(zero, epsp1(i))
856 vm= signxx(i)**2 + signyy(i)**2
857 . + three*(signxy(i)**2 + signzx(i)**2 + signyz(i)**2)
858 . - signxx(i)*signyy(i)
860 pn(i) = (signxx(i) + signyy(i))*third
861 var = three_half * q2*pn(i)*sigm1
863 coh = half * (var + one/
max(em20,var))
864 sih = half * (var - one/
max(em20,var))
867 va = one + q3*fstar(i)**2 - two*q1*fstar(i)
869 va = one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
876 d11 = (two*signxx(i)-signyy(i))*sigm2
877 d22 = (two*signyy(i)-signxx(i))*sigm2
878 d33 = ( - signxx(i) - signyy(i))*sigm2
879 d12 = six*signxy(i)*sigm2
880 d13 = six*signzx(i)*sigm2
881 d23 = six*signyz(i)*sigm2
882 dcrm = -two*vm*sigm1*sigm2
883 dcrf = two*q1*df - two*q3*df*fstar(i)
885 va2 = q1 * q2 * fstar(i) * sih * sigm1
886 d11 = (two*signxx(i) - signyy(i))*sigm2 + va2
887 d22 = (two*signyy(i) - signxx(i))*sigm2 + va2
888 d33 = ( - signxx(i) - signyy(i))*sigm2 + va2
889 d12 = six*signxy(i)*sigm2
890 d13 = six*signzx(i)*sigm2
891 d23 = six*signyz(i)*sigm2
892 dcrm = -two*vm*sigm1*sigm2 - three*va2*pn(i)*sigm1
893 dcrf = two * q1 * df * coh - two*q3*df*fstar(i)
896 a22 = d11*signxx(i) + d22*signyy(i) +
897 . three*(d12*signxy(i)+ d13*signzx(i)+ d23*signyz(i))
900 dsepp = et*(1+ ( epsd(i)*csd)**visp)
901 dcd = c1*(d11**2 + d22**2 + d33**2) +
902 . two*c2*(d11*d22 + d11*d33 + d22*d33) +
903 . two*g*d12**2 + two*gs(i)*( d13**2 + d23**2)
905 lam1= dcd - dcrm * dsepp*a22 -
906 . dcrf*((one -f(i))*(d11 + d22 + d33) + a11*a22)
907 IF(lam1/=zero)lamda(i) =
max(zero,(vm*sigm2 - va))/lam1
909 dp11 = dp11 + lamda(i) * d11
910 dp22 = dp22 + lamda(i) * d22
911 dp33 = dp33 + lamda(i) * d33
912 dp12 = dp12 + lamda(i) * d12
913 dp13 = dp13 + lamda(i) * d13
914 dp23 = dp23 + lamda(i) * d23
916 signxx(i) = sigxx(i) - a1*dp11 - a2*dp22
917 signyy(i) = sigyy(i) - a1*dp22 - a2*dp11
918 signxy(i) = sigxy(i) - two*g*dp12
919 signzx(i) = sigzx(i) - two*gs(i)*dp13
920 signyz(i) = sigyz(i) - two*gs(i)*dp23
922 epsp1(i)= signxx(i)*dp11 + signyy(i)*dp22 +
923 . two*(signxy(i)*dp12 + signzx(i)*dp13 + signyz(i)*dp23)
924 epsp1(i) = epsp1(i)*a21
926 epsp1(i) =
max(zero, epsp1(i))
927 vm= signxx(i)**2 + signyy(i)**2
928 . + three*(signxy(i)**2 + signzx(i)**2 + signyz(i)**2)
929 . - signxx(i)*signyy(i)
931 pn(i) = (signxx(i) + signyy(i))*third
932 var = three_half * q2*pn(i)*sigm1
934 coh = half * (var + one/
max(em20,var))
935 sih = half * (var - one/
max(em20,var))
938 va = one + q3*fstar(i)**2 - two*q1*fstar(i)
940 va = one + q3*fstar(i)**2 - two
944 yld(i) = sigm(i) * sqrt(
max(zero, va))
945 etse( i) = dsepp/(dsepp+e)
946 dezz = nn1*(dp11 +dp22) + dp33
947 thk(i) = thk(i) + dezz*thkly(i)*off(i)
949 fg(i) = fg(i) + (one - f(i))*(dp11 + dp22 + dp33)
951 pn(i) = (signxx(i) + signyy(i))*third
952 IF (pn(i)>=zero) fn1(i) = fn1(i) + a11*epsp1(i)
953 pla(i) = pla(i) + epsp1(i)
954 f(i) = fi + fg(i) + fn1(i)
958 IF(f(i)<zero)f(i)=zero
959 sigm(i)= (yeild0 + et*pla(i)**en)*(one+(epsd(i)*csd)**visp)
967 fstar(i) = fc+ (fu-fc)*(f(i)-fc)/(ff-fc)
980 IF(off(i)==one.AND.fstar(i)>=ff) off(i)=four_over_5
996 fstar(i) = fc + df*(f(i)-fc)
998 vm = (signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i)
999 . + three * (signxy(i)**2 + signzx(i)**2 + signyz(i)**2))
1001 pn(i) = (signxx(i)+signyy(i))*third
1003 sigm1 = one/
max(em20, sigm(i))
1004 var = three_half * q2 * pn(i) * sigm1
1006 coh = half * (var + one/
max(em20,var))
1007 sih = half * (var - one/
max(em20,var))
1009 va = one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
1010 va = sqrt(
max(zero,va))
1016 IF(vm < yldc .OR. yldc == zero)
THEN
1021 sigxx(i) = signxx(i)
1022 sigyy(i) = signyy(i)
1024 sigzx(i) = signzx(i)
1025 sigyz(i) = signyz(i)
1033 dtinv =timestep(i)/
max(timestep(i)**2,em20)
1038 a21 = sigm1 /(one - f(i))
1040 a11 = fn*exp(-half*((pla(i)-epsn
1045 vm1 = one/
max(em20, vm)
1046 va1 = one/
max(em20, va)
1047 va2 = half * q1*q2*fstar(i)*sih*va1
1048 d11 = half * (two*signxx(i)-signyy(i))*vm1 + va2
1049 d22 = half * (two*signyy(i)-signxx(i))*vm1 + va2
1050 d33 = half* (-signxx(i)-signyy(i))*vm1 + va2
1051 d12 = three * signxy(i)*vm1
1052 d13 = three * signzx(i)*vm1
1053 d23 = three * signyz(i)*vm1
1054 a22 = d11 * signxx(i) + d22 * signyy(i) +
1055 . two*(d12 * signxy(i) + d13 * signzx
1059 dcrf = - sigm(i)*(q3*fstar(i)*df - q1*coh*df)*va1
1060 dcrm = - va - three*va2*pn(i)*sigm1
1061 dsepp = et * en * pla(i) ** (en - 1)*
1062 . (one+ ( epsd(i)*csd)**visp)
1063 dcd = c1*(d11**2 + d22**2 + d33**2) +
1064 . two*c2*(d11*d22 + d11*d33 + d22*d33) +
1065 . two*g * d12**2 + two*gs(i) * ( d13**2 + d23**2 )
1067 lam1= dcd - dcrm * dsepp * a22 -
1068 . dcrf *((one - f(i)) * (d11 + d22 + d33) + a11*a22)
1070 IF(lam1/=zero)lamda(i) =
max(zero,( vm - yldc )) / lam1
1072 dp11 = dp11 + lamda(i) * d11
1073 dp22 = dp22 + lamda(i) * d22
1074 dp33 = dp33 + lamda(i) * d33
1075 dp12 = dp12 + lamda(i) * d12
1076 dp13 = dp13 + lamda(i) * d13
1077 dp23 = dp23 + lamda(i) * d23
1079 signxx(i)= sigxx(i) - a1 * dp11 - a2 * dp22
1080 signyy(i)= sigyy(i) - a1 * dp22 - a2 * dp11
1081 signxy(i)= sigxy(i) - two*g * dp12
1082 signzx(i)= sigzx(i) - two*gs(i) * dp13
1083 signyz(i)= sigyz(i) - two*gs(i) * dp23
1085 epsp1(i)= signxx(i) * dp11 + signyy(i) * dp22 +
1086 . two*(signxy(i) * dp12 + signzx(i) * dp13 +
1087 . signyz(i) * dp23 )
1088 epsp1(i)= epsp1(i)* a21
1089 epsp1(i) =
max(zero, epsp1(i))
1090 vm = signxx(i)**2 + signyy(i)**2
1091 . + three*(signxy(i)**2 + signzx(i)**2 + signyz(i)**2)
1092 . - signxx(i)*signyy(i)
1095 pn(i) = (signxx(i)+signyy(i))* third
1096 var = three_half * q2 * pn(i) * sigm1
1098 coh = half * ( var + one/
max(em20,var))
1099 sih = half * ( var - one/
max(em20,var))
1100 va = one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
1101 va= sqrt(
max(zero,va))
1108 vm1 = one/
max(em20, vm)
1109 va1 = one/
max(em20, va)
1110 va2 = half * q1*q2*fstar(i)*sih*va1
1111 d11 = half * (two*signxx(i)-signyy(i))*vm1 + va2
1112 d22 = half * (two*signyy(i)-signxx(i))*vm1 + va2
1113 d33 = half*( - signxx(i)-signyy(i))*vm1 + va2
1114 d12 = three * signxy(i) * vm1
1115 d13 = three * signzx(i) * vm1
1116 d23 = three * signyz(i) * vm1
1117 a22 = d11 * signxx(i) + d22 * signyy(i) +
1118 . two *(d12 * signxy(i) + d13 * signzx(i) +
1122 dcrf = - sigm(i)*(q3*fstar(i)*df - q1*coh*df)*va1
1123 dcrm = - va - three*va2*pn(i)*sigm1
1124 dsepp = et*(one + ( epsd(i)*csd)**visp)
1125 dcd = c1*(d11**2 + d22**2 + d33**2) +
1126 . two*c2*(d11*d22 + d11*d33 + d22*d33) +
1127 . two*g * d12**2 + two *gs(i) * ( d13**2 + d23**2)
1129 lam1= dcd - dcrm * dsepp * a22 -
1130 . dcrf *((one -f(i)) * (d11 + d22+d33) + a11*a22)
1131 IF(lam1/=zero) lamda(i) =
max(zero,( vm - yldc )) / lam1
1134 dp11 = dp11 + lamda(i) * d11
1135 dp22 = dp22 + lamda(i) * d22
1136 dp33 = dp33 + lamda(i) * d33
1137 dp12 = dp12 + lamda(i) * d12
1138 dp13 = dp13 + lamda(i) * d13
1139 dp23 = dp23 + lamda(i) * d23
1141 signxx(i)= sigxx(i) - a1 * dp11 - a2 * dp22
1142 signyy(i)= sigyy(i) - a1 * dp22 - a2 * dp11
1143 signxy(i)= sigxy(i) - 2*g * dp12
1144 signzx(i)= sigzx(i) - 2*gs(i) * dp13
1145 signyz(i)= sigyz(i) - 2*gs(i) * dp23
1147 epsp1(i)= signxx(i) * dp11 + signyy(i) * dp22 +
1148 . two*(signxy(i) * dp12 + signzx(i) * dp13 +
1149 . signyz(i) * dp23 )
1150 epsp1(i)= epsp1(i)*a21
1151 epsp1(i) =
max(zero, epsp1(i))
1152 vm = signxx(i)**2 + signyy(i)**2
1153 . + three*(signxy(i)**2 + signzx(i)**2 + signyz(i)**2)
1154 . - signxx(i)*signyy(i)
1157 pn(i) = (signxx(i)+signyy(i))* third
1158 var = three_half * q2 * pn(i) * sigm1
1160 coh = half * ( var + one/
max(em20,var))
1161 sih = half * ( var - one/
max(em20,var))
1162 va = one + q3*fstar(i)**2 - two*q1*fstar(i)*coh
1163 va = sqrt(
max(zero,va))
1170 etse( i) = dsepp/(dsepp+e)
1171 dezz = nn1*(dp11 +dp22) + dp33
1172 thk(i) = thk(i) + dezz*thkly(i)*off(i)
1174 pn(i) = (sigxx(i) + sigyy(i))*third
1175 fg(i) = fg(i) + (one - f(i)) * (dp11 + dp22 +dp33)
1177 IF (pn(i)>=zero) fn1(i) = fn1(i) + a11*epsp1(i)
1178 pla(i) = pla(i) + epsp1(i)
1179 f(i) = fi + fg(i) + fn1(i)
1182 . q3==zero)f(i)=zero
1184 sigm(i)= (yeild0 + et*pla(i)**en)* (one+(epsd(i)*csd)**visp)
1192 fstar(i) = fc+ (fu-fc)*(f(i)-fc)/(ff-fc)
1203 IF(off(i)==one.AND.fstar(i)>=ff) off(i)=four_over_5
1210 IF(iyeild_tab > 0)
THEN
1211 iadbuf = ipm(7,mat(1))-1
1212 xfac = uparam(iadbuf + 22 )
1213 yfac = uparam(iadbuf + 23 )
1215 ndim= table(itab(1))%NDIM
1217 nxk=
SIZE(table(itab(1))%X(2)%VALUES)
1219 dx2 = table(itab(1))%X(2)%VALUES(j)*xfac- epsd(i)
1220 IF(dx2 >= zero .OR. j == nxk)
THEN
1222 r=(table(itab(1))%X(2)%VALUES(j)*xfac-epsd(i))/
1223 . (table(itab(1))%X(2)%VALUES(j)*xfac
1224 . -table(itab(1))%X(2)%VALUES(j-1)*xfac)
1233 xx(2) = epsd(i)*xfac