Télécharger hvs.eso

Retour à la liste

Numérotation des lignes :

  1. C HVS SOURCE CHAT 05/01/13 00:27:18 5004
  2. SUBROUTINE HVS
  3. C
  4. C--------------------------------------------------------------------
  5. C Enthalpie vapeur spécifique en fonction de P et de T
  6. C Dans le cas ou seule la pression est fournie, on considère que la
  7. C pression P transmise est Psat et on calcule Tsat afin d'évaluer
  8. C l'enthalpie vapeur spécifique à saturation.
  9. C--------------------------------------------------------------------
  10. C Les données d'entrée sont des CHPOINT, des FLOTTANT ou des LISTREEL
  11. C Le résultat est du meme type que les input.
  12. C--------------------------------------------------------------------
  13. C
  14. C---------------------------
  15. C Phrase d'appel (GIBIANE) :
  16. C---------------------------
  17. C
  18. C OBJ3 = HVS OBJ1 (OBJ2) ;
  19. C
  20. C------------------------
  21. C Opérandes et résultat :
  22. C------------------------
  23. C
  24. C OBJ1 : Pression partielle de vapeur (en Pa)
  25. C OBJ2 : Température (en K)
  26. C OBJ3 : Enthalpie spécifique vapeur (en J/kg)
  27. C
  28. C----------------------
  29. C Variables principales
  30. C----------------------
  31. C
  32. C ISAT : Flag valant 0 si Hvap(P,T), 1 si Hvap(P,Tsat(P))
  33. C
  34. C-----------------------------------------------------------------------
  35. IMPLICIT INTEGER(I-N)
  36. IMPLICIT REAL*8 (A-H,O-Z)
  37. CHARACTER*8 TYPE
  38. CHARACTER*4 NOMTOT(1)
  39. C
  40. -INC SMCHPOI
  41. -INC SMLREEL
  42. C
  43. IFLAG = 0
  44. ISAT = 0
  45. C
  46. C- Lecture et controles des données d'entrée,
  47. C- Création de la structure chapeau pour la donnée de sortie
  48. C
  49. C- Gestion des ERREURS
  50. C 21 -> Données incompatibles
  51. C 19 -> Option indisponible
  52. C
  53. C CHPOINT
  54. C
  55. TYPE = 'CHPOINT '
  56. CALL LIROBJ(TYPE,MCHPO1,0,IRETOU)
  57. IF (IRETOU.EQ.0) GOTO 10
  58. CALL LIROBJ(TYPE,MCHPO2,0,IRETOU)
  59. IF (IRETOU.EQ.0) ISAT=1
  60. C
  61. IF (ISAT.EQ.0) THEN
  62. SEGACT MCHPO1,MCHPO2
  63. NSOUP1 = MCHPO1.IPCHP(/1)
  64. NSOUP2 = MCHPO2.IPCHP(/1)
  65. MSOUP1 = MCHPO1.IPCHP(1)
  66. MSOUP2 = MCHPO2.IPCHP(1)
  67. SEGACT MSOUP1,MSOUP2
  68. NC1 = MSOUP1.NOHARM(/1)
  69. NC2 = MSOUP2.NOHARM(/1)
  70. IGEO1 = MSOUP1.IGEOC
  71. INDIC = 1
  72. NBCOMP = -1
  73. CALL QUEPOI(MCHPO2,IGEO1,INDIC,NBCOMP,NOMTOT)
  74. SEGACT MCHPO2,MSOUP2
  75. MPOVA1 = MSOUP1.IPOVAL
  76. MPOVA2 = MSOUP2.IPOVAL
  77. SEGACT MPOVA1,MPOVA2
  78. IF (NSOUP1.NE.NSOUP2) IFLAG=1
  79. IF (NC1.NE.NC2) IFLAG=3
  80. IF (NC1.NE.1) IFLAG=4
  81. IF (INDIC.LT.0) IFLAG=5
  82. IF (IFLAG.NE.0) THEN
  83. CALL ERREUR(21)
  84. RETURN
  85. ENDIF
  86. SEGINI, MCHPO3=MCHPO1
  87. SEGINI, MSOUP3=MSOUP1
  88. SEGINI, MPOVA3=MPOVA1
  89. MCHPO3.IPCHP(1) = MSOUP3
  90. MSOUP3.IPOVAL = MPOVA3
  91. SEGDES MCHPO1,MCHPO2,MCHPO3,MSOUP1,MSOUP2,MSOUP3
  92. CALL HVS1(MPOVA1,MPOVA2,MPOVA3,ISAT)
  93. SEGDES MPOVA1,MPOVA2,MPOVA3
  94. ELSE
  95. SEGACT MCHPO1
  96. NSOUP1 = MCHPO1.IPCHP(/1)
  97. MSOUP1 = MCHPO1.IPCHP(1)
  98. SEGACT MSOUP1
  99. NC1 = MSOUP1.NOHARM(/1)
  100. MPOVA1 = MSOUP1.IPOVAL
  101. SEGACT MPOVA1
  102. IF (NSOUP1.NE.1) IFLAG=2
  103. IF (NC1.NE.1) IFLAG=4
  104. IF (IFLAG.NE.0) THEN
  105. CALL ERREUR(21)
  106. RETURN
  107. ENDIF
  108. SEGINI, MCHPO3=MCHPO1
  109. SEGINI, MSOUP3=MSOUP1
  110. SEGINI, MPOVA3=MPOVA1
  111. MCHPO3.IPCHP(1) = MSOUP3
  112. MSOUP3.IPOVAL = MPOVA3
  113. SEGDES MCHPO1,MCHPO3,MSOUP1,MSOUP3
  114. MPOVA2 = -1
  115. CALL HVS1(MPOVA1,MPOVA2,MPOVA3,ISAT)
  116. SEGDES MPOVA1,MPOVA3
  117. ENDIF
  118. CALL ECROBJ(TYPE,MCHPO3)
  119. RETURN
  120. C
  121. C FLOTTANT
  122. C
  123. 10 CONTINUE
  124. CALL LIRREE(X1,0,IRETOU)
  125. IF (IRETOU.EQ.0) GOTO 20
  126. CALL LIRREE(X2,0,IRETOU)
  127. IF (IRETOU.EQ.0) X2=TSATP0(X1)
  128. X3 = HVS0(X1,X2)
  129. CALL ECRREE(X3)
  130. RETURN
  131. C
  132. C LISTREEL
  133. C
  134. 20 CONTINUE
  135. TYPE = 'LISTREEL'
  136. CALL LIROBJ(TYPE,MLREE1,0,IRETOU)
  137. IF (IRETOU.EQ.0) GOTO 30
  138. CALL LIROBJ(TYPE,MLREE2,0,IRETOU)
  139. IF (IRETOU.EQ.0) ISAT=1
  140. IF (ISAT.EQ.0) THEN
  141. SEGACT MLREE1,MLREE2
  142. JG1 = MLREE1.PROG(/1)
  143. JG2 = MLREE2.PROG(/1)
  144. IF (JG1.NE.JG2) IFLAG=1
  145. IF (IFLAG.NE.0) THEN
  146. CALL ERREUR(21)
  147. RETURN
  148. ENDIF
  149. SEGINI, MLREE3=MLREE1
  150. CALL HVS3(MLREE1,MLREE2,MLREE3,ISAT)
  151. SEGDES MLREE1,MLREE2,MLREE3
  152. ELSE
  153. SEGACT MLREE1
  154. SEGINI, MLREE3=MLREE1
  155. MLREE2 = -1
  156. CALL HVS3(MLREE1,MLREE2,MLREE3,ISAT)
  157. SEGDES MLREE1,MLREE3
  158. ENDIF
  159. CALL ECROBJ(TYPE,MLREE3)
  160. RETURN
  161. C
  162. C Autres
  163. C
  164. 30 CONTINUE
  165. CALL ERREUR(19)
  166. RETURN
  167. END
  168.  
  169.  
  170.  

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