37 1 NEL ,NPARAM ,NUVAR ,NPF ,TF ,
38 2 TIME ,TIMESTEP ,UPARAM ,NGL ,IPT ,
39 3 NPTOT ,NFUNC ,IFUNC ,TABLE ,
40 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
41 5 DPLA ,EPSP ,TSTAR ,TENS ,UVAR ,
42 6 NOFF ,ALDT ,OFF ,OFFL ,ELCRKINI ,
43 7 IXFEM ,IXEL ,ILAY ,DFMAX ,TDEL ,
44 8 DMG_FLAG ,NTABLF ,ITABLF )
54#include "implicit_f.inc"
60#include "com_xfem1.inc"
96 INTEGER NEL,NPARAM,NUVAR,IPT,NFUNC,IXFEM,IXEL,ILAY,
98 INTEGER ,
INTENT(IN) :: NTABLF
99 INTEGER,
DIMENSION(NTABLF) ,
INTENT(IN) :: ITABLF
100 INTEGER NGL(NEL),NOFF(NEL),IFUNC(NFUNC),
101 . ELCRKINI(NXLAYMAX,NEL)
102 my_real TIME,TIMESTEP(NEL),UPARAM(*),DPLA(NEL),EPSP(NEL),
103 . TSTAR(NEL),ALDT(NEL)
107 my_real,
DIMENSION(2) :: xx0
109 . uvar(nel,nuvar),off(nel),offl(nel),
110 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
111 . tens(nel,5),dfmax(nel),tdel(nel)
130 . I,J,K,L,IADR,NINDX,ISHELL,I_MOD,I_DAM,NF_LOC,
131 . ,ITAB_INST,IFUN_EL,,IFUN_DMG,IFUN_FAD
132 INTEGER,
DIMENSION(NEL) :: INDX,NRATE,RFLAG,
134 my_real,
DIMENSION(NEL) :: EPSF,EPSF_N,DMG_SCALE
138 . x1scale,x2scale,x3scale,x4scale,p_thinn,
ecrit,fade_expo,
139 . dcrit,el_ref,sc_el,sc_temp,dd,dn
140 CHARACTER (LEN=3) :: XCHAR
154 sigm_ps = one/sqrt(three)
156 IF (uvar(1,5) == zero)
THEN
162 ishell = int(uparam(2))
176 fade_expo = uparam(18)
177 i_mod = int(uparam(19))
179 IF (ixfem == 1 .and. ishell == 1) ishell=2
182 IF (
ecrit /= zero .OR. fade_expo /= zero) i_dam = 1
188 tens(i,1) = signxx(i)
189 tens(i,2) = signyy(i)
190 tens(i,3) = signxy(i)
191 tens(i,4) = signyz(i)
192 tens(i,5) = signzx(i)
198 ELSEIF (ixel == 2)
THEN
200 ELSEIF (ixel == 3)
THEN
208 itab_epsf = itablf(1)
210 itab_inst = itablf(2)
219 p = third*(signxx(i) + signyy(i))
220 svm = sqrt(signxx(i)*signxx(i) + signyy(i)*signyy(i)
221 . - signxx(i)*signyy(i) + three*signxy(i)*signxy(i))
222 sigm = p /
max(em20,svm)
226 xx0(2)=epsp(i) *x2scale
228 epsf(i) = yy * x1scale
233 IF (ifun_el > 0)
THEN
234 lambda = uvar(i,5) / el_ref
235 fac = sc_el*finter(ifun_el,lambda,npf,tf,df)
239 IF (ifun_temp > 0)
THEN
240 fac = sc_temp*finter(ifun_temp,tstar(i),npf,tf,df)
241 epsf(i) = epsf(i)* fac
246 IF (itab_inst > 0)
THEN
247 xx0(2)=epsp(i) *x4scale
249 epsf_n(i) = yy_n * x3scale
250 ELSEIF (
ecrit > 0.0)
THEN
257 IF (fade_expo < zero)
THEN
258 lambda = uvar(i,5) / el_ref
259 fade_expo = finter(ifun_fad,lambda,npf,tf,df)
264 IF (ishell == 1)
THEN
265 IF (ixfem == 1 .OR. ixfem == 2)
THEN
267 IF (ishell == 1 .AND. off(i)==one)
THEN
268 IF (ifun_dmg > 0)
THEN
269 dp = finter(ifun_dmg,uvar(i,1),npf,tf,df)
271 IF(uvar(i,1) == zero)
THEN
275 dp = dn*uvar(i,1)**(one-one/dn)
278 IF (epsf(i) > zero) uvar(i,1)=
279 . uvar(i,1)+dp*dpla(i)/epsf(i)
281 IF (elcrkini(ilay,i)==0)
THEN
282 IF (uvar(i,1) >= dcrit)
THEN
283 elcrkini(ilay,i) = -1
290 ELSEIF (elcrkini(ilay,i) == 2)
THEN
291 IF (uvar(i,1) >= dadv)
THEN
300 ELSEIF (uvar(i,1 )>= dcrit)
THEN
315 IF (rflag(i)>0.AND.rflag(i)<2)
316 .
WRITE(iout, 3800) ngl(i)
317 IF (rflag(i)>0.AND.rflag(i)<2)
318 .
WRITE(istdo,3900) ngl(i),time
320 IF (rflag(i) < 0)
WRITE(iout, 4000) ngl(i)
321 IF (rflag(i) < 0)
WRITE(istdo,4100) ngl(i),time
323 IF (rflag(i) > 1)
WRITE(iout, 4200)xchar,ngl(i)
324 IF (rflag(i) > 1)
WRITE(istdo,4300)xchar,ngl(i),time
325#include "lockoff.inc"
333 IF (off(i) == one)
THEN
334 IF (uvar(i,1) < dcrit)
THEN
335 IF (ifun_dmg > 0)
THEN
336 dp = finter(ifun_dmg,uvar(i,1),npf,tf,df)
338 IF(uvar(i,1) == zero)
THEN
342 dp = dn*uvar(i,1)**(one-one/dn)
345 IF (epsf(i) > zero) uvar(i,1)=
346 . uvar(i,1)+dp*dpla(i)/epsf(i)
348 IF (elcrkini(ilay,i) == 0 .AND.
349 . uvar(i,1) >= dcrit)
THEN
350 IF (ishell == 2)
THEN
359 elcrkini(ilay,i) = -1
360 noff(i) = noff(i) + 1
361 IF (noff(i) == nptot)
THEN
366 ELSEIF (elcrkini(ilay,i) == 2 .AND.
367 . uvar(i,1) >= dadv)
THEN
368 IF (ishell == 2)
THEN
378 noff(i) = noff(i) + 1
379 IF(dadv < dcrit) uvar(i,1) = dcrit
380 IF (noff(i) == nptot)
THEN
386 ELSEIF (uvar(i,1) >= dcrit)
THEN
387 IF (ishell == 2)
THEN
396 noff(i) = noff(i) + 1
398 IF (noff(i) == nptot)
THEN
403 ELSEIF (ishell == 2)
THEN
412 ELSEIF (ixfem == 2)
THEN
414 IF (off(i)==one .AND. (ishell==2 .OR. ishell==3))
THEN
415 IF (uvar(i,1) < dcrit)
THEN
416 IF (ifun_dmg > 0)
THEN
417 dp = finter(ifun_dmg,uvar(i,1),npf,tf,df)
419 IF(uvar(i,1) == zero)
THEN
423 dp = dn*uvar(i,1)**(one-one/dn)
427 IF (epsf(i) > zero) uvar(i,1)=
428 . uvar(i,1)+dp*dpla(i)/epsf(i)
430 IF (elcrkini(ilay,i) == 0 .AND.
431 . uvar(i,1) >= dcrit)
THEN
432 IF (ishell == 2)
THEN
441 noff(i) = noff(i) + 1
442 IF (noff(i) == nptot)
THEN
444 elcrkini(ilay,i) = -1
448 ELSEIF (elcrkini(ilay,i) == 2 .AND.
449 . uvar(i,1) >= dadv)
THEN
450 IF (ishell == 2)
THEN
459 noff(i) = noff(i) + 1
460 IF(dadv < dcrit) uvar(i,1) = dcrit
461 IF (noff(i) == nptot)
THEN
468 ELSEIF (uvar(i,1) >= dcrit)
THEN
469 IF (ishell == 2)
THEN
479 IF (noff(i) == nptot)
THEN
484 ELSEIF (ishell == 2)
THEN
501 IF (rflag(i)>0.AND.rflag(i)<3)
WRITE(iout,4600)ngl(i),ipt
502 IF (rflag(i)>0.AND.rflag(i)<3)
WRITE(istdo,4700)
505 IF (rflag(i) < 0)
WRITE(iout, 4800) ngl(i),ipt
506 IF (rflag(i) < 0)
WRITE(istdo,4900) ngl(i),ipt,time
508 IF (rflag(i) > 2)
WRITE(iout, 4400)xchar,ngl(i),ipt
509 IF (rflag(i) > 2)
WRITE(istdo,4500)xchar,ngl(i),ipt,time
511 IF (rflag(i) /= 0 .AND. ixel == 0)
512 .
WRITE(iout, 2000) ngl(i),ipt
513 IF (rflag(i) /= 0.AND. ixel == 0)
514 .
WRITE(istdo,2100) ngl(i),ipt,time
515 ELSEIF(ixfem ==2)
THEN
517 IF (rflag(i)>0.AND.rflag(i)<3)
WRITE(iout,3800)ngl(i)
518 IF (rflag(i)>0.AND.rflag(i)<3)
WRITE(istdo,3900)
521 IF (rflag(i) < 0)
WRITE(iout, 4000) ngl(i)
522 IF (rflag(i) < 0)
WRITE(istdo,4100) ngl(i),time
524 IF (rflag(i) > 2)
WRITE(iout, 4200)xchar,ngl(i)
525 IF (rflag(i) > 2)
WRITE(istdo,4300)xchar,ngl(i),time
527#include "lockoff.inc"
534 dfmax(i)=
min(one,
max(dfmax(i),uvar(i,1)/dcrit))
537 2000
FORMAT(1x,
'FAILURE OF SHELL ELEMENT (TAB)',i10,1x,
539 2100
FORMAT(1x,
'FAILURE OF SHELL ELEMENT (TAB)',i10,1x,
540 .
'LAYER',i10,
':',/,
'AT TIME :',1pe12.4)
541 2200
FORMAT(1x,
'STRESS TENSOR SET TO ZERO IN THE LAYER')
542 2400
FORMAT(1x,1pg20.13,
' % OF THICKNESS OF SHELL BROKEN ')
543 2500
FORMAT(1x,
' LOWER SKIN -> UPPER SKIN ')
544 2600
FORMAT(1x,
' UPPER SKIN -> LOWER SKIN ')
545 3700
FORMAT(1x,
'STRESS TENSOR SET TO ZERO, LAYER',i10)
547 2410
FORMAT(1x,1pg20.13,
' % OF THICKNESS OF SHELL ',i10,
' BROKEN ')
548 3800
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT (TAB)',i10)
549 3900
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT (TAB)',i10,
550 . 1x,
':',/,
' AT TIME :',1pe12.4)
551 4000
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT (TAB) ',i10)
552 4100
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT (TAB) ',i10,
553 . 1x,
':',/,
' AT TIME :',1pe12.4)
554 4200
FORMAT(1x,
'DELETE OF ',a5,
' CRACKED PHANTOM ELEMENT'/
555 . 1x,
'OF THE ORIGINAL SHELL ELEMENT (TAB) ',
557 4300
FORMAT(1x,
'DELETE OF ',a5,
' CRACKED PHANTOM ELEMENT'/
558 . 1x,
'OF THE ORIGINAL SHELL ELEMENT (TAB) ',
559 . i10,
':',/1x,
'AT TIME :',1pe20.13)
560 4400
FORMAT(1x,
'DELETE OF ',a5,
' CRACKED PHANTOM ELEMENT'/
561 . 1x,
'OF THE ORIGINAL SHELL ELEMENT (TAB) ',
563 4500
FORMAT(1x,
'DELETE OF ',a5,
' CRACKED PHANTOM ELEMENT'/
564 . 1x,
'OF THE ORIGINAL SHELL ELEMENT (TAB) ',
565 . i10,' layer
',I10,':
',/1X,'at time :
',1PE20.13)
566 4600 FORMAT(1X,'crack initialization in shell element(tab)
',I10,
568 4700 FORMAT(1X,'crack initialization in shell element(tab)
',I10,
569 . 1X,'layer
',I10,':
',/,' at time :
',1PE12.4)
570 4800 FORMAT(1X,'crack advancement in shell element(tab)
',I10,
572 4900 FORMAT(1X,'crack advancement in shell element(tab)
',I10,
573 . 1X,'layer
',I10,':
',/,' at time :
',1PE12.4)
574 5010 FORMAT(1X,'shell element failure due to thinning(tab)
',I10)
575 5020 FORMAT(1X,'shell element failure due to thinning(tab)
',I10,
576 . 1X,':
',/1X,'at time :
',1PE12.4)
subroutine ecrit(timers, partsav, ms, v, in, r, dmas, weight, enintot, ekintot, a, ar, fxbipm, fxbrpm, monvol, xmom_sms, sensors, qfricint, ipari, weight_md, wfexth, iflag, ms_2d, multi_fvm, mas_nd, kend, h3d_data, dynain_data, usreint, output)
subroutine fail_tab_xfem(nel, nparam, nuvar, npf, tf, time, timestep, uparam, ngl, ipt, nptot, nfunc, ifunc, table, signxx, signyy, signxy, signyz, signzx, dpla, epsp, tstar, tens, uvar, noff, aldt, off, offl, elcrkini, ixfem, ixel, ilay, dfmax, tdel, dmg_flag, ntablf, itablf)