Télécharger elpoel.eso

Retour à la liste

Numérotation des lignes :

elpoel
  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.  
  63. -INC PPARAM
  64. -INC CCOPTIO
  65. -INC SMELEME
  66. POINTEUR MCLAS.MELEME
  67. POINTEUR MCLPO1.MELEME
  68. POINTEUR MCENT.MELEME
  69. POINTEUR MELPOE.MELEME
  70. -INC SMLENTI
  71. POINTEUR PONBEL.MLENTI
  72. POINTEUR ELNBEL.MLENTI
  73. *
  74. * Segment MLELEM
  75. *
  76. SEGMENT MLELEM
  77. INTEGER INDEX(NBL+1)
  78. INTEGER LESPOI(NBTPOI)
  79. ENDSEGMENT
  80. *
  81. * LISTE SEQUENTIELLE INDEXEE D'ELEMENTS
  82. *
  83. * NBL : NOMBRE D'ELEMENTS
  84. * NBTPOI : NOMBRE TOTAL DE POINTS REFERENCEES
  85. * INDEX(I) : INDICE DU 1ER POINT DU IEME ELEMENT
  86. * DANS LE TABLEAU LESPOI
  87. * LESPOI(INDEX(I) -> INDEX(I+1)-1) : NUMERO DES NOEUDS
  88. * DU IEME ELEMENT
  89. *
  90. POINTEUR LEPOEL.MLELEM
  91. POINTEUR LEELEL.MLELEM
  92. INTEGER IMPR,IRET
  93. *
  94. * Executable statements
  95. *
  96. IMPR=IIMPI
  97. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans elpoel.eso'
  98. *
  99. * Pour dimensionner le tableau LESPOI et remplir le tableau
  100. * INDEX du segment LEPOEL (type MLELEM), on construit d'abord :
  101. * PONBEL(NOPOI1)
  102. * NOPOI1 : indice du point considéré dans MCLPO1
  103. * PONBEL(NOPOI1) : nombre d'éléments de MCLAS
  104. * contenant le point considéré
  105. *
  106. * In PONBEL : new temporary object PONBEL.MLENTI (SEGINI)
  107. *
  108. CALL POINBL(MCLAS,MCLPO1,
  109. $ PONBEL,IMPR,IRET)
  110. IF (IRET.NE.0) GOTO 9999
  111. *
  112. * On construit la liste séquentielle indexée d'éléments LEPOEL
  113. * (type MLELEM).
  114. * NOPOI1 : indice du point considéré dans MCLPO1
  115. * LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)) :
  116. * contient le numéro du point considéré
  117. * LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)+1 -> LEPOEL.INDEX(NOPOI1+1)-1) :
  118. * contient les numéro des points centre des éléments
  119. * contenant le point considéré (!)
  120. *
  121. * In POELEM : new temporary object LEPOEL.MLELEM (SEGINI)
  122. *
  123. CALL POELEM(MCLAS,MCLPO1,MCENT,PONBEL,
  124. $ LEPOEL,IMPR,IRET)
  125. IF (IRET.NE.0) GOTO 9999
  126. SEGSUP PONBEL
  127. *
  128. * On doit créer l'équivalent de PONBEL pour les centres
  129. * On construit ELNBEL(NOCENT)
  130. * NOCENT : indice du centre de l'élément considéré dans MCENT
  131. * ELNBEL(NOCENT) : nombre d'éléments partageant (au moins)
  132. * un point de MCLPO1 avec l'élément considéré.
  133. *
  134. * In ELENBL : SEGINI ELNBEL
  135. CALL ELENBL(MCLAS,MCLPO1,MCENT,LEPOEL,
  136. $ ELNBEL,IMPR,IRET)
  137. IF (IRET.NE.0) GOTO 9999
  138. *
  139. * On construit la liste séquentielle indexée d'éléments LEELEL
  140. * (type MLELEM).
  141. * NOCENT : indice du centre de l'élément considéré dans MCENT
  142. * LEELEL.LESPOI(LEELEL.INDEX(NOCENT)) :
  143. * contient le numéro du centre de l'élément considéré
  144. * LEELEL.LESPOI(LEPOEL.INDEX(NOCENT)+1 -> LEPOEL.INDEX(NOCENT+1)-1) :
  145. * contient les numéro des points centre des éléments
  146. * qui ont un point de MCLPO1 en commun avec l'élément
  147. * considéré (!)
  148. *
  149. * In ELELEM : new temporary object LEELEL.MLELEM (SEGINI)
  150. *
  151. CALL ELELEM(MCLAS,MCLPO1,MCENT,LEPOEL,ELNBEL,
  152. $ LEELEL,IMPR,IRET)
  153. IF (IRET.NE.0) GOTO 9999
  154. *
  155. * Quelques suppressions
  156. *
  157. SEGSUP ELNBEL
  158. SEGSUP LEPOEL
  159. *
  160. * A partir de LEELEL, on peut construire la structure MELEME
  161. * correspondante : elle est constituée d'éléments de type POLY.
  162. * En gros, on regroupe les éléments qui ont le meme nombre de points.
  163. *
  164. * In LE2MEL : new object MELPOE.MELEME (SEGINI-SEGDES)
  165. *
  166. CALL LE2MEL(LEELEL,
  167. $ MELPOE,IMPR,IRET)
  168. IF (IRET.NE.0) GOTO 9999
  169. *
  170. * Suppressions d'objets temporaires
  171. *
  172. SEGSUP LEELEL
  173. *
  174. * Normal termination
  175. *
  176. RETURN
  177. *
  178. * Format handling
  179. *
  180. 4000 FORMAT (A,'(1..',I8,')')
  181. 5000 FORMAT (8(1X,I8))
  182. *
  183. * Error handling
  184. *
  185. 9999 CONTINUE
  186. WRITE(IOIMP,*) 'An error was detected in subroutine elpoel'
  187. call erreur(21)
  188. MELPOE=0
  189. RETURN
  190. *
  191. * End of subroutine ELPOEL
  192. *
  193. END
  194.  
  195.  
  196.  
  197.  
  198.  

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