31 1 JLT ,CAND_N ,CAND_E ,NRTM ,XX ,
32 2 YY ,ZZ ,XI ,YI ,ZI ,
33 3 NIN ,NSN ,IX1 ,IX2 ,IX3 ,
34 4 IX4 ,NSVG ,STIF ,INACTI ,MSEGLO ,
35 5 GAPS ,GAPM ,IRECT ,IRTLM ,TIME_S ,
36 6 GAP_NM ,ITAB ,NNX ,NNY ,NNZ ,
37 7 FAR ,PENT ,DIST ,LB ,LC ,
38 8 LBP ,LCP ,KSLIDE ,MVOISN ,GAPMXL ,
39 9 IBOUND ,VTX_BISECTOR ,ETYP ,ICODT ,ISKEW,
48#include "implicit_f.inc"
58 INTEGER JLT, NIN, NSN, INACTI, NRTM,
60 . CAND_E(*),NSVG(MVSIZ), ETYP(*), ICODT(*), ISKEW(*)
61 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
62 . MSEGLO(*),IRTLM(4,NSN), KSLIDE(MVSIZ,4), MVOISN(MVSIZ,4),
64 my_real ,
INTENT(IN) :: DGAPLOAD ,DRAD
66 . TIME_S(2,NSN), GAPS(*), GAPM(*)
68 . xx(mvsiz,5),yy(mvsiz,5),zz(mvsiz,5),
69 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
70 . nnx(mvsiz,5), nny(mvsiz,5), nnz(mvsiz,5),
71 . pent(mvsiz,4), dist(mvsiz), lb(mvsiz,4), lc(mvsiz,4),
72 . lbp(mvsiz,4), lcp(mvsiz,4), gap_nm(4,mvsiz), gapmxl(mvsiz)
73 INTEGER IRECT(4,*),ITAB(*),FAR(MVSIZ,4)
74 real*4 vtx_bisector(3,2,*)
78 INTEGER I, J, K, L, N, N4N, MGLOB, IB1, IB2, IB3, IBX, IX, IY, IZ
81 . IT, JJ, I1, I2, ITRIA(2,4), SUBTRIA(MVSIZ),
82 . IBCS, ISKS, IBCM(4), ISKM(4),
83 . ibcx(mvsiz), ibcy(mvsiz), ibcz(mvsiz)
85 . xij(mvsiz,4), xi0v(mvsiz),
86 . yij(mvsiz,4), yi0v(mvsiz),
87 . zij(mvsiz,4), zi0v(mvsiz),
96 . gap_mm(mvsiz), gap, gap2,
98 . dx, dy, dz, dmin, dd(mvsiz,4),
99 . lap, hla, hlb(mvsiz,4), hlc(mvsiz,4),
106 . x0n(mvsiz,4), y0n(mvsiz,4), z0n(mvsiz,4),
107 . xn(mvsiz,4),yn(mvsiz,4),zn(mvsiz,4),
109 . x12(mvsiz), y12(mvsiz), z12(mvsiz),
110 . px, py, pz, pp, p1, p2, xh, yh, zh, d1, d2, d3, vx, vy, vz,
111 . ll ,nn, pn, ld(mvsiz), lx, lax, lbx, lcx,
113 DATA itria/1,2,2,3,3,4,4,1/
118 pent(1:jlt,1:4) = ep20
127 IF(stif(i) <= zero)cycle
129 x0n(i,1) = xx(i,1) - xx(i,5)
130 y0n(i,1) = yy(i,1) - yy(i,5)
131 z0n(i,1) = zz(i,1) - zz(i,5)
133 x0n(i,2) = xx(i,2) - xx(i,5)
134 y0n(i,2) = yy(i,2) - yy(i,5)
135 z0n(i,2) = zz(i,2) - zz(i,5)
137 x0n(i,3) = xx(i,3) - xx(i,5)
138 y0n(i,3) = yy(i,3) - yy(i,5)
139 z0n(i,3) = zz(i,3) - zz(i,5)
141 x0n(i,4) = xx(i,4) - xx(i,5)
142 y0n(i,4) = yy(i,4) - yy(i,5)
143 z0n(i,4) = zz(i,4) - zz(i,5)
145 IF(ix3(i)/=ix4(i))
THEN
146 gap_mm(i)=fourth*(gap_nm(1,i)+gap_nm(2,i)+gap_nm(3,i)+gap_nm(4,i))
148 gap_mm(i)=gap_nm(3,i)
152#include "vectorize.inc"
155 IF(stif(i) <= zero)cycle
157 xi0v(i) = xx(i,5) - xi(i)
158 yi0v(i) = yy(i,5) - yi(i)
159 zi0v(i) = zz(i,5) - zi(i)
161 xij(i,1) = xx(i,1) - xi(i)
162 yij(i,1) = yy(i,1) - yi(i)
163 zij(i,1) = zz(i,1) - zi(i)
165 xij(i,2) = xx(i,2) - xi(i)
166 yij(i,2) = yy(i,2) - yi(i)
167 zij(i,2) = zz(i,2) - zi(i)
169 xij(i,3) = xx(i,3) - xi(i)
170 yij(i,3) = yy(i,3) - yi(i)
171 zij(i,3) = zz(i,3) - zi(i)
173 xij(i,4) = xx(i,4) - xi(i)
174 yij(i,4) = yy(i,4) - yi(i)
175 zij(i,4) = zz(i,4) - zi(i)
177 sx1 = yi0v(i)*zij(i,1) - zi0v(i)*yij(i,1)
178 sy1 = zi0v(i)*xij(i,1) - xi0v(i)*zij(i,1)
179 sz1 = xi0v(i)*yij(i,1) - yi0v(i)*xij(i,1)
181 sx2 = yi0v(i)*zij(i,2) - zi0v(i)*yij(i,2)
182 sy2 = zi0v(i)*xij(i,2) - xi0v(i)*zij(i,2)
183 sz2 = xi0v(i)*yij(i,2) - yi0v(i)*xij(i,2)
185 xn(i,1) = y0n(i,1)*z0n(i,2) - z0n(i,1)*y0n(i,2)
186 yn(i,1) = z0n(i,1)*x0n(i,2) - x0n(i,1)*z0n(i,2)
187 zn(i,1) = x0n(i,1)*y0n(i,2) - y0n(i,1)*x0n(i,2)
189 .
max(em30,sqrt(xn(i,1)*xn(i,1)+ yn(i,1)*yn(i,1)+ zn(i,1)*zn(i,1)))
193 lb(i,1) = -(xn(i,1)*sx2 + yn(i,1)*sy2 + zn(i,1)*sz2)*nn
194 lc(i,1) = (xn(i,1)*sx1 + yn(i,1)*sy1 + zn(i,1)*sz1)*nn
196 sx3 = yi0v(i)*zij(i,3) - zi0v(i)*yij(i,3)
197 sy3 = zi0v(i)*xij(i,3) - xi0v(i)*zij(i,3)
198 sz3 = xi0v(i)*yij(i,3) - yi0v(i)*xij(i,3)
200 xn(i,2) = y0n(i,2)*z0n(i,3) - z0n(i,2)*y0n(i,3)
201 yn(i,2) = z0n(i,2)*x0n(i,3) - x0n(i,2)*z0n(i,3)
202 zn(i,2) = x0n(i,2)*y0n(i,3) - y0n(i,2)*x0n(i,3)
204 .
max(em30,sqrt(xn(i,2)*xn(i,2)+ yn(i,2)*yn(i,2)+ zn(i,2)*zn(i,2)))
208 lb(i,2) = -(xn(i,2)*sx3 + yn(i,2)*sy3 + zn(i,2)*sz3)*nn
209 lc(i,2) = (xn(i,2)*sx2 + yn(i,2)*sy2 + zn(i,2)*sz2)*nn
211 sx4 = yi0v(i)*zij(i,4) - zi0v(i)*yij(i,4)
212 sy4 = zi0v(i)*xij(i,4) - xi0v(i)*zij(i,4)
213 sz4 = xi0v(i)*yij(i,4) - yi0v(i)*xij(i,4)
215 xn(i,3) = y0n(i,3)*z0n(i,4) - z0n(i,3)*y0n(i,4)
216 yn(i,3) = z0n(i,3)*x0n(i,4) - x0n(i,3)*z0n(i,4)
217 zn(i,3) = x0n(i,3)*y0n(i,4) - y0n(i,3)*x0n(i,4)
219 .
max(em30,sqrt(xn(i,3)*xn(i,3)+ yn(i,3)*yn(i,3)+ zn(i,3)*zn(i,3)))
223 lb(i,3) = -(xn(i,3)*sx4 + yn(i,3)*sy4 + zn(i,3)*sz4)*nn
224 lc(i,3) = (xn(i,3)*sx3 + yn(i,3)*sy3 + zn(i,3)*sz3)*nn
226 xn(i,4) = y0n(i,4)*z0n(i,1) - z0n(i,4)*y0n(i,1)
227 yn(i,4) = z0n(i,4)*x0n(i,1) - x0n(i,4)*z0n(i,1)
228 zn(i,4) = x0n(i,4)*y0n(i,1) - y0n(i,4)*x0n(i,1)
230 .
max(em30,sqrt(xn(i,4)*xn(i,4)+ yn(i,4)*yn(i,4)+ zn(i,4)*zn(i,4)))
234 lb(i,4) = -(xn(i,4)*sx1 + yn(i,4)*sy1 + zn(i,4)*sz1)*nn
235 lc(i,4) = (xn(i,4)*sx4 + yn(i,4)*sy4 + zn(i,4)*sz4)*nn
240#include "vectorize.inc"
243 IF(stif(i) <= zero)cycle
245 aaa = one/
max(em30,x0n(i,1)*x0n(i,1)+y0n(i,1)*y0n(i,1)+z0n(i,1)*z0n(i,1))
246 hlc(i,1) = lc(i,1)*abs(lc(i,1))
247 hlb(i,4) = lb(i,4)*abs(lb(i,4))*aaa
248 al(i,1) = -(xi0v(i)*x0n(i,1)+yi0v(i)*y0n(i,1)+zi0v(i)*z0n(i,1))*aaa
249 al(i,1) =
max(zero,
min(one,al(i,1)))
250 aaa = one/
max(em30,x0n(i,2)*x0n(i,2)+y0n(i,2)*y0n(i,2)+z0n(i,2)*z0n(i,2))
251 hlc(i,2) = lc(i,2)*abs(lc(i,2))*aaa
252 hlb(i,1) = lb(i,1)*abs(lb(i,1))*aaa
253 al(i,2) = -(xi0v(i)*x0n(i,2)+yi0v(i)*y0n(i,2)+zi0v(i)*z0n(i,2))*aaa
254 al(i,2) =
max(zero,
min(one,al(i,2)))
255 aaa = one/
max(em30,x0n(i,3)*x0n(i,3)+y0n(i,3)*y0n(i,3)+z0n(i,3)*z0n(i,3))
256 hlc(i,3) = lc(i,3)*abs(lc(i,3))*aaa
257 hlb(i,2) = lb(i,2)*abs(lb(i,2))*aaa
258 al(i,3) = -(xi0v(i)*x0n(i,3)+yi0v(i)*y0n(i,3)+zi0v(i)*z0n(i,3))*aaa
259 al(i,3) =
max(zero,
min(one,al(i,3)))
260 aaa = one/
max(em30,x0n(i,4)*x0n
261 hlc(i,4) = lc(i,4)*abs(lc(i,4))*aaa
263 al(i,4) = -(xi0v(i)*x0n(i,4)+yi0v(i)*y0n(i,4)+zi0v(i)*z0n(i,4))*aaa
264 al(i,4) =
max(zero,
min(one,al(i,4)))
273#include "vectorize.inc"
276 IF(stif(i) <= zero)cycle
278 x12(i) = xx(i,i2) - xx(i,i1)
279 y12(i) = yy(i,i2) - yy(i,i1)
280 z12(i) = zz(i,i2) - zz(i,i1)
284 lap = one-lbp(i,it)-lcp(i,it)
286 aaa = one /
max(em20,x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i))
287 hla= lap*abs(lap) * aaa
289 + hla<=hlb(i,it).AND.hla<=hlc(i,it))
THEN
290 lbp(i,it) = (xij(i,i2)*x12(i)+yij(i,i2)*y12(i)+zij(i,i2)*z12(i)) * aaa
291 lbp(i,it) =
max(zero,
min(one,lbp(i,it)))
292 lcp(i,it) = one - lbp(i,it)
293 ELSEIF(lbp(i,it)<zero.AND.
294 + hlb(i,it)<=hlc(i,it).AND.hlb(i,it)<=hla)
THEN
297 ELSEIF(lcp(i,it)<zero.AND.
298 + hlc(i,it)<=hla.AND.hlc(i,it)<=hlb(i,it))
THEN
303 lap = one-lbp(i,it)-lcp(i,it)
304 xp =lap*xx(i,5)+lbp(i,it)*xx(i,i1) + lcp(i,it)*xx(i,i2)
305 yp =lap*yy(i,5)+lbp(i,it)*yy(i,i1) + lcp(i,it)*yy(i,i2)
306 zp =lap*zz(i,5)+lbp(i,it)*zz(i,i1) + lcp(i,it)*zz(i,i2)
310 dd(i,it)=dx*dx+dy*dy+dz*dz
316#include "vectorize.inc"
319 IF (stif(i) <= zero)cycle
321 lap = one-lbp(i,it)-lcp(i,it)
323 gap =
min(
max(drad,gaps(i)+lap*gap_mm(i)+lbp(i,it)*gap_nm(i1,i)+lcp(i,it)*gap_nm(i2,i)+dgapload),
324 .
max(drad,gapmxl(i)+dgapload))
327 bb(i,it) =((xx(i,5)-xi(i))*xn(i,it)+(yy(i,5)-yi(i))*yn(i,it)+(zz(i,5)-zi(i))*zn(i,it))
329 IF(dd(i,it) <= gap2 .AND. bb(i,it) <= zero) ingap(i,it)=1
331 IF(bb(i,it) > zero)
THEN
334 pent(i,it)=
max(zero,gap+bb(i,it))
336 pent(i,it)=
max(zero,gap-sqrt(dd(i,it)))
344 IF(stif(i) <= zero)cycle
346 IF(ix3(i)/=ix4(i))
THEN
357#include "vectorize.inc"
361 x12(i) = xx(i,i2) - xx(i,i1)
362 y12(i) = yy(i,i2) - yy(i,i1)
363 z12(i) = zz(i,i2) - zz(i,i1)
367 lap = one-lbp(i,it)-lcp(i,it)
369 aaa = one /
max(em20,x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i))
370 hla= lap*abs(lap) * aaa
372 + hla<=hlb(i,it).AND.hla<=hlc(i,it))
THEN
373 lbp(i,it) = (xij(i,i2)*x12(i)+yij(i,i2)*y12(i)+zij(i,i2)*z12(i)) * aaa
374 lbp(i,it) =
max(zero,
min(one,lbp(i,it)))
375 lcp(i,it) = one - lbp(i,it)
376 ELSEIF(lbp(i,it)<zero.AND.
377 + hlb(i,it)<=hlc(i,it).AND.hlb(i,it)<=hla)
THEN
380 ELSEIF(lcp(i,it)<zero.AND.
381 + hlc(i,it)<=hla.AND.hlc(i,it)<=hlb(i,it))
THEN
386 lap = one-lbp(i,it)-lcp(i,it)
387 xp =lap*xx(i,5)+lbp(i,it)*xx(i,i1) + lcp(i,it)*xx(i,i2)
388 yp =lap*yy(i,5)+lbp(i,it)*yy(i,i1) + lcp(i,it)*yy(i,i2)
389 zp =lap*zz(i,5)+lbp(i,it)*zz(i,i1) + lcp(i,it)*zz(i,i2)
393 dd(i,it)=dx*dx+dy*dy+dz*dz
399#include "vectorize.inc"
403 lap = one-lbp(i,it)-lcp(i,it)
405 gap =
min(
max(drad,gaps(i)+lap*gap_mm(i)+lbp(i,it)*gap_nm(i1,i)+lcp(i,it)*gap_nm(i2,i)+dgapload),
406 .
max(drad,gapmxl(i)+dgapload))
409 bb(i,it) =((xx(i,5)-xi(i))*xn(i,it)+(yy(i,5)-yi(i))*yn(i,it)+(zz(i,5)-zi(i))*zn(i,it))
411 IF(dd(i,it) <= gap2 .AND. bb(i,it) <= zero) ingap(i,it)=1
413 IF(bb(i,it) > zero)
THEN
416 pent(i,it)=
max(zero,gap+bb(i,it))
418 pent(i,it)=
max(zero,gap-sqrt(dd(i,it)))
428 IF(stif(i) <= zero)cycle
433 IF(ix3(i)/=ix4(i))
THEN
434 dmin=
min(dd(i,1),dd(i,2),dd(i,3),dd(i,4))
437 IF(dd(i,jj) <= onep03*dmin)
THEN
440 lax = one-lb(i,jj)-lc(i,jj)
443 IF(lbx >= zero .AND. lcx >= zero)
THEN
447 lx =
max(zero,dd(i,jj)-bb(i,jj)*bb(i,jj))
459 IF(dd(i,1) <= dist(i))
THEN
467 IF(j /= it) pent(i,j)=zero
479 IF(stif(i) <= zero)cycle
481 IF(.NOT.(etyp(i)==0 .OR. etyp(i) > nrtm))cycle
484 ibcs = icodt(nsvg(i))
485 isks = iskew(nsvg(i))
492 ibcm(1)=icodt(ix1(i))
493 iskm(1)=iskew(ix1(i))
495 ibcm(2)=icodt(ix2(i))
496 iskm(2)=iskew(ix2(i))
498 ibcm(3)=icodt(ix3(i))
499 iskm(3)=iskew(ix3(i))
501 ibcm(4)=icodt(ix4(i))
502 iskm(4)=iskew(ix4(i))
505 IF((ibcs ==1.OR.ibcs ==3.OR.ibcs ==5.OR.ibcs ==7).AND.
506 . (ibcm(1)==1.OR.ibcm(1)==3.OR.ibcm(1)==5.OR.ibcm(1)==7).AND.
507 . (ibcm(2)==1.OR.ibcm(2)==3.OR.ibcm(2)==5.OR.ibcm(2)==7).AND.
508 . (ibcm(3)==1.OR.ibcm(3)==3.OR.ibcm(3)==5.OR.ibcm(3)==7).AND.
509 . (ibcm(4)==1.OR.ibcm(4)==3.OR.ibcm(4)==5.OR.ibcm(4)==7))
THEN
512 IF((ibcs ==2.OR.ibcs ==3.OR.ibcs ==6.OR.ibcs ==7).AND.
513 . (ibcm(1)==2.OR.ibcm(1)==3.OR.ibcm(1)==6.OR.ibcm(1)==7).AND.
514 . (ibcm(2)==2.OR.ibcm(2)==3.OR.ibcm(2)==6.OR.ibcm(2)==7).AND.
515 . (ibcm(3)==2.OR.ibcm(3)==3.OR.ibcm(3)==6.OR.ibcm(3)==7).AND.
516 . (ibcm(4)==2.OR.ibcm(4)==3.OR.ibcm(4)==6.OR.ibcm(4)==7))
THEN
519 IF((ibcs ==4.OR.ibcs ==5.OR.ibcs ==6.OR.ibcs ==7).AND.
520 . (ibcm(1)==4.OR.ibcm(1)==5.OR.ibcm(1)==6.OR.ibcm(1)==7).AND.
521 . (ibcm(2)==4.OR.ibcm(2)==5.OR.ibcm(2)==6.OR.ibcm(2)==7).AND.
522 . (ibcm(3)==4.OR.ibcm(3)==5.OR.ibcm(3)==6.OR.ibcm(3)==7).AND.
523 . (ibcm(4)==4.OR.ibcm(4)==5.OR.ibcm(4)==6.OR.ibcm(4)==7))
THEN
532 IF(stif(i) <= zero)cycle
535 IF(pent(i,it) == zero)cycle
537 IF((ibcz(i)==1.AND.abs(zn(i,it)) > prec).OR.
538 . (ibcy(i)==1.AND.abs(yn(i,it)) > prec).OR.
539 . (ibcx(i)==1.AND.abs(xn(i,it)) > prec))
THEN
547#include "vectorize.inc"
550 IF (stif(i) <= zero)cycle
554 IF(pent(i,it)==zero) cycle
560 IF(lb(i,it) < -em03 .OR. lc(i,it) < -em03 .OR.
561 . lb(i,it)+lc(i,it) > one+em03) far(i,it)=1
563 xh=xi(i)+bb(i,it)*xn(i,it)
564 yh=yi(i)+bb(i,it)*yn(i,it)
565 zh=zi(i)+bb(i,it)*zn(i,it)
567 IF(ix3(i) /= ix4(i))
THEN
571 IF(mvoisn(i,it)==0)
THEN
573 IF( (xh-xx(i,i1))* nnx(i,it)+
574 . (yh-yy(i,i1))* nny(i,it)+
575 . (zh-zz(i,i1))* nnz(i,it) >= gaps(i)) far(i,it) =2
577 ELSEIF((ib1 /= 0 .AND. ib2 == 0).OR.
578 . (ib2 /= 0 .AND. ib1 == 0))
THEN
587 IF(vtx_bisector(1,1,ibx)/=zero.OR.
588 . vtx_bisector(2,1,ibx)/=zero.OR.
589 . vtx_bisector(3,1,ibx)/=zero.OR.
590 . vtx_bisector(1,2,ibx)/=zero.OR.
591 . vtx_bisector(2,2,ibx)/=zero.OR.
592 . vtx_bisector(3,2,ibx)/=zero)
THEN
593 p1 = (xh-xx(i,ix))* vtx_bisector(1,1,ibx)+
594 . (yh-yy(i,ix))* vtx_bisector(2,1,ibx)+
595 . (zh-zz(i,ix))* vtx_bisector(3,1,ibx)
596 p2 = (xh-xx(i,ix))* vtx_bisector(1,2,ibx)+
597 . (yh-yy(i,ix))* vtx_bisector(2,2,ibx)+
598 . (zh-zz(i,ix))* vtx_bisector(3,2,ibx)
599 IF(p1 >= gaps(i) .AND. p2 >= gaps(i)) far(i,it) =2
604 nn = one/
max(em20,sqrt(vx*vx+vy*vy+vz*vz))
605 pn = ((xh-xx(i,ix))*vx+(yh-yy(i,ix))*vy+(zh-zz(i,ix))*vz)*nn
606 IF(pn >= gaps(i)) far(i,it) =2
612 IF(far(i,it)==1 .OR. bb(i,it) <= zero)
THEN
614 IF(ingap(i,it) == 1 .OR. (kslide(i,i1)/=0.OR.kslide(i,i2)/=0))
THEN
622 y12(i)=yy(i,i2)-yy(i,i1)
623 z12(i)=zz(i,i2)-zz(i,i1)
626 px = z12(i)*nny(i,it)-y12(i)*nnz(i,it)
627 py = x12(i)*nnz(i,it)-z12(i)*nnx(i,it)
628 pz = y12(i)*nnx(i,it)-x12(i)*nny(i,it)
629 pp = px*px+py*py+pz*pz
631 ll = xij(i,i1)*xij(i,i1)+yij(i,i1)*yij(i,i1)+zij(i,i1)*zij(i,i1)
633 side(i,it)=-(xij(i,i1)*px+yij(i,i1)*py+zij(i,i1)*pz)*sqrt(one/
max(em30,ll*pp))
634 IF(side(i,it) < -zep01) far(i,it) =2
646 d1=(xh-xx(i,1))* nnx(i,1)+
647 . (yh-yy(i,1))* nny(i,1)+
648 . (zh-zz(i,1))* nnz(i,1)
649 d2=(xh-xx(i,2))* nnx(i,2)+
650 . (yh-yy(i,2))* nny(i,2)+
651 . (zh-zz(i,2))* nnz(i,2)
652 d3=(xh-xx(i,3))* nnx(i,4)+
653 . (yh-yy(i,3))* nny(i,4)+
654 . (zh-zz(i,3))* nnz(i,4)
656 IF( (mvoisn(i,1) == 0 .AND. d1 >= gaps(i)).OR.
657 . (mvoisn(i,2) == 0 .AND. d2 >= gaps(i)).OR.
658 . (mvoisn(i,4) == 0 .AND. d3 >= gaps(i)) )
THEN
662 ELSEIF((ib1/=0 .AND. ib2==0 .AND. ib3==0).OR.
663 . (ib2/=0 .AND. ib3==0 .AND. ib1==0).OR.
664 . (ib3/=0 .AND. ib1==0 .AND. ib2==0))
THEN
681 IF(vtx_bisector(1,1,ibx)/=zero.OR.
682 . vtx_bisector(2,1,ibx)/=zero.OR.
683 . vtx_bisector(3,1,ibx)/=zero.OR.
684 . vtx_bisector(1,2,ibx)/=zero.OR.
685 . vtx_bisector(2,2,ibx)/=zero.OR.
686 . vtx_bisector(3,2,ibx)/=zero)
THEN
687 p1 = (xh-xx(i,ix))* vtx_bisector(1,1,ibx)+
688 . (yh-yy(i,ix))* vtx_bisector(2,1,ibx)+
689 . (zh-zz(i,ix))* vtx_bisector(3,1,ibx)
690 p2 = (xh-xx(i,ix))* vtx_bisector(1,2,ibx)+
691 . (yh-yy(i,ix))* vtx_bisector(2,2,ibx)+
692 . (zh-zz(i,ix))* vtx_bisector(3,2,ibx)
693 IF(p1 >= gaps(i) .AND. p2 >= gaps(i)) far(i,it) =2
695 vx = two*xx(i,ix)-(xx(i,iy)+xx(i,iz))
696 vy = two*yy(i,ix)-(yy(i,iy)+yy(i,iz))
697 vz = two*zz(i,ix)-(zz(i,iy)+zz(i,iz))
698 nn = one/
max(em20,sqrt(vx*vx+vy*vy+vz*vz))
699 pn = ((xh-xx(i,ix))*vx+(yh-yy(i,ix))*vy+(zh-zz(i,ix))*vz)*nn
700 IF(pn >= gaps(i)) far(i,it) =2
705 IF(far(i,it)==1 .OR. bb(i,it) <= zero)
THEN
707 IF(mvoisn(i,1) /= 0 .AND. (ingap(i,it) == 1 .OR. (kslide(i,1)/=0.OR.kslide(i,2)/=0)))
THEN
714 x12(i)=xx(i,2)-xx(i,1)
715 y12(i)=yy(i,2)-yy(i,1)
716 z12(i)=zz(i,2)-zz(i,1)
719 px = z12(i)*nny(i,1)-y12(i)*nnz(i,1)
720 py = x12(i)*nnz(i,1)-z12(i)*nnx(i,1)
721 pz = y12(i)*nnx(i,1)-x12(i)*nny(i,1)
722 pp = px*px+py*py+pz*pz
724 ll = xij(i,1)*xij(i,1)+yij(i,1)*yij(i,1)+zij(i,1)*zij
726 side(i,1)=-(xij(i,1)*px+yij(i,1)*py+zij(i,1)*pz)*sqrt(one/
max(em30,ll*pp))
727 IF(side(i,1) < -zep01) far(i,it) =2
731 IF(mvoisn(i,2) /= 0 .AND. (ingap(i,it) == 1 .OR. (kslide(i,2)/=0.OR.kslide(i,3)/=0)))
THEN
738 x12(i)=xx(i,3)-xx(i,2)
739 y12(i)=yy(i,3)-yy(i,2)
740 z12(i)=zz(i,3)-zz(i,2)
743 px = z12(i)*nny(i,2)-y12(i)*nnz(i,2)
744 py = x12(i)*nnz(i,2)-z12(i)*nnx(i,2)
745 pz = y12(i)*nnx(i,2)-x12(i)*nny(i,2)
746 pp = px*px+py*py+pz*pz
748 ll = xij(i,2)*xij(i,2)+yij(i,2)*yij(i,2)+zij(i,2)*zij(i,2)
750 side(i,2)=-(xij(i,2)*px+yij(i,2)*py+zij(i,2)*pz)*sqrt(one/
max(em30,ll*pp))
751 IF(side(i,2) < -zep01) far(i,it) =2
755 IF(mvoisn(i,4) /= 0 .AND. (ingap(i,it) == 1 .OR. (kslide(i,3)/=0.OR.kslide(i,1)/=0)))
THEN
762 x12(i)=xx(i,1)-xx(i,3)
763 y12(i)=yy(i,1)-yy(i,3)
764 z12(i)=zz(i,1)-zz(i,3)
767 px = z12(i)*nny(i,4)-y12(i)*nnz(i,4)
768 py = x12(i)*nnz(i,4)-z12(i)*nnx(i,4)
769 pz = y12(i)*nnx(i,4)-x12(i)*nny(i,4)
770 pp = px*px+py*py+pz*pz
772 ll = xij(i,3)*xij(i,3)+yij(i,3)*yij(i,3)+zij(i,3)*zij(i,3)
774 side(i,4)=-(xij(i,3)*px+yij(i,3)*py+zij(i,3)*pz)*sqrt(one/
max(em30,ll*pp))
775 IF(side(i,4) < -zep01) far(i,it) =2
781 IF(far(i,it)==2) pent(i,it)=zero
787 IF(stif(i) <= zero)cycle
790 IF(it/=0.AND.pent(i,it)==zero) it=0
811 IF(dist(i) < onep02*time_s(1,n) .AND.
812 * (dist(i) < time_s(2,n) .OR.
813 * (dist(i) == time_s(2,n) .AND. irtlm(1,n) < mglob)))
THEN
816 irtlm(3,n) = cand_e(i)
818 time_s(2,n) = dist(i)
820#include "lockoff.inc"
823 IF(dist(i) < onep02*
time_sfi(nin)%P(2*(n-nsn-1)+1) .AND.
824 * (dist(i) <
time_sfi(nin)%P(2*(n-nsn-1)+2) .OR.
825 * (dist(i) ==
time_sfi(nin)%P(2*(n-nsn-1)+2) .AND.
irtlm_fi(nin)%P(1,n-nsn) < mglob)))
THEN
828 irtlm_fi(nin)%P(3,n-nsn) = cand_e(i)
830 time_sfi(nin)%P(2*(n-nsn-1)+2) = dist(i)
838#include "lockoff.inc"