Télécharger elpoel.eso

Retour à la liste

Numérotation des lignes :

  1. C ELPOEL SOURCE CHAT 06/03/29 21:20:10 5360
  2. SUBROUTINE ELPOEL(MCLAS,MCLPO1,MCENT,MELPOE)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C***********************************************************************
  6. C NOM : ELPOEL
  7. C DESCRIPTION : Construit le MELEME de correspondance
  8. C Elément-(Point)-Elément
  9. C Les éléments du MELEME sont de type POLY. Ils ont pour
  10. C premier point le point centre de l'élément considéré.
  11. C Les points suivants sont les points centre des éléments
  12. C qui ont un point de MCLPO1 en commun avec l'élément
  13. C considéré.
  14. C LANGAGE : ESOPE
  15. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF)
  16. C mél : gounand@semt2.smts.cea.fr
  17. C***********************************************************************
  18. C APPELES : POINBL : maillage de points -> LISTENTI de
  19. C nb d'éléments auxquels ils appartiennent
  20. C POELEM : maillage de points -> MLELEM contenant les
  21. C points et les centres d'éléments auxquels
  22. C ils appartiennent.
  23. C ELENBL : maillage de points -> LISTENTI de
  24. C nb d'éléments adjacents (ayant un
  25. C point du maillage de points en
  26. C commun) à des éléments repérés par
  27. C leur centre.
  28. C ELELEM : maillage de points -> MLELEM contenant
  29. C les centres des éléments, et, pour
  30. C chaque centre, les centres des éléments
  31. C adjacents.
  32. C LE2MEL : MLELEM (liste indexée d'éléments)
  33. C -> MELEME
  34. C APPELES (E/S) : -
  35. C APPELES (BLAS) : -
  36. C APPELES (CALCUL) : -
  37. C APPELE PAR : LEKTAB
  38. C***********************************************************************
  39. C SYNTAXE GIBIANE : -
  40. C ENTREES : MCLAS (type MELEME) : maillage de classe de
  41. C points (sommet, face) par
  42. C élément (MMAIL,ELTFA)
  43. C MCLPO1 (type MELEME) : maillage de points
  44. C correspondant à MCLAS
  45. C MCENT (type MELEME) : maillage des points
  46. C centre
  47. C ENTREES/SORTIES : -
  48. C SORTIES : MELPOE (type MELEME) : maillage de
  49. C connectivités
  50. C élément-(point)-élément
  51. C CODE RETOUR (IRET) : -
  52. C***********************************************************************
  53. C VERSION : v1, 08/10/98, version initiale
  54. C HISTORIQUE : v1, 08/10/98, création
  55. C HISTORIQUE :
  56. C HISTORIQUE :
  57. C***********************************************************************
  58. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  59. C en cas de modification de ce sous-programme afin de faciliter
  60. C la maintenance !
  61. C***********************************************************************
  62. -INC CCOPTIO
  63. -INC SMELEME
  64. POINTEUR MCLAS.MELEME
  65. POINTEUR MCLPO1.MELEME
  66. POINTEUR MCENT.MELEME
  67. POINTEUR MELPOE.MELEME
  68. -INC SMLENTI
  69. POINTEUR PONBEL.MLENTI
  70. POINTEUR ELNBEL.MLENTI
  71. *
  72. * Segment MLELEM
  73. *
  74. SEGMENT MLELEM
  75. INTEGER INDEX(NBL+1)
  76. INTEGER LESPOI(NBTPOI)
  77. ENDSEGMENT
  78. *
  79. * LISTE SEQUENTIELLE INDEXEE D'ELEMENTS
  80. *
  81. * NBL : NOMBRE D'ELEMENTS
  82. * NBTPOI : NOMBRE TOTAL DE POINTS REFERENCEES
  83. * INDEX(I) : INDICE DU 1ER POINT DU IEME ELEMENT
  84. * DANS LE TABLEAU LESPOI
  85. * LESPOI(INDEX(I) -> INDEX(I+1)-1) : NUMERO DES NOEUDS
  86. * DU IEME ELEMENT
  87. *
  88. POINTEUR LEPOEL.MLELEM
  89. POINTEUR LEELEL.MLELEM
  90. INTEGER IMPR,IRET
  91. *
  92. * Executable statements
  93. *
  94. IMPR=IIMPI
  95. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans elpoel.eso'
  96. *
  97. * Pour dimensionner le tableau LESPOI et remplir le tableau
  98. * INDEX du segment LEPOEL (type MLELEM), on construit d'abord :
  99. * PONBEL(NOPOI1)
  100. * NOPOI1 : indice du point considéré dans MCLPO1
  101. * PONBEL(NOPOI1) : nombre d'éléments de MCLAS
  102. * contenant le point considéré
  103. *
  104. * In PONBEL : new temporary object PONBEL.MLENTI (SEGINI)
  105. *
  106. CALL POINBL(MCLAS,MCLPO1,
  107. $ PONBEL,IMPR,IRET)
  108. IF (IRET.NE.0) GOTO 9999
  109. *
  110. * On construit la liste séquentielle indexée d'éléments LEPOEL
  111. * (type MLELEM).
  112. * NOPOI1 : indice du point considéré dans MCLPO1
  113. * LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)) :
  114. * contient le numéro du point considéré
  115. * LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)+1 -> LEPOEL.INDEX(NOPOI1+1)-1) :
  116. * contient les numéro des points centre des éléments
  117. * contenant le point considéré (!)
  118. *
  119. * In POELEM : new temporary object LEPOEL.MLELEM (SEGINI)
  120. *
  121. CALL POELEM(MCLAS,MCLPO1,MCENT,PONBEL,
  122. $ LEPOEL,IMPR,IRET)
  123. IF (IRET.NE.0) GOTO 9999
  124. SEGSUP PONBEL
  125. *
  126. * On doit créer l'équivalent de PONBEL pour les centres
  127. * On construit ELNBEL(NOCENT)
  128. * NOCENT : indice du centre de l'élément considéré dans MCENT
  129. * ELNBEL(NOCENT) : nombre d'éléments partageant (au moins)
  130. * un point de MCLPO1 avec l'élément considéré.
  131. *
  132. * In ELENBL : SEGINI ELNBEL
  133. CALL ELENBL(MCLAS,MCLPO1,MCENT,LEPOEL,
  134. $ ELNBEL,IMPR,IRET)
  135. IF (IRET.NE.0) GOTO 9999
  136. *
  137. * On construit la liste séquentielle indexée d'éléments LEELEL
  138. * (type MLELEM).
  139. * NOCENT : indice du centre de l'élément considéré dans MCENT
  140. * LEELEL.LESPOI(LEELEL.INDEX(NOCENT)) :
  141. * contient le numéro du centre de l'élément considéré
  142. * LEELEL.LESPOI(LEPOEL.INDEX(NOCENT)+1 -> LEPOEL.INDEX(NOCENT+1)-1) :
  143. * contient les numéro des points centre des éléments
  144. * qui ont un point de MCLPO1 en commun avec l'élément
  145. * considéré (!)
  146. *
  147. * In ELELEM : new temporary object LEELEL.MLELEM (SEGINI)
  148. *
  149. CALL ELELEM(MCLAS,MCLPO1,MCENT,LEPOEL,ELNBEL,
  150. $ LEELEL,IMPR,IRET)
  151. IF (IRET.NE.0) GOTO 9999
  152. *
  153. * Quelques suppressions
  154. *
  155. SEGSUP ELNBEL
  156. SEGSUP LEPOEL
  157. *
  158. * A partir de LEELEL, on peut construire la structure MELEME
  159. * correspondante : elle est constituée d'éléments de type POLY.
  160. * En gros, on regroupe les éléments qui ont le meme nombre de points.
  161. *
  162. * In LE2MEL : new object MELPOE.MELEME (SEGINI-SEGDES)
  163. *
  164. CALL LE2MEL(LEELEL,
  165. $ MELPOE,IMPR,IRET)
  166. IF (IRET.NE.0) GOTO 9999
  167. *
  168. * Suppressions d'objets temporaires
  169. *
  170. SEGSUP LEELEL
  171. *
  172. * Normal termination
  173. *
  174. RETURN
  175. *
  176. * Format handling
  177. *
  178. 4000 FORMAT (A,'(1..',I8,')')
  179. 5000 FORMAT (8(1X,I8))
  180. *
  181. * Error handling
  182. *
  183. 9999 CONTINUE
  184. WRITE(IOIMP,*) 'An error was detected in subroutine elpoel'
  185. call erreur(21)
  186. MELPOE=0
  187. RETURN
  188. *
  189. * End of subroutine ELPOEL
  190. *
  191. END
  192.  
  193.  
  194.  
  195.  
  196.  

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