32 1 NRTM ,IRECT,CAND_E ,GAP_NM ,
33 2 MVOISIN ,NVOISIN , MSEGTYP ,INOD_PXFEM ,
34 3 X ,MS_PLY , WAGAP ,ITAB,
35 . ISEG_PXFEM,ISEG_PLY, STFM)
44#include "implicit_f.inc"
54 INTEGER NRTM, CAND_E(*),MVOISIN(4,*), INOD_PXFEM(*),
55 . MSEGTYP(*),ITAB(*),NVOISIN(8,*),IRECT(4,*),
56 . ISEG_PXFEM(*),ISEG_PLY(12,*)
58 . gap_nm(12,*),wagap(2,*),ms_ply(nplyxfe,*),x(3,*),
63 INTEGER ITAG(MVSIZ),ISEG(NRTM), IXX(NRTM,13),INDX(NRTM)
64 INTEGER I,J1,J2,J3,J4,J5,J6,NN,ILY,IJ6,J7,J8,J9,J10,J11,J12
68 . yo16, yo17, yo15, yo14, y163, y153, y152
69 . zo16, zo17, zo15, zo14, z163, z153, z152, z142, z141,
70 . x51 , y51,z51,x52,y52,z52,x53,y53,z53,x54,y54,z54 ,
71 . x164,y164,z164,x174,y174,z174,x171,y171,z171,nx1,
72 . ny1,nz1,aaa,gapn,nx2,ny2,nz2,nx3,ny3,nz3,dx,dy,dz,
74 . sx125(nrtm),sx235(nrtm),sx345(nrtm),sx415(nrtm),
76 . sz125(nrtm),sz235(nrtm),sz345(nrtm),sz415(nrtm),
77 . sx1250(nrtm),sx2350(nrtm),sx3450(nrtm),sx4150(nrtm),
78 . sy1250(nrtm),sy2350(nrtm),sy3450(nrtm),sy4150(nrtm),
79 . sz1250(nrtm),sz2350(nrtm),sz3450(nrtm),sz4150(nrtm),
80 . sx2114(nrtm),sx3215(nrtm),sx4316(nrtm),sx1417(nrtm),
81 . sy2114(nrtm),sy3215(nrtm),sy4316(nrtm),sy1417(nrtm),
82 . sz2114(nrtm),sz3215(nrtm),sz4316(nrtm),sz1417(nrtm),
83 . sx21140(nrtm),sx32150(nrtm),sx43160(nrtm),sx14170(nrtm),
84 . sy21140(nrtm),sy32150(nrtm),sy43160(nrtm),sy14170(nrtm),
85 . sz21140(nrtm),sz32150(nrtm),sz43160(nrtm),sz14170(nrtm),
86 . nxx(nrtm,17),nyy(nrtm,17),nzz(nrtm,17),bbb,
87 . xx0(nrtm,17),yy0(nrtm,17),zz0(nrtm,17),dn
98 IF(msegtyp(i) > 0) iseg(i) = 1
99 IF(msegtyp(i) < 0) iseg(i) = 2
100 IF(iseg_pxfem(i) == 0 .OR. stfm(i) == zero) cycle
134 IF(ixx(i,3) /= ixx(i,4))
THEN
135 xx0(i,5) = fourth*(xx0(i,1)+xx0(i,2)+xx0(i,3)+xx0(i,4))
136 yy0(i,5) = fourth*(yy0(i,1)+yy0(i,2)+yy0(i,3)+yy0(i,4))
137 zz0(i,5) = fourth*(zz0(i,1)+zz0(i,2)+zz0(i,3)+zz0(i,4))
144 ix=iabs(nvoisin(1,i))
156 IF(nvoisin(2,i)/=0)ix=iabs(nvoisin(2,i))
167 ix=iabs(nvoisin(3,i))
179 IF(nvoisin(4,i)/=0)ix=iabs(nvoisin(4,i))
191 ix=iabs(nvoisin(5,i))
203 IF(nvoisin(6,i)/=0)ix=iabs(nvoisin(6,i))
215 ix=iabs(nvoisin(7,i))
227 IF(nvoisin(8,i)/=0)ix=iabs(nvoisin(8,i))
239 IF(ixx(i, 6)==ixx(i, 7))
THEN
244 xx0(i,14) = fourth*(xx0(i,2)+xx0(i,1)+xx0(i,6)+xx0(i,7))
245 yy0(i,14) = fourth*(yy0(i,2)+yy0(i,1)+yy0(i,6)+yy0(i,7))
246 zz0(i,14) = fourth*(zz0(i,2)+zz0(i,1)+zz0(i,6)+zz0(i,7))
248 IF(ixx(i, 8)==ixx(i, 9))
THEN
253 xx0(i,15) = fourth*(xx0(i,3)+xx0(i,2)+xx0(i,8)+xx0(i,9))
254 yy0(i,15) = fourth*(yy0(i,3)+yy0(i,2)+yy0(i,8)+yy0(i,9))
255 zz0(i,15) = fourth*(zz0(i,3)+zz0(i,2)+zz0(i,8)+zz0(i,9))
257 IF(ixx(i,10)==ixx(i,11))
THEN
258 xx0(i,16) = xx0(i,10)
259 yy0(i,16) = yy0(i,10)
260 zz0(i,16) = zz0(i,10)
262 xx0(i,16) = fourth*(xx0(i,4)+xx0(i,3)+xx0(i,10)+xx0(i,11))
263 yy0(i,16) = fourth*(yy0(i,4)+yy0(i,3)+yy0(i,10)+yy0(i,11))
264 zz0(i,16) = fourth*(zz0(i,4)+zz0(i,3)+zz0(i,10)+zz0(i,11))
266 IF(ixx(i,12)==ixx(i,13))
THEN
267 xx0(i,17) = xx0(i,12)
268 yy0(i,17) = yy0(i,12)
269 zz0(i,17) = zz0(i,12)
271 xx0(i,17) = fourth*(xx0(i,1)+xx0(i,4)+xx0(i,12)+xx0(i,13))
272 yy0(i,17) = fourth*(yy0(i,1)+yy0(i,4)+yy0(i,12)+yy0(i,13))
303 x51 = xx0(i,1) - xx0(i,5)
304 y51 = yy0(i,1) - yy0(i,5)
305 z51 = zz0(i,1) - zz0(i,5)
307 x52 = xx0(i,2) - xx0(i,5)
308 y52 = yy0(i,2) - yy0(i,5)
309 z52 = zz0(i,2) - zz0(i,5)
311 x53 = xx0(i,3) - xx0(i,5)
312 y53 = yy0(i,3) - yy0(i,5)
313 z53 = zz0(i,3) - zz0(i,5)
315 x54 = xx0(i,4) - xx0(i,5)
316 y54 = yy0(i,4) - yy0(i,5)
317 z54 = zz0(i,4) - zz0(i,5)
320 sx1250(i) = y51*z52 - z51*y52
321 sy1250(i) = z51*x52 - x51*z52
322 sz1250(i) = x51*y52 - y51*x52
324 sx2350(i) = y52*z53 - z52*y53
325 sy2350(i) = z52*x53 - x52*z53
329 sy3450(i) = z53*x54 - x53*z54
330 sz3450(i) = x53*y54 - y53*x54
332 sx4150(i) = y54*z51 - z54*y51
333 sy4150(i) = z54*x51 - x54*z51
334 sz4150(i) = x54*y51 - y54*x51
337 x141 = xx0(i,1) - xx0(i,14)
338 y141 = yy0(i,1) - yy0(i,14)
339 z141 = zz0(i,1) - zz0(i,14)
341 x142 = xx0(i,2) - xx0(i,14)
342 y142 = yy0(i,2) - yy0(i,1
343 z142 = zz0(i,2) - zz0(i,14)
345 x152 = xx0(i,2) - xx0(i,15)
347 z152 = zz0(i,2) - zz0(i,15)
349 x153 = xx0(i,3) - xx0(i,15)
350 y153 = yy0(i,3) - yy0(i,15)
351 z153 = zz0(i,3) - zz0(i,15)
353 x163 = xx0(i,3) - xx0(i,16)
354 y163 = yy0(i,3) - yy0(i,16)
355 z163 = zz0(i,3) - zz0(i,16)
358 y164 = yy0(i,4) - yy0(i,16)
359 z164 = zz0(i,4) - zz0(i,16)
361 x174 = xx0(i,4) - xx0(i,17)
362 y174 = yy0(i,4) - yy0(i,17)
366 y171 = yy0(i,1) - yy0(i,17)
367 z171 = zz0(i,1) - zz0(i,17)
369 IF(mvoisin(1,i)/=0)
THEN
370 sx21140(i) = y142*z141 - z142*y141
371 sy21140(i) = z142*x141 - x142*z141
372 sz21140(i) = x142*y141 - y142*x141
374 sx21140(i) = sx1250(i)
375 sy21140(i) = sy1250(i)
376 sz21140(i) = sz1250(i)
379 IF(mvoisin(2,i)/=0)
THEN
380 sx32150(i) = y153*z152 - z153*y152
381 sy32150(i) = z153*x152 - x153*z152
382 sz32150(i) = x153*y152 - y153*x152
384 sx32150(i) = sx2350(i)
385 sy32150(i) = sy2350(i)
386 sz32150(i) = sz2350(i)
389 IF(mvoisin(3,i)/=0)
THEN
390 sx43160(i) = y164*z163 - z164*y163
391 sy43160(i) = z164*x163 - x164*z163
392 sz43160(i) = x164*y163 - y164*x163
395 sy43160(i) = sy3450(i)
396 sz43160(i) = sz3450(i)
399 IF(mvoisin(4,i)/=0)
THEN
400 sx14170(i) = y171*z174 - z171*y174
402 sz14170(i) = x171*y174 - y171*x174
404 sx14170(i) = sx4150(i)
405 sy14170(i) = sy4150(i)
406 sz14170(i) = sz4150(i)
409 IF(ixx(i,3) /= ixx(i,4))
THEN
412 nyy(i,1) =sy4150(i)+sy1250(i)+two*(sy14170(i
413 nzz(i,1) =sz4150(i)+sz1250(i)+two*(sz14170(i)+sz21140(i))
415 nxx(i,2) =sx1250(i)+sx2350(i)+two*(sx21140(i)+sx32150(i))
416 nyy(i,2) =sy1250(i)+sy2350(i)+two*(sy21140(i)+sy32150(i))
417 nzz(i,2) =sz1250(i)+sz2350(i)+two*(sz21140(i)+sz32150(i))
419 nxx(i,3) =sx2350(i)+sx3450(i)+two*(sx32150(i)+sx43160(i))
420 nyy(i,3) =sy2350(i)+sy3450(i
421 nzz(i,3) =sz2350(i)+sz3450(i)+two*(sz32150(i)+sz43160(i))
423 nxx(i,4) =sx3450(i)+sx4150(i)+two*(sx43160(i)+sx14170(i))
424 nyy(i,4) =sy3450(i)+sy4150(i)+two*(sy43160(i)+sy14170(i))
425 nzz(i,4) =sz3450(i)+sz4150(i)+two*(sz43160(i
427 nxx(i,5) =sx1250(i)+sx2350(i)+sx3450(i)+sx4150(i)
428 nyy(i,5) =sy1250(i)+sy2350(i)+sy3450(i)+sy4150(i)
429 nzz(i,5) =sz1250(i)+sz2350(i)+sz3450(i)+sz4150(i)
433 nxx(i,1) =sx1250(i)+sx14170(i)+sx21140(i)
434 nyy(i,1) =sy1250(i)+sy14170(i)+sy21140(i)
435 nzz(i,1) =sz1250(i)+sz14170(i)+sz21140(i)
437 nxx(i,2) =sx1250(i)+sx21140(i)+sx32150(i)
438 nyy(i,2) =sy1250(i)+sy21140(i)+sy32150(i)
439 nzz(i,2) =sz1250(i)+sz21140(i)+sz32150
443 nzz(i,3) =sz1250(i)+sz32150(i)+sz14170(i)
457 nx1 = sx1250(i) + sx21140(i) + sx4150(i) + sx14170(i)
458 ny1 = sy1250(i) + sy21140(i) + sy4150(i) + sy14170(i)
459 nz1 = sz1250(i) + sz21140(i) + sz4150(i) + sz14170(i)
460 aaa = one/sqrt(nx1*nx1+ny1*ny1+nz1*nz1)
471 IF(nn > 0 .AND. ily > 0)
THEN
472 dn =
ply(ily)%U(1,nn)*nx1
473 . +
ply(ily)%U(2,nn)*ny1
474 . +
ply(ily)%U(3,nn)*nz1
475 gapn =
max(zero,gap_nm(1,i)+dn)
478 IF(iseg(i)>0 )wagap(iseg(i),j1)=
max(wagap(iseg(i),j1),gapn)
479#include "lockoff.inc"
482 nx2 = sx2350(i) + sx32150(i) + sx1250(i) + sx21140(i)
483 ny2 = sy2350(i) + sy32150(i) + sy1250(i) + sy21140(i)
484 nz2 = sz2350(i) + sz32150(i) + sz1250(i) + sz21140(i)
485 aaa = one/sqrt(nx2*nx2+ny2*ny2+nz2*nz2)
495 IF(nn > 0 .AND. ily > 0)
THEN
496 dn =
ply(ily)%U(1,nn)*nx2
497 . +
ply(ily)%U(2,nn)*ny2
498 . +
ply(ily)%U(3,nn)*nz2
499 gapn =
max(zero,gap_nm(2,i)+dn)
502 IF(iseg(i)>0)wagap(iseg(i),j2)=
max(wagap(iseg(i),j2),gapn)
503#include "lockoff.inc"
505 IF(ixx(i,3) /= ixx(i,4))
THEN
506 nx3 = sx3450(i) + sx43160(i) + sx2350(i) + sx32150(i)
507 ny3 = sy3450(i) + sy43160(i) + sy2350(i) + sy32150(i)
508 nz3 = sz3450(i) + sz43160(i) + sz2350(i) + sz32150(i)
509 aaa = one/sqrt(nx3*nx3+ny3*ny3+nz3*nz3)
520 IF(nn > 0 .AND. ily > 0)
THEN
522 . +
ply(ily)%U(2,nn)*ny3
523 . +
ply(ily)%U(3,nn)*nz3
524 gapn =
max(zero,gap_nm(3,i)+dn)
527 IF(iseg(i)>0)wagap(iseg(i),j3)=
max(wagap(iseg(i),j3),gapn)
528#include "lockoff.inc"
531 nx4 = sx4150(i) + sx14170(i) + sx3450(i) + sx43160(i)
532 ny4 = sy4150(i) + sy14170(i) + sy3450(i) + sy43160(i)
533 nz4 = sz4150(i) + sz14170(i) + sz3450(i) + sz43160(i)
534 aaa = one/sqrt(nx4*nx4+ny4*ny4+nz4*nz4)
544 IF(nn > 0 .AND. ily > 0)
THEN
545 dn =
ply(ily)%U(1,nn)*nx4
546 . +
ply(ily)%U(2,nn)*ny4
547 . +
ply(ily)%U(3,nn)*nz4
551 IF(iseg(i)>0)wagap(iseg(i),j4)=
max(wagap(iseg(i),j4),gapn)
552#include "lockoff.inc"
555 nx3 = sx1250(i) + sx32150(i) + sx14170(i)
556 ny3 = sy1250(i) + sy32150(i) + sy14170(i)
572 IF(nn > 0 .AND. ily > 0)
THEN
573 dn =
ply(ily)%U(1,nn)*nx3
574 . +
ply(ily)%U(2,nn)*ny3
575 . +
ply(ily)%U(3,nn)*nz3
576 gapn =
max(zero,gap_nm(3,i)+dn)
579 IF(iseg(i)>0)wagap(iseg(i),j3)=
max(wagap(iseg(i),j3),gapn)
580#include "lockoff.inc"
584 bbb = sqrt(sx21140(i)*sx21140(i)
585 + +sy21140(i)*sy21140(i)
586 + +sz21140(i)*sz21140(i))
588 sx21140(i)=sx21140(i) * aaa
589 sy21140(i)=sy21140(i) * aaa
590 sz21140(i)=sz21140(i) * aaa
597 IF(nn > 0 .AND. ily > 0)
THEN
598 dn =
ply(ily)%U(1,nn)*sx21140(i)
599 . +
ply(ily)%U(2,nn)*sy21140(i)
600 . +
ply(ily)%U(3,nn)*sz21140(i)
601 gapn =
max(zero,gap_nm(5,i)+dn)
604 IF(iseg(i)>0 )wagap(iseg(i),j5)=
max(wagap(iseg(i),j5),gapn)
605#include "lockoff.inc"
614 IF(nn > 0 .AND. ily > 0)
THEN
615 dn =
ply(ily)%U(1,nn)*sx21140(i)
616 . +
ply(ily)%U(2,nn)*sy21140(i)
617 . +
ply(ily)%U(3,nn)*sz21140(i)
618 gapn =
max(zero,gap_nm(6,i)+dn)
621 IF(iseg(i)>0 )wagap(iseg(i),j6)=
max(wagap(iseg(i),j6),gapn)
622#include "lockoff.inc"
624 bbb = sqrt(sx32150(i)*sx32150(i)
625 + +sy32150(i)*sy32150(i)
626 + +sz32150(i)*sz32150(i))
629 sx32150(i)=sx32150(i) * aaa
630 sy32150(i)=sy32150(i) * aaa
631 sz32150(i)=sz32150(i) * aaa
638 IF(nn > 0 .AND. ily > 0)
THEN
639 dn =
ply(ily)%U(1,nn)*sx32150(i)
640 . +
ply(ily)%U(2,nn)*sy32150(i)
641 . +
ply(ily)%U(3,nn)*sz32150(i)
642 gapn =
max(zero,gap_nm(7,i)+dn)
645 IF(iseg(i)>0 )wagap(iseg(i),j7)=
max(wagap(iseg(i),j7),gapn)
646#include "lockoff.inc"
654 IF(nn > 0 .AND. ily > 0)
THEN
655 dn =
ply(ily)%U(1,nn)*sx32150(i)
656 . +
ply(ily)%U(2,nn)*sy32150(i)
657 . +
ply(ily)%U(3,nn)*sz32150(i)
658 gapn =
max(zero,gap_nm(8,i)+dn)
661 IF(iseg(i)>0 )wagap(iseg(i),j8)=
max(wagap(iseg(i),j8),gapn)
662#include "lockoff.inc"
665 IF(ixx(i,3) /= ixx(i,4))
THEN
666 bbb = sqrt(sx43160(i)*sx43160(i)
667 + +sy43160(i)*sy43160(i)
668 + +sz43160(i)*sz43160(i))
671 sx43160(i)=sx43160(i) * aaa
672 sy43160(i)=sy43160(i) * aaa
673 sz43160(i)=sz43160(i) * aaa
679 IF(nn > 0 .AND. ily > 0)
THEN
680 dn =
ply(ily)%U(1,nn)*sx43160(i)
681 . +
ply(ily)%U(2,nn)*sy43160(i)
682 . +
ply(ily)%U(3,nn)*sz43160(i)
683 gapn =
max(zero,gap_nm(9,i)+dn)
686 IF(iseg(i)>0 )wagap(iseg(i),j9)=
max(wagap(iseg(i),j9),gapn)
687#include "lockoff.inc"
695 IF(nn > 0 .AND. ily > 0)
THEN
696 dn =
ply(ily)%U(1,nn)*sx43160(i)
697 . +
ply(ily)%U(2,nn)*sy43160(i)
698 . +
ply(ily)%U(3,nn)*sz43160(i)
699 gapn =
max(zero,gap_nm(10,i)+dn)
702 IF(iseg(i)>0 )wagap(iseg(i),j10)=
max(wagap(iseg(i),j10),gapn)
703#include "lockoff.inc"
707 bbb = sqrt(sx14170(i)*sx14170(i)
708 + +sy14170(i)*sy14170(i)
709 + +sz14170(i)*sz14170(i))
712 sx14170(i)=sx14170(i) * aaa
713 sy14170(i)=sy14170(i) * aaa
714 sz14170(i)=sz14170(i) * aaa
721 IF(nn > 0 .AND. ily > 0)
THEN
722 dn =
ply(ily)%U(1,nn)*sx14170(i)
723 . +
ply(ily)%U(2,nn)*sy14170(i)
724 . +
ply(ily)%U(3,nn)*sz14170(i)
725 gapn =
max(zero,gap_nm(11,i)+dn)
728 IF(iseg(i)>0 )wagap(iseg(i),j11)=
max(wagap(iseg(i),j11),gapn)
729#include "lockoff.inc"
737 IF(nn > 0 .AND. ily > 0)
THEN
738 dn =
ply(ily)%U(1,nn)*sx14170(i)
739 . +
ply(ily)%U(2,nn)*sy14170(i)
740 . +
ply(ily)%U(3,nn)*sz14170(i)
741 gapn =
max(zero,gap_nm(12,i)+dn)
745#include "lockoff.inc"