43
45
46
47
48
49#include "implicit_f.inc"
50
51
52
53#include "mvsiz_p.inc"
54
55
56
57#include "scr05_c.inc"
58
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(*),IRTLM(4,*)
64 INTEGER IX1(MVSIZ),IX2(MVSIZ),IX3(MVSIZ),IX4(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)
74
75
76
77 INTEGER I, J, K, L, N, IT, N4N, MGLOB, 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)
82 . aaa,bb(mvsiz,4)
84 . xij(mvsiz,4), xi0v(mvsiz),
85 . yij(mvsiz,4), yi0v(mvsiz),
86 . zij(mvsiz,4), zi0v(mvsiz),
87 . dx, dy, dz, dd(mvsiz,4),
88 . xp, yp, zp,
89 . gap_mm(mvsiz), gapv(mvsiz,4), gap2,
norm
91 . pene,
92 . sx1,sx2,sx3,sx4,
93 . sy1,sy2,sy3,sy4,
94 . sz1,sz2,sz3,sz4,
95 . x0n(mvsiz,4), y0n(mvsiz,4), z0n(mvsiz,4),
96 . xn(mvsiz,4),yn(mvsiz,4),zn(mvsiz,4),
97 . side(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),
103 . al(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/
109
110 nindx=0
111 DO i=1,jlt
112 l = cand_e(i)
113 etyp(i) =msegtyp(l)
114 IF(etyp(i)==0)THEN
115
116
117 nindx=nindx+1
118 indx(nindx)=i
119 ELSEIF((etyp(i) /= 0 .AND. iabs(etyp(i)) <= nrtm) .OR. etyp(i) > nrtm)THEN
120
121
122 nindx=nindx+1
123 indx(nindx)=i
124 END IF
125 END DO
126
127 IF (iresp==1.AND.penmin<=em06) penmin = two*em06
128
129 far(1:jlt,1:4) = 0
130 dd(1:jlt,1:4) = ep20
131 dist(1:jlt) = ep20
132 ld(1:jlt) = ep20
133
134 DO k=1,nindx
135 i=indx(k)
136
137 pent(i,1:4)=zero
138
139 xx(i,1) = x1(i)
140 yy(i,1) = y1(i)
141 zz(i,1) = z1(i)
142
143 xx(i,2) = x2(i)
144 yy(i,2) = y2(i)
145 zz(i,2) = z2(i)
146
147 xx(i,3) = x3(i)
148 yy(i,3) = y3(i)
149 zz(i,3) = z3(i)
150
151 xx(i,4) = x4(i)
152 yy(i,4) = y4(i)
153 zz(i,4) = z4(i)
154
155 xx(i,5) = x0(i)
156 yy(i,5) = y0(i)
157 zz(i,5) = z0(i)
158
159 ENDDO
160
161 DO k=1,nindx
162 i=indx(k)
163
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)
167
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)
171
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)
175
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)
179
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))
182 ELSE
183 gap_mm(i)=gap_nm(3,i)
184 END IF
185
186 ENDDO
187
188 DO k=1,nindx
189 i=indx(k)
190
191 xi0v(i) = xx(i,5) - xi(i)
192 yi0v(i) = yy(i,5) - yi(i)
193 zi0v(i) = zz(i,5) - zi(i)
194
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)
198
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)
202
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)
206
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)
210
211 sx1 = yi0v(i)*zij(i,1) - zi0v(i)*yij(i,1)
212 sy1 = zi0v(i)*xij(i,1) - xi0v(i)*zij(i,1)
213 sz1 = xi0v(i)*yij(i,1) - yi0v(i)*xij(i,1)
214
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)
218
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)
222 nn = one/
223 .
max(em30,sqrt(xn(i,1)*xn(i
224 xn(i,1)=xn(i,1)*nn
225 yn(i,1)=yn(i,1)*nn
226 zn(i,1)=zn(i,1)*nn
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
229
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)
233
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)
237 nn = one/
238 .
max(em30,sqrt(xn(i,2)*xn(i,2)+ yn(i,2)*yn(i,2)+ zn(i,2)*zn(i,2)))
239 xn(i,2)=xn(i,2)*nn
240 yn(i,2)=yn(i,2)*nn
241 zn(i,2)=zn(i,2)*nn
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
244
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)
248
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)
252 nn = one/
253 .
max(em30,sqrt(xn(i,3)*xn(i,3)+ yn(i,3)*yn(i,3)+ zn(i,3)*zn(i,3)))
254 xn(i,3)=xn(i,3)*nn
255 yn(i,3)=yn(i,3)*nn
256 zn(i,3)=zn(i,3)*nn
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
259
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)
263 nn = one/
264 .
max(em30,sqrt(xn(i,4)*xn(i,4)+ yn(i,4)*yn(i,4)+ zn(i,4)*zn(i,4)))
265 xn(i,4)=xn(i,4)*nn
266 yn(i,4)=yn(i,4)*nn
267 zn(i,4)=zn(i,4)*nn
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
270
271 END DO
272
273 DO k=1,nindx
274 i=indx(k)
275
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,2)*x0n(i,2)+y0n(i,2)*y0n(i,2)+z0n(i,2)*z0n(i,2))
282 hlc(i,2) = lc(i,2)*abs(lc(i,2))*aaa
283 hlb(i,1) = lb(i,1)*abs(lb(i,1))*aaa
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)))
296
297 END DO
298
299 it=1
300 i1=itria(1,it)
301 i2=itria(2,it)
302 DO k=1,nindx
303 i=indx(k)
304
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)
308
309 lbp(i,it) = lb(i,it)
310 lcp(i,it) = lc(i,it)
311 lap = one-lbp(i,it)-lcp(i,it)
312
313 aaa = one /
max(em20,x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i))
314 hla= lap*abs(lap) * aaa
315 IF(lap<zero.AND.
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
322 lbp(i,it) = zero
323 lcp(i,it) = al(i,i2)
324 ELSEIF(lcp(i,it)<zero.AND.
325 + hlc(i,it)<=hla.AND.hlc(i,it)<=hlb(i,it))THEN
326 lcp(i,it) = zero
327 lbp(i,it) = al(i,i1)
328 ENDIF
329
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)
334 dx =xi(i)-xp
335 dy =yi(i)-yp
336 dz =zi(i)-zp
337 dd(i,it)=dx*dx+dy*dy+dz*dz
338
339 END DO
340
341 DO k=1,nindx
342 i=indx(k)
343
344 lap = one-lbp(i,it)-lcp(i,it)
345
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))
347 gap2 = gapv(i,it)**2
348
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))
350
351 IF(etyp(i)==0)THEN
352 IF(bb(i,it) > zero)THEN
353 pent(i,it)=gapv(i,it)+bb(i,it)
354 ELSE
355 pent(i,it)=zero
356 END IF
357 ELSEIF(etyp(i) > nrtm)THEN
358 IF(bb(i,it) > zero)THEN
359 pent(i,it)=gapv(i,it)+bb(i,it)
360 ELSE
361 pent(i,it)=
max(zero,gapv(i,it)-sqrt(dd(i,it)))
362 END IF
363 ELSE
364 IF(bb(i,it) > zero)THEN
365
366
367 pent(i,it)=zero
368 ELSE
369 pent(i,it)=
max(zero,gapv(i,it)-sqrt(dd(i,it)))
370 END IF
371 END IF
372
373 ENDDO
374
375 n4n=0
376 DO k=1,nindx
377 i=indx(k)
378
379 IF(ix3(i)/=ix4(i))THEN
380 n4n = n4n+1
381 i4n(n4n)=i
382 ENDIF
383 ENDDO
384
385 DO it=2,4
386
387 i1=itria(1,it)
388 i2=itria(2,it)
389
390 DO k=1,n4n
391 i=i4n(k)
392
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)
396
397 lbp(i,it) = lb(i,it)
398 lcp(i,it) = lc(i,it)
399 lap = one-lbp(i,it)-lcp(i,it)
400
401 aaa = one /
max(em20,x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i))
402 hla= lap*abs(lap) * aaa
403 IF(lap<zero.AND.
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
410 lbp(i,it) = zero
411 lcp(i,it) = al(i,i2)
412 ELSEIF(lcp(i,it)<zero.AND.
413 + hlc(i,it)<=hla.AND.hlc(i,it)<=hlb(i,it))THEN
414 lcp(i,it) = zero
415 lbp(i,it) = al(i,i1)
416 ENDIF
417
418 lap = one-lbp(i,it)-lcp(i,it)
419 xp =lap*xx(i,5)+lbp(i,it)*xx(i,i1) + lcp(i,it)*xx(i,i2)
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)
422 dx =xi(i)-xp
423 dy =yi(i)-yp
424 dz =zi(i)-zp
425 dd(i,it)=dx*dx+dy*dy+dz*dz
426
427 END DO
428
429 DO k=1,n4n
430 i=i4n(k)
431
432 lap = one-lbp(i,it)-lcp(i,it)
433
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))
435 gap2 = gapv(i,it)**2
436
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))
438
439 l = cand_e(i)
440 IF(etyp(i)==0)THEN
441 IF(bb(i,it) > zero)THEN
442 pent(i,it)=gapv(i,it)+bb(i,it)
443 ELSE
444 pent(i,it)=zero
445 END IF
446 ELSEIF(etyp(i) > nrtm)THEN
447 IF(bb(i,it) > zero)THEN
448 pent(i,it)=gapv(i,it)+bb(i,it)
449 ELSE
450 pent(i,it)=
max(zero,gapv(i,it)-sqrt(dd(i,it)))
451 END IF
452 ELSE
453 IF(bb(i,it) > zero)THEN
454
455
456 pent(i,it)=zero
457 ELSE
458 pent(i,it)=
max(zero,gapv(i,it)-sqrt(dd(i,it)))
459 END IF
460 END IF
461
462 ENDDO
463 END DO
464
465 DO k=1,nindx
466 i=indx(k)
467
468
469 subtria(i)=0
470
471 IF(ix3(i)/=ix4(i))THEN
472 dmin=
min(dd(i,1),dd(i,2),dd(i,3),dd(i,4))
473 DO jj=1,4
474 IF(dd(i,jj) <= onep03*dmin)THEN
475 lbx = lb(i,jj)
476 lcx = lc(i,jj)
477 lax = one-lb(i,jj)-lc(i,jj)
478
479
480 IF(lbx >= zero .AND. lcx >= zero)THEN
481 lx=zero
482 ELSE
483 lx=
max(zero,dd(i,jj)-bb(i,jj)*bb(i,jj))
484 END IF
485
486 IF(lx < ld(i)) THEN
487 subtria(i)= jj
488 dist(i) = dd(i,jj)
489 ld(i)=lx
490 END IF
491
492 END IF
493 END DO
494 ELSE
495 IF(dd(i,1) <= dist(i))THEN
496 subtria(i)= 1
497 dist(i) = dd(i,1)
498 END IF
499 END IF
500
501 it = subtria(i)
502 DO j=1,4
503 IF(j /= it) pent(i,j)=zero
504 END DO
505
506 END DO
507
508
509
510 DO k=1,nindx
511 i=indx(k)
512
513 it=subtria(i)
514
515
516 i1=itria(1,it)
517 i2=itria(2,it)
518
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)
522
523
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
526
527 IF(ix3(i) /= ix4(i))THEN
528
529 ib1=ibound(i1,i)
530 ib2=ibound(i2,i)
531 IF(mvoisn(i,it)==0)THEN
532
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
536
537 ELSEIF((ib1 /= 0 .AND. ib2 == 0).OR.
538 . (ib2 /= 0 .AND. ib1 == 0))THEN
539
541 IF(ib1/=0)THEN
542 ix =i1
543 ELSEIF(ib2/=0)THEN
544 ix =i2
545 END IF
546
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
560 ELSE
561 vx = x0n(i,ix) ! fake bisector of angle at vertex ix
562 vy = y0n(i,ix)
563 vz = z0n(i,ix)
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
567 END IF
568
569 END IF
570
571 IF(far(i,it)==1 .OR. bb(i,it) <= zero)THEN
572
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)
576
577
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
582
583 ll = xij(i,i1)*xij(i,i1)+yij(i,i1)*yij(i,i1)+zij(i,i1)*zij(i,i1)
584
585 side(i,it)=-(xij(i,i1)*px+yij(i,i1)*py+zij(i,i1)*pz)*sqrt(one/
max(em30,ll*pp))
586
587
588 IF(side(i,it) < -zep01) far(i,it) =2
589
590 END IF
591
592 ELSE
593
594 ib1=ibound(1,i)
595 ib2=ibound(2,i)
596 ib3=ibound(3,i)
597
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)
607
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
611
612 far(i,it)=2
613
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
617
619 IF(ib1/=0)THEN
620 ix =1
621 iy =2
622 iz =3
623 ELSEIF(ib2/=0)THEN
624 ix =2
625 iy =3
626 iz =1
627 ELSEIF(ib3/=0)THEN
628 ix =3
629 iy =1
630 iz =2
631 END IF
632
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
646 ELSE
647 vx = two*xx(i,ix)-(xx(i,iy)+xx(i,iz))
648 vy = two*yy(i,ix)-(yy(i,iy)+yy(i,iz))
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
653 END IF
654
655 END IF
656
657 IF(far(i,it)==1 .OR. bb(i,it) <= zero)THEN
658
659 IF(mvoisn(i,1) /= 0)THEN
660
661
662
663
664
665
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)
669
670
671 px = z12(i)*nny(i,1)-y12(i)*nnz(i,1)
672 py = x12(i)*nnz(i,1)-z12(i)*nnx(i,1)
673 pz = y12(i)*nnx(i,1)-x12(i)*nny(i,1)
674 pp = px*px+py*py+pz*pz
675
676 ll = xij(i,1)*xij(i,1)+yij(i,1)*yij(i,1)+zij(i,1)*zij(i,1)
677
678 side(i,1)=-(xij(i,1)*px+yij(i,1)*py+zij(i,1)*pz)*sqrt(one/
max(em30,ll*pp))
679 IF(side(i,1) < -zep01) far(i,it) =2
680
681 END IF
682
683 IF(mvoisn(i,2) /= 0)THEN
684
685
686
687
688
689
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)
693
694
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
699
700 ll = xij(i,2)*xij(i,2)+yij(i,2)*yij(i,2)+zij(i,2)*zij(i,2)
701
702 side(i,2)=-(xij(i,2)*px+yij(i,2)*py+zij
703 IF(side(i,2) < -zep01) far(i,it) =2
704
705 END IF
706
707 IF(mvoisn(i,4) /= 0)THEN
708
709
710
711
712
713
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)
717
718
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
723
724 ll = xij(i,3)*xij(i,3)+yij(i,3)*yij(i,3)+zij(i,3)*zij(i,3)
725
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
728
729 END IF
730 END IF
731
732 END IF
733 IF(far(i,it)==2) pent(i,it)=zero
734
735
736
737
738
739
740
741
742 ENDDO
743
744
745
746 nbord=0
747 DO k=1,nindx
748 i=indx(k)
749
750 it=subtria(i)
751 i1=itria(1,it)
752 i2=itria(2,it)
753
754 nn1(i) = zero
755 nn2(i) = zero
756 nn3(i) = zero
757
758 IF(pent(i,it)==zero) THEN
759 cycle
760 ENDIF
761
762 IF(ix3(i) /= ix4(i))THEN
763
764 ib1=ibound(i1,i)
765 ib2=ibound(i2,i)
766
767 IF(mvoisn(i,it)==0)THEN
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782 nn1(i)=nnx(i,it)
783 nn2(i)=nny(i,it)
784 nn3(i)=nnz(i,it)
785 nne(i)= (xh(i)-xx(i,i1))*nn1(i)+ (yh(i)-yy(i,i1))*nn2(i)+ (zh(i)-zz(i,i1))*nn3(i)
786
787 nbord=nbord+1
788 kbord(nbord)=i
789
790 ELSEIF((ib1/=0.AND.ib2==0).OR.
791 . (ib2/=0.AND.ib1==0))THEN
792
794 IF(ib1/=0)THEN
795 ix =i1
796 ELSEIF(ib2/=0)THEN
797 ix =i2
798 END IF
799
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)
806
807 IF(p1 < gaps(i) .AND. p2 < gaps(i))THEN
808
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)
812
813 nn=sqrt(nn1(i)*nn1(i)+nn2(i)*nn2(i)+nn3(i)*nn3(i))
814 nn = one/
max(em30,nn)
815 nn1(i)=nn1(i)*nn
816 nn2(i)=nn2(i)*nn
817 nn3(i)=nn3(i)*nn
818
819 nne(i)= (xh(i)-xx(i,ix))*nn1(i)+ (yh(i)-yy(i,ix))*nn2(i)+ (zh(i)-zz(i,ix))*nn3(i)
820
821 nbord=nbord+1
822 kbord(nbord)=i
823
824 ELSEIF(p1 < gaps(i))THEN
825
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(i)
830
831 nbord=nbord+1
832 kbord(nbord)=i
833
834 ELSEIF(p2 < gaps(i))THEN
835
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)
840
841 nbord=nbord+1
842 kbord(nbord)=i
843
844 ELSE
845
846
847
848
849 END IF
850
851 END IF
852
853 ELSE
854
855 ib1=ibound(1,i)
856 ib2=ibound(2,i)
857 ib3=ibound(3,i)
858
859
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)
863
864 IF(mvoisn(i,1)==0.OR.
865 . mvoisn(i,2)==0.OR.
866 . mvoisn(i,4)==0)THEN
867
868 nne(i)=gaps(i)
869 IF(mvoisn(i,1)==0)THEN
870
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)
872
873 IF(nn < nne(i)) THEN
874 nne(i)=nn
875 nn1(i)=nnx(i,i1)
876 nn2(i)=nny(i,i1)
877 nn3(i)=nnz(i,i1)
878
879 nbord=nbord+1
880 kbord(nbord)=i
881
882 END IF
883
884 END IF
885
886 IF(mvoisn(i,2)==0)THEN
887
888
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)
890
891 IF(nn < nne(i)) THEN
892 nne(i)=nn
893 nn1(i)=nnx(i,i2)
894 nn2(i)=nny(i,i2)
895 nn3(i)=nnz(i,i2)
896
897 nbord=nbord+1
898 kbord(nbord)=i
899
900 END IF
901
902 END IF
903
904 IF(mvoisn(i,4)==0)THEN
905
906
907 nn = (xh(i)-xx(i,5))*nnx(i,5)+(yh(i)-yy(i,5))*nny(i,5)+(zh(i)-zz(i,5))*nnz(i,5)
908
909 IF(nn < nne(i)) THEN
910 nne(i)=nn
911 nn1(i)=nnx(i,5)
912 nn2(i)=nny(i,5)
913 nn3(i)=nnz(i,5)
914
915 nbord=nbord+1
916 kbord(nbord)=i
917
918 END IF
919
920 END IF
921
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
925
927 IF(ib1/=0)THEN
928 ix =1
929 ELSEIF(ib2/=0)THEN
930 ix =2
931 ELSEIF(ib3/=0)THEN
932 ix =3
933 END IF
934
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)
941
942 IF(p1 < gaps(i) .AND. p2 < gaps(i))THEN
943
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)
947
948 nn=sqrt(nn1(i)*nn1(i)+nn2(i)*nn2(i)+nn3(i)*nn3(i))
949 nn = one/
max(em30,nn)
950 nn1(i)=nn1(i)*nn
951 nn2(i)=nn2(i)*nn
952 nn3(i)=nn3(i)*nn
953
954 nne(i)= (xh(i)-xx(i,ix))*nn1(i)+ (yh(i)-yy(i,ix))*nn2(i)+ (zh(i)-zz(i,ix))*nn3(i)
955
956 nbord=nbord+1
957 kbord(nbord)=i
958
959 ELSEIF(p1 < gaps(i))THEN
960
961 nn1(i)= vtx_bisector(1,1,ibx)
962 nn2(i)= vtx_bisector(2,1,ibx)
963 nn3(i)= vtx_bisector(3,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)
965
966 nbord=nbord+1
967 kbord(nbord)=i
968
969 ELSEIF(p2 < gaps(i))THEN
970
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)
975
976 nbord=nbord+1
977 kbord(nbord)=i
978
979 ELSE
980
981
982
983
984 END IF
985 END IF
986
987 END IF
988 END DO
989
990 IF(isharp==1)THEN
991
992 DO k=1,nbord
993 i=kbord(k)
994
995 it=subtria(i)
996 i1=itria(1,it)
997 i2=itria(2,it)
998
999 gapm = gapv(i,it)-gaps(i)
1000 IF(nne(i) > zero .AND. bb(i,it)+gapm < zero)THEN
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
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(i,i1) + lcp(i,it)*yy(i,i2)
1017 zp=lap*zz(i,5)+lbp(i,it)*zz(i,i1) + lcp(i,it)*zz(i,i2)
1018 xc=xp+gapm*xn(i,it)
1019 yc=yp+gapm*yn(i,it)
1020 zc=zp+gapm*zn(i,it)
1021 nn1(i) =xi(i)-xc
1022 nn2(i) =yi(i)-yc
1023 nn3(i) =zi(i)-zc
1024 dc = sqrt(nn1(i)*nn1(i)+ nn2(i)*nn2(i)+ nn3(i)*nn3(i))
1025
1026 IF(dc > em04) THEN
1027
1028
1029
1030
1031 pent(i,it)=
max(zero,gaps(i)-dc)
1032 ELSE
1033
1034 nne(i)=nne(i)-gaps(i)
1035 IF(-bb(i,it) < gapv(i,it)+nne(i))THEN
1036
1037
1038
1039
1040
1041
1042 pent(i,it)=
max(zero,-nne(i))
1043
1044 ELSE
1045
1046
1047
1048
1049
1050
1051 pent(i,it)=
max(zero,gapv(i,it)+bb(i,it))
1052 END IF
1053 END IF
1054
1055 ELSE
1056
1057 nne(i)=nne(i)-gaps(i)
1058 IF(nne(i) >= zero)THEN
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069 pent(i,it)=zero
1070 cycle
1071
1072 END IF
1073
1074 IF(gapv(i,it)+nne(i) > zero)THEN
1075
1076 IF(-bb(i,it) < gapv(i,it)+nne(i))THEN
1077
1078
1079
1080
1081
1082
1083 pent(i,it)=-nne(i)
1084
1085 ELSE
1086
1087
1088
1089
1090
1091
1092 pent(i,it)=
max(zero,gapv(i,it)+bb(i,it))
1093 END IF
1094
1095 END IF
1096
1097 END IF
1098
1099 END DO
1100
1101 ELSEIF(isharp==2)THEN
1102
1103 DO k=1,nbord
1104 i=kbord(k)
1105
1106 it=subtria(i)
1107 i1=itria(1,it)
1108 i2=itria(2,it)
1109
1110 nne(i)=nne(i)-gaps(i)
1111 IF(nne(i) >= zero)THEN
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122 cycle
1123
1124 END IF
1125
1126 IF(gapv(i,it)+nne(i) > zero)THEN
1127
1128
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)
1132 nn1(i) =xi(i)-xc
1133 nn2(i) =yi(i)-yc
1134 nn3(i) =zi(i)-zc
1135 dc = sqrt(nn1(i)*nn1(i)+ nn2(i)*nn2(i)+ nn3(i)*nn3(i))
1136 IF(dc > em04) THEN
1137
1138
1139
1140
1141 pent(i,it)=
max(zero,gapv(i,it)-dc)
1142 ELSE
1143
1144
1145 END IF
1146
1147 END IF
1148
1149
1150
1151
1152
1153
1154 END DO
1155
1156 END IF
1157
1158 IF(ivis2/=-1) THEN
1159
1160 DO k=1,nindx
1161 i=indx(k)
1162
1163 it = subtria(i)
1164
1165 IF(etyp(i) > nrtm)THEN
1166 IF(far(i,it)==2) cycle
1167
1168
1169 ELSEIF(etyp(i)/=0)THEN
1170 IF(far(i,it)==2) cycle
1171
1172 IF(bb(i,it) > zero) cycle
1173 END IF
1174
1175 n=cand_n(i)
1176 l=cand_e(i)
1177
1178 mglob = mseglo(l)
1179
1180 pene=pent(i,it)
1181
1182
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
1188 END IF
1189 ENDIF
1190
1191
1192
1193
1194
1195
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
1199 irtlm(1,n)=mglob
1200 irtlm(2,n)=it
1201 irtlm(3,n)=l
1202 time_s(n) =dist(i)
1203 pene_old(5,n)=pene
1204 ELSE
1205 irtlm(1,n)=mglob
1206 irtlm(2,n)=it
1207 irtlm(3,n)=l
1208 time_s(n) =dist(i)
1209 pene_old(5,n)=pene
1210 END IF
1211 END IF
1212 END DO
1213 ELSE
1214
1215 DO k=1,nindx
1216 i=indx(k)
1217
1218 it = subtria(i)
1219 IF(far(i,it)==2)THEN
1220
1221 it = 0
1222 subtria(i) = it
1223 END IF
1224 IF(it == 0)cycle
1225
1226 n=cand_n(i)
1227 l=cand_e(i)
1228
1229 mglob = mseglo(l)
1230
1231 IF(.NOT.(etyp(i)==0.OR.msegtyp(l) > nrtm))THEN
1232 IF(pent(i,it)==zero) cycle
1233 END IF
1234
1235
1236 pene=
max(zero,pent(i,it)-half*gapv(i,it))
1237
1238
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
1244 END IF
1245 ENDIF
1246
1247
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
1251 irtlm(1,n)=mglob
1252 irtlm(2,n)=it
1253 irtlm(3,n)=l
1254 time_s(n) =pene
1255 pene_old(5,n)=pene
1256 ELSE
1257 irtlm(1,n)=mglob
1258 irtlm(2,n)=it
1259 irtlm(3,n)=l
1260 time_s(n) =pene
1261 pene_old(5,n)=pene
1262 END IF
1263 END IF
1264 END DO
1265 ENDIF
1266
1267 RETURN
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB