Télécharger j3junc.eso

Retour à la liste

Numérotation des lignes :

j3junc
  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.  
  24. -INC PPARAM
  25. -INC CCOPTIO
  26. SEGMENT WORK
  27. REAL*8 XYC(2,NPTO)
  28. INTEGER IST(3,NPTO)
  29. REAL*8 DENS(NPTO)
  30. INTEGER JUN
  31. ENDSEGMENT
  32. POINTEUR WORK1.WORK, WORK2.WORK
  33. C
  34. SEGMENT JUNC
  35. INTEGER CRO(2,NPTO)
  36. ENDSEGMENT
  37. C
  38. DIMENSION XY1(2),XY2(2),XY3(2),XY4(2)
  39. C
  40. NPTO1=WORK1.XYC(/2)
  41. NPTO2=WORK2.XYC(/2)
  42. C
  43. C ENFIN ON REGARDE LE STATUS DES SEGMENTS ADJACENTS A CHAQUE
  44. C POINT DE XYC1 SUR LES COTES DE XYC2
  45. C
  46. JUNC=WORK1.JUN
  47. NPTO=NPTO1
  48. IF (JUNC.EQ.0)THEN
  49. SEGINI,JUNC
  50. WORK1.JUN=JUNC
  51. ELSE
  52. SEGADJ,JUNC
  53. ENDIF
  54. C
  55. DO IE1=1,NPTO1
  56. C
  57. C ON TRAITE FACILEMENT LE CAS OU XYC1(IE1) EST DANS OU HORS XYC2
  58. C
  59. J1=WORK1.IST(1,IE1)
  60. IF(J1.LT.0)THEN
  61. DO IE2=1,2
  62. CRO(IE2,IE1)=J1
  63. ENDDO
  64. C
  65. C A PARTIR D'ICI ON ATTAQUE LES POINTS SUR LES COTES
  66. C
  67. ELSE
  68. C
  69. C ON REGARDE LES VOISINS XYC1(I2) DE XYC1(IE1)
  70. C
  71. DO IE2=1,2
  72. IF(IE2.EQ.1)THEN
  73. I2=IE1-1+(1/IE1)*NPTO1
  74. ELSE
  75. I2=IE1+1-(IE1/NPTO1)*IE1
  76. ENDIF
  77. C
  78. C ON TRAITE FACILEMENT LE CAS OU CE POINT EST DANS OU HORS XYC2
  79. C
  80. J2=WORK1.IST(1,I2)
  81. CRO(IE2,IE1)=J2
  82. C
  83. C MAIS SI XYC1(I2) EST AUSSI SUR XYC2, ON REGARDE SI CE POINTS
  84. C ET XYC1(IE1) SONT SUR LE MEME SEGMENT DE XYC2
  85. C
  86. C
  87. IF(J2.GT.0)THEN
  88. DO IE3=2,J1+1
  89. J3=WORK1.IST(IE3,IE1)
  90. DO IE4=2,J2+1
  91. J4=WORK1.IST(IE4,I2)
  92. IF(J3.EQ.J4)GOTO 1
  93. ENDDO
  94. ENDDO
  95. C
  96. C SI XYC1(I2) ET XYC1(IE1) NE SONT PAS SUR LE MEME SEGMENT DE XYC2
  97. C ON REGARDE OU SE TROUVE LE MILIEU PAR RAPPORT A XYC2
  98. C
  99. DO IE3=1,2
  100. XY1(IE3)=(WORK1.XYC(IE3,IE1)+WORK1.XYC(IE3,I2))/2
  101. ENDDO
  102. CALL J3INEX(XY1,WORK2.XYC,NPTO2,TOL,ICOD,ISIGM,IRET)
  103. CRO(IE2,IE1)=ICOD
  104. GOTO 2
  105. C
  106. C SI XYC1(I2) ET XYC1(IE1) SONT SUR LE MEME SEGMENT DE XYC2
  107. C ALORS ON A LE CODE 1
  108. C
  109. 1 CONTINUE
  110. CRO(IE2,IE1)=1
  111. 2 CONTINUE
  112. ENDIF
  113. ENDDO
  114. C
  115. C FIN DES POINTS SUR LES COTES
  116. C
  117. ENDIF
  118. ENDDO
  119. C
  120. IF (IIMPI.EQ.1789)THEN
  121. WRITE(IOIMP,*)'J3JUNC'
  122. NPTO1=WORK1.XYC(/2)
  123. WRITE(IOIMP,*)'WORK1/WORK2: NUM,CRO1, CRO2, ',WORK1,WORK2
  124. DO IE1=1,NPTO1
  125. WRITE(IOIMP,*)IE1,CRO(1,IE1),CRO(2,IE1)
  126. ENDDO
  127. ENDIF
  128.  
  129. C
  130. RETURN
  131. END
  132.  
  133.  
  134.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales