37
38
39
40
41
42#include "implicit_f.inc"
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78#include "mvsiz_p.inc"
79#include "com01_c.inc"
80#include "units_c.inc"
81#include "comlock.inc"
82#include "param_c.inc"
83
84
85
86 INTEGER NEL,NUPARAM,ILAY,NPT0,NUVAR
87 INTEGER NGL(NEL)
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),
93 . epsp(nel)
94
95
96
97
98
99
100
101
102 INTEGER NOFF(NEL)
103 my_real uvar(nel,nuvar), off(nel), tdele(nel)
104 my_real ,
DIMENSION(NEL,LF_DAMMX) ,
INTENT(INOUT) :: dfmax
105
106
107
108 integer
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
114 . sigt1,sigt2,sigt3,
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,
120 . fsig12up
121
122
123 zep669741 = six*em01 + six*em02 + nine*em3 + seven*em04 + four*em05 + em06
124
125 imodel = int(uparam(1))
126 sigt1 = uparam(2)
127 sigt2 = uparam(3)
128 sigt3 = uparam(4)
129 sigc1 = uparam(5)
130 sigc2 = uparam(6)
131 csig = uparam(7)
132 fsig12 = uparam(8)
133 msig12(1:mvsiz) = uparam(9)
134 msig13(1:mvsiz) = uparam(10)
135 msig23(1:mvsiz) = uparam(11)
136 angle = uparam(12)
137 sdel = uparam(13)
138 tmax = uparam(14)
139 iflag = int(uparam(16))
140 ratio = uparam(17)
141 tmod = int(uparam(19))
142 epspref = uparam(20)
143 filt = uparam(21)
144 km = uparam(22)
145 nindx0 = 0
146 IF (iflag == 3) ratio = one - one/ npt0
147 DO i=1,nel
148 indx(i) = 0
149 indx0(i) = 0
150 ENDDO
151
152
153
154 IF(isigi == 0) THEN
155 IF(time == zero)THEN
156 DO i=1,nel
157 uvar(i,8) = one
158 ENDDO
159 ENDIF
160 ENDIF
161
162 iunidir = 0
163 ifabric = 0
164 IF(imodel == 1)THEN
165 iunidir = 1
166 ELSEIF(imodel == 2)THEN
167 ifabric = 1
168 ENDIF
169
170
171 DO i=1,nel
172 IF(off(i) < em01) off(i)=zero
173 IF(off(i) < one) off(i)=off(i)*four_over_5
174
175 mode(i,1) = 0
176 mode(i,2) = 0
177 mode(i,3) = 0
178 mode(i,4) = 0
179 mode(i,5) = 0
180 mode(i,6) = 0
181 mode(i,7) = 0
182 END DO
183
184
185
186
187
188
189
190
191 IF(iunidir > 0)THEN
192 nindx=0
193 indx = 0
194 indx0=0
195 nindx0 = 0
196
197 DO i=1,nel
198 f1 =zero
199 f2 =zero
200 f3 =zero
201 f4 = zero
202 f5 = zero
203
204 dtinv = timestep(i)/
max(timestep(i)**2,em20)
206
208 fs(i)=uvar(i,10)
209
210 epsp(i)=(one -
alpha)*uvar(i,11) +
alpha*epsp(i)
211 uvar(i,11)=epsp(i)
212 IF(off(i) == one .AND. imodel == 1)THEN
213
214 IF(iflag == 1) THEN
215
216
217
218 IF (uvar(i,8) < one)THEN
219 IF(tmod == 1) 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
223 telem = uvar(i,12)
224 uvar(i,8) = exp(-(time - uvar(i,7))/telem)
225 ELSE
226 uvar(i,8)= exp(-(time - uvar(i,7))/tmax)
227 ENDIF
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
236 off(i)=four_over_5
237 nindx=nindx+1
238 indx(nindx)=i
239 tdele(i) = time
240
241 ENDIF
242 ELSE
243
244
245
246 sig = half*(signxx(i) + abs(signxx(i)))
247 f1=(sig/sigt1)**2
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))
254 f2 = (sig /sigc1)**2
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)
261
262
263
264 fac=tan(angle)
265 s12 = msig12(i)
266 s23 = msig23(i)
267 IF(signyy(i) < zero) THEN
268 s12 = msig12(i) - signyy(i)*fac
269 s23 = msig23(i) - signyy(i)*fac
270 ENDIF
271
272 sig = half*(signyy(i) + abs(signyy(i)))
273 f4=(sig/sigt2)**2
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)
277
278 IF(signzz(i) < zero) THEN
279 msig13(i) = msig13(i) - signzz(i)*fac
280 msig23(i) = msig23(i) - signzz(i)*fac
281 ENDIF
282 sig = half*(signzz(i) + abs(signzz(i)))
283
284 f5= (sig/sigt3)**2 +
285 . (signyz(i)/msig23(i))**2 + (signzx(i)/msig13(i))**2
286 f5 = sdel*sdel*f5
287 dfmax(i,6) =
max(dfmax(i,6),f5)
288 dfmax(i,6) =
min(dfmax(i,6),one)
289
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)
292
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)
301 uvar(i,7) = time
302 IF(tmod == 0) THEN
303 uvar(i,8) = four_over_5
304 ELSE
305 uvar(i,8) = zep99
306 ENDIF
307 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
308 . abs(signzz(i)),abs(signxy(i)),abs(signyz(i)),
309 . abs(signzx(i)))
310 k0 = fac*epspref**2*zep669741*tmax**2 + zep9*epspref*tmax
311 k1 = zep9*epsp(i)
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
316 uvar(i,12) = telem
317 IF (f1>=one) THEN
318 mode(i,1) = 1
319 kk = 1
320 ENDIF
321 IF (f2>=one) THEN
322 mode(i,2) = 2
323 kk = 2
324 ENDIF
325 IF (f3>=one) THEN
326 mode(i,3) = 3
327 kk = 3
328 ENDIF
329 IF (f4>=one) THEN
330 mode(i,4) = 4
331 kk = 4
332 ENDIF
333 IF (f5>=one) THEN
334 mode(i,5) = 5
335 kk = 5
336 ENDIF
337 uvar(i,9) = kk
338 nindx0=nindx0+1
339 indx0(nindx0)=i
340 ENDIF
341 ENDIF
342
343 ELSE
344
345
346
347 IF (uvar(i,8) == zero )THEN
348 signxx(i) = zero
349 signyy(i) = zero
350 signzz(i) = zero
351 signxy(i) = zero
352 signzx(i) = zero
353 signyz(i) = zero
354 ELSEIF (uvar(i,8) < one) THEN
355 IF(tmod == 1) 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
359 telem = uvar(i,12)
360 uvar(i,8)= exp(-(time - uvar(i,7))/telem )
361 ELSE
362 uvar(i,8)= exp(-(time - uvar(i,7))/tmax)
363 ENDIF
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
375 nindx=nindx+1
376 indx(nindx)=i
377 off(i) = four_over_5
378 tdele(i) = time
379 ENDIF
380 ENDIF
381 ELSE
382
383
384
385 sig = half*(signxx(i) + abs(signxx(i)))
386 f1=(sig/sigt1)**2
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))
391 sig = - signxx(i) + half*(sig + abs(sig))
392 sig = half*(sig + abs(sig))
393 f2 = (sig /sigc1)**2
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)
400
401
402
403 fac=tan(angle)
404 s12 = msig12(i)
405 s23 = msig23(i)
406 IF(signyy(i) < zero) THEN
407 s12 = msig12(i) - signyy(i)*fac
408 s23 = msig23(i) - signyy(i)*fac
409 ENDIF
410
411 sig = half*(signyy(i) + abs(signyy(i)))
412 f4=(sig/sigt2)**2
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)
416
417 IF(signzz(i) < zero) THEN
418 msig13(i) = msig13(i) - signzz(i)*fac
419 msig23(i) = msig23(i) - signzz(i)*fac
420 ENDIF
421 sig = half*(signzz(i) + abs(signzz(i)))
422 f5= (sig/sigt3)**2 +
423 . (signyz(i)/msig23(i))**2 + (signzx(i)/msig13(i))**2
424 f5 = sdel*sdel*f5
425 dfmax(i,6) =
max(dfmax(i,6),f5)
426 dfmax(i,6) =
min(dfmax(i,6),one)
427
428 dfmax(i,1) =
min(one,
max(dfmax(i,1),f1,f2,f3,f4,f5))
429
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
433 uvar(i,1) = signxx(i)
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)
439 uvar(i,7) = time
440 IF(tmod == 0) THEN
441 uvar(i,8) = four_over_5
442 ELSE
443 uvar(i,8) = zep99
444 ENDIF
445 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
446 . abs(signzz(i)),abs(signxy(i)),abs(signyz(i)),
447 . abs(signzx(i)))
448 k0 = fac*epspref**2*zep669741*tmax**2 + zep9*epspref*tmax
449 k1 = zep9*epsp(i)
450 k2 = zep669741*fac*epsp(i)**2
451 k2m
452 k2 =
max(k2m,k2,em20)
453 telem = (sqrt(k1**2+4*k2*k0)-k1)/2/k2
454 uvar(i,12) = telem
455 nindx0= nindx0+1
456 indx0(nindx0)=i
457 IF (f1>=one) THEN
458 mode(i,1) = 1
459 kk =1
460 ENDIF
461 IF (f2>=one) THEN
462 mode(i,2) = 1
463 kk =2
464 ENDIF
465 IF (f3>=one) THEN
466 mode(i,3) = 1
467 kk =3
468 ENDIF
469 IF (f4>=one) THEN
470 mode(i,4) = 1
471 kk =4
472 ENDIF
473 IF (f5>=one) THEN
474 mode(i,5) = 1
475 kk =5
476 ENDIF
477 uvar(i,9) = kk
478 ENDIF
479 ENDIF
480
481 ENDIF
482 ENDIF
483
484 ENDDO
485 ENDIF
486
487
488
489
490 IF(ifabric > 0)THEN
491 indx = 0
492 nindx = 0
493 indx0 = 0
494 nindx0 = 0
495 DO i=1,nel
496 f1 = zero
497 f2 = zero
498 f3 = zero
499 f4 = zero
500 f5 = zero
501 f6 = zero
502 f7 = zero
503
504 dtinv = timestep(i)/
max(timestep(i)**2,em20)
506
508 fs(i)=uvar(i,10)
509
510 epsp(i)=(one -
alpha)*uvar(i,11) +
alpha*epsp(i)
511 uvar(i,11)=epsp(i)
512 IF(off(i) == one .AND. imodel /= 1)THEN
513 IF(iflag == 1) THEN
514 IF(uvar(i,8) < one)THEN
515 IF(tmod == 1) 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
519 telem = uvar(i,12)
520 uvar(i,8)= exp(-(time - uvar(i,7))/telem)
521 ELSE
522 uvar(i,8)= exp(-(time - uvar(i,7))/tmax)
523 ENDIF
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
532 off(i)=four_over_5
533 nindx=nindx+1
534 indx(nindx)=i
535 tdele(i) = time
536 ENDIF
537 ELSE
538
539
540
541 sig = half*(signxx(i) + abs(signxx(i)))
542 f1=(sig/sigt1)**2
543 . + (signxy(i)**2 + signzx
544 dfmax(i,2) =
max(dfmax(i,2),f1)
545 dfmax(i,2) =
min(dfmax(i,2),one)
546
547 sig = half*(signyy(i) + abs(signyy(i)))
548 fsig12up = fsig12*sigt2/sigt1
549 f2=(sig/sigt2)**2
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)
553
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)
559
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)
564
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)
569
570 f6 = (signxy(i)/msig12(i))**2
571 dfmax(i,7) =
max(dfmax(i,7),f6)
572 dfmax(i,7) =
min(dfmax(i,7),one)
573
574 sig = half*(signzz(i) + abs(signzz(i)))
575 IF(signzz(i) < zero) THEN
576 fac=tan(angle)
577 msig13(i) = msig13(i) - signzz(i)*fac
578 msig23(i) = msig23(i) - signzz(i)*fac
579 ENDIF
580
581
582
583
584 f7 = (sig/sigt3)**2 +
585 . (signyz(i)/msig23(i))**2 + (signzx(i)/msig13(i))**2
586
587 f7 = sdel*sdel*f7
588 dfmax(i,8) =
max(dfmax(i,8),f7)
589 dfmax(i,8) =
min(dfmax(i,8),one)
590
591 dfmax(i,1) =
min(one,
max(dfmax(i,1),f1,f2,f3,f4,f5,f6,f7))
592
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.
596 . f7 >= one )THEN
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)
603 uvar(i,7) = time
604 IF(tmod == 0) THEN
605 uvar(i,8) = four_over_5
606 ELSE
607 uvar(i,8) = zep99
608 ENDIF
609 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
610 . abs(signzz(i)),abs(signxy(i)),abs(signyz(i)),
611 . abs(signzx(i)))
612 k0 = fac*epspref**2*zep669741*tmax**2 + zep9*epspref*tmax
613 k1 = zep9*epsp(i)
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
618 uvar(i,12) = telem
619 IF (f1>=one) THEN
620 mode(i,1) = 1
621 kk = 1
622 ENDIF
623
624 IF (f2>=one) THEN
625 mode(i,2) = 1
626 kk = 2
627 ENDIF
628 IF (f3>=one) THEN
629 mode(i,3) = 1
630 kk = 3
631 ENDIF
632 IF (f4>=one) THEN
633 mode(i,4) = 1
634 kk = 4
635 ENDIF
636 IF (f5>=one) THEN
637 mode(i,5) = 1
638 kk = 5
639 ENDIF
640 IF (f6>=one) THEN
641 mode(i,6) = 1
642 kk = 5
643 ENDIF
644 IF (f7>=one) THEN
645 mode(i,7) = 1
646 kk = 7
647 ENDIF
648 uvar(i,9) = kk
649
650 nindx0=nindx0+1
651 indx0(nindx0)=i
652 ENDIF
653 ENDIF
654 ELSE
655
656
657
658 IF(uvar(i,8) == zero) THEN
659 signxx(i) = zero
660 signyy(i) = zero
661 signzz(i) = zero
662 signxy(i) = zero
663 signyz(i) = zero
664 signzx(i) = zero
665 ELSEIF(uvar(i,8) < one)THEN
666 IF(tmod == 1) 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
670 telem = uvar(i,12)
671 uvar(i,8)=exp(-(time - uvar(i,7))/telem)
672 ELSE
673 uvar(i,8)= exp(-(time - uvar(i,7))/tmax)
674 ENDIF
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
686 off(i) = four_over_5
687 nindx=nindx+1
688 indx(nindx)=i
689 tdele(i) = time
690 ENDIF
691 ENDIF
692 ELSE
693
694
695
696 sig = half*(signxx(i) + abs(signxx(i)))
697 f1=(sig/sigt1)**2
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)
701
702 sig = half*(signyy(i) + abs(signyy(i)))
703 fsig12up = fsig12*sigt2/sigt1
704 f2=(sig/sigt2)**2
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)
708
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)
714
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)
719
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)
724
725 f6 = (signxy(i)/msig12(i))**2
726 dfmax(i,7) =
max(dfmax(i,7),f6)
727 dfmax(i,7) =
min(dfmax(i,7),one)
728
729 sig = half*(signzz(i) + abs(signzz(i)))
730 IF(signzz(i) < zero) THEN
731 fac=tan(angle)
732 msig13(i) = msig13(i) - signzz(i)*fac
733 msig23(i) = msig23(i) - signzz(i)*fac
734 ENDIF
735
736 f7 = (sig/sigt3)**2 +
737 . (signyz(i)/msig23(i))**2 + (signzx(i)/msig13
738
739 f7 = sdel*sdel*f7
740 dfmax(i,8) =
max(dfmax(i,8),f7)
741 dfmax(i,8) =
min(dfmax(i,8),one)
742
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)
745
746 IF(f1 >= one .OR. f2 >= one .OR. f3 >= one .OR.
747 . f4 >= one .OR. f5 >= one .OR. f6 >= one .OR.
748 . f7 >= one )THEN
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)
755 uvar(i,7) = time
756 IF(tmod == 0) THEN
757 uvar(i,8) = four_over_5
758 ELSE
759 uvar(i,8) = zep99
760 ENDIF
761
762 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
763 . abs(signzz(i)),abs(signxy(i)),abs(signyz(i)),
764 . abs(signzx(i)))
765 k0 = fac*epspref**2*zep669741*tmax**2 + zep9*epspref*tmax
766 k1 = zep9*epsp(i)
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
771 uvar(i,12) = telem
772
773 nindx0= nindx0+1
774 indx0(nindx0)=i
775 IF (f1>=one) THEN
776 mode(i,1) = 1
777 kk = 1
778 ENDIF
779 IF (f2>=one) THEN
780 mode(i,2) = 1
781 kk = 2
782 ENDIF
783 IF (f3>=one) THEN
784 mode(i,3) = 1
785 kk = 3
786 ENDIF
787 IF (f4>=one) THEN
788 mode(i,4) = 1
789 kk = 4
790 ENDIF
791 IF (f5>=one) THEN
792 mode(i,5) = 1
793 kk = 5
794 ENDIF
795 IF (f6>=one) THEN
796 mode(i,6) = 1
797 kk = 6
798 ENDIF
799 IF (f7>=one) THEN
800 mode(i,7) = 1
801 kk = 7
802 ENDIF
803 uvar(i,9) = kk
804 ENDIF
805 ENDIF
806 ENDIF
807 ENDIF
808 ENDDO
809
810 ENDIF
811
812 IF(nindx0 > 0)THEN
813 DO j=1,nindx0
814 i = indx0(j)
815 DO jj=1,7
816 imode = mode(i,jj)
817 IF(imode == 1) THEN
818 imode = jj
819#include "lockon.inc"
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"
827 ENDIF
828 END DO
829 END DO
830 ENDIF
831
832 IF(nindx > 0)THEN
833 DO j=1,nindx
834 i = indx(j)
835
836
837
838#include "lockon.inc"
839
840
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"
848
849
850 END DO
851 ENDIF
852
853 1000 FORMAT(1x,'FAILURE ELEMENT-1 #',i10,1x,
854 .'LAYER # ',i10,1x,'MODE #',i10)
855
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)
864
865 2100 FORMAT(1x,'FAILURE ELEMENT-2 #',i10,1x
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)
873
874 RETURN