Download j3junc.eso

Back to the list

   1 : C J3JUNC    SOURCE    CHAT      05/01/13    00:46:54     5004           
   2 :       SUBROUTINE J3JUNC(WORK1,WORK2,TOL,IRET)
   3 : C----------------------------------------------------
   4 : C     ON REGARDE LE STATUS DES SEGMENTS ADJACENTS A CHAQUE
   5 : C     POINT DE XYC1 PAR RAPPORT A XYC2
   6 : C
   7 : C     CODE IST(1,I): 0 point non traite
   8 : C                    1 est sur le segment IST(2,I)
   9 : C                    2 est sur les segments IST(2,I) et IST(3,I)
  10 : C                   -1 est a l'interieur
  11 : C                   -2 est a l'exterieur
  12 : C
  13 : C     CODE CRO(J,I): 1 cote sur le segment
  14 : C                   -1 cote interieur
  15 : C                   -2 cote exterieur
  16 : C
  17 : C     PP 6/97
  18 : C     Pierre Pegon/JRC Ispra
  19 : C----------------------------------------------------
  20 : C
  21 :       IMPLICIT INTEGER(I-N)
  22 :       IMPLICIT REAL*8(A-H,O-Z)
  23 : -INC CCOPTIO
  24 :       SEGMENT WORK
  25 :         REAL*8 XYC(2,NPTO)
  26 :         INTEGER IST(3,NPTO)
  27 :         REAL*8 DENS(NPTO)
  28 :         INTEGER JUN
  29 :       ENDSEGMENT
  30 :       POINTEUR WORK1.WORK, WORK2.WORK
  31 : C
  32 :       SEGMENT JUNC
  33 :         INTEGER CRO(2,NPTO)
  34 :       ENDSEGMENT
  35 : C
  36 :       DIMENSION XY1(2),XY2(2),XY3(2),XY4(2)
  37 : C
  38 :       NPTO1=WORK1.XYC(/2)
  39 :       NPTO2=WORK2.XYC(/2)
  40 : C
  41 : C     ENFIN ON REGARDE LE STATUS DES SEGMENTS ADJACENTS A CHAQUE
  42 : C     POINT DE XYC1 SUR LES COTES DE XYC2
  43 : C
  44 :       JUNC=WORK1.JUN
  45 :       NPTO=NPTO1
  46 :       IF (JUNC.EQ.0)THEN
  47 :         SEGINI,JUNC
  48 :         WORK1.JUN=JUNC
  49 :       ELSE
  50 :         SEGADJ,JUNC
  51 :       ENDIF
  52 : C
  53 :       DO IE1=1,NPTO1
  54 : C
  55 : C     ON TRAITE FACILEMENT LE CAS OU XYC1(IE1) EST DANS OU HORS XYC2
  56 : C
  57 :         J1=WORK1.IST(1,IE1)
  58 :         IF(J1.LT.0)THEN
  59 :           DO IE2=1,2
  60 :             CRO(IE2,IE1)=J1
  61 :           ENDDO
  62 : C
  63 : C     A PARTIR D'ICI ON ATTAQUE LES POINTS SUR LES COTES
  64 : C
  65 :         ELSE
  66 : C
  67 : C     ON REGARDE LES VOISINS XYC1(I2) DE XYC1(IE1)
  68 : C
  69 :           DO IE2=1,2
  70 :             IF(IE2.EQ.1)THEN
  71 :               I2=IE1-1+(1/IE1)*NPTO1
  72 :             ELSE
  73 :               I2=IE1+1-(IE1/NPTO1)*IE1
  74 :             ENDIF
  75 : C
  76 : C      ON TRAITE FACILEMENT LE CAS OU CE POINT EST DANS OU HORS XYC2
  77 : C
  78 :             J2=WORK1.IST(1,I2)
  79 :             CRO(IE2,IE1)=J2
  80 : C
  81 : C     MAIS SI XYC1(I2) EST AUSSI SUR XYC2, ON REGARDE SI CE POINTS
  82 : C        ET XYC1(IE1) SONT SUR LE MEME SEGMENT DE XYC2
  83 : C       
  84 : C
  85 :             IF(J2.GT.0)THEN
  86 :               DO IE3=2,J1+1
  87 :                 J3=WORK1.IST(IE3,IE1)
  88 :                 DO IE4=2,J2+1
  89 :                   J4=WORK1.IST(IE4,I2)
  90 :                   IF(J3.EQ.J4)GOTO 1
  91 :                 ENDDO
  92 :               ENDDO
  93 : C
  94 : C     SI XYC1(I2) ET XYC1(IE1) NE SONT PAS SUR LE MEME SEGMENT DE XYC2
  95 : C        ON REGARDE OU SE TROUVE LE MILIEU PAR RAPPORT A XYC2 
  96 : C
  97 :               DO IE3=1,2
  98 :                 XY1(IE3)=(WORK1.XYC(IE3,IE1)+WORK1.XYC(IE3,I2))/2
  99 :               ENDDO
  99 :               CALL J3INEX(XY1,WORK2.XYC,NPTO2,TOL,ICOD,ISIGM,IRET)
 100 :               CRO(IE2,IE1)=ICOD
 101 :               GOTO 2
 102 : C
 103 : C     SI XYC1(I2) ET XYC1(IE1) SONT SUR LE MEME SEGMENT DE XYC2
 104 : C        ALORS ON A LE CODE 1
 105 : C
 106 :  1            CONTINUE
 107 :               CRO(IE2,IE1)=1
 108 :  2            CONTINUE
 109 :             ENDIF
 110 :           ENDDO
 111 : C
 112 : C     FIN DES POINTS SUR LES COTES
 113 : C
 114 :         ENDIF
 115 :       ENDDO
 116 : C
 117 :       IF (IIMPI.EQ.1789)THEN
 118 :         WRITE(IOIMP,*)'J3JUNC'
 119 :         NPTO1=WORK1.XYC(/2)
 120 :         WRITE(IOIMP,*)'WORK1/WORK2: NUM,CRO1, CRO2, ',WORK1,WORK2
 121 :         DO IE1=1,NPTO1
 122 :           WRITE(IOIMP,*)IE1,CRO(1,IE1),CRO(2,IE1)
 123 :         ENDDO
 124 :       ENDIF
 125 : 
 126 : C
 127 :       RETURN
 128 :       END
 129 :  
 130 :  

© Cast3M 2003 - All rights reserved.
Disclaimer