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. -INC CCOPTIO
  52. -INC SMELEME
  53. POINTEUR MCLAS.MELEME
  54. POINTEUR MCLPO1.MELEME
  55. POINTEUR MCENT.MELEME
  56. POINTEUR MPOIEL.MELEME
  57. -INC SMLENTI
  58. POINTEUR PONBEL.MLENTI
  59. *
  60. * Segment MLELEM
  61. *
  62. SEGMENT MLELEM
  63. INTEGER INDEX(NBL+1)
  64. INTEGER LESPOI(NBTPOI)
  65. ENDSEGMENT
  66. *
  67. * LISTE SEQUENTIELLE INDEXEE D'ELEMENTS
  68. *
  69. * NBL : NOMBRE D'ELEMENTS
  70. * NBTPOI : NOMBRE TOTAL DE POINTS REFERENCEES
  71. * INDEX(I) : INDICE DU 1ER POINT DU IEME ELEMENT
  72. * DANS LE TABLEAU LESPOI
  73. * LESPOI(INDEX(I) -> INDEX(I+1)-1) : NUMERO DES NOEUDS
  74. * DU IEME ELEMENT
  75. *
  76. POINTEUR LEPOEL.MLELEM
  77. INTEGER IMPR,IRET
  78. *
  79. * Executable statements
  80. *
  81. IMPR=IIMPI
  82. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans poiele.eso'
  83. *
  84. * Pour dimensionner le tableau LESPOI et remplir le tableau
  85. * INDEX du segment LEPOEL (type MLELEM), on construit d'abord :
  86. * PONBEL(NOPOI1)
  87. * NOPOI1 : indice du point considéré dans MCLPO1
  88. * PONBEL(NOPOI1) : nombre d'éléments contenant le point considéré
  89. *
  90. * In PONBEL : new temporary object PONBEL.MLENTI (SEGINI)
  91. *
  92. CALL POINBL(MCLAS,MCLPO1,
  93. $ PONBEL,IMPR,IRET)
  94. IF (IRET.NE.0) GOTO 9999
  95. *
  96. * On construit la liste séquentielle indexée d'éléments LEPOEL.
  97. * NOPOI1 : indice du point considéré dans MCLPO1
  98. * LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)) :
  99. * contient le numéro du point considéré
  100. * LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)+1 -> LEPOEL.INDEX(NOPOI1+1)-1) :
  101. * contient les numéro des points centre des éléments
  102. * contenant le point considéré (!)
  103. *
  104. * In POELEM : new temporary object LEPOEL.MLELEM (SEGINI)
  105. *
  106. CALL POELEM(MCLAS,MCLPO1,MCENT,PONBEL,
  107. $ LEPOEL,IMPR,IRET)
  108. IF (IRET.NE.0) GOTO 9999
  109. SEGSUP PONBEL
  110. *
  111. * A partir de LEPOEL, on peut construire la structure MELEME
  112. * correspondante : elle est constituée d'éléments de type POLY.
  113. * En gros, on regroupe les éléments qui ont le meme nombre de points.
  114. *
  115. * In LE2MEL : new object MPOIEL.MELEME (SEGINI-SEGDES)
  116. *
  117. CALL LE2MEL(LEPOEL,
  118. $ MPOIEL,IMPR,IRET)
  119. IF (IRET.NE.0) GOTO 9999
  120. *
  121. * Suppressions d'objets temporaires
  122. *
  123. SEGSUP LEPOEL
  124. *
  125. * Normal termination
  126. *
  127. RETURN
  128. *
  129. * Format handling
  130. *
  131. 4000 FORMAT (A,'(1..',I8,')')
  132. 5000 FORMAT (8(1X,I8))
  133. *
  134. * Error handling
  135. *
  136. 9999 CONTINUE
  137. WRITE(IOIMP,*) 'An error was detected in subroutine poiele'
  138. MPOIEL=0
  139. call erreur(5)
  140. RETURN
  141. *
  142. * End of subroutine POIELE
  143. *
  144. END
  145.  
  146.  
  147.  
  148.  
  149.  

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