33 . IBORDNODE ,IXC ,IXTG ,IEDGESH4,IEDGESH3,
34 . IBORDEDGE ,NODEDGE ,IELCRKC ,IELCRKTG,IEDGE ,
35 . CEP_CRK ,IEDGE_TMP0)
38 use element_mod ,
only : nixc,nixtg
42#include "implicit_f.inc"
48#include "com_xfem1.inc"
52 INTEGER IBORDNODE(*),IXC(,*),IXTG(NIXTG,*),IEDGESH4(4,*),
53 . IEDGESH3(3,*),IBORDEDGE(*),NODEDGE(2,*),IELCRKC(*),IELCRKTG(*),
54 . IEDGE(*),CEP_CRK(*),IEDGE_TMP0(*)
58 INTEGER I,J,K,L,JJ,LL,I1,I2,I1M,I2M,NL,IED,NLMAX,,
59 . NELALL,NEL,NIX,JCRK0,JCRK,P,PROC
60 INTEGER NEXTK4(4),NEXTK3(3),IWORK(70000)
61 INTEGER,
DIMENSION(:,:),
ALLOCATABLE ::
62 . LINEIX,LINEIX2,IXWORK,IEDWORK4,IEDWORK3
63 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
64 . index,taged,itaged,nixel,tagel,tagel_crk,iedge_tmp
69 nlmax = 4*ecrkxfec + 3*ecrkxfetg
70 nelall = ecrkxfec+ecrkxfetg
72 ALLOCATE (lineix(2,nlmax) ,stat=stat)
73 ALLOCATE (lineix2(2,nlmax) ,stat=stat)
74 ALLOCATE (index(2*nlmax) ,stat=stat)
75 ALLOCATE (ixwork(5,nlmax) ,stat=stat)
76 ALLOCATE (iedwork4(4,ecrkxfec) ,stat=stat)
77 ALLOCATE (iedwork3(3,ecrkxfetg),stat=stat)
78 ALLOCATE (taged(nlmax) ,stat=stat)
79 ALLOCATE (itaged(nlmax) ,stat=stat)
80 ALLOCATE (nixel(nelall) ,stat=stat)
81 ALLOCATE (tagel(nelall) ,stat=stat)
82 ALLOCATE (tagel_crk(nelall) ,stat=stat)
96 CALL ancmsg(msgid=268 ,msgtype=msgerror,anmode=anstop,c1=
'EDGE XFEM')
104 IF (ielcrkc(j) > 0)
THEN
108 tagel_crk(nel) = ielcrkc(j)
113 IF (ielcrktg(j) > 0)
THEN
117 tagel_crk(nel) = ielcrktg(j)-ecrkxfec
131 i2 = ixc(nextk4(k)+1,j)
147 ELSE IF (nix == 3)
THEN
153 i2 = ixtg(nextk3(k)+1,j)
172 CALL my_orders(0,iwork,lineix,index,ll,2)
177 i1m = lineix(1,index(1))
178 i2m = lineix(2,index(1))
181 ixwork(3,nl)=lineix2(1,index(1))
182 ixwork(4,nl)=lineix2(2,index(1))
186 k = abs(ixwork(4,nl))
192 ELSE IF (nix == 3)
THEN
197 i1 = lineix(1,index(l))
198 i2 = lineix(2,index(l))
199 IF(i2 /= i2m .or. i1 /= i1m)
THEN
203 ixwork(3,nl)=lineix2(1,index(l))
204 ixwork(4,nl)=lineix2(2,index(l))
208 k = abs(ixwork(4,nl))
214 ELSE IF(nix == 3)
THEN
220 j = lineix2(1,index(l))
221 k = abs(lineix2(2,index(l)))
227 ELSE IF(nix == 3)
THEN
247 IF (taged(ied) == 0)
THEN
252 ibordedge(nl) = ixwork(5,ied)
253 IF(ixwork(5,ied) == 1)
THEN
254 ibordnode(ixwork(1,ied)) = 1
255 ibordnode(ixwork(2,ied)) = 1
258 nodedge(1,nl) = ixwork(1,ied)
259 nodedge(2,nl) = ixwork(2,ied)
261 iedgesh4(k,jj) = itaged(ied)
263 ELSE IF (nix == 3)
THEN
266 IF (taged(ied) == 0)
THEN
270 ibordedge(nl) = ixwork(5,ied)
272 IF(ixwork(5,ied) == 1)
THEN
273 ibordnode(ixwork(1,ied)) = 1
274 ibordnode(ixwork(2,ied)) = 1
277 nodedge(1,nl) = ixwork(1,ied)
278 nodedge(2,nl) = ixwork(2,ied)
280 iedgesh3(k,jj) = itaged(ied)
328 ALLOCATE (iedge_tmp(numedges))
338 IF(nix == 3) jcrk = jcrk + ecrkxfec
339 proc = cep_crk(jcrk) + 1
343 ied = iedgesh4(k,jcrk0)
350 IF(ied /= 0 .AND. ibordedge(ied) == 0)
THEN
351 IF(iedge_tmp(ied) >= 0)
THEN
352 iedge_tmp(ied) = iedge_tmp(ied) + 1
358 ied = iedgesh3(k,jcrk0)
365 IF(ied /= 0 .AND. ibordedge(ied) == 0)
THEN
366 IF(iedge_tmp(ied) >= 0)
THEN
367 iedge_tmp(ied) = iedge_tmp(ied) + 1
376 IF(iedge_tmp(ied) == 1) iedge_tmp(ied) = -1
382 IF(iedge_tmp(ied) == -1) iedge_tmp0(ied) = iedge_tmp(ied)
390 DEALLOCATE (iedwork4)
391 DEALLOCATE (iedwork3)
396 DEALLOCATE (tagel_crk)
397 DEALLOCATE (iedge_tmp)
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)