31 1 NEL ,NUVAR ,ILAY ,NPT0 ,
32 2 TIME ,TIMESTEP,UPARAM ,
33 3 NGL ,OFF ,NOFF ,SIGNXX ,
34 4 SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
35 5 UVAR ,NUPARAM ,DFMAX ,TDELE ,EPSP ,
42#include "implicit_f.inc"
86 INTEGER NEL,NUPARAM,ILAY,NPT0,NUVAR
88 INTEGER,
INTENT(IN) :: LF_DAMMX
90 . TIME,TIMESTEP(NEL),UPARAM(NUPARAM),
91 . SIGNXX(NEL),SIGNYY(NEL),SIGNZZ(NEL),
92 . signxy(nel),signyz(nel),signzx(nel),
103 my_real UVAR(NEL,), OFF(NEL), TDELE(NEL)
104 my_real ,
DIMENSION(NEL,LF_DAMMX) ,
INTENT(INOUT) :: DFMAX
109 . i,j,idel,idel_l,iflag,indx(mvsiz),iadbuf,nindx,
110 . nindex,index(mvsiz),ifail,jj,kk,ir,imatly,
111 . imodel,iunidir,ifabric,indx0(mvsiz),nindx0,
112 . mode(mvsiz,7),imode,failnpt,tmod
115 . sigc1,sigc2,csig,fsig12,
116 . msig12(mvsiz),msig23(mvsiz),msig13(mvsiz),angle,
117 . sdel,tmax,ratio,fac,s12,s23,
118 . f1,f2,f3,f4,f5,sig,p,f6,f7,epspref,filt,
alpha,fs(nel),
119 . telem,k2m,instf,k0,k1,k2,k3,zep669741,dtinv,km,
123 zep669741 = six*em01 + six*em02 + nine*em3 + seven*em04 + four*em05 + em06
125 imodel = int(uparam(1))
133 msig12(1:mvsiz) = uparam(9)
134 msig13(1:mvsiz) = uparam(10)
135 msig23(1:mvsiz) = uparam(11)
139 iflag = int(uparam(16))
141 tmod = int(uparam(19))
146 IF (iflag == 3) ratio = one - one/ npt0
166 ELSEIF(imodel == 2)
THEN
172 IF(off(i) < em01) off(i)=zero
173 IF(off(i) < one) off(i)=off(i)*four_over_5
204 dtinv = timestep(i)/
max(timestep
210 epsp(i)=(one -
alpha)*uvar(i,11) +
alpha*epsp(i)
212 IF(off(i) == one .AND. imodel == 1)
THEN
218 IF (uvar(i,8) < one)
THEN
220 telem =
max((timestep(i)*1.0),tmax*(epspref/epsp(i))**2)
221 uvar(i,8)=uvar(i,8)*exp(-timestep(i)/telem)
222 ELSEIF(tmod == 2)
THEN
224 uvar(i,8) = exp(-(time - uvar(i,7))/telem)
226 uvar(i,8)= exp(-(time - uvar(i,7))/tmax)
228 IF (uvar(i,8) < em02) uvar(i,8) = zero
229 signxx(i) = uvar(i,1)*uvar(i,8)
230 signyy(i) = uvar(i,2)*uvar(i,8)
231 signzz(i) = uvar(i,3)*uvar(i,8)
232 signxy(i) = uvar(i,4)*uvar(i,8)
233 signyz(i) = uvar(i,5)*uvar(i,8)
234 signzx(i) = uvar(i,6)*uvar(i,8)
235 IF (uvar(i,8) == zero )
THEN
246 sig = half*(signxx(i) + abs(signxx(i)))
248 . + (signxy(i)**2 + signzx(i)**2)/fsig12**2
249 dfmax(i,2) =
max(dfmax(i,2),f1)
250 dfmax(i,2) =
min(dfmax(i,2),one)
251 sig = -half*(signyy(i) + signzz(i))
252 sig = - signxx(i) + half*(sig + abs(sig))
253 sig = half*(sig + abs(sig))
255 dfmax(i,3) =
max(dfmax(i,3),f2)
256 dfmax(i,3) =
min(dfmax(i,3),one)
257 p = -third*(signxx(i) + signyy(i) + signzz(i))
258 IF(p > 0) f3 = (p/csig)**2
259 dfmax(i,4) =
max(dfmax(i,4),f3)
260 dfmax(i,4) =
min(dfmax(i,4),one)
267 IF(signyy(i) < zero)
THEN
268 s12 = msig12(i) - signyy(i)*fac
269 s23 = msig23(i) - signyy(i)*fac
272 sig = half*(signyy(i) + abs(signyy(i)))
274 . + (signyz(i)/s23)**2 + (signxy(i)/s12)**2
275 dfmax(i,5) =
max(dfmax(i,5),f4)
276 dfmax(i,5) =
min(dfmax(i,5),one)
278 IF(signzz(i) < zero)
THEN
279 msig13(i) = msig13(i) - signzz(i)*fac
280 msig23(i) = msig23(i) - signzz(i)*fac
282 sig = half*(signzz(i) + abs(signzz(i)))
285 . (signyz(i)/msig23(i))**2 + (signzx(i)/msig13(i))**2
287 dfmax(i,6) =
max(dfmax(i,6),f5)
288 dfmax(i,6) =
min(dfmax(i,6),one)
290 dfmax(i,1) =
min(one,
max(dfmax(i,1),f1,f2,f3,f4,f5))
291 uvar(i,10) =
max(f1,f2,f3,f4,f5)
293 IF(f1 >= one .OR. f2 >= one .OR. f3 >= one .OR.
294 . f4 >= one .OR. f5 >= one )
THEN
295 uvar(i,1) = signxx(i)
296 uvar(i,2) = signyy(i)
297 uvar(i,3) = signzz(i)
298 uvar(i,4) = signxy(i)
299 uvar(i,5) = signyz(i)
300 uvar(i,6) = signzx(i)
303 uvar(i,8) = four_over_5
307 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
308 . abs(signzz(i)),abs(signxy(i)),abs(signyz(i)),
310 k0 = fac*epspref**2*zep669741*tmax**2 + zep9*epspref*tmax
312 k2 = zep669741*fac*epsp(i)**2
313 k2m = zep669741*fac*km*epspref**2
314 k2 =
max(k2m,k2,em20)
315 telem = (sqrt(k1**2+4*k2*k0)-k1)/2/k2
347 IF (uvar(i,8) == zero )
THEN
354 ELSEIF (uvar(i,8) < one)
THEN
356 telem =
max((timestep(i)*1.0),tmax*(epspref/epsp(i))**2)
357 uvar(i,8)=uvar(i,8)*exp(-timestep(i)/telem)
358 ELSEIF(tmod == 2)
THEN
360 uvar(i,8)= exp(-(time - uvar(i,7))/telem )
362 uvar(i,8)= exp(-(time - uvar(i,7))/tmax)
364 IF(uvar(i,8) < em02)uvar(i,8) = zero
365 signxx(i) = uvar(i,1)*uvar(i,8)
366 signyy(i) = uvar(i,2)*uvar(i,8)
367 signzz(i) = uvar(i,3)*uvar(i,8)
368 signxy(i) = uvar(i,4)*uvar(i,8)
369 signyz(i) = uvar(i,5)*uvar(i,8)
370 signzx(i) = uvar(i,6)*uvar(i,8)
371 IF (uvar(i,8) == zero )
THEN
372 noff(i) = noff(i) + 1
373 failnpt = int(npt0*ratio)
374 IF (noff(i) >= failnpt .OR. npt0 == 1)
THEN
385 sig = half*(signxx(i) + abs(signxx(i)))
387 . + (signxy(i)**2 + signzx(i)**2)/fsig12**2
388 dfmax(i,2) =
max(dfmax(i,2),f1)
389 dfmax(i,2) =
min(dfmax(i,2),one)
390 sig = -half*(signyy(i) + signzz(i))
392 sig = half*(sig + abs(sig))
394 dfmax(i,3) =
max(dfmax(i,3),f2)
395 dfmax(i,3) =
min(dfmax(i,3),one)
396 p = -third*(signxx(i) + signyy(i) + signzz(i))
397 IF(p > 0) f3 = (p/csig)**2
398 dfmax(i,4) =
max(dfmax(i,4),f3)
399 dfmax(i,4) =
min(dfmax(i,4),one)
406 IF(signyy(i) < zero)
THEN
407 s12 = msig12(i) - signyy(i)*fac
408 s23 = msig23(i) - signyy(i)*fac
411 sig = half*(signyy(i) + abs(signyy(i)))
413 . + (signyz(i)/s23)**2 + (signxy(i)/s12)**2
414 dfmax(i,5) =
max(dfmax(i,5),f4)
415 dfmax(i,5) =
min(dfmax(i,5),one)
417 IF(signzz(i) < zero)
THEN
418 msig13(i) = msig13(i) - signzz(i)*fac
419 msig23(i) = msig23(i) - signzz(i)*fac
421 sig = half*(signzz(i) + abs(signzz
423 . (signyz(i)/msig23(i))**2 + (signzx(i)/msig13(i))**2
425 dfmax(i,6) =
max(dfmax(i,6),f5)
426 dfmax(i,6) =
min(dfmax(i,6),one)
428 dfmax(i,1) =
min(one,
max(dfmax(i,1),f1,f2,f3,f4,f5))
430 uvar(i,10) =
max(f1,f2,f3,f4,f5)
431 IF(f1 >= one .OR. f2 >= one .OR. f3 >= one .OR.
432 . f4 >= one .OR. f5 >= one )
THEN
434 uvar(i,2) = signyy(i)
435 uvar(i,3) = signzz(i)
436 uvar(i,4) = signxy(i)
437 uvar(i,5) = signyz(i)
438 uvar(i,6) = signzx(i)
441 uvar(i,8) = four_over_5
445 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
448 k0 = fac*epspref**2*zep669741*tmax**2 + zep9*epspref*tmax
450 k2 = zep669741*fac*epsp(i)**2
451 k2m = zep669741*fac*km*epspref**2
452 k2 =
max(k2m,k2,em20)
453 telem = (sqrt(k1**2+4*k2*k0)-k1)/2/k2
504 dtinv = timestep(i)/
max(timestep(i)**2,em20)
510 epsp(i)=(one -
alpha)*uvar(i,11) +
alpha*epsp(i)
512 IF(off(i) == one .AND. imodel /= 1)
THEN
514 IF(uvar(i,8) < one)
THEN
516 telem =
max((timestep(i)*1.0),tmax*(epspref/epsp(i))**2)
517 uvar(i,8)=uvar(i,8)*exp(-timestep(i)/telem)
518 ELSEIF(tmod == 2)
THEN
520 uvar(i,8)= exp(-(time - uvar(i,7))/telem)
522 uvar(i,8)= exp(-(time - uvar(i,7))/tmax)
524 IF(uvar(i,8) < em02)uvar(i,8) = zero
525 signxx(i) = uvar(i,1)*uvar(i,8)
526 signyy(i) = uvar(i,2)*uvar(i,8)
527 signzz(i) = uvar(i,3)*uvar(i,8)
528 signxy(i) = uvar(i,4)*uvar(i,8)
529 signyz(i) = uvar(i,5)*uvar(i,8)
530 signzx(i) = uvar(i,6)*uvar(i,8)
531 IF(uvar(i,8) == zero )
THEN
541 sig = half*(signxx(i) + abs(signxx(i)))
543 . + (signxy(i)**2 + signzx(i)**2)/fsig12**2
544 dfmax(i,2) =
max(dfmax(i,2),f1)
545 dfmax(i,2) =
min(dfmax(i,2),one)
547 sig = half*(signyy(i) + abs(signyy(i)))
548 fsig12up = fsig12*sigt2/sigt1
550 . + (signxy(i)**2 + signyz(i)**2)/fsig12up**2
551 dfmax(i,3) =
max(dfmax(i,3),f2)
552 dfmax(i,3) =
min(dfmax(i,3),one)
554 sig = half*(-signzz(i) + abs(signzz(i)))
555 IF(-signxx(i) + sig > zero)
556 . f3 = ((-signxx(i) + sig)/sigc1)**2
557 dfmax(i,4) =
max(dfmax(i,4),f3)
558 dfmax(i,4) =
min(dfmax(i,4),one)
560 IF(-signyy(i) + sig > zero)
561 . f4 = ((-signyy(i) + sig)/sigc2)**2
562 dfmax(i,5) =
max(dfmax(i,5),f4)
563 dfmax(i,5) =
min(dfmax(i,5),one)
565 p = -third*(signxx(i) + signyy(i) + signzz(i))
566 IF(p > zero) f5 = (p/csig)**2
567 dfmax(i,6) =
max(dfmax(i,6),f5)
568 dfmax(i,6) =
min(dfmax(i,6),one)
570 f6 = (signxy(i)/msig12(i))**2
572 dfmax(i,7) =
min(dfmax(i,7),one)
574 sig = half*(signzz(i) + abs(signzz(i)))
575 IF(signzz(i) < zero)
THEN
577 msig13(i) = msig13(i) - signzz(i)*fac
578 msig23(i) = msig23(i) - signzz(i)*fac
584 f7 = (sig/sigt3)**2 +
585 . (signyz(i)/msig23(i))**2 + (signzx(i)/msig13(i))**2
588 dfmax(i,8) =
max(dfmax(i,8),f7)
589 dfmax(i,8) =
min(dfmax(i,8),one)
591 dfmax(i,1) =
min(one,
max(dfmax(i,1),f1,f2,f3,f4,f5,f6,f7))
593 uvar(i,10) =
max(f1,f2,f3,f4,f5,f6,f7)
594 IF(f1 >= one .OR. f2 >= one .OR. f3 >= one .OR.
595 . f4 >= one .OR. f5 >= one .OR. f6 >= one .OR.
597 uvar(i,1) = signxx(i)
598 uvar(i,2) = signyy(i)
599 uvar(i,3) = signzz(i)
600 uvar(i,4) = signxy(i)
601 uvar(i,5) = signyz(i)
602 uvar(i,6) = signzx(i)
605 uvar(i,8) = four_over_5
609 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
610 . abs(signzz(i)),abs(signxy(i)),abs(signyz(i)),
612 k0 = fac*epspref**2*zep669741*tmax**2
614 k2 = zep669741*fac*epsp(i)**2
615 k2m = zep669741*fac*km*epspref**2
616 k2 =
max(k2m,k2,em20)
617 telem = (sqrt(k1**2+4*k2*k0)-k1)/2/k2
658 IF(uvar(i,8) == zero)
THEN
665 ELSEIF(uvar(i,8) < one)
THEN
667 telem =
max((timestep(i)*1.0),tmax*(epspref/epsp(i))**2)
668 uvar(i,8)=uvar(i,8)*exp(-timestep(i)/telem)
669 ELSEIF(tmod == 2)
THEN
671 uvar(i,8)=exp(-(time - uvar(i,7))/telem)
673 uvar(i,8)= exp(-(time - uvar(i,7))/tmax)
675 IF(uvar(i,8) < em02)uvar(i,8) = zero
676 signxx(i) = uvar(i,1)*uvar(i,8)
677 signyy(i) = uvar(i,2)*uvar(i,8)
678 signzz(i) = uvar(i,3)*uvar(i,8)
679 signxy(i) = uvar(i,4)*uvar(i,8)
680 signyz(i) = uvar(i,5)*uvar(i,8)
681 signzx(i) = uvar(i,6)*uvar(i,8)
682 IF(uvar(i,8) == zero )
THEN
683 noff(i) = noff(i) + 1
684 failnpt = int((npt0*ratio))
685 IF( npt0 == 1 .OR. noff(i) >= failnpt )
THEN
696 sig = half*(signxx(i) + abs(signxx(i)))
698 . + (signxy(i)**2 + signzx(i)**2)/fsig12**2
699 dfmax(i,2) =
max(dfmax(i,2),f1)
700 dfmax(i,2) =
min(dfmax(i,2),one)
702 sig = half*(signyy(i) + abs(signyy(i)))
703 fsig12up = fsig12*sigt2/sigt1
705 . + (signxy(i)**2 + signyz(i)**2)/fsig12up**2
706 dfmax(i,3) =
max(dfmax(i,3),f2)
707 dfmax(i,3) =
min(dfmax(i,3),one)
709 sig = half*(-signzz(i) + abs(signzz(i)))
710 IF(-signxx(i) + sig > zero)
711 . f3 = ((-signxx(i) + sig)/sigc1)**2
712 dfmax(i,4) =
max(dfmax(i,4),f3)
713 dfmax(i,4) =
min(dfmax(i,4),one)
715 IF(-signyy(i) + sig > zero)
716 . f4 = ((-signyy(i) + sig)/sigc2)**2
717 dfmax(i,5) =
max(dfmax(i,5),f4)
718 dfmax(i,5) =
min(dfmax(i,5),one)
720 p = -third*(signxx(i) + signyy(i) + signzz(i))
721 IF(p > zero) f5 = (p/csig)**2
722 dfmax(i,6) =
max(dfmax(i,6),f5)
723 dfmax(i,6) =
min(dfmax(i,6),one)
725 f6 = (signxy(i)/msig12(i))**2
726 dfmax(i,7) =
max(dfmax(i,7),f6)
729 sig = half*(signzz(i) + abs(signzz(i)))
730 IF(signzz(i) < zero)
THEN
732 msig13(i) = msig13(i) - signzz(i)*fac
733 msig23(i) = msig23(i) - signzz(i)*fac
737 . (signyz(i)/msig23(i))**2 + (signzx(i)/msig13(i))**2
740 dfmax(i,8) =
max(dfmax(i,8),f7)
741 dfmax(i,8) =
min(dfmax(i,8),one)
743 dfmax(i,1) =
min(one,
max(dfmax(i,1),f1,f2,f3,f4,f5,f6,f7))
744 uvar(i,10) =
max(f1,f2,f3,f4,f5,f6,f7)
746 IF(f1 >= one .OR. f2 >= one .OR. f3 >= one
747 . f4 >= one .OR. f5 >= one .OR. f6 >= one .OR.
749 uvar(i,1) = signxx(i)
750 uvar(i,2) = signyy(i)
751 uvar(i,3) = signzz(i)
752 uvar(i,4) = signxy(i)
753 uvar(i,5) = signyz(i)
754 uvar(i,6) = signzx(i)
757 uvar(i,8) = four_over_5
762 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
763 . abs(signzz(i)),abs(signxy(i)),abs(signyz(i)),
765 k0 = fac*epspref**2*zep669741*tmax**2 + zep9*epspref*tmax
767 k2 = zep669741*fac*epsp(i)**2
768 k2m = zep669741*fac*km*epspref**2
769 k2 =
max(k2m,k2,em20)
770 telem = (sqrt(k1**2+4*k2*k0)-k1)/2/k2
820 WRITE(iout, 1100) ilay,ngl(i),imode,time
821 WRITE(iout, 1110) uvar(i,1),uvar(i,2),uvar(i,3)
822 WRITE(iout, 1115) uvar(i,4),uvar(i,6),uvar(i,5)
823 WRITE(istdo,1100) ilay,ngl(i),imode,time
824 WRITE(istdo,1110) uvar(i,1),uvar(i,2),uvar(i,3)
825 WRITE(istdo,1115) uvar(i,4),uvar(i,6),uvar(i,5)
826#include "lockoff.inc"
841 WRITE(iout, 1200) ngl(i),ilay,int(uvar(i,9)),time
842 WRITE(iout, 1210) uvar(i,1),uvar(i,2),uvar(i,3)
843 WRITE(iout, 1215) uvar(i,4),uvar(i,6),uvar(i,5)
844 WRITE(istdo,1200) ngl(i),ilay,int(uvar(i,9)),time
845 WRITE(istdo,1210) uvar(i,1),uvar(i,2),uvar(i,3)
846 WRITE(istdo,1215) uvar(i,4),uvar(i,6),uvar(i,5)
847#include "lockoff.inc"
853 1000
FORMAT(1x,
'FAILURE ELEMENT-1 #',i10,1x,
854 .
'LAYER # ',i10,1x,
'MODE #',i10)
856 1100
FORMAT(1x,
'FAILURE LAYER #',i10,1x,
857 .
'ELEMENT #',i10,1x,
'HASHIN MODE #',i10,1x,
'AT TIME #:',1pe12.4)
858 1110
FORMAT(1x,
'RESPONSIBLE STRESS: SIG_11= ',1pe12.4,1x,
859 .
'SIG_22= ',1pe12.4,1x,
'SIG_33= ',1pe12.4)
860 1115
FORMAT(1x,'responsible stress: sig_12=
',1PE12.4,1X,
861 .'sig_23=
',1PE12.4,1X,'sig_13=
',1PE12.4)
862 2000 FORMAT(1X,'failure element
#',I10,1X,
863 .
'LAYER # ',i10,1x,
'MODE #',i10)
865 2100
FORMAT(1x,
'FAILURE ELEMENT-2 #',i10
866 .
'LAYER #',i10,1x,
'AT TIME #:',1pe12.4,1x,
'MODE #',i10)
867 1200
FORMAT(1x,
'DELETE SOLID ELEMENT # ',i10,1x,
'Failed layer # ',i10,
868 . 1x,
' HASHIN mode # ',i10,1x,
'AT TIME # ',1pe12.4)
869 1210
FORMAT(1x,
'RESPONSIBLE STRESS: SIG_11= ',1pe12.4,1x,
870 .
'SIG_22= ',1pe12.4,1x,
'SIG_33= ',1pe12.4)
871 1215
FORMAT(1x,
'RESPONSIBLE STRESS: SIG_12= ',1pe12.4,1x,
872 .
'SIG_13= ',1pe12.4,1x,
'SIG_23= ',1pe12.4,1x)