Télécharger extr25.eso

Retour à la liste

Numérotation des lignes :

extr25
  1. C EXTR25 SOURCE FD218221 25/12/14 21:15:01 12423
  2. SUBROUTINE EXTR25(MCHEL1,MOT,ILIST,IRET)
  3. C
  4. C Extrait les valeurs d'une composante d'un MCHAML et les range dans
  5. C - un LISTREEL si la composante est de type REAL*8
  6. C - un LISTENTI si la composante est de type POINTEUR
  7. C
  8. C Entrees :
  9. C ---------
  10. C
  11. C MCHEL1 Pointeur sur un MCHAML
  12. C MOT Nom de la composante a extraire
  13. C
  14. C Sorties :
  15. C ---------
  16. C
  17. C ILIST Pointeur sur un LISTREEL ou LISTENTI
  18. C IRET = 0 si ILIST correspond a un LISTREEL
  19. C = 1 si ILIST correspond a un LISTENTI
  20. C
  21.  
  22.  
  23. C Typages implicites habituels
  24. IMPLICIT INTEGER(I-N)
  25. IMPLICIT REAL*8(A-H,O-Z)
  26.  
  27.  
  28. C Les includes necessaires
  29. -INC PPARAM
  30. -INC SMLREEL
  31. -INC SMCHAML
  32. -INC SMINTE
  33. -INC SMELEME
  34. -INC SMLENTI
  35.  
  36.  
  37. C Type de certains objets
  38. CHARACTER*(LOCOMP) MOT,TYC
  39. LOGICAL LREAL
  40.  
  41. C LRELA indique si l'on doit faire un LISTREEL (.TRUE.) ou
  42. C un LISTENTI (.FALSE.)
  43. LREAL=.TRUE.
  44.  
  45. C Initialisation de la liste resultat
  46. C On suppose que ce sera un LISTREEL pour le moment
  47. JG=0
  48. SEGINI MLREE1
  49.  
  50. C Nombre de valeurs de la liste
  51. IV=0
  52.  
  53. C Boucle sur les sous zones
  54. NSZ=MCHEL1.IMACHE(/1)
  55. DO I=1,NSZ
  56. IPT1=MCHEL1.IMACHE(I)
  57. MCHAM1=MCHEL1.ICHAML(I)
  58. MINTE1=MCHEL1.INFCHE(I,4)
  59. NBPSUP=MINTE1.POIGAU(/1)
  60. IF (NBPSUP.EQ.0) NBPSUP=IPT1.NUM(/1)
  61. C Type de la 1ere composante
  62. TYC=MCHAM1.TYPCHE(1)
  63. C Si composante non reele, on initialise un LISTENTI
  64. IF ((LREAL).AND.(TYC.NE.'REAL*8 ')) THEN
  65. LREAL=.FALSE.
  66. JG=0
  67. SEGINI MLENT1
  68. ENDIF
  69. C Boucle sur les composantes
  70. NCO=MCHAM1.IELVAL(/1)
  71. DO J=1,NCO
  72. C On ne travaille que sur la composante MOT
  73. IF (MCHAM1.NOMCHE(J).EQ.MOT) THEN
  74. C Tableau des valeurs de la composante MOT
  75. MELVA1=MCHAM1.IELVAL(J)
  76. C Nombre d'elements du maillage
  77. NEL=IPT1.NUM(/2)
  78. C Dimensions du tableau VELCHE
  79. IF (LREAL) THEN
  80. NP=MELVA1.VELCHE(/1)
  81. NE=MELVA1.VELCHE(/2)
  82. ELSE
  83. NP=MELVA1.IELCHE(/1)
  84. NE=MELVA1.IELCHE(/2)
  85. ENDIF
  86. C Ajustement de la liste selon ce tableau VELCHE
  87. JG=IV+(NEL*NBPSUP)
  88. IF (LREAL) THEN
  89. SEGADJ MLREE1
  90. ELSE
  91. SEGADJ MLENT1
  92. ENDIF
  93. C Boucle sur les elements
  94. DO K=1,NEL
  95. KK=K
  96. C Champ uniforme dans le maillage ?
  97. IF ((NP.EQ.1).AND.(NE.EQ.1)) KK=1
  98. C Boucle sur les points supports
  99. DO L=1,NBPSUP
  100. LL=L
  101. C Champ uniforme dans l'element ?
  102. IF (NP.EQ.1) LL=1
  103. C Remplissage de la liste
  104. IF (LREAL) THEN
  105. XVAL=MELVA1.VELCHE(LL,KK)
  106. IV=IV+1
  107. MLREE1.PROG(IV)=XVAL
  108. ELSE
  109. IVAL=MELVA1.IELCHE(LL,KK)
  110. IV=IV+1
  111. MLENT1.LECT(IV)=IVAL
  112. ENDIF
  113. ENDDO
  114. ENDDO
  115. ENDIF
  116. ENDDO
  117. ENDDO
  118.  
  119. C Renommage des sorties
  120. IF (LREAL) THEN
  121. IRET=0
  122. ILIST=MLREE1
  123. ELSE
  124. SEGSUP MLREE1
  125. IRET=1
  126. ILIST=MLENT1
  127. ENDIF
  128. RETURN
  129.  
  130. END
  131.  
  132.  
  133.  

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