31 . JFT ,JLT ,NFT ,IXTG ,ELCUTC ,
32 . IEL_CRKTG,IAD_CRKTG,ILEV ,NODEDGE ,CRKEDGE ,
39#include "implicit_f.inc"
48#include "com_xfem1.inc"
52 INTEGER JFT,JLT,,ILEV,IXTG(NIXTG,*),ELCUTC(2,*),IEL_CRKTG(*),
53 . IAD_CRKTG(3,*),XEDGE3N(3,*),NODEDGE(2,*)
54 TYPE (XFEM_EDGE_) ,
DIMENSION(*) :: CRKEDGE
58 INTEGER I,J,K,K1,K2,,KK,p,P1,P2,P3,IFI1,IFI2,
59 . EDGE,IEDGE1,IEDGE2,EDGE1,EDGE2,IED1,IED2,
60 . IADC1,IADC2,IADC3,ILAY,IXEL,ELCUT,ELCRK,ELCRKTG,
61 . ied0,ifi10,nod1,nod2,itri,nx1,nx2,nx3
62 INTEGER IFI0(3,MVSIZ),NEG(2),D1(3),D2(3),DX(6)
64 . XIN(3,MVSIZ),YIN(3,MVSIZ),ZIN(3,MVSIZ),
65 . xx(3,mvsiz),yy(3,mvsiz),zz(3,mvsiz)
66 my_real x10,y10,z10,x20,y20,z20,beta
75 ixel = mod(ilev-1, nxel) + 1
76 ilay = (ilev-ixel)/nxel + 1
94 elcrktg = iel_crktg(i+nft)
95 iadc1 = iad_crktg(1,elcrktg)
96 iadc2 = iad_crktg(2,elcrktg)
97 iadc3 = iad_crktg(3,elcrktg)
103 ifi0(1,i) = isign(1,ifi0(1,i))
104 ifi0(2,i) = isign(1,ifi0(2,i))
105 ifi0(3,i) = isign(1,ifi0(3,i))
111 yy(1,i) =
crkavx(ilev)%X(2,iadc1)
112 zz(1,i) =
crkavx(ilev)%X(3,iadc1)
114 xx(2,i) =
crkavx(ilev)%X(1,iadc2)
115 yy(2,i) =
crkavx(ilev)%X(2,iadc2)
116 zz(2,i) =
crkavx(ilev)%X(3,iadc2)
118 xx(3,i) =
crkavx(ilev)%X(1,iadc3)
119 yy(3,i) =
crkavx(ilev)%X(2,iadc3)
120 zz(3,i) =
crkavx(ilev)%X(3,iadc3)
126 elcrktg = iel_crktg(i+nft)
127 elcrk = elcrktg + ecrkxfec
131 ied0 = crkedge(ilay)%IEDGETG(k,elcrktg)
133 edge = xedge3n(k,elcrktg)
134 beta = crkedge(ilay)%RATIO(edge)
135 nod1 = nodedge(1,edge)
136 nod2 = nodedge(2,edge)
137 IF (nod1 == ixtg(k+1,i+nft) .and.
138 . nod2 == ixtg(d1(k)+1,i+nft
THEN
141 ELSEIF (nod2 == ixtg(k+1,i+nft).and.
142 . nod1 == ixtg(d1(k)+1,i+nft))
THEN
152 xin(ied0,i) = x10+beta*(x20-x10)
153 yin(ied0,i) = y10+beta*(y20-y10)
154 zin(ied0,i) = z10+beta*(z20-z10)
165 elcrktg = iel_crktg(i+nft)
166 elcrk = elcrktg + ecrkxfec
169 IF (elcutc(1,i+nft) == 0) cycle
177 IF (ifi10*ifi1 < 0 .and. ifi10*ifi2 < 0)
THEN
185 IF (p1==0 .or. p2==0 .or. p3==0) cycle
193 iedge1 = crkedge(ilay)%IEDGETG(ied1,elcrktg)
194 iedge2 = crkedge(ilay)%IEDGETG(ied2,elcrktg)
195 edge1 = xedge3n(ied1,elcrktg)
196 edge2 = xedge3n(ied2,elcrktg)
198 kk =
crkshell(ilev)%XNODEL(nx1,elcrk)
199 k1 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
200 kk =
crkshell(ilev)%XNODEL(nx2,elcrk)
201 k2 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
202 kk =
crkshell(ilev)%XNODEL(nx3,elcrk)
203 k3 = kk -
crknod(ilev)%CRKNUMNODS * (ilev-1)
212 crkavx(ilev)%XX(1,k2) = xin(iedge1,i)
213 crkavx(ilev)%XX(2,k2) = yin(iedge1,i)
214 crkavx(ilev)%XX(3,k2) = zin(iedge1,i)
215 crkavx(ilev)%XX(1,k3) = xin(iedge2,i)
216 crkavx(ilev)%XX(2,k3) = yin(iedge2,i)
217 crkavx(ilev)%XX(3,k3) = zin(iedge2,i)
219 ELSEIF (ixel == 2)
THEN
224 crkavx(ilev)%XX(1,k1) = xin(iedge2,i)
225 crkavx(ilev)%XX(2,k1) = yin(iedge2,i)
226 crkavx(ilev)%XX(3,k1) = zin(iedge2,i)
228 ELSEIF (ixel == 3)
THEN
232 crkavx(ilev)%XX(1,k1) = xin(iedge1,i)
233 crkavx(ilev)%XX(2,k1) = yin(iedge1,i)
234 crkavx(ilev)%XX(3,k1) = zin(iedge1,i)
236 crkavx(ilev)%XX(1,k3) = xin(iedge2,i)
237 crkavx(ilev)%XX(2,k3) = yin(iedge2,i)
238 crkavx(ilev)%XX(3,k3) = zin(iedge2,i)
241 ELSEIF (itri > 0)
THEN
248 crkavx(ilev)%XX(1,k1) = xin(iedge1,i)
249 crkavx(ilev)%XX(2,k1) = yin(iedge1,i)
250 crkavx(ilev)%XX(3,k1) = zin(iedge1,i)
252 ELSEIF (ixel == 2)
THEN
256 crkavx(ilev)%XX(1,k2) = xin(iedge1,i)
257 crkavx(ilev)%XX(2,k2) = yin(iedge1,i)
258 crkavx(ilev)%XX(3,k2) = zin(iedge1,i)
259 crkavx(ilev)%XX(1,k3) = xin(iedge2,i)
260 crkavx(ilev)%XX(2,k3) = yin(iedge2,i)
261 crkavx(ilev)%XX(3,k3) = zin(iedge2,i)
262 ELSEIF (ixel == 3)
THEN
266 crkavx(ilev)%XX(1,k1) = xin(iedge2,i)
267 crkavx(ilev)%XX(2,k1) = yin(iedge2,i)
268 crkavx(ilev)%XX(3,k1) = zin(iedge2,i)