38
39
40
41#include "implicit_f.inc"
42#include "comlock.inc"
43
44
45
46#include "mvsiz_p.inc"
47
48
49
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(*)
62
63
64
65
66 INTEGER I, IG, J, IS, L, N, N4N
67 INTEGER NSVG(MVSIZ), FAR(MVSIZ), I4N(MVSIZ),
68 . IRTLM_L(2,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),
75
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)
88 . s2,d1,d2,d3,d4,
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),
102 . gap2(mvsiz), nn,
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)
113
114 DO i=1,jlt
115 is=list(i)
116 nsvg(i)= cand_n(is)
117
118
119 END DO
120
121
122 DO i=1,jlt
123 irtlm_l(1,i)=0
124 irtlm_l(2,i)=0
125 csts_l(1,i) =-one
126 csts_l(2,i) =-one
127 END DO
128
129
130
131 DO i=1,jlt
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))
136 ELSE
137 x0(i) = x3(i)
138 y0(i) = y3(i)
139 z0(i) = z3(i)
140 ENDIF
141 ENDDO
142
143 DO i=1,jlt
144
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))
149 ELSE
150 nnx0(i)=nnx3(i)
151 nny0(i)=nny3(i)
152 nnz0(i)=nnz3(i)
153 ENDIF
154
155 ENDDO
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170 DO i=1,jlt
171
172
173 is=list(i)
174 gap2(i)=gapv(is)*gapv(is)
175 gapp2(i)= (gapv(is)+dgapload)*(gapv(is)+dgapload)
176
177 x01(i) = x1(i) - x0(i)
178 y01(i) = y1(i) - y0(i)
179 z01(i) = z1(i) - z0(i)
180
181 x02(i) = x2(i) - x0(i)
182 y02(i) = y2(i) - y0(i)
183 z02(i) = z2(i) - z0(i)
184
185 x03(i) = x3(i) - x0(i)
186 y03(i) = y3(i) - y0(i)
187 z03(i) = z3(i) - z0(i)
188
189 x04(i) = x4(i) - x0(i)
190 y04(i) = y4(i) - y0(i)
191 z04(i) = z4(i) - z0(i)
192
193 ENDDO
194
195
196 DO i=1,jlt
197
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)
201
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)
205
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)
209
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)
213
214 ENDDO
215
216
217
218 DO i=1,jlt
219
220 xi0v(i) = x0(i) - xi(i)
221 yi0v(i) = y0(i) - yi(i)
222 zi0v(i) = z0(i) - zi(i)
223
224 xi1(i) = x1(i) - xi(i)
225 yi1(i) = y1(i) - yi(i)
226 zi1(i) = z1(i) - zi(i)
227
228 xi2(i) = x2(i) - xi(i)
229 yi2(i) = y2(i) - yi(i)
230 zi2(i) = z2(i) - zi(i)
231
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)
235
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)
239
240 s2 = one/
241 .
max(em30,(xn1(i)*xn1(i)+ yn1(i)*yn1(i)+ zn1(i)*zn1(i)))
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
244
245 ENDDO
246
247 DO i=1,jlt
248
249 nx(i) = xi(i)-(x0(i) + lb1(i)*x01(i) + lc1(i)*x02(i))
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
253
254 ENDDO
255
256
257 DO i=1,jlt
258
259 ll = hh(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)
264
265 ll = hh(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)
270
271 ll = hh(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)
276
277 ENDDO
278
279
280 DO i=1,jlt
281
282 far(i)=0
283
284 hxi0 = x0h(i) - xi(i)
285 hyi0 = y0h(i) - yi(i)
286 hzi0 = z0h(i) - zi(i)
287
288 hxi1 = x1h(i) - xi(i)
289 hyi1 = y1h(i) - yi(i)
290 hzi1 = z1h(i) - zi(i)
291
292 hxi2 = x2h(i) - xi(i)
293 hyi2 = y2h(i) - yi(i)
294 hzi2 = z2h(i) - zi(i)
295
296 hx01 = x1h(i) - x0h(i)
297 hy01 = y1h(i) - y0h(i)
298 hz01 = z1h(i) - z0h(i)
299
300 hx02 = x2h(i) - x0h(i)
301 hy02 = y2h(i) - y0h(i)
302 hz02 = z2h(i) - z0h(i)
303
304 hxn1 = hy01*hz02 - hz01*hy02
305 hyn1 = hz01*hx02 - hx01*hz02
306 hzn1 = hx01*hy02 - hy01*hx02
307
308 IF(hxn1*xn1(i)+hyn1*yn1(i)+hzn1*zn1(i) <= zero) THEN
309
310 far(i)=1
311 cycle
312 END IF
313
314 hsx1 = hyi0*hzi1 - hzi0*hyi1
315 hsy1 = hzi0*hxi1 - hxi0*hzi1
316 hsz1 = hxi0*hyi1 - hyi0*hxi1
317
318 hsx2 = hyi0*hzi2 - hzi0*hyi2
319 hsy2 = hzi0*hxi2 - hxi0*hzi2
320 hsz2 = hxi0*hyi2 - hyi0*hxi2
321
322 s2 = one/
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
326
327 IF(lb1(i) < -zep01 .OR. lc1(i) < -zep01 .OR.
328 . lb1(i)+lc1(i) > onep01) far(i)=1
329 ENDDO
330
331
332 DO i=1,jlt
333
334 IF(far(i)==1)cycle
335
336
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)
340
341
342 nn = nx(i)*xn1(i)+ ny(i)*yn1(i)+ nz(i)*zn1(i)
343 IF(nn <= zero) THEN
344
345 far(i)=1
346 cycle
347 END IF
348 nn = one/
max(em30,nn)
349
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)
354
355 xi0v(i) = x0(i) - xp
356 yi0v(i) = y0(i) - yp
357 zi0v(i) = z0(i) - zp
358
359 xi1(i) = x1(i) - xp
360 yi1(i) = y1(i) - yp
361 zi1(i) = z1(i) - zp
362
363 xi2(i) = x2(i) - xp
364 yi2(i) = y2(i) - yp
365 zi2(i) = z2(i) - zp
366
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)
370
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)
374
375 nn = one/
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
379
380 IF(lb1(i) < -zep01 .OR. lc1(i) < -zep01 .OR.
381 . lb1(i)+lc1(i) > onep01) far(i)=1
382
383 ENDDO
384
385 DO i=1,jlt
386
387 IF(far(i)==1)cycle
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
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))
418
419 sl=one/
max(em20,la+lb+lc)
420 lb = lb*sl
421 lc = lc*sl
422 la = la*sl
423
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)
428
429
430
431
432
433
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))
440 lbo = csts_l(1,i)
441 lco = csts_l(2,i)
442 crito = abs(third-lbo)
443 . + abs(third-lco)
444 . + abs(two_third-lbo-lco)
445 IF(crit < crito)THEN
446 is=list(i)
447 irtlm_l(1,i) = cand_e(is)
448 irtlm_l(2,i) = nint(side)
449 csts_l(1,i) = lb1(i)
450 csts_l(2,i) = lc1(i)
451 END IF
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))
456 lbo = csts_l(1,i)
457 lco = csts_l(2,i)
458 crito = abs(third-lbo)
459 . + abs(third-lco)
460 . + abs(two_third-lbo-lco)
461 IF(crit < crito)THEN
462 is=list(i)
463 irtlm_l(1,i) = -cand_e(is)
464 irtlm_l(2,i) = nint(side)
465 csts_l(1,i) = lb1(i)
466 csts_l(2,i) = lc1(i)
467 END IF
468 END IF
469
470 ENDDO
471
472 n4n=0
473 DO i=1,jlt
474 IF(ix3(i)/=ix4(i))THEN
475 n4n = n4n+1
476 i4n(n4n)=i
477 ELSE
478 ENDIF
479 ENDDO
480
481
482 DO n=1,n4n
483
484 i=i4n(n)
485
486 xi0v(i) = x0(i) - xi(i)
487 yi0v(i) = y0(i) - yi(i)
488 zi0v(i) = z0(i) - zi(i)
489
490 xi1(i) = x2(i) - xi(i)
491 yi1(i) = y2(i) - yi(i)
492 zi1(i) = z2(i) - zi(i)
493
494 xi2(i) = x3(i) - xi(i)
495 yi2(i) = y3(i) - yi(i)
496 zi2(i) = z3(i) - zi(i)
497
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)
501
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)
505
506 s2 = one/
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
510
511 ENDDO
512
513 DO n=1,n4n
514
515 i=i4n(n)
516
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)
521
522 ENDDO
523
524
525 DO n=1,n4n
526
527 i=i4n(n)
528
529 ll = hh(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)
534
535 ll = hh(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)
540
541 ll = hh(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)
546
547 ENDDO
548
549
550 DO n=1,n4n
551
552 i=i4n(n)
553
554 far(i)=0
555
556 hxi0 = x0h(i) - xi(i)
557 hyi0 = y0h(i) - yi(i)
558 hzi0 = z0h(i) - zi(i)
559
560 hxi1 = x1h(i) - xi(i)
561 hyi1 = y1h(i) - yi(i)
562 hzi1 = z1h(i) - zi(i)
563
564 hxi2 = x2h(i) - xi(i)
565 hyi2 = y2h(i) - yi(i)
566 hzi2 = z2h(i) - zi(i)
567
568 hx01 = x1h(i) - x0h(i)
569 hy01 = y1h(i) - y0h(i)
570 hz01 = z1h(i) - z0h(i)
571
572 hx02 = x2h(i) - x0h(i)
573 hy02 = y2h(i) - y0h(i)
574 hz02 = z2h(i) - z0h(i)
575
576 hxn1 = hy01*hz02 - hz01*hy02
577 hyn1 = hz01*hx02 - hx01*hz02
578 hzn1 = hx01*hy02 - hy01*hx02
579
580 IF(hxn1*xn2(i)+hyn1*yn2(i)+hzn1*zn2(i) <= zero) THEN
581
582 far(i)=1
583 cycle
584 END IF
585
586 hsx1 = hyi0*hzi1 - hzi0*hyi1
587 hsy1 = hzi0*hxi1 - hxi0*hzi1
588 hsz1 = hxi0*hyi1 - hyi0*hxi1
589
590 hsx2 = hyi0*hzi2 - hzi0*hyi2
591 hsy2 = hzi0*hxi2 - hxi0*hzi2
592 hsz2 = hxi0*hyi2 - hyi0*hxi2
593
594 s2 = one/
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
598
599 IF(lb2(i) < -zep01 .OR. lc2(i) < -zep01 .OR.
600 . lb2(i)+lc2(i) > onep01) far(i)=1
601 ENDDO
602
603
604 DO n=1,n4n
605
606 i=i4n(n)
607
608 IF(far(i)==1)cycle
609
610
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)
614
615
616 nn = nx(i)*xn2(i)+ ny(i)*yn2(i)+ nz(i)*zn2(i)
617 IF(nn <= zero) THEN
618
619 far(i)=1
620 cycle
621 END IF
622 nn = one/
max(em30,nn)
623
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)
628
629 xi0v(i) = x0(i) - xp
630 yi0v(i) = y0(i) - yp
631 zi0v(i) = z0(i) - zp
632
633 xi1(i) = x2(i) - xp
634 yi1(i) = y2(i) - yp
635 zi1(i) = z2(i) - zp
636
637 xi2(i) = x3(i) - xp
638 yi2(i) = y3(i) - yp
639 zi2(i) = z3(i) - zp
640
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)
644
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)
648
649 nn = one/
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
653
654 IF(lb2(i) < -zep01 .OR. lc2(i) < -zep01 .OR.
655 . lb2(i)+lc2(i) > onep01) far(i)=1
656
657 ENDDO
658
659 DO n=1,n4n
660
661 i=i4n(n)
662
663 IF(far(i)==1)cycle
664
665 lb =
min(one,
max(lb2(i),zero))
666 lc =
min(one,
max(lc2(i),zero))
667 la =
min(one,
max(one-lb2(i)-lc2(i),zero))
668
669 sl=one/
max(em20,la+lb+lc)
670 lb = lb*sl
671 lc = lc*sl
672 la = la*sl
673
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)
678
679
680
681
682
683
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(i)-lc2(i))
690 lbo = csts_l(1,i)
691 lco = csts_l(2,i)
692 crito = abs(third-lbo)
693 . + abs(third-lco)
694 . + abs(two_third-lbo-lco)
695 IF(crit < crito)THEN
696 is=list(i)
697 irtlm_l(1,i) = cand_e(is)
698 irtlm_l(2,i) = nint(two*side)
699 csts_l(1,i) = lb2(i)
700 csts_l(2,i) = lc2(i)
701 END IF
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))
706 lbo = csts_l(1,i)
707 lco = csts_l(2,i)
708 crito = abs(third-lbo)
709 . + abs(third-lco)
710 . + abs(two_third-lbo-lco)
711 IF(crit < crito)THEN
712 is=list(i)
713 irtlm_l(1,i) = -cand_e(is)
714 irtlm_l(2,i) = nint(two*side)
715 csts_l(1,i) = lb2(i)
716 csts_l(2,i) = lc2(i)
717 END IF
718 END IF
719
720 ENDDO
721
722
723 DO n=1,n4n
724
725 i=i4n(n)
726
727 xi0v(i) = x0(i) - xi(i)
728 yi0v(i) = y0(i) - yi(i)
729 zi0v(i) = z0(i) - zi(i)
730
731 xi1(i) = x3(i) - xi(i)
732 yi1(i) = y3(i) - yi(i)
733 zi1(i) = z3(i) - zi(i)
734
735 xi2(i) = x4(i) - xi(i)
736 yi2(i) = y4(i) - yi(i)
737 zi2(i) = z4(i) - zi(i)
738
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)
742
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)
746
747 s2 = one/
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
751
752 ENDDO
753
754 DO n=1,n4n
755
756 i=i4n(n)
757
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)
762
763 ENDDO
764
765
766 DO n=1,n4n
767
768 i=i4n(n)
769
770 ll = hh(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)
775
776 ll = hh(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)
781
782 ll = hh(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)
787
788 ENDDO
789
790
791 DO n=1,n4n
792
793 i=i4n(n)
794
795 far(i)=0
796
797 hxi0 = x0h(i) - xi(i)
798 hyi0 = y0h(i) - yi(i)
799 hzi0 = z0h(i) - zi(i)
800
801 hxi1 = x1h(i) - xi(i)
802 hyi1 = y1h(i) - yi(i)
803 hzi1 = z1h(i) - zi(i)
804
805 hxi2 = x2h(i) - xi(i)
806 hyi2 = y2h(i) - yi(i)
807 hzi2 = z2h(i) - zi(i)
808
809 hx01 = x1h(i) - x0h(i)
810 hy01 = y1h(i) - y0h(i)
811 hz01 = z1h(i) - z0h(i)
812
813 hx02 = x2h(i) - x0h(i)
814 hy02 = y2h(i) - y0h(i)
815 hz02 = z2h(i
816
817 hxn1 = hy01*hz02 - hz01*hy02
818 hyn1 = hz01*hx02 - hx01*hz02
819 hzn1 = hx01*hy02 - hy01*hx02
820
821 IF(hxn1*xn3(i)+hyn1*yn3(i)+hzn1*zn3(i) <= zero) THEN
822
823 far(i)=1
824 cycle
825 END IF
826
827 hsx1 = hyi0*hzi1 - hzi0*hyi1
828 hsy1 = hzi0*hxi1 - hxi0*hzi1
829 hsz1 = hxi0*hyi1 - hyi0*hxi1
830
831 hsx2 = hyi0*hzi2 - hzi0*hyi2
832 hsy2 = hzi0*hxi2 - hxi0*hzi2
833 hsz2 = hxi0*hyi2 - hyi0*hxi2
834
835 s2 = one/
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
839
840 IF(lb3(i) < -zep01 .OR. lc3(i) < -zep01 .OR.
841 . lb3(i)+lc3(i) > onep01) far(i)=1
842 ENDDO
843
844
845 DO n=1,n4n
846
847 i=i4n(n)
848
849 IF(far(i)==1)cycle
850
851
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)*nny4(i)
854 nz(i)=(one-lb3(i)-lc3(i))*nnz0(i)+lb3(i)*nnz3(i)+lc3(i)*nnz4(i)
855
856
857 nn = nx(i)*xn3(i)+ ny(i)*yn3(i)+ nz(i)*zn3(i)
858 IF(nn <= zero) THEN
859
860 far(i)=1
861 cycle
862 END IF
863 nn = one/
max(em30,nn)
864
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)
869
870 xi0v(i) = x0(i) - xp
871 yi0v(i) = y0(i) - yp
872 zi0v(i) = z0(i) - zp
873
874 xi1(i) = x3(i) - xp
875 yi1(i) = y3(i) - yp
876 zi1(i) = z3(i) - zp
877
878 xi2(i) = x4(i) - xp
879 yi2(i) = y4(i) - yp
880 zi2(i) = z4(i) - zp
881
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)
885
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)
889
890 nn = one/
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
894
895 IF(lb3(i) < -zep01 .OR. lc3(i) < -zep01 .OR.
896 . lb3(i)+lc3(i) > onep01) far(i)=1
897
898 ENDDO
899
900 DO n=1,n4n
901
902 i=i4n(n)
903
904 IF(far(i)==1)cycle
905
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))
909
910 sl=one/
max(em20,la+lb+lc)
911 lb = lb*sl
912 lc = lc*sl
913 la = la*sl
914
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)
919
920
921
922
923
924
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))
931 lbo = csts_l(1,i)
932 lco = csts_l(2,i)
933 crito = abs(third-lbo)
934 . + abs(third-lco)
935 . + abs(two_third-lbo-lco)
936 IF(crit < crito)THEN
937 is=list(i)
938 irtlm_l(1,i) = cand_e(is)
939 irtlm_l(2,i) = nint(three*side)
940 csts_l(1,i) = lb3(i)
941 csts_l(2,i) = lc3(i)
942 END IF
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))
947 lbo = csts_l(1,i)
948 lco = csts_l(2,i)
949 crito = abs(third-lbo)
950 . + abs(third-lco)
951 . + abs(two_third-lbo-lco)
952 IF(crit < crito)THEN
953 is=list(i)
954 irtlm_l(1,i) = -cand_e(is)
955 irtlm_l(2,i) = nint(three*side)
956 csts_l(1,i) = lb3(i)
957 csts_l(2,i) = lc3(i)
958 END IF
959 END IF
960
961 END DO
962
963
964 DO n=1,n4n
965
966 i=i4n(n)
967
968 xi0v(i) = x0(i) - xi(i)
969 yi0v(i) = y0(i) - yi(i)
970 zi0v(i) = z0(i) - zi(i)
971
972 xi1(i) = x4(i) - xi(i)
973 yi1(i) = y4(i) - yi(i)
974 zi1(i) = z4(i) - zi(i)
975
976 xi2(i) = x1(i) - xi(i)
977 yi2(i) = y1(i) - yi(i)
978 zi2(i) = z1(i) - zi(i)
979
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)
983
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)
987
988 s2 = one/
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
992
993 ENDDO
994
995 DO n=1,n4n
996
997 i=i4n(n)
998
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)
1003
1004 ENDDO
1005
1006
1007 DO n=1,n4n
1008
1009 i=i4n(n)
1010
1011 ll = hh(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)
1016
1017 ll = hh(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)
1022
1023 ll = hh(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)
1028
1029 ENDDO
1030
1031
1032 DO n=1,n4n
1033
1034 i=i4n(n)
1035
1036 far(i)=0
1037
1038 hxi0 = x0h(i) - xi(i)
1039 hyi0 = y0h(i) - yi(i)
1040 hzi0 = z0h(i) - zi(i)
1041
1042 hxi1 = x1h(i) - xi(i)
1043 hyi1 = y1h(i) - yi(i)
1044 hzi1 = z1h(i) - zi(i)
1045
1046 hxi2 = x2h(i) - xi(i)
1047 hyi2 = y2h(i) - yi(i)
1048 hzi2 = z2h(i) - zi(i)
1049
1050 hx01 = x1h(i) - x0h(i)
1051 hy01 = y1h(i) - y0h(i)
1052 hz01 = z1h(i) - z0h(i)
1053
1054 hx02 = x2h(i) - x0h(i)
1055 hy02 = y2h(i) - y0h(i)
1056 hz02 = z2h(i) - z0h(i)
1057
1058 hxn1 = hy01*hz02 - hz01*hy02
1059 hyn1 = hz01*hx02 - hx01*hz02
1060 hzn1 = hx01*hy02 - hy01*hx02
1061
1062 IF(hxn1*xn4(i)+hyn1*yn4(i)+hzn1*zn4(i) <= zero) THEN
1063
1064 far(i)=1
1065 cycle
1066 END IF
1067
1068 hsx1 = hyi0*hzi1 - hzi0*hyi1
1069 hsy1 = hzi0*hxi1 - hxi0*hzi1
1070 hsz1 = hxi0*hyi1 - hyi0*hxi1
1071
1072 hsx2 = hyi0*hzi2 - hzi0*hyi2
1073 hsy2 = hzi0*hxi2 - hxi0*hzi2
1074 hsz2 = hxi0*hyi2 - hyi0*hxi2
1075
1076 s2 = one/
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
1080
1081 IF(lb4(i) < -zep01 .OR. lc4(i) < -zep01 .OR.
1082 . lb4(i)+lc4(i) > onep01) far(i)=1
1083 ENDDO
1084
1085
1086 DO n=1,n4n
1087
1088 i=i4n(n)
1089
1090 IF(far(i)==1)cycle
1091
1092
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)
1096
1097
1098 nn = nx(i)*xn4(i)+ ny(i)*yn4(i)+ nz(i)*zn4(i)
1099 IF(nn <= zero) THEN
1100
1101 far(i)=1
1102 cycle
1103 END IF
1104 nn = one/
max(em30,nn)
1105
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)
1110
1111 xi0v(i) = x0(i) - xp
1112 yi0v(i) = y0(i) - yp
1113 zi0v(i) = z0(i) - zp
1114
1115 xi1(i) = x4(i) - xp
1116 yi1(i) = y4(i) - yp
1117 zi1(i) = z4(i) - zp
1118
1119 xi2(i) = x1(i) - xp
1120 yi2(i) = y1(i) - yp
1121 zi2(i) = z1(i) - zp
1122
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)
1126
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)
1130
1131 nn = one/
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
1135
1136 IF(lb4(i) < -zep01 .OR. lc4(i) < -zep01 .OR.
1137 . lb4(i)+lc4(i) > onep01) far(i)=1
1138
1139 ENDDO
1140
1141
1142 DO n=1,n4n
1143
1144 i=i4n(n)
1145
1146 IF(far(i)==1)cycle
1147
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))
1151
1152 sl=one/
max(em20,la+lb+lc)
1153 lb = lb*sl
1154 lc = lc*sl
1155 la = la*sl
1156
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)
1161
1162
1163
1164
1165
1166
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))
1173 lbo = csts_l(1,i)
1174 lco = csts_l(2,i)
1175 crito = abs(third-lbo)
1176 . + abs(third-lco)
1177 . + abs(two_third-lbo-lco)
1178 IF(crit < crito)THEN
1179 is=list(i)
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)
1184 END IF
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))
1189 lbo = csts_l(1,i)
1190 lco = csts_l(2,i)
1191 crito = abs(third-lbo)
1192 . + abs(third-lco)
1193 . + abs(two_third-lbo-lco)
1194 IF(crit < crito)THEN
1195 is=list(i)
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)
1200 END IF
1201 END IF
1202
1203 ENDDO
1204
1205
1206
1207 DO i=1,jlt
1208 IF(irtlm_l(1,i)/=0)THEN
1209 lb=csts_l(1,i)
1210 lc=csts_l(2,i)
1211 crit = abs(third-lb)
1212 . + abs(third-lc)
1213 . + abs(two_third-lb-lc)
1214 is=list(i)
1215#include "lockon.inc"
1216 lbo = csts(1,cand_n(is))
1217 lco = csts(2,cand_n(is))
1218 crito = abs(third-lbo)
1219 . + abs(third-lco)
1220 . + abs(two_third-lbo-lco)
1221 IF(crit < crito .OR.
1222 . crit==crito.AND.
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
1228 END IF
1229
1230#include "lockoff.inc"
1231 END IF
1232
1233 ENDDO
1234
1235 RETURN