44 . IPARG ,IXC ,IXTG ,XREFC ,XREFTG ,
45 . X ,ICRK ,INOD_CRK,NXSEG ,NODLS ,
46 . RATIOLS ,NTAG ,IELCRKC ,IELCRKTG,IEDGESH4,
47 . IEDGESH3,NODEDGE ,TAGSKYC ,TAGSKYTG,KNOD2ELC,
48 . TAGEDGE ,CRKLVSET,CRKSHELL,CRKEDGE ,XFEM_PHANTOM,
60#include "implicit_f.inc"
71#include "vect01_c.inc"
72#include "com_xfem1.inc"
76 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*),
77 . ICRK,INOD_CRK(*),NXSEG,NODLS(2,*),IELCRKC(*),IELCRKTG(*),
78 . NTAG(*),IEDGESH4(4,*),IEDGESH3(3,*),NODEDGE(2,*),
79 . TAGSKYC(4,*),TAGSKYTG(3,*),KNOD2ELC(*),TAGEDGE(*),ITAB(*),ID
81 . X(3,*),XREFC(4,3,*),XREFTG(3,3,*),RATIOLS(*)
83 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
84 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP,NXEL) :: XFEM_TAB
85 TYPE (XFEM_LVSET_) ,
DIMENSION(NLEVMAX) :: CRKLVSET
86 TYPE (XFEM_SHELL_) ,
DIMENSION(NLEVMAX) :: CRKSHELL
87 TYPE (XFEM_EDGE_) ,
DIMENSION(NXLAYMAX) :: CRKEDGE
88 TYPE (XFEM_PHANTOM_),
DIMENSION(NXLAYMAX) :: XFEM_PHANTOM
89 CHARACTER(LEN=NCHARTITLE)::TITR
93 INTEGER XNOD(2,2),TAGXNOD(NXSEG+1),
94 . ngl(mvsiz),ix1(mvsiz),ix2(mvsiz),ix3(mvsiz),ix4(mvsiz)
95 INTEGER I,K,,NG,NEL,LS,FAC,IHBE,ISH3N,IXFEM,ITG,NELCUT,ILAY,NXLAY
96 my_real
DIMENSION(MVSIZ)
101 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: ELCUT
102 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: EDGEC,EDGETG
103 my_real,
DIMENSION(:,:),
ALLOCATABLE :: BETA
106 ALLOCATE (elcut(numelc+numeltg))
107 ALLOCATE (beta(2,numelc+numeltg))
108 ALLOCATE (edgec(4,numelc))
109 ALLOCATE (edgetg(3,numeltg))
134 xnod(1,2) = nodls(2,ls)
136 xnod(2,1) = nodls(1,ls+1)
137 xnod(2,2) = nodls(2,ls+1)
139 beta0(1) = ratiols(ls)
140 beta0(2) = ratiols(ls+1)
144 IF(ratio == zero)
THEN
146 ELSEIF(ratio == one)
THEN
155 IF (ixfem == 0) cycle
157 nxlay = elbuf_tab(ng)%NLAY
165 IF (ity == 7) ihbe = 0
176 IF(xnod(1,1) == xnod(1,2)) fac = 1
187 IF(xnod(2,1) == xnod(2,2)) fac = 2
201 CALL elcut4n(i, ixc(1,nft+1), xnod, edgec(1,nft+1),fac,ied)
202 IF (fac == 1) tagxnod(ls) = 1
208 CALL elcut4n(i, ixc(1,nft+1), xnod, edgec(1,nft+1),fac,ied)
209 IF (fac == 2) tagxnod(ls+1) = 1
216 numelcrk = numelcrk + 1
220 IF(nelcut == 0)
GOTO 200
222 CALL ccoori(x,xrefc(1,1,nft+1),ixc(1,nft+1),
223 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
224 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
225 . ix1 ,ix2 ,ix3 ,ix4 ,ngl )
227 CALL xyzloc4n(x1l,y1l,x2l,y2l,x3l,y3l,x4l,y4l,
228 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
229 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 )
232 CALL preinicrk4n(elbuf_tab(ng),xfem_tab(ng,1:nxel) ,
233 . x1l ,y1l ,x2l ,y2l ,x3l ,
234 . y3l , x4l ,y4l ,lft ,llt ,
235 . nft ,nxlay ,ielcrkc ,edgec ,beta0 ,
236 . iedgesh4,elcut ,xnod ,ixc ,nodedge ,
237 . tagskyc ,knod2elc,tagedge,crklvset,crkshell,
238 . crkedge ,xfem_phantom)
241 ELSE IF (ity==7)
THEN
251 IF(xnod(1,1) == xnod(1,2)) fac = 1
262 IF(xnod(2,1) == xnod(2,2)) fac = 2
274 CALL elcut3n(i,ixtg(1,nft+1),xnod,edgetg(1,nft+1),fac,1)
275 IF (fac == 1) tagxnod(ls) = 1
279 CALL elcut3n(i,ixtg(1,nft+1),xnod,edgetg(1,nft+1),fac,2)
280 IF (fac == 2) tagxnod(ls+1) = 1
285 elcut(i+nft+numelc) = 1
287 numelcrk = numelcrk + 1
291 IF (nelcut == 0)
GOTO 200
293 CALL c3coori(x,xreftg(1,1,nft+1),ixtg(1,nft+1),ngl,
294 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
295 . z1 ,z2 ,z3 ,ix1 ,ix2 ,ix3 )
297 CALL xyzloc3n(x1l ,y1l ,x2l ,y2l ,x3l ,y3l ,
298 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
301 CALL preinicrk3n(elbuf_tab(ng),xfem_tab(ng,1:nxel) ,
302 . x1l ,y1l ,x2l ,y2l ,x3l ,
303 . y3l ,lft ,llt ,nft ,nxlay ,
304 . ielcrktg,edgetg ,beta0 ,iedgesh3,elcut(itg),
306 . tagedge ,crklvset,crkshell,crkedge,xfem_phantom)
309 IF (nelcut == 1)
EXIT
315 IF(tagxnod(ls) == 0)
THEN
320 . i2=itab(xnod(1,1)),
321 . i3=itab(xnod(1,2)),
324 ELSEIF(tagxnod(ls+1) == 0)
THEN
329 . i2=itab(xnod(2,1)),
330 . i3=itab(xnod(2,2)),
342 IF (ixfem == 0) cycle
344 nxlay = elbuf_tab(ng)%NLAY
352 CALL edgetip4n(lft ,llt ,nft ,ielcrkc ,iedgesh4,
353 . nxlay ,edgec ,tagedge,crklvset,crkedge)
357 . ng ,ielcrkc,ity ,crkedge)
358 ELSEIF (ity == 7)
THEN
359 CALL edgetip3n(lft ,llt ,nft ,ielcrktg,iedgesh3,
360 . nxlay ,edgetg ,tagedge,crklvset,crkedge)
364 . ng ,ielcrktg,ity ,crkedge)
370 IF (crkedge(ilay)%EDGETIP(1,i) == 1 .or.
371 . crkedge(ilay)%EDGETIP(2,i) == 1)
THEN
373 crklvset(nxel*(ilay-1)+k)%ICUTEDGE(i) = 2
379 IF(
ALLOCATED(elcut))
DEALLOCATE(elcut)
380 IF(
ALLOCATED(beta))
DEALLOCATE(beta)
381 IF(
ALLOCATED(edgec))
DEALLOCATE(edgec)
382 IF(
ALLOCATED(edgetg))
DEALLOCATE(edgetg)
392 SUBROUTINE xyzloc4n(X1L,Y1L,X2L,Y2L,X3L,Y3L,X4L,Y4L,
398#include "implicit_f.inc"
402#include "mvsiz_p.inc"
406#include "vect01_c.inc"
410 my_real,
DIMENSION(MVSIZ),
INTENT(OUT) :: x1l,y1l,x2l,y2l,x3l,y3l,x4l,y4l
411 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: x1,x2,x3,x4,y1,y2,
418 my_real,
DIMENSION(MVSIZ) :: x21,y21,z21,x31,y31,z31,x41,y41,z41,
419 . x42,y42,z42,e1x,e2x,e3x,e1y,e2y,e3y,e1z,e2z,e3z,sum
438 e1x(i) = x2(i)+x3(i)-x1(i)-x4(i)
439 e1y(i) = y2(i)+y3(i)-y1(i)-y4(i)
440 e1z(i) = z2(i)+z3(i)-z1(i)-z4(i)
442 e2x(i) = x3(i)+x4(i)-x1(i)-x2(i)
443 e2y(i) = y3(i)+y4(i)-y1(i)-y2(i)
444 e2z(i) = z3(i)+z4(i)-z1(i)-z2(i)
446 e3x(i) = e1y(i)*e2z(i)-e1z(i)*e2y(i)
447 e3y(i) = e1z(i)*e2x(i)-e1x(i)*e2z(i)
448 e3z(i) = e1x(i)*e2y(i)-e1y(i)*e2x(i)
452 suma = e3x(i)*e3x(i)+e3y(i)*e3y(i)+e3z(i)*e3z(i)
453 suma = one/
max(sqrt(suma),em20)
458 s1 = e1x(i)*e1x(i)+e1y(i)*e1y(i)+e1z(i)*e1z(i)
459 s2 = e2x(i)*e2x(i)+e2y(i)*e2y(i)+e2z(i)*e2z(i)
461 e1x(i) = e1x(i) + (e2y(i)*e3z(i)-e2z(i)*e3y(i))*suma
462 e1y(i) = e1y(i) + (e2z(i)*e3x(i)-e2x(i)*e3z(i))*suma
463 e1z(i) = e1z(i) + (e2x(i)*e3y(i)-e2y(i)*e3x(i))*suma
465 suma = e1x(i)*e1x(i)+e1y(i)*e1y(i)+e1z(i)*e1z(i)
466 suma = one/
max(sqrt(suma),em20)
471 e2x(i) = e3y(i) * e1z(i) - e3z(i) * e1y(i)
472 e2y(i) = e3z(i) * e1x(i) - e3x(i) * e1z(i)
473 e2z(i) = e3x(i) * e1y(i) - e3y(i) * e1x(i)
479 x2l(i) = e1x(i)*x21(i)+e1y(i)*y21(i)+e1z(i)*z21(i)
480 y2l(i) = e2x(i)*x21(i)+e2y(i)*y21(i)+e2z(i)*z21(i)
481 x3l(i) = e1x(i)*x31(i)+e1y(i)*y31(i)+e1z(i)*z31(i)
482 y3l(i) = e2x(i)*x31(i)+e2y(i)*y31(i)+e2z(i)*z31(i)
483 x4l(i) = e1x(i)*x41(i)+e1y(i)*y41(i)+e1z(i)*z41(i)
484 y4l(i) = e2x(i)*x41(i)+e2y(i)*y41(i)+e2z(i)*z41(i)
498 . X1G,X2G,X3G,Y1G,Y2G,Y3G,
503#include "implicit_f.inc"
507#include "mvsiz_p.inc"
511#include "vect01_c.inc"
515 my_real,
DIMENSION(MVSIZ),
INTENT(OUT) :: x1l,y1l,x2l,y2l,x3l,y3l
516 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: x1g,x2g,x3g,y1g,y2g,y3g,
522 my_real,
DIMENSION(MVSIZ) :: SUM, RX, RY, RZ, SX, SY, SZ,
523 . E1X, E1Y, E1Z, E2X, E2Y, E2Z, E3X, E3Y, E3Z
526 rx(i) = x2g(i) - x1g(i)
527 ry(i) = y2g(i) - y1g(i)
528 rz(i) = z2g(i) - z1g(i)
529 sx(i) = x3g(i) - x1g(i)
530 sy(i) = y3g(i) - y1g(i)
531 sz(i) = z3g(i) - z1g(i)
536 . rx, ry, rz, sx, sy, sz,
537 . e1x,e2x,e3x,e1y,e2y,e3y,e1z,e2z,e3z,sum)
546 x2l(i) = e1x(i)*rx(i) + e1y(i)*ry(i) + e1z(i)*rz(i)
547 y2l(i) = e2x(i)*rx(i) + e2y(i)*ry(i) + e2z(i)*rz(i)
548 y3l(i) = e2x(i)*sx(i) + e2y(i)*sy(i) + e2z(i)*sz(i)
549 x3l(i) = e1x(i)*sx(i) + e1y(i)*sy(i) + e1z(i)*sz(i)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)