Télécharger rlexvc.eso

Retour à la liste

Numérotation des lignes :

rlexvc
  1. C RLEXVC SOURCE OF166741 24/12/13 21:17:34 12097
  2. SUBROUTINE RLEXVC(MELEMM,MELCEN,MELSOM,MLELEM)
  3. C
  4. IMPLICIT INTEGER(I-N)
  5. INTEGER NSOMM, ICEN, NBSOUS, ISOUS, NBELEM, NBNO, IELEM, INOEU
  6. & , NLS1, NGS1, NGC, IPOS, NGC2
  7. C
  8. -INC SMELEME
  9. INTEGER JG
  10. -INC SMLENTI
  11.  
  12. -INC PPARAM
  13. -INC CCOPTIO
  14. C
  15. INTEGER NBL, NBTPOI
  16. SEGMENT MLELEM
  17. INTEGER INDEX(NBL+1)
  18. INTEGER LESPOI(NBTPOI)
  19. ENDSEGMENT
  20. C
  21. POINTEUR MELSOM.MELEME, MELEMM.MELEME, MELCEN.MELEME
  22. & ,MLESOM.MLENTI, MTOUC.MLENTI, MLEMAI.MLENTI
  23. C
  24. C**** Le MELEME SOMMET
  25. C
  26. CALL KRIPAD(MELSOM,MLESOM)
  27. C
  28. C MLESOM: numerotation globale -> locale
  29. C
  30. C**** En KRIPAD
  31. C SEGACT MELSOM
  32. C SEGINI MLESOM
  33. C
  34. NSOMM = MELSOM.NUM(/2)
  35. JG=NSOMM
  36. SEGINI MTOUC
  37. C MTOUC.LECT(NLS1) = estimation de nombre des centres voisins de
  38. C NLS1
  39. SEGACT MELEMM
  40. NBSOUS=MELEMM.LISOUS(/1)
  41. C NBSOUS=0 fait un peux chier!
  42. JG=MAX(NBSOUS,1)
  43. SEGINI MLEMAI
  44. IF(NBSOUS .EQ. 0)THEN
  45. MLEMAI.LECT(1)=MELEMM
  46. ELSE
  47. DO ISOUS=1,NBSOUS,1
  48. MLEMAI.LECT(ISOUS)=MELEMM.LISOUS(ISOUS)
  49. ENDDO
  50. ENDIF
  51. SEGDES MELEMM
  52. C
  53. C**** Combien de fois chaque sommet est touché par un centre?
  54. C
  55. NBSOUS=JG
  56. NBTPOI=0
  57. DO ISOUS = 1, NBSOUS, 1
  58. MELEMM=MLEMAI.LECT(ISOUS)
  59. SEGACT MELEMM
  60. NBELEM=MELEMM.NUM(/2)
  61. NBNO=MELEMM.NUM(/1)
  62. DO IELEM = 1, NBELEM,1
  63. DO INOEU = 1, NBNO, 1
  64. NGS1 = MELEMM.NUM(INOEU,IELEM)
  65. NLS1 = MLESOM.LECT(NGS1)
  66. MTOUC.LECT(NLS1)=MTOUC.LECT(NLS1)+1
  67. NBTPOI=NBTPOI+1
  68. ENDDO
  69. ENDDO
  70. ENDDO
  71. C
  72. NBL=NSOMM
  73. NBTPOI=NBTPOI+NSOMM
  74. SEGINI MLELEM
  75. C
  76. C**** Les sommets dedans MLELEM dans le meme ordre que dedans MLESOM
  77. C
  78. MLELEM.INDEX(1)=1
  79. DO IELEM=1, NBL, 1
  80. MLELEM.LESPOI(MLELEM.INDEX(IELEM))=MELSOM.NUM(1,IELEM)
  81. MLELEM.INDEX(IELEM+1)=MLELEM.INDEX(IELEM)+1+MTOUC.LECT(IELEM)
  82. MTOUC.LECT(IELEM)=0
  83. ENDDO
  84. C
  85. C**** MTOUC.LECT(IELEM)=0 \forall IELEM
  86. C
  87. ICEN = 0
  88. SEGACT MELCEN
  89. DO ISOUS = 1, NBSOUS, 1
  90. MELEMM=MLEMAI.LECT(ISOUS)
  91. NBELEM=MELEMM.NUM(/2)
  92. NBNO=MELEMM.NUM(/1)
  93. DO IELEM = 1, NBELEM,1
  94. ICEN=ICEN+1
  95. NGC=MELCEN.NUM(1,ICEN)
  96. DO INOEU = 1, NBNO, 1
  97. NGS1 = MELEMM.NUM(INOEU,IELEM)
  98. NLS1 = MLESOM.LECT(NGS1)
  99. MTOUC.LECT(NLS1)=MTOUC.LECT(NLS1)+1
  100. IPOS = MLELEM.INDEX(NLS1)+MTOUC.LECT(NLS1)
  101. NGC2 = MLELEM.LESPOI(IPOS)
  102. IF(NGC2 .NE. 0)THEN
  103. WRITE(IOIMP,*) 'Subroutine rlexvc.eso'
  104. CALL ERREUR(5)
  105. GOTO 9999
  106. ELSE
  107. MLELEM.LESPOI(IPOS)=NGC
  108. ENDIF
  109. ENDDO
  110. ENDDO
  111. SEGDES MELEMM
  112. ENDDO
  113. C
  114. SEGDES MLELEM
  115. SEGDES MELCEN
  116. SEGDES MELSOM
  117. SEGSUP MTOUC
  118. SEGSUP MLESOM
  119. SEGSUP MLEMAI
  120. C
  121. 9999 RETURN
  122. END
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  

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