32 1 JLT ,CAND_N ,CAND_E ,PENMIN ,PENMAX,
33 2 X1 ,X2 ,X3 ,X4 ,X0 ,
34 3 Y1 ,Y2 ,Y3 ,Y4 ,Y0 ,
35 4 Z1 ,Z2 ,Z3 ,Z4 ,Z0 ,
36 5 XI ,YI ,ZI ,NSN ,IX1 ,
37 6 IX2 ,IX3 ,IX4 ,NSVG ,NRTM ,
38 7 MSEGLO ,GAPS ,IRECT ,IRTLM ,
39 9 TIME_S ,PENE_OLD,ITAB ,MSEGTYP,ISHARP,
40 A NNX ,NNY ,NNZ ,GAP_NM ,MVOISN,
41 B GAPMXL ,IVIS2 ,IBOUND,VTX_BISECTOR,ILEV,
49#include
"implicit_f.inc"
59 INTEGER JLT, NSVG(*), NSN, MSEGLO(*), MSEGTYP(*), NRTM, IVIS2, ISHARP
60 INTEGER ,
INTENT(IN) :: INACTI, ILEV
62 . GAPS(*), GAP_NM(4,*), GAPMXL(*)
63 INTEGER IRECT(4,*), ITAB(*),CAND_E(*),CAND_N(*),(4,*)
64 INTEGER (MVSIZ),IX2(MVSIZ),IX3(MVSIZ),(MVSIZ),
65 . MVOISN(MVSIZ,4), IBOUND(4,MVSIZ)
67 . PENMAX,PENMIN,PENE_OLD(5,NSN),TIME_S(NSN)
69 . X1(MVSIZ), X2(MVSIZ), X3(MVSIZ), X4(MVSIZ), X0(MVSIZ),
70 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz), y0(mvsiz),
71 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz), z0(mvsiz),
72 . xi(mvsiz), yi(mvsiz), zi(mvsiz),
73 . nnx(mvsiz,5), nny(mvsiz,5), nnz(mvsiz,5)
77 INTEGER I, J, K, L, N, IT, N4N, , ETYP(MVSIZ),
78 . NINDX, INDX(MVSIZ), I4N(MVSIZ),
79 . far(mvsiz,4), subtria(mvsiz), i1, i2, itria(2,4), jj
80 INTEGER IB1, IB2, IB3, IBX, IX, IY, IZ, NBORD, KBORD(MVSIZ)
84 . XIJ(MVSIZ,4), (MVSIZ),
85 . YIJ(MVSIZ,4), YI0V(MVSIZ),
86 . ZIJ(MVSIZ,4), ZI0V(MVSIZ),
87 . DX, DY, DZ, DD(MVSIZ,4),
89 . gap_mm(mvsiz), gapv(mvsiz,4), gap2,
norm
95 . x0n(mvsiz,4), y0n(mvsiz,4), z0n(mvsiz,4),
96 . xn(mvsiz,4),yn(mvsiz,4),zn(mvsiz,4),
98 . x12(mvsiz), y12(mvsiz), z12(mvsiz),
99 . px, py, pz, pp, ll, nn, pn, vx, vy, vz,
100 . xx(mvsiz,5),yy(mvsiz,5),zz(mvsiz,5),
101 . pent(mvsiz,4), dist(mvsiz), lb(mvsiz,4), lc(mvsiz,4),
102 . lap, lbp(mvsiz,4), lcp(mvsiz,4), hla, hlb(mvsiz,4), hlc(mvsiz,4),
104 . nn1(mvsiz), nn2(mvsiz), nn3(mvsiz),
105 . lx, lax, lbx, lcx, ld(mvsiz), dmin,
106 . nne(mvsiz), xh(mvsiz), yh(mvsiz), zh(mvsiz), xc, yc, zc, dc, p1, p2, d1, d2, d3, gapm
107 real*4 vtx_bisector(3,2,*)
108 DATA itria/1,2,2,3,3,4,4,1/
119 ELSEIF((etyp(i) /= 0 .AND. iabs(etyp(i)) <= nrtm) .OR. etyp(i) > nrtm)
THEN
127 IF (iresp==1.AND.penmin<=em06) penmin = two*em06
164 x0n(i,1) = xx(i,1) - xx(i,5)
165 y0n(i,1) = yy(i,1) - yy(i,5)
166 z0n(i,1) = zz(i,1) - zz(i,5)
168 x0n(i,2) = xx(i,2) - xx(i,5)
169 y0n(i,2) = yy(i,2) - yy(i,5)
170 z0n(i,2) = zz(i,2) - zz(i,5)
172 x0n(i,3) = xx(i,3) - xx(i,5)
173 y0n(i,3) = yy(i,3) - yy(i,5)
174 z0n(i,3) = zz(i,3) - zz(i,5)
176 x0n(i,4) = xx(i,4) - xx(i,5)
177 y0n(i,4) = yy(i,4) - yy(i,5)
178 z0n(i,4) = zz(i,4) - zz(i,5)
180 IF(ix3(i)/=ix4(i))
THEN
181 gap_mm(i)=fourth*(gap_nm(1,i)+gap_nm(2,i)+gap_nm(3,i)+gap_nm(4,i))
183 gap_mm(i)=gap_nm(3,i)
191 xi0v(i) = xx(i,5) - xi(i)
192 yi0v(i) = yy(i,5) - yi(i)
193 zi0v(i) = zz(i,5) - zi(i)
195 xij(i,1) = xx(i,1) - xi(i)
196 yij(i,1) = yy(i,1) - yi(i)
197 zij(i,1) = zz(i,1) - zi(i)
199 xij(i,2) = xx(i,2) - xi(i)
200 yij(i,2) = yy(i,2) - yi(i)
201 zij(i,2) = zz(i,2) - zi(i)
203 xij(i,3) = xx(i,3) - xi(i)
204 yij(i,3) = yy(i,3) - yi(i)
205 zij(i,3) = zz(i,3) - zi(i)
207 xij(i,4) = xx(i,4) - xi(i)
208 yij(i,4) = yy(i,4) - yi(i)
209 zij(i,4) = zz(i,4) - zi(i)
211 sx1 = yi0v(i)*zij(i,1) - zi0v(i)*yij(i,
212 sy1 = zi0v(i)*xij(i,1) - xi0v(i)*zij(i,1)
213 sz1 = xi0v(i)*yij(i,1) - yi0v(i)*xij(i,1)
215 sx2 = yi0v(i)*zij(i,2) - zi0v(i)*yij(i,2)
216 sy2 = zi0v(i)*xij(i,2) - xi0v(i)*zij(i,2)
217 sz2 = xi0v(i)*yij(i,2) - yi0v(i)*xij(i,2)
219 xn(i,1) = y0n(i,1)*z0n(i,2) - z0n(i,1)*y0n(i,2)
220 yn(i,1) = z0n(i,1)*x0n(i,2) - x0n(i,1)*z0n(i,2)
221 zn(i,1) = x0n(i,1)*y0n(i,2) - y0n(i,1)*x0n(i,2)
223 .
max(em30,sqrt(xn(i,1)*xn(i,1)+ yn(i,1)*yn(i,1)+ zn(i,1)*zn(i,1)))
227 lb(i,1) = -(xn(i,1)*sx2 + yn(i,1)*sy2 + zn(i,1)*sz2)*nn
228 lc(i,1) = (xn(i,1)*sx1 + yn(i,1)*sy1 + zn(i,1)*sz1)*nn
230 sx3 = yi0v(i)*zij(i,3) - zi0v(i)*yij(i,3)
231 sy3 = zi0v(i)*xij(i,3) - xi0v(i)*zij(i,3)
232 sz3 = xi0v(i)*yij(i,3) - yi0v(i)*xij(i,3)
234 xn(i,2) = y0n(i,2)*z0n(i,3) - z0n(i,2)*y0n(i,3)
235 yn(i,2) = z0n(i,2)*x0n(i,3) - x0n(i,2)*z0n(i,3)
236 zn(i,2) = x0n(i,2)*y0n(i,3) - y0n(i,2)*x0n(i,3)
238 .
max(em30,sqrt(xn(i,2)*xn(i,2)+ yn(i,2)*yn(i,2)+ zn(i,2)*zn(i,2)))
242 lb(i,2) = -(xn(i,2)*sx3 + yn(i,2)*sy3 + zn(i,2)*sz3)*nn
243 lc(i,2) = (xn(i,2)*sx2 + yn(i,2)*sy2 + zn(i,2)*sz2)*nn
245 sx4 = yi0v(i)*zij(i,4) - zi0v(i)*yij(i,4)
246 sy4 = zi0v(i)*xij(i,4) - xi0v(i)*zij(i,4)
247 sz4 = xi0v(i)*yij(i,4) - yi0v(i)*xij(i,4)
249 xn(i,3) = y0n(i,3)*z0n(i,4) - z0n(i,3)*y0n(i,4)
250 yn(i,3) = z0n(i,3)*x0n(i,4) - x0n(i,3)*z0n(i,4)
251 zn(i,3) = x0n(i,3)*y0n(i,4) - y0n(i,3)*x0n(i,4)
253 .
max(em30,sqrt(xn(i,3)*xn(i,3)+ yn(i,3)*yn(i,3)+ zn(i,3)*zn(i,3)))
257 lb(i,3) = -(xn(i,3)*sx4 + yn(i,3)*sy4 + zn(i,3)*sz4)*nn
258 lc(i,3) = (xn(i,3)*sx3 + yn(i,3)*sy3 + zn(i,3)*sz3)*nn
260 xn(i,4) = y0n(i,4)*z0n(i,1) - z0n(i,4)*y0n(i,1)
261 yn(i,4) = z0n(i,4)*x0n(i,1) - x0n(i,4)*z0n(i,1)
262 zn(i,4) = x0n(i,4)*y0n(i,1) - y0n(i,4)*x0n(i,1)
264 .
max(em30,sqrt(xn(i,4)*xn(i,4)+ yn(i,4)*yn(i,4)+ zn(i,4)*zn(i,4)))
268 lb(i,4) = -(xn(i,4)*sx1 + yn(i,4)*sy1 + zn(i,4)*sz1)*nn
269 lc(i,4) = (xn(i,4)*sx4 + yn(i,4)*sy4 + zn(i,4)*sz4)*nn
276 aaa = one/
max(em30,x0n(i,1)*x0n(i,1)+y0n(i,1)*y0n(i,1)+z0n(i,1)*z0n(i,1))
277 hlc(i,1) = lc(i,1)*abs(lc(i,1))*aaa
278 hlb(i,4) = lb(i,4)*abs(lb(i,4))*aaa
279 al(i,1) = -(xi0v(i)*x0n(i,1)+yi0v(i)*y0n(i,1)+zi0v(i)*z0n(i,1))*aaa
280 al(i,1) =
max(zero,
min(one,al(i,1)))
281 aaa = one/
max(em30,x0n(i
283 hlb(i,1) = lb(i,1)*abs
284 al(i,2) = -(xi0v(i)*x0n(i,2)+yi0v(i)*y0n(i,2)+zi0v(i)*z0n(i,2))*aaa
285 al(i,2) =
max(zero,
min(one,al(i,2)))
286 aaa = one/
max(em30,x0n(i,3)*x0n(i,3)+y0n(i,3)*y0n(i,3)+z0n(i,3)*z0n(i,3))
287 hlc(i,3) = lc(i,3)*abs(lc(i,3))*aaa
288 hlb(i,2) = lb(i,2)*abs(lb(i,2))*aaa
289 al(i,3) = -(xi0v(i)*x0n(i,3)+yi0v(i)*y0n(i,3)+zi0v(i)*z0n(i,3))*aaa
290 al(i,3) =
max(zero,
min(one,al(i,3)))
291 aaa = one/
max(em30,x0n(i,4)*x0n(i,4)+y0n(i,4)*y0n(i,4)+z0n(i,4)*z0n(i,4))
292 hlc(i,4) = lc(i,4)*abs(lc(i,4))*aaa
293 hlb(i,3) = lb(i,3)*abs(lb(i,3))*aaa
294 al(i,4) = -(xi0v(i)*x0n(i,4)+yi0v(i)*y0n(i,4)+zi0v(i)*z0n(i,4))*aaa
295 al(i,4) =
max(zero,
min(one,al(i,4)))
305 x12(i) = xx(i,i2) - xx(i,i1)
306 y12(i) = yy(i,i2) - yy(i,i1)
307 z12(i) = zz(i,i2) - zz(i,i1)
311 lap = one-lbp(i,it)-lcp(i,it)
313 aaa = one /
max(em20,x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i))
314 hla= lap*abs(lap) * aaa
316 + hla<=hlb(i,it).AND.hla<=hlc(i,it))
THEN
317 lbp(i,it) = (xij(i,i2)*x12(i)+yij(i,i2)*y12(i)+zij(i,i2)*z12(i)) * aaa
318 lbp(i,it) =
max(zero,
min(one,lbp(i,it)))
319 lcp(i,it) = one - lbp(i,it)
320 ELSEIF(lbp(i,it)<zero.AND.
321 + hlb(i,it)<=hlc(i,it).AND.hlb(i,it)<=hla)
THEN
324 ELSEIF(lcp(i,it)<zero.AND.
325 + hlc(i,it)<=hla.AND.hlc(i,it)<=hlb(i,it))
THEN
330 lap = one-lbp(i,it)-lcp(i,it)
331 xp =lap*xx(i,5)+lbp(i,it)*xx(i,i1) + lcp(i,it)*xx(i,i2)
332 yp =lap*yy(i,5)+lbp(i,it)*yy(i,i1) + lcp(i,it)*yy(i,i2)
333 zp =lap*zz(i,5)+lbp(i,it)*zz(i,i1) + lcp(i,it)*zz(i,i2)
337 dd(i,it)=dx*dx+dy*dy+dz*dz
344 lap = one-lbp(i,it)-lcp(i,it)
346 gapv(i,it) =
min(gaps(i)+lap*gap_mm(i)+lbp(i,it)*gap_nm(i1,i)+lcp(i,it)*gap_nm(i2,i),gapmxl(i))
349 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))
352 IF(bb(i,it) > zero)
THEN
353 pent(i,it)=gapv(i,it)+bb(i,it)
357 ELSEIF(etyp(i) > nrtm)
THEN
358 IF(bb(i,it) > zero)
THEN
359 pent(i,it)=gapv(i,it)+bb(i,it)
361 pent(i,it)=
max(zero,gapv(i,it)-sqrt(dd(i,it)))
364 IF(bb(i,it) > zero)
THEN
369 pent(i,it)=
max(zero,gapv(i,it)-sqrt(dd(i,it)))
379 IF(ix3(i)/=ix4(i))
THEN
393 x12(i) = xx(i,i2) - xx(i,i1)
394 y12(i) = yy(i,i2) - yy(i,i1)
395 z12(i) = zz(i,i2) - zz(i,i1)
399 lap = one-lbp(i,it)-lcp(i,it)
401 aaa = one /
max(em20,x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i))
402 hla= lap*abs(lap) * aaa
404 + hla<=hlb(i,it).AND.hla<=hlc(i,it))
THEN
405 lbp(i,it) = (xij(i,i2)*x12(i)+yij(i,i2)*y12(i)+zij(i,i2)*z12(i)) * aaa
406 lbp(i,it) =
max(zero,
min(one,lbp(i,it)))
407 lcp(i,it) = one - lbp(i,it)
408 ELSEIF(lbp(i,it)<zero.AND.
409 + hlb(i,it)<=hlc(i,it).AND.hlb(i,it)<=hla)
THEN
412 ELSEIF(lcp(i,it)<zero.AND.
413 + hlc(i,it)<=hla.AND.hlc(i,it)<=hlb(i,it))
THEN
418 lap = one-lbp(i,it)-lcp(i,it)
419 xp =lap*xx(i,5)+lbp(i,it)*xx(i,i1)
420 yp =lap*yy(i,5)+lbp(i,it)*yy(i,i1) + lcp(i,it)*yy(i,i2)
421 zp =lap*zz(i,5)+lbp(i,it)*zz(i,i1) + lcp(i,it)*zz(i,i2)
425 dd(i,it)=dx*dx+dy*dy+dz*dz
432 lap = one-lbp(i,it)-lcp(i,it)
434 gapv(i,it) =
min(gaps(i)+lap*gap_mm(i)+lbp(i,it)*gap_nm(i1,i)+lcp(i,it)*gap_nm(i2,i),gapmxl(i))
437 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))
441 IF(bb(i,it) > zero)
THEN
442 pent(i,it)=gapv(i,it)+bb(i,it)
446 ELSEIF(etyp(i) > nrtm)
THEN
447 IF(bb(i,it) > zero)
THEN
448 pent(i,it)=gapv(i,it)+bb(i,it)
450 pent(i,it)=
max(zero,gapv(i,it)-sqrt(dd(i,it)))
453 IF(bb(i,it) > zero)
THEN
458 pent(i,it)=
max(zero,gapv(i,it)-sqrt(dd(i,it)))
471 IF(ix3(i)/=ix4(i))
THEN
472 dmin=
min(dd(i,1),dd(i,2),dd(i,3),dd(i,4))
474 IF(dd(i,jj) <= onep03*dmin)
THEN
477 lax = one-lb(i,jj)-lc(i,jj)
480 IF(lbx >= zero .AND. lcx >= zero)
THEN
483 lx=
max(zero,dd(i,jj)-bb(i,jj)*bb(i,jj
495 IF(dd(i,1) <= dist(i))
THEN
503 IF(j /= it) pent(i,j)=zero
519 xh(i)=xi(i)+bb(i,it)*xn(i,it)
520 yh(i)=yi(i)+bb(i,it)*yn(i,it)
521 zh(i)=zi(i)+bb(i,it)*zn(i,it)
524 IF(lb(i,it) < -em03 .OR. lc(i,it) < -em03 .OR.
525 . lb(i,it)+lc(i,it) > one+em03) far(i,it)=1
527 IF(ix3(i) /= ix4(i))
THEN
531 IF(mvoisn(i,it)==0)
THEN
533 IF( (xh(i)-xx(i,i1))* nnx(i,it)+
534 . (yh(i)-yy(i,i1))* nny(i,it)+
535 . (zh(i)-zz(i,i1))* nnz(i,it) >= gaps(i)) far(i,it) =2
537 ELSEIF((ib1 /= 0 .AND. ib2 == 0).OR.
538 . (ib2 /= 0 .AND. ib1 == 0))
THEN
547 IF(vtx_bisector(1,1,ibx)/=zero.OR.
548 . vtx_bisector(2,1,ibx)/=zero.OR.
549 . vtx_bisector(3,1,ibx)/=zero.OR.
550 . vtx_bisector(1,2,ibx)/=zero.OR.
551 . vtx_bisector(2,2,ibx)/=zero.OR.
552 . vtx_bisector(3,2,ibx)/=zero)
THEN
553 p1 = (xh(i)-xx(i,ix))* vtx_bisector(1,1,ibx)+
554 . (yh(i)-yy(i,ix))* vtx_bisector(2,1,ibx)+
555 . (zh(i)-zz(i,ix))* vtx_bisector(3,1,ibx)
556 p2 = (xh(i)-xx(i,ix))* vtx_bisector(1,2,ibx)+
557 . (yh(i)-yy(i,ix))* vtx_bisector(2,2,ibx)+
558 . (zh(i)-zz(i,ix))* vtx_bisector(3,2,ibx)
559 IF(p1 >= gaps(i) .AND. p2 >= gaps(i)) far(i,it) =2
564 nn = one/
max(em20,sqrt(vx*vx+vy*vy+vz*vz))
565 pn = ((xh(i)-xx(i,ix))*vx+(yh(i)-yy(i,ix))*vy+(zh(i)-zz(i,ix))*vz)*nn
566 IF(pn >= gaps(i)) far(i,it) =2
571 IF(far(i,it)==1 .OR. bb(i,it) <= zero)
THEN
573 x12(i)=xx(i,i2)-xx(i,i1)
574 y12(i)=yy(i,i2)-yy(i,i1)
575 z12(i)=zz(i,i2)-zz(i,i1)
578 px = z12(i)*nny(i,it)-y12(i)*nnz(i,it)
579 py = x12(i)*nnz(i,it)-z12(i)*nnx(i,it)
580 pz = y12(i)*nnx(i,it)-x12(i)*nny(i,it)
581 pp = px*px+py*py+pz*pz
583 ll = xij(i,i1)*xij(i,i1)+yij(i,i1)*yij(i,i1)+zij(i,i1)*zij(i,i1)
585 side(i,it)=-(xij(i,i1)*px+yij(i,i1)*py+zij(i,i1)*pz)*sqrt(one/
max(em30,ll*pp))
588 IF(side(i,it) < -zep01) far(i,it) =2
598 d1=(xh(i)-xx(i,1))* nnx(i,1)+
599 . (yh(i)-yy(i,1))* nny(i,1)+
600 . (zh(i)-zz(i,1))* nnz(i,1)
601 d2=(xh(i)-xx(i,2))* nnx(i,2)+
602 . (yh(i)-yy(i,2))* nny(i,2)+
603 . (zh(i)-zz(i,2))* nnz(i,2)
604 d3=(xh(i)-xx(i,3))* nnx(i,4)+
605 . (yh(i)-yy(i,3))* nny(i,4)+
606 . (zh(i)-zz(i,3))* nnz(i,4)
608 IF( (mvoisn(i,1) == 0 .AND. d1 >= gaps(i)).OR.
609 . (mvoisn(i,2) == 0 .AND. d2 >= gaps(i)).OR.
610 . (mvoisn(i,4) == 0 .AND. d3 >= gaps(i)) )
THEN
614 ELSEIF((ib1/=0 .AND. ib2==0 .AND. ib3==0).OR.
615 . (ib2/=0 .AND. ib3==0 .AND. ib1==0).OR.
616 . (ib3/=0 .AND. ib1==0 .AND. ib2==0))
THEN
633 IF(vtx_bisector(1,1,ibx)/=zero.OR.
634 . vtx_bisector(2,1,ibx)/=zero.OR.
635 . vtx_bisector(3,1,ibx)/=zero.OR.
636 . vtx_bisector(1,2,ibx)/=zero.OR.
637 . vtx_bisector(2,2,ibx)/=zero.OR.
638 . vtx_bisector(3,2,ibx)/=zero)
THEN
639 p1 = (xh(i)-xx(i,ix))* vtx_bisector(1,1,ibx)+
640 . (yh(i)-yy(i,ix))* vtx_bisector(2,1,ibx)+
641 . (zh(i)-zz(i,ix))* vtx_bisector(3,1,ibx)
642 p2 = (xh(i)-xx(i,ix))* vtx_bisector(1,2,ibx)+
643 . (yh(i)-yy(i,ix))* vtx_bisector(2,2,ibx)+
644 . (zh(i)-zz(i,ix))* vtx_bisector(3,2,ibx)
645 IF(p1 >= gaps(i) .AND. p2 >= gaps(i)) far(i,it) =2
647 vx = two*xx(i,ix)-(xx(i,iy)+xx(i,iz))
648 vy = two*yy(i,ix)-(yy(i,iy)+yy(i
649 vz = two*zz(i,ix)-(zz(i,iy)+zz(i,iz))
650 nn = one/
max(em20,sqrt(vx*vx+vy*vy+vz*vz))
651 pn = ((xh(i)-xx(i,ix))*vx+(yh(i)-yy(i,ix))*vy+(zh(i)-zz(i,ix))*vz)*nn
652 IF(pn >= gaps(i)) far(i,it) =2
657 IF(far(i,it)==1 .OR. bb(i,it) <= zero)
THEN
659 IF(mvoisn(i,1) /= 0)
THEN
666 x12(i)=xx(i,2)-xx(i,1)
667 y12(i)=yy(i,2)-yy(i,1)
668 z12(i)=zz(i,2)-zz(i,1)
671 px = z12(i)*nny(i,1)-y12(i)*nnz(i,1)
673 pz = y12(i)*nnx(i,1)-x12(i)*nny(i,1)
674 pp = px*px+py*py+pz*pz
676 ll = xij(i,1)*xij(i,1)+yij(i,1)*yij(i,1)+zij(i,1)*zij(i,1)
678 side(i,1)=-(xij(i,1)*px+yij(i,1)*py+zij(i,1
679 IF(side(i,1) < -zep01) far(i,it) =2
683 IF(mvoisn(i,2) /= 0)
THEN
690 x12(i)=xx(i,3)-xx(i,2)
691 y12(i)=yy(i,3)-yy(i,2)
692 z12(i)=zz(i,3)-zz(i,2)
695 px = z12(i)*nny(i,2)-y12(i)*nnz(i,2)
696 py = x12(i)*nnz(i,2)-z12(i)*nnx(i,2)
697 pz = y12(i)*nnx(i,2)-x12(i)*nny(i,2)
698 pp = px*px+py*py+pz*pz
700 ll = xij(i,2)*xij(i,2)+yij(i,2)*yij(i,2)+zij(i,2)*zij(i,2)
702 side(i,2)=-(xij(i,2)*px+yij(i,2)*py+zij(i,2)*pz)*sqrt(one/
max(em30,ll*pp))
703 IF(side(i,2) < -zep01) far(i,it) =2
707 IF(mvoisn(i,4) /= 0)
THEN
714 x12(i)=xx(i,1)-xx(i,3)
715 y12(i)=yy(i,1)-yy(i,3)
716 z12(i)=zz(i,1)-zz(i,3)
719 px = z12(i)*nny(i,4)-y12(i)*nnz(i,4)
720 py = x12(i)*nnz(i,4)-z12(i)*nnx(i,4)
721 pz = y12(i)*nnx(i,4)-x12(i)*nny(i,4)
722 pp = px*px+py*py+pz*pz
724 ll = xij(i,3)*xij(i,3)+yij
726 side(i,4)=-(xij(i,3)*px+yij(i,3)*py+zij(i,3)*pz)*sqrt(one/
max(em30,ll*pp))
727 IF(side(i,4) < -zep01) far(i,it) =2
733 IF(far(i,it)==2) pent(i,it)=zero
758 IF(pent(i,it)==zero)
THEN
762 IF(ix3(i) /= ix4(i))
THEN
767 IF(mvoisn(i,it)==0)
THEN
785 nne(i)= (xh(i)-xx(i,i1))*nn1(i)+ (yh(i)-yy(i,i1))*nn2(i)+ (zh(i)-zz(i,i1))*nn3(i)
790 ELSEIF((ib1/=0.AND.ib2==0).OR.
791 . (ib2/=0.AND.ib1==0))
THEN
800 p1 = (xh(i)-xx(i,ix))* vtx_bisector(1,1,ibx)+
801 . (yh(i)-yy(i,ix))* vtx_bisector(2,1,ibx)+
802 . (zh(i)-zz(i,ix))* vtx_bisector(3,1,ibx)
803 p2 = (xh(i)-xx(i,ix))* vtx_bisector(1,2,ibx)+
804 . (yh(i)-yy(i,ix))* vtx_bisector(2,2,ibx)+
805 . (zh(i)-zz(i,ix))* vtx_bisector(3,2,ibx)
807 IF(p1 < gaps(i) .AND. p2 < gaps(i))
THEN
809 nn1(i)=vtx_bisector(1,1,ibx)+vtx_bisector(1,2,ibx)
810 nn2(i)=vtx_bisector(2,1,ibx)+vtx_bisector(2,2,ibx)
811 nn3(i)=vtx_bisector(3,1,ibx)+vtx_bisector(3,2,ibx)
813 nn=sqrt(nn1(i)*nn1(i)+nn2(i)*nn2(i)+nn3(i)*nn3(i))
814 nn = one/
max(em30,nn)
819 nne(i)= (xh(i)-xx(i,ix))*nn1(i)+ (yh(i)-yy(i,ix))*nn2(i)+ (zh(i)-zz(i,ix))*nn3(i)
824 ELSEIF(p1 < gaps(i))
THEN
826 nn1(i)= vtx_bisector(1,1,ibx)
827 nn2(i)= vtx_bisector(2,1,ibx)
828 nn3(i)= vtx_bisector(3,1,ibx)
829 nne(i)= (xh(i)-xx(i,ix))*nn1(i)+ (yh(i)-yy(i,ix))*nn2(i)+ (zh(i)-zz(i,ix))*nn3
834 ELSEIF(p2 < gaps(i))
THEN
836 nn1(i)= vtx_bisector(1,2,ibx)
837 nn2(i)= vtx_bisector(2,2,ibx)
838 nn3(i)= vtx_bisector(3,2,ibx)
839 nne(i)= (xh(i)-xx(i,ix))*nn1(i)+ (yh(i)-yy(i,ix))*nn2(i)+ (zh(i)-zz(i,ix))*nn3(i)
860 xh(i)=xi(i)+bb(i,it)*xn(i,it)
861 yh(i)=yi(i)+bb(i,it)*yn(i,it)
862 zh(i)=zi(i)+bb(i,it)*zn(i,it)
864 IF(mvoisn(i,1)==0.OR.
866 . mvoisn(i,4)==0)
THEN
869 IF(mvoisn(i,1)==0)
THEN
871 nn = (xh(i)-xx(i,i1))*nnx(i,i1)+(yh(i)-yy(i,i1))*nny(i,i1)+(zh(i)-zz(i,i1))*nnz(i,i1)
886 IF(mvoisn(i,2)==0)
THEN
889 nn = (xh(i)-xx(i,i2))*nnx(i,i2)+(yh(i)-yy(i,i2))*nny(i,i2)+(zh(i)-zz(i,i2))*nnz(i,i2)
904 IF(mvoisn(i,4)==0)
THEN
907 nn = (xh(i)-xx(i,5))*nnx(i,5)+(yh(i
922 ELSEIF((ib1/=0 .AND. ib2==0 .AND. ib3==0).OR.
923 . (ib2/=0 .AND. ib3==0 .AND. ib1==0).OR.
924 . (ib3/=0 .AND. ib1==0 .AND. ib2==0))
THEN
935 p1 = (xh(i)-xx(i,ix))* vtx_bisector(1,1,ibx)+
936 . (yh(i)-yy(i,ix))* vtx_bisector(2,1,ibx)+
937 . (zh(i)-zz(i,ix))* vtx_bisector(3,1,ibx)
938 p2 = (xh(i)-xx(i,ix))* vtx_bisector(1,2,ibx)+
939 . (yh(i)-yy(i,ix))* vtx_bisector(2,2,ibx)+
940 . (zh(i)-zz(i,ix))* vtx_bisector(3,2,ibx)
942 IF(p1 < gaps(i) .AND. p2 < gaps(i))
THEN
944 nn1(i)=vtx_bisector(1,1,ibx)+vtx_bisector(1,2,ibx)
945 nn2(i)=vtx_bisector(2,1,ibx)+vtx_bisector(2,2,ibx)
946 nn3(i)=vtx_bisector(3,1,ibx)+vtx_bisector(3,2,ibx)
948 nn=sqrt(nn1(i)*nn1(i)+nn2(i)*nn2(i)+nn3(i)*nn3(i))
949 nn = one/
max(em30,nn)
954 nne(i)= (xh(i)-xx(i,ix))*nn1(i)+ (yh(i)-yy(i,ix))*nn2(i)+ (zh
961 nn1(i)= vtx_bisector(1,1,ibx)
964 nne(i)= (xh(i)-xx(i,ix))*nn1(i)+ (yh(i)-yy(i,ix))*nn2(i)+ (zh(i)-zz(i,ix))*nn3(i)
971 nn1(i)= vtx_bisector(1,2,ibx)
972 nn2(i)= vtx_bisector(2,2,ibx)
973 nn3(i)= vtx_bisector(3,2,ibx)
974 nne(i)= (xh(i)-xx(i,ix))*nn1(i)+ (yh(i)-yy(i,ix))*nn2(i)+ (zh(i)-zz(i,ix))*nn3(i)
999 gapm = gapv(i,it)-gaps(i)
1000 IF(nne(i) > zero .AND. bb(i,it)+gapm < zero)
THEN
1014 lap = one-lbp(i,it)-lcp(i,it)
1015 xp=lap*xx(i,5)+lbp(i,it)*xx(i,i1) + lcp(i,it)*xx(i,i2)
1016 yp=lap*yy(i,5)+lbp(i,it)*yy
1017 zp=lap*zz(i,5)+lbp(i,it)*zz(i,i1) + lcp(i,it)*zz(i,i2)
1024 dc = sqrt(nn1(i)*nn1(i)+ nn2(i)*nn2(i)+ nn3(i)*nn3(i))
1031 pent(i,it)=
max(zero,gaps(i)-dc)
1034 nne(i)=nne(i)-gaps(i)
1035 IF(-bb(i,it) < gapv(i,it)+nne(i))
THEN
1042 pent(i,it)=
max(zero,-nne(i))
1051 pent(i,it)=
max(zero,gapv(i,it)+bb(i,it))
1057 nne(i)=nne(i)-gaps(i)
1058 IF(nne(i) >= zero)
THEN
1074 IF(gapv(i,it)+nne(i) > zero)
THEN
1076 IF(-bb(i,it) < gapv(i,it)+nne(i))
THEN
1092 pent(i,it)=
max(zero,gapv(i,it)+bb(i,it))
1101 ELSEIF(isharp==2)
THEN
1110 nne(i)=nne(i)-gaps(i)
1111 IF(nne(i) >= zero)
THEN
1126 IF(gapv(i,it)+nne(i) > zero)
THEN
1129 xc =xh(i)-(gapv(i,it)+nne(i))*nn1(i)
1130 yc =yh(i)-(gapv(i,it)+nne(i))*nn2(i)
1131 zc =zh(i)-(gapv(i,it)+nne(i))*nn3(i)
1135 dc = sqrt(nn1(i)*nn1(i)+ nn2(i)*nn2(i)+ nn3(i)*nn3(i))
1141 pent(i,it)=
max(zero,gapv(i,it)-dc)
1165 IF(etyp(i) > nrtm)
THEN
1166 IF(far(i,it)==2) cycle ! retain closest segment whose cone includes
the secondary node
1169 ELSEIF(etyp(i)/=0)
THEN
1170 IF(far(i,it)==2) cycle
1172 IF(bb(i,it) > zero) cycle
1183 IF (msegtyp(l)==0.OR.msegtyp(l)>nrtm)
THEN
1184 IF(inacti/=0.AND.ilev/=3)
THEN
1185 norm = nn1(i)*pene_old(1,n)+nn2(i)*pene_old(2,n)
1186 + +nn3(i)*pene_old(3,n)
1187 IF(
norm > zero) pene = zero
1196 IF(dist(i) < time_s(n) .OR.
1197 * (dist(i) == time_s(n) .AND. irtlm(1,n) < mglob))
THEN
1198 IF(far(i,it)==0 .AND. abs(dd(i,it)-gapv(i,it)*gapv(i,it)) < penmin**2)
THEN
1219 IF(far(i,it)==2)
THEN
1231 IF(.NOT.(etyp(i)==0.OR.msegtyp(l) > nrtm))
THEN
1232 IF(pent(i,it)==zero) cycle
1236 pene=
max(zero,pent(i,it)-half*gapv(i,it))
1239 IF (msegtyp(l)==0.OR.msegtyp(l)>nrtm)
THEN
1240 IF(inacti/=0.AND.ilev/=3)
THEN
1241 norm = nn1(i)*pene_old(1,n)+nn2(i)*pene_old(2,n)
1242 + +nn3(i)*pene_old(3,n)
1243 IF(
norm > zero) pene = zero
1248 IF(dist(i) < time_s(n) .OR.
1249 * (dist(i) == time_s(n) .AND. irtlm(1,n) < mglob))
THEN
1250 IF(far(i,it)==0 .AND. abs(dd(i,it)-gapv(i,it)*gapv(i,it)) < penmin**2)
THEN