33 1 NEL ,NUPARAM ,NUVAR ,NFUNC ,IFUNC ,
34 2 NPF ,TF ,TIME ,UPARAM ,
35 3 NGL ,IPT ,NPTOT ,SSP ,TENS ,
36 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
37 5 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
38 6 UVAR ,NOFF ,OFF ,LF_DAMMX ,
39 7 ELCRKINI ,IXFEM ,IXEL ,ILAY ,IPTT ,
40 8 OFFL ,NPTT ,NPTTF ,DFMAX ,TDEL ,
41 9 DAM ,FLD_IDX ,NIPARAM ,IPARAM ,PLA ,
42 A DEPSXX ,DEPSYY ,DEPSXY ,DT1 )
48#include "implicit_f.inc"
54#include "com_xfem1.inc"
82 INTEGER NEL,NUPARAM,NUVAR,NFUNC,IPT,IPTT,NPTOT,IXFEM,IXEL,ILAY,NPTT
83 INTEGER ELCRKINI(NXLAYMAX,NEL),NOFF(NEL),IFUNC(NFUNC),NGL(NEL),FLD_IDX(NEL)
85 . TIME,UPARAM(NUPARAM),SIGNXX(NEL),SIGNYY(NEL),
86 . SIGNZZ(NEL),SIGNXY(NEL),SIGNYZ(NEL),SIGNZX(NEL)
89INTEGER,
INTENT(IN) :: NIPARAM, LF_DAMMX
90 INTEGER,
DIMENSION(NIPARAM),
INTENT(IN) :: IPARAM
91 my_real,
DIMENSION(NEL),
INTENT(IN) :: PLA,DEPSXX,DEPSYY,DEPSXY
92 my_real,
INTENT(IN) :: dt1
96 my_real uvar(nel,nuvar),off(nel),offl(nel)
101 my_real finter , finterfld ,tf(*)
113 INTEGER I,II,J,K,L,IENG,IAD,NINDX,NINDXP,ISHELL,LAYXFEM,LENF
114 INTEGER INDX(NEL),INDXP(NEL),RFLAG(NEL),RFLAGP(NEL)
116 . RANI,R1,R2,DADV,SIGMAX,S1,S2,SS,Q,DYDX,E12
117 my_real,
ALLOCATABLE,
DIMENSION(:) :: XF
119 . TBA(NEL),TBK(NEL),SIGR(NEL),EMAJ(NEL),EMIN(NEL),
120 . EM(NEL),EM_DCRIT(NEL),EM_DADV(NEL),DEMAJ(NEL),DEMIN(NEL),
121 . BETA(NEL),ALPHA,FCUT
122 CHARACTER (LEN=3) :: XCHAR
146 IF (uparam(6) > zero)
THEN
149 alpha = two*pi*fcut*dt1/(one + two*pi*fcut*dt1)
153 IF (ixfem == 1 .and. ishell == 1) ishell=2
166 s1 = half*(epsxx(i) + epsyy(i))
167 s2 = half*(epsxx(i) - epsyy(i))
168 q = sqrt(s2**2 + e12**2)
171 IF (emin(i) >= emaj(i))
THEN
178 s1 = half*(depsxx(i) + depsyy(i))
179 s2 = half*(depsxx(i) - depsyy(i))
180 q = sqrt(s2**2 + e12**2)
184 demaj(i) = alpha*demaj(i) + (one - alpha)*uvar(i,2)
185 demin(i) = alpha*demin(i) + (one - alpha)*uvar(i,3)
186 beta(i) = demin(i)/sign(
max(abs(demaj(i)),em20),demaj(i))
200 lenf = npf(ifunc(1)+ 1) - npf(ifunc(1))
203 xf(i) = log(tf(ii + i-1) + one)
207 em(i) = finterfld(emin(i),lenf,xf)
208 dam(i) = emaj(i) / em(i)
210 dfmax(i,1) =
min(one, dam(i))
217 em(i) = finter(ifunc(1),emin(i),npf,tf,dydx)
218 dam(i) = emaj(i) / em(i)
220 dfmax(i,1) =
min(one, dam(i))
223 ELSEIF (ieng == 2)
THEN
225 em(i) = finter(ifunc(1),emin(i),npf,tf,dydx)
226 dam(i) =
max(pla(i) / em(i),dam(i))
228 dfmax(i,1) =
min(one, dam(i))
240 IF (emaj(i) >= em(i))
THEN
242 ELSEIF (emaj(i) >= em(i) - em01)
THEN
244 ELSEIF (emaj(i)**2 + emin(i)**2 < r1**2)
THEN
246 ELSEIF (emaj(i) >= abs(emin(i)))
THEN
248 ELSEIF (emaj(i) >= r2*abs(emin(i)))
THEN
253 dfmax(i,3) = fld_idx(i)
257 IF (pla(i) >= em(i))
THEN
258 fld_idx(i) =
max(6,fld_idx(i))
259 ELSEIF (pla(i) >= em(i) - em01)
THEN
261 ELSEIF (pla(i)**2 + beta(i)**2 < r1**2)
THEN
262 fld_idx(i) =
max(1,fld_idx(i))
263 ELSEIF (pla(i) >= abs(beta(i)))
THEN
264 fld_idx(i) =
max(4,fld_idx(i))
265 ELSEIF (pla(i) >= r2*abs(beta(i)))
THEN
266 fld_idx(i) =
max(3,fld_idx(i))
268 fld_idx(i) =
max(2,fld_idx(i))
270 dfmax(i,3) = fld_idx(i)
275 tens(i,1) = signxx(i)
276 tens(i,2) = signyy(i)
277 tens(i,3) = signxy(i)
278 tens(i,4) = signyz(i)
279 tens(i,5) = signzx(i)
281 IF (nfunc > 1 .and. ifunc(2) > 0)
THEN
282 em_dadv(i) = dadv*finter(ifunc(2),emin(i),npf,tf,dydx)
284 em_dadv(i) = dadv*em_dcrit(i)
291 ELSEIF (ixel == 2)
THEN
293 ELSEIF (ixel == 3)
THEN
300 SELECT CASE (layxfem)
305 IF (ieng == 2) emaj(i) = pla(i)
306 IF (off(i) == one)
THEN
307 IF (uvar(i,1) == zero)
THEN
309 IF (elcrkini(ilay,i)==0 .and. emaj(i)>=em_dcrit(i))
THEN
314 noff(i) = noff(i) + 1
315 npttf(i) = npttf(i) + one
317 IF (int(npttf(i)) == nptt)
THEN
320 elcrkini(ilay,i) = -1
323 IF (noff(i) == nptot)
THEN
327 ELSEIF (elcrkini(ilay,i)==2 .and. emaj(i
THEN
332 noff(i) = noff(i) + 1
333 npttf(i) = npttf(i)+ one
335 IF (int(npttf(i)) == nptt)
THEN
341 IF (noff(i) == nptot)
THEN
351 npttf(i) = npttf(i) + one
353 IF (int(npttf(i)) == nptt)
THEN
361 ELSEIF (uvar(i,1) == one)
THEN
379 IF (rflagp(i) == 1)
WRITE(iout, 3800)ngl(i),ilay,iptt
380 IF (rflagp(i) == 1)
WRITE(istdo,3900)ngl(i),ilay,iptt,time
381#include "lockoff.inc"
389 IF (rflag(i) == 1)
WRITE(iout ,3000) ngl(i),ilay
390 IF (rflag(i) == 1)
WRITE(istdo,3100) ngl(i),ilay,time
392 IF (rflag(i) == -1)
WRITE(iout ,3200) ngl(i),ilay
393 IF (rflag(i) == -1)
WRITE(istdo,3300) ngl(i),ilay,time
395 IF (rflag(i) == 3)
WRITE(iout, 3400) xchar,ngl(i),ilay
396 IF (rflag(i) == 3)
WRITE(istdo,3500) xchar,ngl(i),ilay,time
397#include "lockoff.inc"
403 IF (ishell == 1)
THEN
407 IF (ieng == 2) emaj(i) = pla(i)
408 IF (off(i) == one)
THEN
411 . emaj(i) >= em_dcrit(i))
THEN
418 ELSEIF (elcrkini(ilay,i) == 2 .and.
419 . emaj(i) >= em_dadv(i))
THEN
427 ELSE IF (emaj(i) >= em_dcrit(i)) then
441 WRITE(iout, 4800)ngl(i),iptt
442 WRITE(istdo,4900)ngl(i),iptt,time
444 IF (rflag(i) == 1)
WRITE(iout ,4000) ngl(i)
445 IF (rflag(i) == 1)
WRITE(istdo,4100) ngl(i),time
447 IF (rflag(i) == -1)
WRITE(iout, 4200) ngl(i)
448 IF (rflag(i) == -1)
WRITE(istdo,4300) ngl(i),time
450 IF (rflag(i) == 3)
WRITE(iout, 4400) xchar,ngl(i)
451 IF (rflag(i) == 3)
WRITE(istdo,4500) xchar,ngl(i),time
452#include "lockoff.inc"
456 ELSEIF (ishell == 2)
THEN
459 IF (ieng == 2) emaj(i) = pla(i)
460 IF (off(i) == one)
THEN
461 IF (uvar(i,1) == zero)
THEN
463 IF (elcrkini(ilay,i) == 0 .and. emaj(i) >= em_dcrit(i))
THEN
470 noff(i) = noff(i) + 1
471 IF (noff(i) == nptot)
THEN
472 elcrkini(ilay,i) = -1
477 ELSEIF (elcrkini(ilay,i) == 2 .and. emaj(i) >= em_dadv(i))
THEN
484 noff(i) = noff(i) + 1
492 ELSEIF (emaj(i) >= em_dcrit(i))
THEN
499 noff(i) = noff(i) + 1
500 IF (noff(i) == nptot)
THEN
505 ELSEIF (uvar(i,1) == one)
THEN
524 IF (rflagp(i) == 1)
WRITE(iout, 4800)ngl(i),iptt
525 IF (rflagp(i) == 1)
WRITE(istdo,4900)ngl(i),iptt,time
526#include "lockoff.inc"
534 IF (rflag(i) == 1)
WRITE(iout ,4000) ngl(i
535 IF (rflag(i) == 1)
WRITE(istdo,4100) ngl(i),time
537 IF (rflag(i) == -1)
WRITE(iout, 4200) ngl(i)
538 IF (rflag(i) == -1)
WRITE(istdo,4300) ngl(i),time
540 IF (rflag(i) == 3)
WRITE(iout, 4400) xchar,ngl(i)
541 IF (rflag(i) == 3)
WRITE(istdo,4500) xchar,ngl(i),time
542#include "lockoff.inc"
549 IF (ieng == 1)
DEALLOCATE(xf)
551 2000
FORMAT(1x,
'FOR SHELL ELEMENT (FLD)',i10,1x,
'LAYER',i3,
':',/
552 . 1x,
'STRESS TENSOR SET TO ZERO')
553 2100
FORMAT(1x,
'FOR SHELL ELEMENT (FLD)',i10,1x,
'LAYER',i3,
':',/,
554 . 1x,
'STRESS TENSOR SET TO ZERO',1x,
'AT TIME :',1pe20.13)
555 2400
FORMAT(1x,1pg20.13,
' % OF THICKNESS OF SHELL BROKEN ')
556 2410
FORMAT(1x,1pg20.13,
' % OF THICKNESS OF SHELL ',i10,
' BROKEN ')
557 2500
FORMAT(1x,
' LOWER SKIN -> UPPER SKIN ')
558 2600
FORMAT(1x,
' UPPER SKIN -> LOWER SKIN ')
560 3000
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT',i10,1x,
'LAYER',i3)
561 3100
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT',i10,1x,
'LAYER',i3,/
562 . 1x,
'AT TIME :',1pe12.4)
563 3200
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT',i10,
' LAYER',i3)
564 3300
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT',i10,
' LAYER',i3/
565 . 1x,
'AT TIME :',1pe12.4)
566 3400
FORMAT(1x,
'DELETE ',a4,
' PHANTOM ELEMENT, SHELL ID=',i10,
' LAYER',i3)
567 3500
FORMAT(1x,
'DELETE ',a4,
' PHANTOM ELEMENT, SHELL ID=',i10,
' LAYER',i3,/
568 . 1x,
'AT TIME :',1pe12.4)
569 3800
FORMAT(1x,
'FLD FAILURE IN SHELL',i10,1x,
'LAYER',i3,1x,
'INT POINT',i2)
570 3900
FORMAT(1x,
'FLD FAILURE IN SHELL',i10,1x,
'LAYER',i3,1x,
'INT POINT',i2,/
571 . 1x,
'AT TIME :',1pe12.4)
573 4000
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT',i10)
574 4100
FORMAT(1x,
'CRACK INITIALIZATION IN SHELL ELEMENT',i10,/
575 . 1x,
'AT TIME :',1pe12.4)
576 4200
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT',i10)
577 4300
FORMAT(1x,
'CRACK ADVANCEMENT IN SHELL ELEMENT',i10,/
578 . 1x,
'AT TIME :',1pe12.4)
579 4400
FORMAT(1x,
'DELETE ',a4,
' PHANTOM ELEMENT, SHELL ID=',i10)
580 4500
FORMAT(1x,
'DELETE ',a4,
' PHANTOM ELEMENT, SHELL ID=',i10,/
581 . 1x,
'AT TIME :',1pe12.4)
582 4800
FORMAT(1x,
'FLD FAILURE IN SHELL',i10,1x,
'INT POINT',i2)
583 4900
FORMAT(1x,
'FLD FAILURE IN SHELL',i10,1x,
'INT POINT',i2,1x
'AT TIME :'
subroutine fail_fld_xfem(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, uparam, ngl, ipt, nptot, ssp, tens, signxx, signyy, signxy, signyz, signzx, epsxx, epsyy, epsxy, epsyz, epszx, uvar, noff, off, lf_dammx, elcrkini, ixfem, ixel, ilay, iptt, offl, nptt, npttf, dfmax, tdel, dam, fld_idx, niparam, iparam, pla, depsxx, depsyy, depsxy, dt1)