39
40
41
42
43
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "units_c.inc"
53#include "com_xfem1.inc"
54
55
56
57 INTEGER NEL,NFT,ILAY,NLAY
58 INTEGER IXTG(NIXTG,*),NGL(NEL),IEL_CRKTG(*),
59 . INOD_CRK(*),NODENR(*),IAD_CRKTG(3,*),ELCRKINI(NLAY,*),
60 . ELCUTC(2,*),NODEDGE(2,*),CRKNODIAD(*),KNOD2ELC(*),XEDGE3N(3,*)
62 my_real dir1(nlay,nel),dir2(nlay,nel)
63 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
64
65
66
67 INTEGER I,J,K,IR,p1,p2,ILAY1,ILAY2,NENR1,NENR2,ENR1,ENR2,
68 . IENR1,IENR2,NEWCRK,IED,IED1,IED2,FI1,FI2,FAC,OK,ICRK,pp1,pp2,pp3,
69 . NOD1,NOD2,IFI1,IFI2,IE1,IE2,IE10,IE20,ELCRK,ELCRKTG,
70 . IEDGE,ICUT,SIGBETA,ITRI,NM,NP,NX1,NX2,NX3,IAD1,IAD2,IAD3
71 INTEGER JCT(NEL),ELFISS(NEL),EDGEL(3,NEL),ELTIP(NEL),
72 . ENR0(3,NEL),IENR0(3,NEL),TIP(NEL),IADC(3),
73 . DD(3),D(6),DX(6),ISIGN(3),N(3),IENR(3),NN(3),INV(2)
74
75 my_real,
DIMENSION(NEL) :: xl1,yl1
76 my_real,
DIMENSION(2,NEL) :: xin,yin
77 my_real,
DIMENSION(3,NEL) :: xxl,yyl,len,fit
78 my_real beta0(3,nel),xn(3),yn(3),zn(3),xmi(2),ymi(2)
79 my_real beta,xint,yint,fi,xxx,yyy,zzz,bmin,bmax,
80 . x10,y10,z10,x20,y20,z20,m12,mm,cross1,cross12,
81 . xint0,yint0,dir11,dir22,x1,y1,x2,y2,x3,y3,area1,area2,area3
82
83 DATA d/1,2,2,3,1,3/
84 DATA dd/2,3,1/
85 DATA dx/1,2,3,1,2,3/
86 parameter(bmin = 0.01, bmax = 0.99)
87
88 newcrk = 0
89 DO i=1,nel
90 jct(i) = 0
91 IF (elcrkini(ilay,i) == 1) THEN
92 newcrk = newcrk + 1
93 jct(newcrk) = i
94 ENDIF
95 ENDDO
96 IF (newcrk == 0) RETURN
97
98 pp1 = nxel*(ilay-1) + 1
99 pp2 = pp1 + 1
100 pp3 = pp1 + 2
101
102 DO i=1,nel
103 beta0(1:3,i) = zero
104 elfiss(i)= 0
105 tip(i) = 0
106
107 edgel(1,i)=0
108 edgel(2,i)=0
109 edgel(3,i)=0
110
111 ienr0(1,i)=0
112 ienr0(2,i)=0
113 ienr0(3,i)=0
114 xin(1,i) = zero
115 yin(1,i) = zero
116 xin(2,i) = zero
117 yin(2,i) = zero
118 ENDDO
119
120 inv(1) = 2
121 inv(2) = 1
122
123
124
125
126 DO ir=1,newcrk
127 i = jct(ir)
128 elcrktg = iel_crktg(i+nft)
129 ok = 0
130 icut = 0
131 ied = 0
132 DO k=1,3
133 iedge = xedge3n(k,elcrktg)
134 icut = crkedge(ilay)%ICUTEDGE(iedge)
135 nod1 = nodedge(1,iedge)
136 nod2 = nodedge(2,iedge)
137 IF (nod1 == ixtg(k+1,i) .and. nod2 == ixtg(dd(k)+1,i)) THEN
138 p1 = k
139 p2 = dd(k)
140 ELSE IF (nod2 == ixtg(k+1,i) .and. nod1 == ixtg(dd(k)+1,i)) THEN
141 p1 = dd(k)
142 p2 = k
143 ENDIF
144 IF (icut == 1) THEN
145 ok = ok + 1
146 ied = k
147
148 icrk = crkedge(ilay)%EDGEICRK(iedge)
149 ienr1 = crkedge(ilay)%EDGEENR(1,iedge)
150 ienr2 = crkedge(ilay)%EDGEENR(2,iedge)
151 ifi1 = crkedge(ilay)%EDGEIFI(1,iedge)
152 ifi2 = crkedge(ilay)%EDGEIFI(2,iedge)
153
154 elfiss(i) = icrk
155 ienr0(p1,i)= ienr1
156 ienr0(p2,i)= ienr2
157 EXIT
158 ENDIF
159 ENDDO
160
161 IF (ok /= 1) THEN
162 WRITE(iout,*) 'ERROR IN ADVANCING CRACK --- CHECK CRACK TIP'
164 ENDIF
165
166 edgel(ied,i) = 1
167 iedge = xedge3n(ied,elcrktg)
168 tip(i) = crkedge(ilay)%EDGETIP(1,iedge)
169
170 END DO
171
172
173
174 DO i=1,nel
175 xl1(i) = zero
176 yl1(i) = zero
177 xxl(1,i) = xl1(i)
178 yyl(1,i) = yl1(i)
179 xxl(2,i) = xl2(i)
180 yyl(2,i) = yl2(i)
181 xxl(3,i) = xl3(i)
182 yyl(3,i) = yl3(i)
183 ENDDO
184
185 DO i=1,nel
186 len(1,i) = (xl2(i)-xl1(i))*(xl2(i)-xl1(i))
187 . + (yl2(i)-yl1(i))*(yl2(i)-yl1(i))
188 len(2,i) = (xl3(i)-xl2(i))*(xl3(i)-xl2(i))
189 . + (yl3(i)-yl2(i))*(yl3(i)-yl2(i))
190 len(3,i) = (xl1(i)-xl3(i))*(xl1(i)-xl3(i))
191 . + (yl1(i)-yl3(i))*(yl1(i)-yl3(i))
192 ENDDO
193
194
195
196 DO ir=1,newcrk
197 i=jct(ir)
198 elcrktg = iel_crktg(i+nft)
199 elcrk = elcrktg + ecrkxfec
200 ied1 = 0
201 ied2 = 0
202 DO k=1,3
203 IF(edgel(k,i) > 0)THEN
204 ied1 = edgel(k,i)
205 ied2 = inv(ied1)
206 EXIT
207 END IF
208 END DO
209 DO k=1,3
210 iedge = xedge3n(k,elcrktg)
211 IF (iedge > 0 .and. edgel(k,i) == 1) THEN
212 icut = crkedge(ilay)%ICUTEDGE(iedge)
213 IF (icut == 1) THEN
214 beta = crkedge(ilay)%RATIO(iedge)
215
216 IF (beta > one .or. beta == zero) THEN
217 WRITE(*,*) 'ERROR NEGATIV BETA, NO INTERSECTION!'
219 ENDIF
220
221 nod1 = nodedge(1,iedge)
222 nod2 = nodedge(2,iedge)
223 IF (nod1 == ixtg(k+1,i) .and. nod2 == ixtg(dd(k)+1,i)) THEN
224 p1 = k
225 p2 = dd(k)
226 ELSEIF (nod2 == ixtg(k+1,i).and.nod1==ixtg(dd(k)+1,i)) THEN
227 p1 = dd(k)
228 p2 = k
229 ENDIF
230 x10 = xxl(p1,i)
231 y10 = yyl(p1,i)
232 x20 = xxl(p2,i)
233 y20 = yyl(p2,i)
234
235 xint = x10+beta*(x20-x10)
236 yint = y10+beta*(y20-y10)
237 xin(ied1,i) = xint
238 yin(ied1,i) = yint
239 ENDIF
240 ENDIF
241 ENDDO
242
243 IF (ied1 == 0 .or. ied2 == 0) GOTO 130
244 xint0 = xin(ied1,i)
245 yint0 = yin(ied1,i)
246
247 dir11 = -dir2(ilay,i)
248 dir22 = dir1(ilay,i)
249
250 IF (dir11 == zero) THEN
251 DO 140 k=1,3
252 xint = zero
253 yint = zero
254 elcrktg = iel_crktg(i+nft)
255 elcrk = elcrktg + ecrkxfec
256 iedge = xedge3n(k,elcrktg)
257 nod1 = nodedge(1,iedge)
258 nod2 = nodedge(2,iedge)
259 IF(nod1 == ixtg(k+1,i) .and. nod2 == ixtg(dd(k)+1,i))THEN
260 p1 = k
261 p2 = dd(k)
262 ELSE IF(nod2 == ixtg(k+1,i).and.nod1==ixtg(dd(k)+1,i))THEN
263 p1 = dd(k)
264 p2 = k
265 ENDIF
266
267 IF (edgel(k,i) == ied1) GOTO
268 IF (xxl(p1,i) == xxl(p2,i)) GOTO 140
269 m12 = xxl(p2,i)-xxl(p1,i)
270 m12 = (yyl(p2,i)-yyl(p1,i))/m12
271 xint = xint0
272 yint = yyl(p1,i)+m12*(xint-xxl(p1,i))
273 cross12 = (xint-xxl(p1,i))*(xint-xxl(p2,i))+
274 . (yint-yyl(p1,i))*(yint-yyl(p2,i))
275 IF (cross12 > zero) GOTO 140
276
277 cross1 = (xxl(p1,i) - xint)**2 + (yyl(p1,i) - yint)**2
278 beta = sqrt(cross1 / len(k,i))
279 beta =
max(beta, bmin)
280 beta =
min(beta, bmax)
281 beta0(k,i) = beta
282
283 xin(ied2,i) = xint
284 yin(ied2,i) = yint
285 edgel(k,i) = ied2
286 EXIT
287 140 CONTINUE
288 ELSEIF(dir22 == zero)THEN
289 DO 150 k=1,3
290 xint = zero
291 yint = zero
292 elcrktg = iel_crktg(i+nft)
293 elcrk = elcrktg + ecrkxfec
294 iedge = xedge3n(k,elcrktg)
295 nod1 = nodedge(1,iedge)
296 nod2 = nodedge(2,iedge)
297 IF(nod1 == ixtg(k+1,i) .and. nod2 == ixtg(dd(k)+1,i))THEN
298 p1 = k
299 p2 = dd(k)
300 ELSE IF(nod2 == ixtg(k+1,i).and.nod1==ixtg(dd(k)+1,i))THEN
301 p1 = dd(k)
302 p2 = k
303 ENDIF
304
305 IF (edgel(k,i) == ied1) GOTO 150
306 IF (yyl(p1,i) == yyl(p2,i)) GOTO 150
307 m12 = yyl(p2,i)-yyl(p1,i)
308 m12 = (xxl(p2,i)-xxl(p1,i))/m12
309 yint = yint0
310 xint = xxl(p1,i)+m12*(yint-yyl(p1,i))
311 cross12 = (xint-xxl(p1,i))*(xint-xxl(p2,i))+
312 . (yint-yyl(p1,i))*(yint-yyl(p2,i))
313 IF (cross12 > zero) GOTO 150
314
315 cross1 = (xxl(p1,i) - xint)**2 + (yyl
316 beta = sqrt(cross1 / len(k,i))
317 beta =
max(beta, bmin)
318 beta =
min(beta, bmax)
319 beta0(k,i) = beta
320
321 xin(ied2,i) = xint
322 yin(ied2,i) = yint
323 edgel(k,i) = ied2
324 EXIT
325 150 CONTINUE
326 ELSEIF(dir11 /= zero .AND. dir22 /= zero)THEN
327 DO 160 k=1,3
328 xint = zero
329 yint = zero
330 elcrktg = iel_crktg(i+nft)
331 elcrk = elcrktg + ecrkxfec
332 iedge = xedge3n(k,elcrktg)
333 nod1 = nodedge(1,iedge)
334 nod2 = nodedge(2,iedge)
335 IF (nod1 == ixtg(k+1,i) .and. nod2 == ixtg(dd(k)+1,i))THEN
336 p1 = k
337 p2 = dd(k)
338 ELSE IF (nod2 == ixtg(k+1,i).and.nod1==ixtg(dd(k)+1,i))THEN
339 p1 = dd(k)
340 p2 = k
341 ENDIF
342
343 IF (edgel(k,i) == ied1) GOTO 160
344 IF (xxl(p1,i) == xxl(p2,i)) THEN
345 mm = dir22/dir11
346 xint = xxl(p1,i)
347 yint = yint0+mm*(xint-xint0)
348 cross12 = (xint-xxl(p1,i))*(xint-xxl(p2,i))+
349 . (yint-yyl(p1,i))*(yint-yyl(p2,i))
350 IF (cross12 > zero) GOTO 160
351
352 cross1 = (xxl(p1,i) - xint)**2 + (yyl(p1,i) - yint)**2
353 beta = sqrt(cross1 / len(k,i))
354 beta =
max(beta, bmin)
355 beta =
min(beta, bmax)
356 beta0(k,i) = beta
357
358 xin(ied2,i) = xint
359 yin(ied2,i) = yint
360 edgel(k,i) = ied2
361 EXIT
362 ELSE
363 mm = dir22/dir11
364 m12 = xxl(p2,i)-xxl(p1,i)
365 m12 = (yyl(p2,i)-yyl(p1,i))/m12
366 IF (mm == m12) GOTO 160
367 xint = (yint0-yyl(p1,i)+m12*xxl(p1,i)-mm*xint0)/(m12-mm)
368 yint = yint0+mm*(xint-xint0)
369 cross12 = (xint-xxl(p1,i))*(xint-xxl(p2,i))+
370 . (yint-yyl(p1,i))*(yint-yyl(p2,i))
371 IF (cross12 > zero) GOTO 160
372
373 cross1 = (xxl(p1,i) - xint)**2 + (yyl(p1,i) - yint)**2
374 beta = sqrt(cross1 / len(k,i))
375 beta =
max(beta, bmin)
376 beta =
min(beta, bmax)
377 beta0(k,i) = beta
378
379 xin(ied2,i) = xint
380 yin(ied2,i) = yint
381 edgel(k,i) = ied2
382 EXIT
383 ENDIF
384 160 CONTINUE
385 ENDIF
386 130 CONTINUE
387 ENDDO
388
389
390
391 DO ir=1,newcrk
392 i = jct(ir)
393 fac = 0
394 DO k=1,3
395 IF (edgel(k,i)==1 .or. edgel(k,i)==2) fac=fac+1
396 ENDDO
397 IF (fac /= 2) THEN
398 WRITE(iout,*) 'ERROR IN ADVANCING CRACK.NO CUT EDGES'
400 ENDIF
401 ENDDO
402
403 DO ir=1,newcrk
404 i = jct(ir)
405 elcrktg = iel_crktg(i+nft)
406 DO k=1,3
407 ied = edgel(k,i)
408 IF (ied > 0) THEN
409 crkedge(ilay)%IEDGETG(k,elcrktg) = ied
410 ENDIF
411 ENDDO
412 ENDDO
413
414
415
416 DO ir=1,newcrk
417 i = jct(ir)
418 fit(1,i) = zero
419 fit(2,i) = zero
420 fit(3,i) = zero
421 xn(1) = xl1(i)
422 yn(1) = yl1(i)
423 xn(2) = xl2(i)
424 yn(2) = yl2(i)
425 xn(3) = xl3(i)
426 yn(3) = yl3(i)
427
428 DO k=1,3
429 p1 = k
430 p2 = dd(k)
431 ied = edgel(k,i)
432 IF (ied > 0) THEN
433 xmi(ied) = half*(xn(p1)+xn(p2))
434 ymi(ied) = half*(yn(p1)+yn(p2))
435 ENDIF
436 ENDDO
437 DO k=1,3
438 fi=zero
439 CALL lsint4(xmi(1),ymi(1),xmi(2),ymi(2),xn(k),yn(k),fi )
440 IF (fit(k,i) == zero) fit(k,i)=fi
441 ENDDO
442 ENDDO
443
444 DO ir=1,newcrk
445 i = jct(ir)
446 elcrktg = iel_crktg(i+nft)
447
448 DO k=1,3
449 ied = edgel(k,i)
450 IF (ied == 2) THEN
451 iedge = xedge3n(k,elcrktg)
452
453 icut = crkedge(ilay)%ICUTEDGE(iedge)
454 IF (icut > 0) THEN
455 crkedge(ilay)%ICUTEDGE(iedge) = 3
456 ELSE
457 crkedge(ilay)%ICUTEDGE(iedge) = 2
458 crkedge(ilay)%RATIO(iedge) = beta0(k,i)
459 ENDIF
460 ENDIF
461 ENDDO
462 ENDDO
463
464
465
466 DO ir=1,newcrk
467 i = jct(ir)
468 elcrktg = iel_crktg(i+nft)
469 elcrk = elcrktg + ecrkxfec
470
471 iadc(1) = iad_crktg(1,elcrktg)
472 iadc(2) = iad_crktg(2,elcrktg)
473 iadc(3) = iad_crktg(3,elcrktg)
474
475 n(1) = ixtg(2,i)
476 n(2) = ixtg(3,i)
477 n(3) = ixtg(4,i)
478
479 nn(1) = inod_crk(n(1))
480 nn(2) = inod_crk(n(2))
481 nn(3) = inod_crk(n(3))
482
483 icrk = elfiss(i)
484
485 elcutc(1,i) = 2
486 numelcrk = numelcrk + 1
487
488 isign(1) = int(sign(one,fit(1,i)))
489 isign(2) = int(sign(one,fit(2,i)))
490 isign(3) = int(sign(one,fit(3,i)))
491
492 IF (fit(1,i) == zero) isign(1) = 0
493 IF (fit(2,i) == zero) isign(2) = 0
494 IF (fit(3,i) == zero) isign(3) = 0
495
496 itri = 0
497 nm = 0
498 np = 0
499 DO k=1,3
500 IF (isign(k) > 0) THEN
501 itri = itri + 1
502 np = k
503 ELSEIF (isign(k) < 0) THEN
504 nm = k
505 ENDIF
506 ENDDO
507 IF (itri == 1) THEN
508 itri = -1
509 nx1 = np
510 ELSEIF (itri == 2) THEN
511 itri = 1
512 nx1 = nm
513 ENDIF
514 nx2 = dx(nx1+1)
515 nx3 = dx(nx2+1)
518
519
520
521 DO k=1,3
522 IF(ienr0(k,i) /= 0)THEN
523 ienr(k) = ienr0(k,i)
524 ELSE
525 ienr(k) = crknodiad(iadc(k)) + knod2elc(nn(k))*(ilay-1)
526 ENDIF
527 ENDDO
528
529 sigbeta = 0
530 DO k=1,3
531 ied = edgel(k,i)
532 IF (ied == 2) THEN
533 iedge = xedge3n(k,elcrktg)
534 nod1 = nodedge(1,iedge)
535 nod2 = nodedge(2,iedge)
536 ie10 = crkedge(ilay)%EDGEENR(1,iedge)
537 ie20 = crkedge(ilay)%EDGEENR(2,iedge)
538 IF (nod1 == ixtg(k+1,i) .and. nod2 == ixtg(dd(k)+1,i)) THEN
539 ie1 = ienr(k)
540 ie2 = ienr(dd(k))
541 ifi1 = isign(k)
542 ifi2 = isign(dd(k))
543 sigbeta = iedge
544 ELSE IF (nod2 == ixtg(k+1,i).and.nod1 == ixtg(dd(k)+1,i)) THEN
545 ie1 = ienr(dd(k))
546 ie2 = ienr(k)
547 ifi1 = isign(dd(k))
548 ifi2 = isign(k)
549 sigbeta = -iedge
550 END IF
551 crkedge(ilay)%EDGEENR(1,iedge) =
max(ie1,ie10)
552 crkedge(ilay)%EDGEENR(2,iedge) =
max(ie2,ie20)
553 IF (crkedge(ilay)%EDGEICRK(iedge) == 0)
554 . crkedge(ilay)%EDGEICRK(iedge) = icrk
555 ENDIF
556 ENDDO
557
558 crkedge(ilay)%LAYCUT(elcrk) = 1
560
561 DO k=1,3
562 ied = edgel(k,i)
563 iedge = xedge3n(k,elcrktg)
564 IF (ied > 0) THEN
565 crkedge(ilay)%EDGETIP(1,iedge) = tip(i)
566 crkedge(ilay)%EDGETIP(2,iedge) =
567 . crkedge(ilay)%EDGETIP(2,iedge) + 1
568 ENDIF
569 ENDDO
570
574
575
576
577
578 crklvset(pp1)%ENR0(1,iadc(1)) = -ienr(1)
579 crklvset(pp1)%ENR0(1,iadc(2)) = -ienr(2)
580 crklvset(pp1)%ENR0(1,iadc(3)) = -ienr(3)
581
582 IF (isign(1) > 0)
crklvset(pp1)%ENR0(1,iadc(1)) = 0
583 IF (isign(2) > 0)
crklvset(pp1)%ENR0(1,iadc(2)) = 0
584 IF (isign(3) > 0)
crklvset(pp1)%ENR0(1,iadc(3)) = 0
585
586
587
588 crklvset(pp2)%ENR0(1,iadc(1)) = -ienr(1)
589 crklvset(pp2)%ENR0(1,iadc(2)) = -ienr(2)
590 crklvset(pp2)%ENR0(1,iadc(3)) = -ienr(3)
591
592 IF (isign(1) < 0)
crklvset(pp2)%ENR0(1,iadc(1)) = 0
593 IF (isign(2) < 0)
crklvset(pp2)%ENR0(1,iadc(2)) = 0
594 IF (isign(3) < 0)
crklvset(pp2)%ENR0(1,iadc(3)) = 0
595
596
597
598 IF (itri < 0) THEN
599 ie2 = xedge3n(nx3,elcrktg)
600 IF (crkedge(ilay)%ICUTEDGE(ie2) > 1) THEN
601 sigbeta = -sigbeta
602 iad1 = iadc(nx1)
603 iad2 = iadc(nx2)
604 iad3 = iadc(nx3)
605 nod1 = iad3
606 nod2 = iad1
610 crklvset(pp2)%ENR0(1,iad1) = -crknodiad(iad1) - knod2elc(nn(nx1))*(ilay-1)
611
612
613 x1 = xxl(nx1,i)
614 y1 = yyl(nx1,i)
615 ied = crkedge(ilay)%IEDGETG(nx1,elcrktg)
616 x2 = xin(ied,i)
617 y2 = yin(ied,i)
618 ied = crkedge(ilay)%IEDGETG(nx3,elcrktg)
619 x3 = xin(ied,i)
620 y3 = yin(ied,i)
621 area1 = half*abs((x1-x3)*(y2-y1) - (x1-x2)*(y3-y1))
622 area1 = area1 /
area(i)
623 x1 = xxl(nx2,i)
624 y1 = yyl(nx2,i)
625 x2 = xxl(nx3,i)
626 y2 = yyl(nx3,i)
627 area2 = half*abs((x1-x3)*(y2-y1) - (x1-x2)*(y3-y1))
628 area2 = area2 /
area(i)
629 area3 = one - area1 - area2
630
631 ELSE
632
633 ENDIF
634
635 ELSEIF (itri > 0) THEN
636
637 ie1 = xedge3n(nx1,elcrktg)
638 IF (crkedge(ilay)%ICUTEDGE(ie1) > 1) THEN
639 iad1 = iadc(nx1)
640 iad2 = iadc(nx2)
641 iad3 = iadc(nx3)
645 crklvset(pp1)%ENR0(1,iad1) = -crknodiad(iad1) - knod2elc(nn(nx1))*(ilay-1)
646
647
648 ied1= crkedge(ilay)%IEDGETG(nx1,elcrktg)
649 ied2= crkedge(ilay)%IEDGETG(nx3,elcrktg)
650 x1 = xin(ied1,i)
651 y1 = yin(ied1,i)
652 x2 = xxl(nx2,i)
653 y2 = yyl(nx2,i)
654 x3 = xxl(nx3,i)
655 y3 = yyl(nx3,i)
656 area1 = half*abs((x1-x3)*(y2-y1) - (x1-x2)*(y3-y1))
657 area1 = area1 /
area(i)
658 x1 = xxl(nx1,i)
659 y1 = yyl(nx1,i)
660 x2 = xin(ied1,i)
661 y2 = yin(ied1,i)
662 x3 = xin(ied2,i)
663 y3 = yin(ied2,i)
664 area2 = half*abs((x1-x3)*(y2-y1) - (x1-x2)*(y3-y1))
665 area2 = area2 /
area(i)
666 area3 = one - area1 - area2
667 ELSE
668
669 ENDIF
670 ENDIF
671
675
676 IF (area3 < zero .or. area1 > one .or. area2 > one .or. area3 > one ) THEN
677 print*,'ERROR : XFEM PHANTOM ELEMENT AREA: ELCRK=',elcrk
678 ENDIF
679
680 ENDDO
681
682 RETURN
subroutine lsint4(y1, z1, y2, z2, y, z, fi)
subroutine area(d1, x, x2, y, y2, eint, stif0)
type(xfem_phantom_), dimension(:), allocatable xfem_phantom
type(xfem_lvset_), dimension(:), allocatable crklvset