Télécharger poiele.eso

Retour à la liste

Numérotation des lignes :

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

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