29 1 JLT ,LIST ,CAND_N ,CAND_E ,IX1 ,
30 2 IX2 ,IX3 ,IX4 ,GAPV ,XI ,
31 3 YI ,ZI ,IRTLM ,CSTS ,DEPTH2 ,
32 4 NNX1 ,NNY1 ,NNZ1 ,NNX2 ,NNY2 ,
33 5 NNZ2 ,NNX3 ,NNY3 ,NNZ3 ,NNX4 ,
34 6 NNY4 ,NNZ4 ,X1 ,Y1 ,Z1 ,
35 7 X2 ,Y2 ,Z2 ,X3 ,Y3 ,
36 8 Z3 ,X4 ,Y4 ,Z4 ,DRAD2 ,
41#include "implicit_f.inc"
50 INTEGER JLT, LIST(*), CAND_N(*), CAND_E(*),IRTLM(2,*),
51 . IX1(*), IX2(*), IX3(*),IX4(*)
52 my_real ,
INTENT(IN) :: DGAPLOAD
54 . GAPV(*), CSTS(2,*), DEPTH2, DRAD2,
55 . XI(*) , YI(*), ZI(*),
56 . X1(*), X2(*), X3(*), X4(*),
57 . Y1(*), Y2(*), Y3(*), Y4(*),
58 . Z1(*), Z2(*), Z3(*), Z4(*),
59 . nnx1(*), nnx2(*), nnx3(*), nnx4(*),
60 . nny1(*), nny2(*), nny3(*), nny4(*),
61 . nnz1(*), nnz2(*), nnz3(*), nnz4(*)
66 INTEGER I, IG, J, IS, L, N, N4N
67 INTEGER NSVG(MVSIZ), FAR(MVSIZ), I4N(MVSIZ),
70 . NX1(MVSIZ), NX2(MVSIZ), NX3(MVSIZ), NX4(MVSIZ),
71 . NY1(MVSIZ), NY2(MVSIZ), NY3(MVSIZ), NY4(MVSIZ),
72 . NZ1(MVSIZ), NZ2(MVSIZ), NZ3(MVSIZ), NZ4(MVSIZ),
73 . LB1(MVSIZ), LB2(MVSIZ), LB3(MVSIZ), LB4(MVSIZ),
74 . LC1(MVSIZ), LC2(MVSIZ), LC3(MVSIZ), LC4(MVSIZ),
76 . x0(mvsiz), y0(mvsiz), z0(mvsiz),
77 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz)
79 . nnx0(mvsiz), nny0(mvsiz), nnz0(mvsiz)
81 . x01(mvsiz), x02(mvsiz), x03(mvsiz), x04(mvsiz),
82 . y01(mvsiz), y02(mvsiz), y03(mvsiz), y04(mvsiz),
83 . z01(mvsiz), z02(mvsiz), z03(mvsiz), z04(mvsiz),
84 . xi1(mvsiz), xi2(mvsiz),
85 . yi1(mvsiz), yi2(mvsiz),
86 . zi1(mvsiz), zi2(mvsiz)
89 . x12,x23,x34,x41,xi0,
90 . y12,y23,y34,y41,yi0,
91 . z12,z23,z34,z41,zi0,
92 . xn1(mvsiz),yn1(mvsiz),zn1(mvsiz),
93 . xn2(mvsiz),yn2(mvsiz),zn2(mvsiz),
94 . xn3(mvsiz),yn3(mvsiz),zn3(mvsiz),
95 . xn4(mvsiz),yn4(mvsiz),zn4(mvsiz),
96 . sx1(mvsiz),sx2(mvsiz),
97 . sy1(mvsiz),sy2(mvsiz),
98 . sz1(mvsiz),sz2(mvsiz),
99 . xi0v(mvsiz), yi0v(mvsiz), zi0v(mvsiz),
100 . xh(mvsiz), yh(mvsiz), zh(mvsiz),
101 . nx(mvsiz), ny(mvsiz), nz(mvsiz),
103 . x0h(mvsiz), y0h(mvsiz), z0h(mvsiz),
104 . x1h(mvsiz), y1h(mvsiz), z1h(mvsiz),
105 . x2h(mvsiz), y2h(mvsiz), z2h(mvsiz), hh(mvsiz), ll,
106 . hxi0, hyi0, hzi0, hxi1, hyi1, hzi1, hxi2, hyi2, hzi2,
107 . hx01, hy01, hz01, hx02, hy02, hz02,
108 . hxn1, hyn1, hzn1, hsx1, hsy1, hsz1, hsx2, hsy2, hsz2,
109 . side, crit, crito, lbo, lco, lb, lc, la, sl,
110 . lambda, xp, yp, zp,gapp2(mvsiz)
112 . cmaj(mvsiz), csts_l(2,mvsiz)
132 IF(ix3(i)/=ix4(i))
THEN
133 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
134 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
135 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
145 IF(ix3(i)/=ix4(i))
THEN
146 nnx0(i)=fourth*(nnx1(i)+nnx2(i)+nnx3(i)+nnx4(i))
147 nny0(i)=fourth*(nny1(i)+nny2(i)+nny3(i)+nny4(i))
148 nnz0(i)=fourth*(nnz1(i)+nnz2(i)+nnz3(i)+nnz4(i))
174 gap2(i)=gapv(is)*gapv(is)
175 gapp2(i)= (gapv(is)+dgapload)*(gapv(is)+dgapload)
177 x01(i) = x1(i) - x0(i)
178 y01(i) = y1(i) - y0(i)
179 z01(i) = z1(i) - z0(i)
181 x02(i) = x2(i) - x0(i)
182 y02(i) = y2(i) - y0(i)
183 z02(i) = z2(i) - z0(i)
185 x03(i) = x3(i) - x0(i)
186 y03(i) = y3(i) - y0(i)
187 z03(i) = z3(i) - z0(i)
189 x04(i) = x4(i) - x0(i)
190 y04(i) = y4(i) - y0(i)
198 xn1(i) = y01(i)*z02(i) - z01(i)*y02(i)
199 yn1(i) = z01(i)*x02(i) - x01(i)*z02(i)
200 zn1(i) = x01(i)*y02(i) - y01(i)*x02(i)
202 xn2(i) = y02(i)*z03(i) - z02(i)*y03(i)
203 yn2(i) = z02(i)*x03(i) - x02(i)*z03(i)
204 zn2(i) = x02(i)*y03(i) - y02(i)*x03(i)
206 xn3(i) = y03(i)*z04(i) - z03(i)*y04(i)
207 yn3(i) = z03(i)*x04(i) - x03(i)*z04(i)
208 zn3(i) = x03(i)*y04(i) - y03(i)*x04(i)
210 xn4(i) = y04(i)*z01(i) - z04(i)*y01(i)
211 yn4(i) = z04(i)*x01(i) - x04(i)*z01(i)
212 zn4(i) = x04(i)*y01(i) - y04(i)*x01(i)
220 xi0v(i) = x0(i) - xi(i)
221 yi0v(i) = y0(i) - yi(i)
222 zi0v(i) = z0(i) - zi(i)
224 xi1(i) = x1(i) - xi(i)
225 yi1(i) = y1(i) - yi(i)
226 zi1(i) = z1(i) - zi(i)
228 xi2(i) = x2(i) - xi(i)
229 yi2(i) = y2(i) - yi(i)
230 zi2(i) = z2(i) - zi(i)
232 sx1(i) = yi0v(i)*zi1(i) - zi0v(i)*yi1(i)
233 sy1(i) = zi0v(i)*xi1(i) - xi0v(i)*zi1(i)
234 sz1(i) = xi0v(i)*yi1(i) - yi0v(i)*xi1(i)
236 sx2(i) = yi0v(i)*zi2(i) - zi0v(i)*yi2(i)
237 sy2(i) = zi0v(i)*xi2(i) - xi0v(i)*zi2(i)
238 sz2(i) = xi0v(i)*yi2(i) - yi0v(i)*xi2(i)
241 .
max(em30,(xn1(i)*xn1
242 lb1(i) = -(xn1(i)*sx2(i) + yn1(i)*sy2(i) + zn1(i)*sz2(i))*s2
243 lc1(i) = (xn1(i)*sx1(i) + yn1(i)*sy1(i) + zn1(i)*sz1(i))*s2
250 ny(i) = yi(i)-(y0(i) + lb1(i)*y01(i) + lc1(i)*y02(i))
251 nz(i) = zi(i)-(z0(i) + lb1(i)*z01(i) + lc1(i)*z02(i))
252 hh(i) = nx(i)*xn1(i) + ny(i)*yn1(i) +nz(i)*zn1(i)
260 .
max(em30,nnx1(i)*xn1(i)+nny1(i)*yn1(i)+nnz1(i)*zn1(i))
261 x1h(i)=x1(i)+ll*nnx1(i)
262 y1h(i)=y1(i)+ll*nny1(i)
263 z1h(i)=z1(i)+ll*nnz1(i)
266 .
max(em30,nnx2(i)*xn1(i)+nny2(i)*yn1(i)+nnz2(i)*zn1(i))
267 x2h(i)=x2(i)+ll*nnx2(i)
268 y2h(i)=y2(i)+ll*nny2(i)
269 z2h(i)=z2(i)+ll*nnz2(i)
272 .
max(em30,nnx0(i)*xn1(i)+nny0(i)*yn1(i)+nnz0(i)*zn1(i))
273 x0h(i)=x0(i)+ll*nnx0(i)
274 y0h(i)=y0(i)+ll*nny0(i)
275 z0h(i)=z0(i)+ll*nnz0(i)
284 hxi0 = x0h(i) - xi(i)
285 hyi0 = y0h(i) - yi(i)
286 hzi0 = z0h(i) - zi(i)
288 hxi1 = x1h(i) - xi(i)
289 hyi1 = y1h(i) - yi(i)
290 hzi1 = z1h(i) - zi(i)
292 hxi2 = x2h(i) - xi(i)
293 hyi2 = y2h(i) - yi(i)
294 hzi2 = z2h(i) - zi(i)
296 hx01 = x1h(i) - x0h(i)
297 hy01 = y1h(i) - y0h(i)
298 hz01 = z1h(i) - z0h(i)
300 hx02 = x2h(i) - x0h(i)
301 hy02 = y2h(i) - y0h(i)
302 hz02 = z2h(i) - z0h(i)
304 hxn1 = hy01*hz02 - hz01*hy02
305 hyn1 = hz01*hx02 - hx01*hz02
306 hzn1 = hx01*hy02 - hy01*hx02
308 IF(hxn1*xn1(i)+hyn1*yn1(i)+hzn1*zn1(i) <= zero)
THEN
314 hsx1 = hyi0*hzi1 - hzi0*hyi1
315 hsy1 = hzi0*hxi1 - hxi0*hzi1
316 hsz1 = hxi0*hyi1 - hyi0*hxi1
318 hsx2 = hyi0*hzi2 - hzi0*hyi2
319 hsy2 = hzi0*hxi2 - hxi0*hzi2
320 hsz2 = hxi0*hyi2 - hyi0*hxi2
323 .
max(em30,(hxn1*hxn1+ hyn1*hyn1+ hzn1*hzn1))
324 lb1(i) = -(hxn1*hsx2 + hyn1*hsy2 + hzn1*hsz2)*s2
325 lc1(i) = (hxn1*hsx1 + hyn1*hsy1 + hzn1*hsz1)*s2
327 IF(lb1(i) < -zep01 .OR. lc1(i) < -zep01 .OR.
328 . lb1(i)+lc1(i) > onep01) far(i)=1
337 nx(i)=(one-lb1(i)-lc1(i))*nnx0(i)+lb1(i)*nnx1(i)+lc1(i)*nnx2(i)
338 ny(i)=(one-lb1(i)-lc1(i))*nny0(i)+lb1(i)*nny1(i)+lc1(i)*nny2(i)
339 nz(i)=(one-lb1(i)-lc1(i))*nnz0(i)+lb1(i)*nnz1(i)+lc1(i)*nnz2(i)
342 nn = nx(i)*xn1(i)+ ny(i)*yn1(i)+ nz(i)*zn1(i)
348 nn = one/
max(em30,nn)
350 lambda=(xn1(i)*xi0v(i)+yn1(i)*yi0v(i)+zn1(i)*zi0v(i))*nn
351 xp=xi(i)+lambda*nx(i)
352 yp=yi(i)+lambda*ny(i)
353 zp=zi(i)+lambda*nz(i)
367 sx1(i) = yi0v(i)*zi1(i) - zi0v(i)*yi1(i)
368 sy1(i) = zi0v(i)*xi1(i) - xi0v(i)*zi1(i)
369 sz1(i) = xi0v(i)*yi1(i) - yi0v(i)*xi1(i)
371 sx2(i) = yi0v(i)*zi2(i) - zi0v(i)*yi2(i)
372 sy2(i) = zi0v(i)*xi2(i) - xi0v(i)*zi2(i)
373 sz2(i) = xi0v(i)*yi2(i) - yi0v(i)*xi2(i)
376 .
max(em30,(xn1(i)*xn1(i)+ yn1(i)*yn1(i)+ zn1(i)*zn1(i)))
377 lb1(i) = -(xn1(i)*sx2(i) + yn1(i)*sy2(i) + zn1(i)*sz2(i))*nn
378 lc1(i) = (xn1(i)*sx1(i) + yn1(i)*sy1(i) + zn1(i)*sz1(i))*nn
381 . lb1(i)+lc1(i) > onep01) far(i)=1
415 lb =
min(one,
max(lb1(i),zero))
416 lc =
min(one,
max(lc1(i),zero))
417 la =
min(one,
max(one-lb1(i)-lc1(i),zero))
419 sl=one/
max(em20,la+lb+lc)
424 nx1(i) = xi(i)-(la*x0(i) + lb*x1(i) + lc*x2(i))
425 ny1(i) = yi(i)-(la*y0(i) + lb*y1(i) + lc*y2(i))
426 nz1(i) = zi(i)-(la*z0(i) + lb*z1(i) + lc*z2(i))
427 p1(i) = nx1(i)*nx1(i) + ny1(i)*ny1(i) +nz1(i)*nz1(i)
434 side=sign(one,nx1(i)*xn1(i)+ny1(i)*yn1(i)+nz1(i)*zn1(i))
435 IF((side >= zero .AND. p1(i) < gap2(i)) .OR.
436 . (side < zero .AND. p1(i) < depth2))
THEN
437 crit = abs(third-lb1(i))
438 . + abs(third-lc1(i))
439 . + abs(two_third-lb1(i)-lc1(i))
442 crito = abs(third-lbo)
444 . + abs(two_third-lbo-lco)
447 irtlm_l(1,i) = cand_e(is)
448 irtlm_l(2,i) = nint(side)
452 ELSEIF(side >= zero .AND. p1(i) <
max(drad2,gapp2(i)))
THEN
453 crit = abs(third-lb1(i))
454 . + abs(third-lc1(i))
455 . + abs(two_third-lb1(i)-lc1(i))
458 crito = abs(third-lbo)
460 . + abs(two_third-lbo-lco)
463 irtlm_l(1,i) = -cand_e(is)
464 irtlm_l(2,i) = nint(side)
474 IF(ix3(i)/=ix4(i))
THEN
486 xi0v(i) = x0(i) - xi(i)
487 yi0v(i) = y0(i) - yi(i)
488 zi0v(i) = z0(i) - zi(i)
490 xi1(i) = x2(i) - xi(i)
491 yi1(i) = y2(i) - yi(i)
492 zi1(i) = z2(i) - zi(i)
494 xi2(i) = x3(i) - xi(i)
495 yi2(i) = y3(i) - yi(i)
496 zi2(i) = z3(i) - zi(i)
498 sx1(i) = yi0v(i)*zi1(i) - zi0v(i)*yi1(i)
499 sy1(i) = zi0v(i)*xi1(i) - xi0v(i)*zi1(i)
500 sz1(i) = xi0v(i)*yi1(i) - yi0v(i)*xi1(i)
502 sx2(i) = yi0v(i)*zi2(i) - zi0v(i)*yi2(i)
503 sy2(i) = zi0v(i)*xi2(i) - xi0v(i)*zi2(i)
504 sz2(i) = xi0v(i)*yi2(i) - yi0v(i)*xi2(i)
507 .
max(em30,(xn2(i)*xn2(i)+ yn2(i)*yn2(i)+ zn2(i)*zn2(i)))
508 lb2(i) = -(xn2(i)*sx2(i) + yn2(i)*sy2(i) + zn2(i)*sz2(i))*s2
509 lc2(i) = (xn2(i)*sx1(i) + yn2(i)*sy1(i) + zn2(i)*sz1(i))*s2
517 nx(i) = xi(i)-(x0(i) + lb2(i)*x02(i) + lc2(i)*x03(i))
518 ny(i) = yi(i)-(y0(i) + lb2(i)*y02(i) + lc2(i)*y03(i))
519 nz(i) = zi(i)-(z0(i) + lb2(i)*z02(i) + lc2(i)*z03(i))
520 hh(i) = nx(i)*xn2(i) + ny(i)*yn2(i) +nz(i)*zn2(i)
530 .
max(em30,nnx2(i)*xn2(i)+nny2(i)*yn2(i)+nnz2(i)*zn2(i))
531 x1h(i)=x2(i)+ll*nnx2(i)
532 y1h(i)=y2(i)+ll*nny2(i)
533 z1h(i)=z2(i)+ll*nnz2(i)
536 .
max(em30,nnx3(i)*xn2(i)+nny3(i)*yn2(i)+nnz3(i)*zn2(i))
537 x2h(i)=x3(i)+ll*nnx3(i)
538 y2h(i)=y3(i)+ll*nny3(i)
539 z2h(i)=z3(i)+ll*nnz3(i)
542 .
max(em30,nnx0(i)*xn2(i)+nny0(i)*yn2(i)+nnz0(i)*zn2(i))
543 x0h(i)=x0(i)+ll*nnx0(i)
544 y0h(i)=y0(i)+ll*nny0(i)
545 z0h(i)=z0(i)+ll*nnz0(i)
556 hxi0 = x0h(i) - xi(i)
557 hyi0 = y0h(i) - yi(i)
558 hzi0 = z0h(i) - zi(i)
560 hxi1 = x1h(i) - xi(i)
561 hyi1 = y1h(i) - yi(i)
562 hzi1 = z1h(i) - zi(i)
564 hxi2 = x2h(i) - xi(i)
565 hyi2 = y2h(i) - yi(i)
566 hzi2 = z2h(i) - zi(i)
568 hx01 = x1h(i) - x0h(i)
569 hy01 = y1h(i) - y0h(i)
570 hz01 = z1h(i) - z0h(i)
572 hx02 = x2h(i) - x0h(i)
573 hy02 = y2h(i) - y0h(i)
574 hz02 = z2h(i) - z0h(i)
576 hxn1 = hy01*hz02 - hz01*hy02
577 hyn1 = hz01*hx02 - hx01*hz02
578 hzn1 = hx01*hy02 - hy01*hx02
580 IF(hxn1*xn2(i)+hyn1*yn2(i)+hzn1*zn2(i) <= zero)
THEN
586 hsx1 = hyi0*hzi1 - hzi0*hyi1
587 hsy1 = hzi0*hxi1 - hxi0*hzi1
588 hsz1 = hxi0*hyi1 - hyi0*hxi1
590 hsx2 = hyi0*hzi2 - hzi0*hyi2
591 hsy2 = hzi0*hxi2 - hxi0*hzi2
592 hsz2 = hxi0*hyi2 - hyi0*hxi2
595 .
max(em30,(hxn1*hxn1+ hyn1*hyn1+ hzn1*hzn1))
596 lb2(i) = -(hxn1*hsx2 + hyn1*hsy2 + hzn1*hsz2)*s2
597 lc2(i) = (hxn1*hsx1 + hyn1*hsy1 + hzn1*hsz1)*s2
599 IF(lb2(i) < -zep01 .OR. lc2(i) < -zep01 .OR.
600 . lb2(i)+lc2(i) > onep01) far(i)=1
611 nx(i)=(one-lb2(i)-lc2(i))*nnx0(i)+lb2(i)*nnx2(i)+lc2(i)*nnx3(i)
612 ny(i)=(one-lb2(i)-lc2(i))*nny0(i)+lb2(i)*nny2(i)+lc2(i)*nny3(i)
613 nz(i)=(one-lb2(i)-lc2(i))*nnz0(i)+lb2(i)*nnz2(i)+lc2(i)*nnz3(i)
616 nn = nx(i)*xn2(i)+ ny(i)*yn2(i)+ nz(i)*zn2(i)
622 nn = one/
max(em30,nn)
624 lambda=(xn2(i)*xi0v(i)+yn2(i)*yi0v(i)+zn2(i)*zi0v(i))*nn
625 xp=xi(i)+lambda*nx(i)
626 yp=yi(i)+lambda*ny(i)
627 zp=zi(i)+lambda*nz(i)
641 sx1(i) = yi0v(i)*zi1(i) - zi0v(i)*yi1(i)
642 sy1(i) = zi0v(i)*xi1(i) - xi0v(i)*zi1(i)
643 sz1(i) = xi0v(i)*yi1(i) - yi0v(i)*xi1(i)
645 sx2(i) = yi0v(i)*zi2(i) - zi0v(i)*yi2(i)
646 sy2(i) = zi0v(i)*xi2(i) - xi0v(i)*zi2(i)
647 sz2(i) = xi0v(i)*yi2(i) - yi0v(i)*xi2(i)
650 .
max(em30,(xn2(i)*xn2(i)+ yn2(i)*yn2(i)+ zn2(i)*zn2(i)))
651 lb2(i) = -(xn2(i)*sx2(i) + yn2(i)*sy2(i) + zn2(i)*sz2(i))*nn
652 lc2(i) = (xn2(i)*sx1(i) + yn2(i)*sy1(i) + zn2(i)*sz1(i))*nn
654 IF(lb2(i) < -zep01 .OR. lc2(i) < -zep01 .OR.
655 . lb2(i)+lc2(i) > onep01) far(i)=1
665 lb =
min(one,
max(lb2(i),zero))
667 la =
min(one,
max(one-lb2(i)-lc2(i),zero))
674 nx2(i) = xi(i)-(la*x0(i) + lb*x2(i) + lc*x3(i))
675 ny2(i) = yi(i)-(la*y0(i) + lb*y2(i) + lc*y3(i))
676 nz2(i) = zi(i)-(la*z0(i) + lb*z2(i) + lc*z3(i))
677 p2(i) = nx2(i)*nx2(i) + ny2(i)*ny2(i) +nz2(i)*nz2(i)
684 side=sign(one,nx2(i)*xn2(i)+ny2(i)*yn2(i)+nz2(i)*zn2(i))
685 IF((side >= zero .AND. p2(i) < gap2(i)) .OR.
686 . (side < zero .AND. p2(i) < depth2))
THEN
687 crit = abs(third-lb2(i))
688 . + abs(third-lc2(i))
689 . + abs(two_third-lb2
692 crito = abs(third-lbo)
694 . + abs(two_third-lbo-lco)
697 irtlm_l(1,i) = cand_e(is)
698 irtlm_l(2,i) = nint(two*side)
702 ELSEIF(side >= zero .AND. p2(i) <
max(drad2,gapp2(i)))
THEN
703 crit = abs(third-lb2(i))
704 . + abs(third-lc2(i))
705 . + abs(two_third-lb2(i)-lc2(i))
708 crito = abs(third-lbo)
710 . + abs(two_third-lbo-lco)
713 irtlm_l(1,i) = -cand_e
714 irtlm_l(2,i) = nint(two*side)
727 xi0v(i) = x0(i) - xi(i)
728 yi0v(i) = y0(i) - yi(i)
729 zi0v(i) = z0(i) - zi(i)
731 xi1(i) = x3(i) - xi(i)
732 yi1(i) = y3(i) - yi(i)
733 zi1(i) = z3(i) - zi(i)
735 xi2(i) = x4(i) - xi(i)
736 yi2(i) = y4(i) - yi(i)
739 sx1(i) = yi0v(i)*zi1(i) - zi0v(i)*yi1(i)
740 sy1(i) = zi0v(i)*xi1(i) - xi0v(i)*zi1(i)
741 sz1(i) = xi0v(i)*yi1(i) - yi0v(i)*xi1(i)
743 sx2(i) = yi0v(i)*zi2(i) - zi0v(i)*yi2(i)
744 sy2(i) = zi0v(i)*xi2(i) - xi0v(i)*zi2(i)
745 sz2(i) = xi0v(i)*yi2(i) - yi0v(i)*xi2(i)
748 .
max(em30,(xn3(i)*xn3(i)+ yn3(i)*yn3(i)+ zn3(i)*zn3(i)))
749 lb3(i) = -(xn3(i)*sx2(i) + yn3(i)*sy2(i) + zn3(i)*sz2(i))*s2
750 lc3(i) = (xn3(i)*sx1(i) + yn3(i)*sy1(i) + zn3(i)*sz1(i))*s2
758 nx(i) = xi(i)-(x0(i) + lb3(i)*x03(i) + lc3(i)*x04(i))
759 ny(i) = yi(i)-(y0(i) + lb3(i)*y03(i) + lc3(i)*y04(i))
760 nz(i) = zi(i)-(z0(i) + lb3(i)*z03(i) + lc3(i)*z04(i))
761 hh(i) = nx(i)*xn3(i) + ny(i)*yn3(i) +nz(i)*zn3(i)
771 .
max(em30,nnx3(i)*xn3(i)+nny3(i)*yn3(i)+nnz3(i)*zn3(i))
772 x1h(i)=x3(i)+ll*nnx3(i)
773 y1h(i)=y3(i)+ll*nny3(i)
774 z1h(i)=z3(i)+ll*nnz3(i)
777 .
max(em30,nnx4(i)*xn3(i)+nny4(i)*yn3(i)+nnz4(i)*zn3(i))
778 x2h(i)=x4(i)+ll*nnx4(i)
779 y2h(i)=y4(i)+ll*nny4(i)
780 z2h(i)=z4(i)+ll*nnz4(i)
783 .
max(em30,nnx0(i)*xn3(i)+nny0(i)*yn3(i)+nnz0(i)*zn3(i))
784 x0h(i)=x0(i)+ll*nnx0(i)
785 y0h(i)=y0(i)+ll*nny0(i)
786 z0h(i)=z0(i)+ll*nnz0(i)
797 hxi0 = x0h(i) - xi(i)
799 hzi0 = z0h(i) - zi(i)
801 hxi1 = x1h(i) - xi(i)
802 hyi1 = y1h(i) - yi(i)
803 hzi1 = z1h(i) - zi(i)
805 hxi2 = x2h(i) - xi(i)
806 hyi2 = y2h(i) - yi(i)
807 hzi2 = z2h(i) - zi(i)
809 hx01 = x1h(i) - x0h(i)
810 hy01 = y1h(i) - y0h(i)
811 hz01 = z1h(i) - z0h(i)
813 hx02 = x2h(i) - x0h(i)
814 hy02 = y2h(i) - y0h(i)
815 hz02 = z2h(i) - z0h(i)
817 hxn1 = hy01*hz02 - hz01*hy02
818 hyn1 = hz01*hx02 - hx01*hz02
819 hzn1 = hx01*hy02 - hy01*hx02
821 IF(hxn1*xn3(i)+hyn1*yn3(i)+hzn1*zn3(i) <= zero)
THEN
827 hsx1 = hyi0*hzi1 - hzi0*hyi1
828 hsy1 = hzi0*hxi1 - hxi0*hzi1
829 hsz1 = hxi0*hyi1 - hyi0*hxi1
831 hsx2 = hyi0*hzi2 - hzi0*hyi2
832 hsy2 = hzi0*hxi2 - hxi0*hzi2
833 hsz2 = hxi0*hyi2 - hyi0*hxi2
836 .
max(em30,(hxn1*hxn1+ hyn1*hyn1+ hzn1*hzn1))
837 lb3(i) = -(hxn1*hsx2 + hyn1*hsy2 + hzn1*hsz2)*s2
838 lc3(i) = (hxn1*hsx1 + hyn1*hsy1 + hzn1*hsz1)*s2
840 IF(lb3(i) < -zep01 .OR. lc3(i) < -zep01 .OR.
841 . lb3(i)+lc3(i) > onep01) far(i)=1
852 nx(i)=(one-lb3(i)-lc3(i))*nnx0(i)+lb3(i)*nnx3(i)+lc3(i)*nnx4(i)
853 ny(i)=(one-lb3(i)-lc3(i))*nny0(i)+lb3(i)*nny3(i)+lc3(i
854 nz(i)=(one-lb3(i)-lc3(i))*nnz0(i)+lb3(i)*nnz3(i)+lc3(i)*nnz4(i)
857 nn = nx(i)*xn3(i)+ ny(i
863 nn = one/
max(em30,nn)
865 lambda=(xn3(i)*xi0v(i)+yn3(i)*yi0v(i)+zn3(i)*zi0v(i))*nn
866 xp=xi(i)+lambda*nx(i)
867 yp=yi(i)+lambda*ny(i)
868 zp=zi(i)+lambda*nz(i)
882 sx1(i) = yi0v(i)*zi1(i) - zi0v(i)*yi1(i)
883 sy1(i) = zi0v(i)*xi1(i) - xi0v(i)*zi1(i)
884 sz1(i) = xi0v(i)*yi1(i) - yi0v(i)*xi1(i)
886 sx2(i) = yi0v(i)*zi2(i) - zi0v(i)*yi2(i)
887 sy2(i) = zi0v(i)*xi2(i) - xi0v(i)*zi2(i)
888 sz2(i) = xi0v(i)*yi2(i) - yi0v(i)*xi2(i)
891 .
max(em30,(xn3(i)*xn3(i)+ yn3(i)*yn3(i)+ zn3(i)*zn3(i)))
892 lb3(i) = -(xn3(i)*sx2(i) + yn3(i)*sy2(i) + zn3(i)*sz2(i))*nn
893 lc3(i) = (xn3(i)*sx1(i) + yn3(i)*sy1(i) + zn3(i)*sz1(i))*nn
895 IF(lb3(i) < -zep01 .OR. lc3(i) < -zep01 .OR.
896 . lb3(i)+lc3(i) > onep01) far(i)=1
906 lb =
min(one,
max(lb3(i),zero))
907 lc =
min(one,
max(lc3(i),zero))
908 la =
min(one,
max(one-lb3(i)-lc3(i),zero))
910 sl=one/
max(em20,la+lb+lc)
915 nx3(i) = xi(i)-(la*x0(i) + lb*x3(i) + lc*x4(i))
916 ny3(i) = yi(i)-(la*y0(i) + lb*y3(i) + lc*y4(i))
917 nz3(i) = zi(i)-(la*z0(i) + lb*z3(i) + lc*z4(i))
918 p3(i) = nx3(i)*nx3(i) + ny3(i)*ny3(i) +nz3(i)*nz3(i)
925 side=sign(one,nx3(i)*xn3(i)+ny3(i)*yn3(i)+nz3(i)*zn3(i))
926 IF((side >= zero .AND. p3(i) < gap2(i)) .OR.
927 . (side < zero .AND. p3(i) < depth2))
THEN
928 crit = abs(third-lb3(i))
929 . + abs(third-lc3(i))
930 . + abs(two_third-lb3(i)-lc3(i))
933 crito = abs(third-lbo)
935 . + abs(two_third-lbo-lco)
938 irtlm_l(1,i) = cand_e(is)
939 irtlm_l(2,i) = nint(three*side)
943 ELSEIF(side >= zero .AND. p3(i) <
max(drad2,gapp2(i)))
THEN
944 crit = abs(third-lb3(i))
945 . + abs(third-lc3(i))
946 . + abs(two_third-lb3(i)-lc3(i))
949 crito = abs(third-lbo)
951 . + abs(two_third-lbo-lco)
954 irtlm_l(1,i) = -cand_e(is)
955 irtlm_l(2,i) = nint(three*side)
968 xi0v(i) = x0(i) - xi(i)
969 yi0v(i) = y0(i) - yi(i)
970 zi0v(i) = z0(i) - zi(i)
972 xi1(i) = x4(i) - xi(i)
973 yi1(i) = y4(i) - yi(i)
974 zi1(i) = z4(i) - zi(i)
976 xi2(i) = x1(i) - xi(i)
977 yi2(i) = y1(i) - yi(i)
978 zi2(i) = z1(i) - zi(i)
980 sx1(i) = yi0v(i)*zi1(i) - zi0v(i)*yi1(i)
981 sy1(i) = zi0v(i)*xi1(i) - xi0v(i)*zi1(i)
982 sz1(i) = xi0v(i)*yi1(i) - yi0v(i)*xi1(i)
984 sx2(i) = yi0v(i)*zi2(i) - zi0v(i)*yi2(i)
985 sy2(i) = zi0v(i)*xi2(i) - xi0v(i)*zi2(i)
986 sz2(i) = xi0v(i)*yi2(i) - yi0v(i)*xi2(i)
989 .
max(em30,(xn4(i)*xn4(i)+ yn4(i)*yn4(i)+ zn4(i)*zn4(i)))
990 lb4(i) = -(xn4(i)*sx2(i) + yn4(i)*sy2(i) + zn4(i)*sz2(i))*s2
991 lc4(i) = (xn4(i)*sx1(i) + yn4(i)*sy1(i) + zn4(i)*sz1(i))*s2
999 nx(i) = xi(i)-(x0(i) + lb4(i)*x04(i) + lc4(i)*x01(i))
1000 ny(i) = yi(i)-(y0(i) + lb4(i)*y04(i) + lc4(i)*y01(i))
1001 nz(i) = zi(i)-(z0(i) + lb4(i)*z04(i) + lc4(i)*z01(i))
1002 hh(i) = nx(i)*xn4(i) + ny(i)*yn4(i) +nz(i)*zn4(i)
1012 .
max(em30,nnx4(i)*xn4(i)+nny4(i)*yn4(i)+nnz4(i)*zn4(i))
1013 x1h(i)=x4(i)+ll*nnx4(i)
1014 y1h(i)=y4(i)+ll*nny4(i)
1015 z1h(i)=z4(i)+ll*nnz4(i)
1018 .
max(em30,nnx1(i)*xn4(i)+nny1(i)*yn4(i)+nnz1(i)*zn4(i))
1019 x2h(i)=x1(i)+ll*nnx1(i)
1020 y2h(i)=y1(i)+ll*nny1(i)
1021 z2h(i)=z1(i)+ll*nnz1(i)
1024 .
max(em30,nnx0(i)*xn4(i)+nny0(i)*yn4(i)+nnz0(i)*zn4(i))
1025 x0h(i)=x0(i)+ll*nnx0(i)
1026 y0h(i)=y0(i)+ll*nny0(i)
1027 z0h(i)=z0(i)+ll*nnz0(i)
1038 hxi0 = x0h(i) - xi(i)
1039 hyi0 = y0h(i) - yi(i)
1040 hzi0 = z0h(i) - zi(i)
1042 hxi1 = x1h(i) - xi(i)
1043 hyi1 = y1h(i) - yi(i)
1044 hzi1 = z1h(i) - zi(i)
1046 hxi2 = x2h(i) - xi(i)
1047 hyi2 = y2h(i) - yi(i)
1048 hzi2 = z2h(i) - zi(i)
1050 hx01 = x1h(i) - x0h(i)
1051 hy01 = y1h(i) - y0h(i)
1052 hz01 = z1h(i) - z0h(i)
1054 hx02 = x2h(i) - x0h(i)
1055 hy02 = y2h(i) - y0h(i)
1056 hz02 = z2h(i) - z0h(i)
1058 hxn1 = hy01*hz02 - hz01*hy02
1059 hyn1 = hz01*hx02 - hx01*hz02
1060 hzn1 = hx01*hy02 - hy01*hx02
1062 IF(hxn1*xn4(i)+hyn1*yn4(i)+hzn1*zn4(i) <= zero)
THEN
1068 hsx1 = hyi0*hzi1 - hzi0*hyi1
1069 hsy1 = hzi0*hxi1 - hxi0*hzi1
1070 hsz1 = hxi0*hyi1 - hyi0*hxi1
1072 hsx2 = hyi0*hzi2 - hzi0*hyi2
1073 hsy2 = hzi0*hxi2 - hxi0*hzi2
1074 hsz2 = hxi0*hyi2 - hyi0*hxi2
1077 .
max(em30,(hxn1*hxn1+ hyn1*hyn1+ hzn1*hzn1))
1078 lb4(i) = -(hxn1*hsx2 + hyn1*hsy2 + hzn1*hsz2)*s2
1079 lc4(i) = (hxn1*hsx1 + hyn1*hsy1 + hzn1*hsz1)*s2
1081 IF(lb4(i) < -zep01 .OR. lc4(i) < -zep01 .OR.
1082 . lb4(i)+lc4(i) > onep01) far(i)=1
1093 nx(i)=(one-lb4(i)-lc4(i))*nnx0(i)+lb4(i)*nnx4(i)+lc4(i)*nnx1(i)
1094 ny(i)=(one-lb4(i)-lc4(i))*nny0(i)+lb4(i)*nny4(i)+lc4(i)*nny1(i)
1095 nz(i)=(one-lb4(i)-lc4(i))*nnz0(i)+lb4(i)*nnz4(i)+lc4(i)*nnz1(i)
1098 nn = nx(i)*xn4(i)+ ny(i)*yn4(i)+ nz(i)*zn4(i)
1104 nn = one/
max(em30,nn)
1106 lambda=(xn4(i)*xi0v(i)+yn4(i)*yi0v(i)+zn4(i)*zi0v(i))*nn
1107 xp=xi(i)+lambda*nx(i)
1108 yp=yi(i)+lambda*ny(i)
1109 zp=zi(i)+lambda*nz(i)
1111 xi0v(i) = x0(i) - xp
1112 yi0v(i) = y0(i) - yp
1113 zi0v(i) = z0(i) - zp
1123 sx1(i) = yi0v(i)*zi1(i) - zi0v(i)*yi1(i)
1124 sy1(i) = zi0v(i)*xi1(i) - xi0v(i)*zi1(i)
1125 sz1(i) = xi0v(i)*yi1(i) - yi0v(i)*xi1(i)
1127 sx2(i) = yi0v(i)*zi2(i) - zi0v(i)*yi2(i)
1128 sy2(i) = zi0v(i)*xi2(i) - xi0v(i)*zi2(i)
1129 sz2(i) = xi0v(i)*yi2(i) - yi0v(i)*xi2(i)
1132 .
max(em30,(xn4(i)*xn4(i)+ yn4(i)*yn4(i)+ zn4(i)*zn4(i)))
1133 lb4(i) = -(xn4(i)*sx2(i) + yn4(i)*sy2(i) + zn4(i)*sz2(i))*nn
1134 lc4(i) = (xn4(i)*sx1(i) + yn4(i)*sy1(i) + zn4(i)*sz1(i))*nn
1136 IF(lb4(i) < -zep01 .OR. lc4(i) < -zep01 .OR.
1137 . lb4(i)+lc4(i) > onep01) far(i)=1
1148 lb =
min(one,
max(lb4(i),zero))
1149 lc =
min(one,
max(lc4(i),zero))
1150 la =
min(one,
max(one-lb4(i)-lc4(i),zero))
1152 sl=one/
max(em20,la+lb+lc)
1157 nx4(i) = xi(i)-(la*x0(i) + lb*x4(i) + lc*x1(i))
1158 ny4(i) = yi(i)-(la*y0(i) + lb*y4(i) + lc*y1(i))
1159 nz4(i) = zi(i)-(la*z0(i) + lb*z4(i) + lc*z1(i))
1160 p4(i) = nx4(i)*nx4(i) + ny4(i)*ny4(i) +nz4(i)*nz4(i)
1167 side=sign(one,nx4(i)*xn4(i)+ny4(i)*yn4(i)+nz4(i)*zn4(i))
1168 IF((side >= zero .AND. p4(i) < gap2(i)) .OR.
1169 . (side < zero .AND. p4(i) < depth2))
THEN
1170 crit = abs(third-lb4(i))
1171 . + abs(third-lc4(i))
1172 . + abs(two_third-lb4(i)-lc4(i))
1175 crito = abs(third-lbo)
1177 . + abs(two_third-lbo-lco)
1178 IF(crit < crito)
THEN
1180 irtlm_l(1,i) = cand_e(is)
1181 irtlm_l(2,i) = nint(four*side)
1182 csts_l(1,i) = lb4(i)
1183 csts_l(2,i) = lc4(i)
1185 ELSEIF(side >= zero .AND. p4(i) <
max(drad2,gapp2(i)))
THEN
1186 crit = abs(third-lb4(i))
1187 . + abs(third-lc4(i))
1188 . + abs(two_third-lb4(i)-lc4(i))
1191 crito = abs(third-lbo)
1193 . + abs(two_third-lbo-lco)
1194 IF(crit < crito)
THEN
1196 irtlm_l(1,i) = -cand_e(is)
1197 irtlm_l(2,i) = nint(four*side)
1198 csts_l(1,i) = lb4(i)
1199 csts_l(2,i) = lc4(i)
1208 IF(irtlm_l(1,i)/=0)
THEN
1211 crit = abs(third-lb)
1213 . + abs(two_third-lb-lc)
1215#include "lockon.inc"
1216 lbo = csts(1,cand_n(is))
1217 lco = csts(2,cand_n(is))
1218 crito = abs(third-lbo)
1220 . + abs(two_third-lbo-lco)
1221 IF(crit < crito .OR.
1223 . abs(irtlm_l(1,i)) < abs(irtlm(1,cand_n(is))))
THEN
1224 irtlm(1,cand_n(is)) = irtlm_l(1,i)
1225 irtlm(2,cand_n(is)) = irtlm_l(2,i)
1226 csts(1,cand_n(is)) = lb
1227 csts(2,cand_n(is)) = lc
1230#include "lockoff.inc"