34 1 NEL ,NPARAM ,NUVAR ,NPF ,TF ,
35 2 TIME ,TIMESTEP ,UPARAM ,NGL ,IPT ,
36 3 NPTOT ,NFUNC ,IFUNC ,DMG_FLAG ,
37 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
38 5 DPLA ,EPSP ,TSTAR ,TENS ,UVAR ,
39 6 NOFF ,ALDT ,OFF ,OFFL ,ELCRKINI ,
40 7 IXFEM ,IXEL ,ILAY ,DFMAX ,TDEL )
48#include "implicit_f.inc"
54#include "com_xfem1.inc"
63 INTEGER NEL,NPARAM,NUVAR,IPT,NFUNC,IXFEM,IXEL,ILAY,NPTOT
64 INTEGER NGL(NEL),NOFF(NEL),IFUNC(NFUNC),
65 . ELCRKINI(NXLAYMAX,NEL)
66 my_real TIME,TIMESTEP(NEL),UPARAM(*),DPLA(NEL),EPSP(NEL),
67 . TSTAR(NEL),ALDT(NEL)
71 my_real,
DIMENSION(2) :: xx0
73 . uvar(nel,nuvar),off(nel),offl(nel),
74 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
75 . tens(nel,5),dfmax(nel),tdel(nel)
85 INTEGER :: I,J,J1,J2,K,L,NINDX,ISHELL,LAYXFEM,NRATE,DMG_FLAG,
86 . ifun_el,ifun_temp,nf_loc
87 INTEGER,
DIMENSION(NEL) :: INDX,RFLAG
88 INTEGER ,
DIMENSION(NFUNC) :: IFUN_STR
90 my_real :: DP,P,SIGM,SIGM_PS,SVM,EF1,EF2,,FAC,DEPSF,LAMBDA,
91 . CC,BB,CR,,SS1,SS2,YY,YY_N,,
92 . dcrit,el_ref,sc_el,sc_temp,dd,dn
93 my_real,
DIMENSION(NEL) :: epsf,dmg_scale
94 my_real,
DIMENSION(NFUNC)
95 CHARACTER (LEN=3) :: XCHAR
104 sigm_ps = one/sqrt(three)
106 IF (uvar(1,2) == zero)
THEN
107 uvar(1:nel,2) = aldt(1:nel)
110 ishell = int(uparam(2))
120 rate(1:nrate) = uparam(11+1+nrate:11+nrate*2)
123 IF (layxfem == 1 .and. ishell == 1) ishell=2
129 tens(i,1) = signxx(i)
130 tens(i,2) = signyy(i)
131 tens(i,3) = signxy(i)
132 tens(i,4) = signyz(i)
133 tens(i,5) = signzx(i)
139 ELSEIF (ixel == 2)
THEN
141 ELSEIF (ixel == 3)
THEN
150 ifun_str(1:nrate) = ifunc(1:nrate)
152 ifun_el = ifunc(nrate+1)
153 ifun_temp = ifunc(nrate+2)
160 IF (epsp(i) > rate(j1)) j1 = k
162 p = third*(signxx(i) + signyy(i))
163 svm = sqrt(signxx(i)*signxx(i) + signyy(i)*signyy(i)
164 . - signxx(i)*signyy(i) + three*signxy(i)*signxy(i))
165 sigm = p /
max(em20,svm)
169 ef1 = yfac(j1)*finter(ifun_str(j1),sigm,npf,tf,df)
170 ef2 = yfac(j2)*finter(ifun_str(j2),sigm,npf,tf,df)
171 fac = (epsp(i) - rate(j1))/(rate(j2) - rate(j1))
173 epsf(i) =
max(ef1 + fac*(ef2 - ef1), em20)
175 epsf(i) = yfac(j1)*finter(ifun_str(j1),sigm,npf,tf,df)
181 IF (ifun_el > 0)
THEN
182 lambda = uvar(i,2) / el_ref
183 fac = sc_el*finter(ifun_el,lambda,npf,tf,df)
184 epsf(i) = epsf(i)* fac
187 IF (ifun_temp > 0)
THEN
188 fac = sc_temp*finter(ifun_temp,tstar(i),npf,tf,df)
189 epsf(i) = epsf(i)* fac
193 IF (ishell == 1)
THEN
194 IF (ixfem == 1 .OR. ixfem == 2)
THEN
196 IF (ishell == 1 .AND. off(i)==one)
THEN
197 IF(uvar(i,1) == zero)
THEN
201 dp = dn*uvar(i,1)**(one-one/dn)
203 IF (epsf(i) > zero) uvar(i,1)=
204 . uvar(i,1)+dp*dpla(i)/epsf(i)
206 IF (elcrkini(ilay,i)==0)
THEN
207 IF (uvar(i,1) >= dcrit)
THEN
208 elcrkini(ilay,i) = -1
215 ELSEIF (elcrkini(ilay,i) == 2)
THEN
216 IF (uvar(i,1) >= dadv)
THEN
225 ELSEIF (uvar(i,1 )>= dcrit)
THEN
240 IF (rflag(i)>0.AND.rflag(i)<2)
241 .
WRITE(iout, 3800) ngl(i)
242 IF (rflag(i)>0.AND.rflag(i)<2)
243 .
WRITE(istdo,3900) ngl(i),time
245 IF (rflag(i) < 0)
WRITE(iout, 4000) ngl(i)
246 IF (rflag(i) < 0)
WRITE(istdo,4100) ngl(i),time
248 IF (rflag(i) > 1)
WRITE(iout, 4200)xchar,ngl(i)
249 IF (rflag(i) > 1)
WRITE(istdo,4300)xchar,ngl(i),time
250#include "lockoff.inc"
258 IF (off(i) == one)
THEN
259 IF (uvar(i,1) < dcrit)
THEN
260 IF(uvar(i,1) == zero)
THEN
264 dp = dn*uvar(i,1)**(one-one/dn)
266 IF (epsf(i) > zero) uvar(i,1)=
267 . uvar(i,1)+dp*dpla(i)/epsf(i)
270 . uvar(i,1) >= dcrit)
THEN
271 IF (ishell == 2)
THEN
280 elcrkini(ilay,i) = -1
281 noff(i) = noff(i) + 1
282 IF (noff(i) == nptot)
THEN
287 ELSEIF (elcrkini(ilay,i) == 2 .AND.
288 . uvar(i,1) >= dadv)
THEN
289 IF (ishell == 2)
THEN
299 noff(i) = noff(i) + 1
300 IF(dadv < dcrit) uvar(i,1) = dcrit
301 IF (noff(i) == nptot)
THEN
307 ELSEIF (uvar(i,1) >= dcrit)
THEN ! ixel > 0
308 IF (ishell == 2)
THEN
317 noff(i) = noff(i) + 1
319 IF (noff(i) == nptot)
THEN
324 ELSEIF (ishell == 2)
THEN
333 ELSEIF (ixfem == 2)
THEN
335 IF (off(i)==one .AND. (ishell==2 .OR. ishell==3
THEN
336 IF (uvar(i,1) < dcrit)
THEN
337 IF(uvar(i,1) == zero)
THEN
341 dp = dn*uvar(i,1)**(one-one/dn)
344 IF (epsf(i) > zero) uvar(i,1)=
345 . uvar(i,1)+dp*dpla(i)/epsf(i)
347 IF (elcrkini(ilay,i) == 0 .AND.
348 . uvar(i,1) >= dcrit)
THEN
349 IF (ishell == 2)
THEN
358 noff(i) = noff(i) + 1
359 IF (noff(i) == nptot)
THEN
361 elcrkini(ilay,i) = -1
365 ELSEIF (elcrkini(ilay,i) == 2 .AND.
366 . uvar(i,1) >= dadv)
THEN
367 IF (ishell == 2)
THEN
376 noff(i) = noff(i) + 1
377 IF(dadv < dcrit) uvar(i,1) = dcrit
378 IF (noff(i) == nptot)
THEN
385 ELSEIF (uvar(i,1) >= dcrit)
THEN
386 IF (ishell == 2)
THEN
395 noff(i) = noff(i) + 1
396 IF (noff(i) == nptot)
THEN
401 ELSEIF (ishell == 2)
THEN
418 IF (rflag(i)>0.AND.rflag(i)<3)
WRITE(iout,4600)ngl(i),ipt
419 IF (rflag(i)>0.AND.rflag(i)<3)
WRITE(istdo,4700)
422 IF (rflag(i) < 0)
WRITE(iout, 4800) ngl(i),ipt
423 IF (rflag(i) < 0)
WRITE(istdo,4900) ngl(i),ipt,time
425 IF (rflag(i) > 2)
WRITE(iout, 4400)xchar,ngl(i),ipt
426 IF (rflag(i) > 2)
WRITE(istdo,4500)xchar,ngl(i),ipt,time
428 IF (rflag(i) /= 0 .AND. ixel == 0)
429 .
WRITE(iout, 2000) ngl(i),ipt
430 IF (rflag(i) /= 0.AND. ixel == 0)
431 .
WRITE(istdo,2100) ngl(i),ipt,time
432 ELSEIF(ixfem ==2)
THEN
434 IF (rflag(i)>0.AND.rflag(i)<3)
WRITE(iout,3800)ngl(i)
435 IF (rflag(i)>0.AND.rflag(i)<3)
WRITE(istdo,3900)
438 IF (rflag(i) < 0)
WRITE(iout, 4000) ngl(i)
439 IF (rflag(i) < 0)
WRITE(istdo,4100) ngl(i),time
441 IF (rflag(i) > 2)
WRITE(iout, 4200)xchar,ngl(i)
442 IF (rflag(i) > 2)
WRITE(istdo,4300)xchar,ngl(i),time
444#include "lockoff.inc"
451 dfmax(i)=
min(one,
max(dfmax(i),uvar(i,1)/dcrit))
454 2000
FORMAT(1x,
'FAILURE OF SHELL ELEMENT (TAB)',i10,1x,
456 2100
FORMAT(1x,
'FAILURE OF SHELL ELEMENT (TAB)',i10,1x,
457 .
'LAYER',i10,
':',/,
'AT TIME :',1pe12.4)
458 2200
FORMAT(1x,
'STRESS TENSOR SET TO ZERO IN THE LAYER')
459 2400
FORMAT(1x,1pg20.13,
' % OF THICKNESS OF SHELL BROKEN ')
460 2500
FORMAT(1x,
' LOWER SKIN -> UPPER SKIN ')
461 2600
FORMAT(1x,
' UPPER SKIN -> LOWER SKIN ')
462 3700
FORMAT(1x,
'STRESS TENSOR SET TO ZERO, LAYER',i10)
464 2410
FORMAT(1x,1pg20.13,
' % OF THICKNESS OF SHELL ',i10,
' BROKEN ')
465 3800
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT (TAB)',i10)
466 3900
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT (TAB)',i10,
467 . 1x,
':',/,
' AT TIME :',1pe12.4)
468 4000
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT (TAB) ',i10)
469 4100
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT (TAB) ',i10,
470 . 1x,
':',/,
' AT TIME :',1pe12.4)
471 4200
FORMAT(1x,
'DELETE OF ',a5,
' CRACKED PHANTOM ELEMENT'/
472 . 1x,
'OF THE ORIGINAL SHELL ELEMENT (TAB) ',
474 4300
FORMAT(1x,
'DELETE OF ',a5,
' CRACKED PHANTOM ELEMENT'/
475 . 1x,
'OF THE ORIGINAL SHELL ELEMENT (TAB) ',
476 . i10,
':',/1x,
'AT TIME :',1pe20.13)
477 4400
FORMAT(1x,
'DELETE OF ',a5,
' CRACKED PHANTOM ELEMENT'/
478 . 1x,
'OF THE ORIGINAL SHELL ELEMENT (TAB) ',
480 4500
FORMAT(1x,
'DELETE OF ',a5,
' CRACKED PHANTOM ELEMENT'/
481 . 1x,
'OF THE ORIGINAL SHELL ELEMENT (TAB) ',
482 . i10,
' LAYER',i10,
':',/1x,
'AT TIME :',1pe20.13)
483 4600
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT (TAB)'
485 4700
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT (TAB)',i10,
486 . 1x,
'LAYER',i10,
':',/,
' AT TIME :',1pe12.4)
487 4800
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT (TAB) ',i10,
489 4900
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT (TAB) ',i10,
490 . 1x,
'LAYER',i10,
':',/,
' AT TIME :',1pe12
491 5010
FORMAT(1x,
'SHELL ELEMENT FAILURE DUE TO THINNING (TAB)',i10)
492 5020
FORMAT(1x,
'SHELL ELEMENT FAILURE DUE TO THINNING (TAB)',i10,
493 . 1x,
':',/1x,
'AT TIME :',1pe12.4)
subroutine fail_tab_old_xfem(nel, nparam, nuvar, npf, tf, time, timestep, uparam, ngl, ipt, nptot, nfunc, ifunc, dmg_flag, signxx, signyy, signxy, signyz, signzx, dpla, epsp, tstar, tens, uvar, noff, aldt, off, offl, elcrkini, ixfem, ixel, ilay, dfmax, tdel)