31 . IEL_CRK ,IADC_CRK,ILEV ,NODEDGE,CRKEDGE,
38#include "implicit_f.inc"
47#include "com_xfem1.inc"
51 INTEGER JFT,JLT,NFT,ILEV,IXC(NIXC,*),ELCUTC(2,*),IEL_CRK(*),
52 . IADC_CRK(4,*),XEDGE4N(4,*),NODEDGE(2,*)
53 TYPE (XFEM_EDGE_) ,
DIMENSION(*) :: CRKEDGE
57 INTEGER I,K,K1,K2,K3,K4,KK,p1,p2,NOD1,NOD2,IED0,IED1,IED2,
58 . IEDGE,IEDGE1,IEDGE2,EDGE,EDGE1,EDGE2,IXEL,ILAY,ITRI,ILV,
59 . fac,ok,sn,elcut,elcrk,iadc1,iadc2,iadc3,iadc4,nx1,nx2,nx3,nx4
60 INTEGER IFI0(4,MVSIZ),POS(2),
61 . IED(4),IXI(4),D(4),DX(8),NX(MVSIZ)
63 . xint,yint,zint,xm,ym,zm,x10,y10,z10,x20,y20,z20,beta
65 . xin(4,mvsiz),yin(4,mvsiz),zin(4,mvsiz),
66 . xx(4,mvsiz),yy(4,mvsiz),zz(4,mvsiz)
69 DATA dx/1,2,3,4,1,2,3,4/
73 ixel = mod(ilev-1, nxel) + 1
74 ilay = (ilev-ixel)/nxel + 1
94 elcrk = iel_crk(i+nft)
95 iadc1 = iadc_crk(1,elcrk)
96 iadc2 = iadc_crk(2,elcrk)
97 iadc3 = iadc_crk(3,elcrk)
98 iadc4 = iadc_crk(4,elcrk)
105 ifi0(1,i) = isign(1,ifi0(1,i))
106 ifi0(2,i) = isign(1,ifi0(2,i))
107 ifi0(3,i) = isign(1,ifi0(3,i))
108 ifi0(4,i) = isign(1,ifi0(4,i))
113 xx(1,i) =
crkavx(ilev)%X(1,iadc1)
114 yy(1,i) =
crkavx(ilev)%X(2,iadc1)
115 zz(1,i) =
crkavx(ilev)%X(3,iadc1)
117 xx(2,i) =
crkavx(ilev)%X(1,iadc2)
118 yy(2,i) =
crkavx(ilev)%X(2,iadc2)
119 zz(2,i) =
crkavx(ilev)%X(3,iadc2)
121 xx(3,i) =
crkavx(ilev)%X(1,iadc3)
122 yy(3,i) =
crkavx(ilev)%X(2,iadc3)
123 zz(3,i) =
crkavx(ilev)%X(3,iadc3)
125 xx(4,i) =
crkavx(ilev)%X(1,iadc4)
126 yy(4,i) =
crkavx(ilev)%X(2,iadc4)
127 zz(4,i) =
crkavx(ilev)%X(3,iadc4)
133 elcrk = iel_crk(i+nft)
137 ied0 = crkedge(ilay)%IEDGEC(k,elcrk)
139 edge = xedge4n(k,elcrk)
140 beta = crkedge(ilay)%RATIO(edge)
141 nod1 = nodedge(1,edge)
142 nod2 = nodedge(2,edge)
143 IF (nod1 == ixc(k+1,i+nft) .and.
147 ELSEIF (nod2 == ixc(k+1,i+nft) .and.
148 . nod1 == ixc(d(k)+1,i+nft))
THEN
158 xin(ied0,i) = x10 + beta*(x20-x10)
159 yin(ied0,i) = y10 + beta*(y20-y10)
160 zin(ied0,i) = z10 + beta*(z20-z10)
172 IF (elcutc(1,i+nft) == 0) cycle
174 elcrk = iel_crk(i+nft)
176 IF (elcut == 0) cycle
192 ied0 = crkedge(ilay)%IEDGEC(k,elcrk)
197 IF (ifi0(p1,i) < 0) pos(fac) = p1
198 IF (ifi0(p2,i) < 0) pos(fac) = p2
204 IF (pos(1) /= 0 .and. pos(2) /= 0)
THEN
206 iedge = crkedge(ilay)%IEDGEC(ied(k),elcrk)
209 kk =
crkshell(ilev)%XNODEL(pos(k),elcrk)
210 kk = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
211 crkavx(ilev)%XX(1,kk) = xin(iedge,i)
212 crkavx(ilev)%XX(2,kk) = yin(iedge,i)
213 crkavx(ilev)%XX(3,kk) = zin(iedge,i)
218 ELSE IF (ixel == 2)
THEN
221 ied0 = crkedge(ilay)%IEDGEC(k,elcrk)
226 IF (ifi0(p1,i) > 0) pos(fac) = p1
227 IF (ifi0(p2,i) > 0) pos(fac) = p2
233 IF (pos(1) /= 0 .and. pos(2) /= 0)
THEN
235 iedge = crkedge(ilay)%IEDGEC(ied(k),elcrk)
238 kk =
crkshell(ilev)%XNODEL(pos(k),elcrk)
239 kk = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
240 crkavx(ilev)%XX(1,kk) = xin(iedge,i)
241 crkavx(ilev)%XX(2,kk) = yin(iedge,i)
242 crkavx(ilev)%XX(3,kk) = zin(iedge,i)
247 ELSE IF (ixel == 3)
THEN
251 ELSEIF (itri < 0)
THEN
256 iadc2 = iadc_crk(nx2,elcrk)
257 iadc3 = iadc_crk(nx3,elcrk)
258 iadc4 = iadc_crk(nx4,elcrk)
260 iedge1 = crkedge(ilay)%IEDGEC(ied1,elcrk)
261 iedge2 = crkedge(ilay)%IEDGEC(ied2,elcrk)
262 edge1 = xedge4n(ied1,elcrk)
263 edge2 = xedge4n(ied2,elcrk)
265 kk =
crkshell(ilev)%XNODEL(nx1,elcrk)
266 k1 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
267 kk =
crkshell(ilev)%XNODEL(nx2,elcrk)
268 k2 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
269 kk =
crkshell(ilev)%XNODEL(nx3,elcrk)
270 k3 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
271 kk =
crkshell(ilev)%XNODEL(nx4,elcrk)
272 k4 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
284 crkavx(ilev)%XX(1,k2) = xin(iedge1,i)
285 crkavx(ilev)%XX(2,k2) = yin(iedge1,i)
286 crkavx(ilev)%XX(3,k2) = zin(iedge1,i)
287 crkavx(ilev)%XX(1,k3) = xin(iedge2,i)
288 crkavx(ilev)%XX(2,k3) = yin(iedge2,i)
289 crkavx(ilev)%XX(3,k3) = zin(iedge2,i)
294 ELSE IF (ixel == 2)
THEN
299 crkavx(ilev)%XX(1,k1) = xin(iedge2,i)
300 crkavx(ilev)%XX(2,k1) = yin(iedge2,i)
301 crkavx(ilev)%XX(3,k1) = zin(iedge2,i)
306 ELSE IF (ixel == 3)
THEN
312 crkavx(ilev)%XX(1,k1) = xin(iedge1,i)
313 crkavx(ilev)%XX(2,k1) = yin(iedge1,i)
314 crkavx(ilev)%XX(3,k1) = zin(iedge1,i)
316 crkavx(ilev)%XX(1,k4) = xin(iedge2,i)
317 crkavx(ilev)%XX(2,k4) = yin(iedge2,i)
318 crkavx(ilev)%XX(3,k4) = zin(iedge2,i)
332 ELSEIF (itri > 0)
THEN
336 iadc1 = iadc_crk(nx1,elcrk)
337 iadc2 = iadc_crk(nx2,elcrk)
338 iadc3 = iadc_crk(nx3,elcrk)
339 iadc4 = iadc_crk(nx4,elcrk)
341 iedge1 = crkedge(ilay)%IEDGEC(ied1,elcrk)
342 iedge2 = crkedge(ilay)%IEDGEC(ied2,elcrk)
343 edge1 = xedge4n(ied1,elcrk)
344 edge2 = xedge4n(ied2,elcrk)
346 kk =
crkshell(ilev)%XNODEL(nx1,elcrk)
347 k1 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
348 kk =
crkshell(ilev)%XNODEL(nx2,elcrk)
349 k2 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
350 kk =
crkshell(ilev)%XNODEL(nx3,elcrk)
351 k3 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
352 kk =
crkshell(ilev)%XNODEL(nx4,elcrk)
353 k4 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
366 crkavx(ilev)%XX(1,k1) = xin(iedge1,i)
367 crkavx(ilev)%XX(2,k1) = yin(iedge1,i)
368 crkavx(ilev)%XX(3,k1) = zin(iedge1,i)
374 ELSE IF (ixel == 2)
THEN
379 crkavx(ilev)%XX(1,k2) = xin(iedge1,i)
380 crkavx(ilev)%XX(2,k2) = yin(iedge1,i)
381 crkavx(ilev)%XX(3,k2) = zin(iedge1,i
385 crkavx(ilev)%XX(1,k4) = xin(iedge2,i)
386 crkavx(ilev)%XX(2,k4) = yin(iedge2,i)
387 crkavx(ilev)%XX(3,k4) = zin(iedge2,i)
390 ELSE IF (ixel == 3)
THEN
396 crkavx(ilev)%XX(1,k1) = xin(iedge2,i)
397 crkavx(ilev)%XX(2,k1) = yin(iedge2,i)
398 crkavx(ilev)%XX(3,k1) = zin(iedge2
403 crkavx(ilev)%XX(1,k2) = xin(iedge1,i)
404 crkavx(ilev)%XX(2,k2) = yin(iedge1,i)
405 crkavx(ilev)%XX(3,k2) = zin(iedge1,i)