33 . IBORDNODE ,IXC ,IXTG ,IEDGESH4,IEDGESH3,
34 . IBORDEDGE ,NODEDGE ,IELCRKC ,IELCRKTG,IEDGE ,
35 . CEP_CRK ,IEDGE_TMP0)
41#include "implicit_f.inc"
47#include "com_xfem1.inc"
51 INTEGER (*),IXC(NIXC,*),IXTG(NIXTG,*),IEDGESH4(4,*),
52 . IEDGESH3(3,*),IBORDEDGE(*),NODEDGE(2,*),IELCRKC(*),IELCRKTG(*),
53 . IEDGE(*),CEP_CRK(*),IEDGE_TMP0(*)
57 INTEGER I,J,K,L,JJ,LL,I1,I2,I1M,I2M,NL,IED,NLMAX,STAT,
58 . NELALL,,NIX,JCRK0,JCRK,P,PROC
59 INTEGER NEXTK4(4),NEXTK3(3),IWORK(70000)
60 INTEGER,
DIMENSION(:,:),
ALLOCATABLE ::
61 . LINEIX,LINEIX2,IXWORK,IEDWORK4,IEDWORK3
62 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
63 . index,taged,itaged,nixel,tagel,tagel_crk,iedge_tmp
68 nlmax = 4*ecrkxfec + 3*ecrkxfetg !
max edges
69 nelall = ecrkxfec+ecrkxfetg
71 ALLOCATE (lineix(2,nlmax) ,stat=stat)
72 ALLOCATE (lineix2(2,nlmax) ,stat=stat)
73 ALLOCATE (index(2*nlmax) ,stat=stat)
74 ALLOCATE (ixwork(5,nlmax) ,stat=stat)
75 ALLOCATE (iedwork4(4,ecrkxfec) ,stat=stat)
76 ALLOCATE (iedwork3(3,ecrkxfetg),stat=stat)
77 ALLOCATE (taged(nlmax) ,stat=stat)
78 ALLOCATE (itaged(nlmax) ,stat=stat)
79 ALLOCATE (nixel(nelall) ,stat=stat)
80 ALLOCATE (tagel(nelall) ,stat=stat)
81 ALLOCATE (tagel_crk(nelall) ,stat=stat)
95 CALL ancmsg(msgid=268 ,msgtype=msgerror,anmode=anstop,c1=
'EDGE XFEM')
103 IF (ielcrkc(j) > 0)
THEN
107 tagel_crk(nel) = ielcrkc(j)
112 IF (ielcrktg(j) > 0)
THEN
116 tagel_crk(nel) = ielcrktg(j)-ecrkxfec
130 i2 = ixc(nextk4(k)+1,j)
146 ELSE IF (nix == 3)
THEN
152 i2 = ixtg(nextk3(k)+1,j)
171 CALL my_orders(0,iwork,lineix,index,ll,2)
176 i1m = lineix(1,index(1))
177 i2m = lineix(2,index(1))
180 ixwork(3,nl)=lineix2(1,index(1))
181 ixwork(4,nl)=lineix2(2,index(1))
185 k = abs(ixwork(4,nl))
191 ELSE IF (nix == 3)
THEN
196 i1 = lineix(1,index(l))
197 i2 = lineix(2,index(l))
198 IF(i2 /= i2m .or. i1 /= i1m)
THEN
202 ixwork(3,nl)=lineix2(1,index(l))
203 ixwork(4,nl)=lineix2(2,index(l))
207 k = abs(ixwork(4,nl))
213 ELSE IF(nix == 3)
THEN
219 j = lineix2(1,index(l))
220 k = abs(lineix2(2,index(l)))
226 ELSE IF(nix == 3)
THEN
246 IF (taged(ied) == 0)
THEN
251 ibordedge(nl) = ixwork(5,ied)
253 ibordnode(ixwork(1,ied)) = 1
254 ibordnode(ixwork(2,ied)) = 1
257 nodedge(1,nl) = ixwork(1,ied)
258 nodedge(2,nl) = ixwork(2,ied)
260 iedgesh4(k,jj) = itaged
262 ELSE IF (nix == 3)
THEN
265 IF (taged(ied) == 0)
THEN
269 ibordedge(nl) = ixwork(5,ied)
271 IF(ixwork(5,ied) == 1)
THEN
272 ibordnode(ixwork(1,ied)) = 1
273 ibordnode(ixwork(2,ied)) = 1
276 nodedge(1,nl) = ixwork(1,ied)
277 nodedge(2,nl) = ixwork(2,ied)
279 iedgesh3(k,jj) = itaged(ied)
327 ALLOCATE (iedge_tmp(numedges))
337 IF(nix == 3) jcrk = jcrk + ecrkxfec
338 proc = cep_crk(jcrk) + 1
342 ied = iedgesh4(k,jcrk0)
349 IF(ied /= 0 .AND. ibordedge(ied) == 0)
THEN
350 IF(iedge_tmp(ied) >= 0)
THEN
351 iedge_tmp(ied) = iedge_tmp(ied) + 1
357 ied = iedgesh3(k,jcrk0)
364 IF(ied /= 0 .AND. ibordedge(ied) == 0)
THEN
365 IF(iedge_tmp(ied) >= 0)
THEN
366 iedge_tmp(ied) = iedge_tmp(ied) + 1
375 IF(iedge_tmp(ied) == 1) iedge_tmp(ied) = -1
381 IF(iedge_tmp(ied) == -1) iedge_tmp0(ied) = iedge_tmp(ied)
389 DEALLOCATE (iedwork4)
390 DEALLOCATE (iedwork3)
395 DEALLOCATE (tagel_crk)
396 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)