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 ' 55 : CALL LIROBJ(TYPE,MCHPO1,0,IRETOU) 56 : IF (IRETOU.EQ.0) GOTO 10 56 : CALL LIROBJ(TYPE,MCHPO2,0,IRETOU) 57 : IF (IRETOU.EQ.0) ISAT=1 58 : C 59 : IF (ISAT.EQ.0) THEN 60 : SEGACT MCHPO1,MCHPO2 61 : NSOUP1 = MCHPO1.IPCHP(/1) 62 : NSOUP2 = MCHPO2.IPCHP(/1) 63 : MSOUP1 = MCHPO1.IPCHP(1) 64 : MSOUP2 = MCHPO2.IPCHP(1) 65 : SEGACT MSOUP1,MSOUP2 66 : NC1 = MSOUP1.NOHARM(/1) 67 : NC2 = MSOUP2.NOHARM(/1) 68 : IGEO1 = MSOUP1.IGEOC 69 : INDIC = 1 70 : NBCOMP = -1 70 : CALL QUEPOI(MCHPO2,IGEO1,INDIC,NBCOMP,NOMTOT) 71 : SEGACT MCHPO2,MSOUP2 72 : MPOVA1 = MSOUP1.IPOVAL 73 : MPOVA2 = MSOUP2.IPOVAL 74 : SEGACT MPOVA1,MPOVA2 75 : IF (NSOUP1.NE.NSOUP2) IFLAG=1 76 : IF (NC1.NE.NC2) IFLAG=3 77 : IF (NC1.NE.1) IFLAG=4 78 : IF (INDIC.LT.0) IFLAG=5 79 : IF (IFLAG.NE.0) THEN 79 : CALL ERREUR(21) 80 : RETURN 81 : ENDIF 82 : SEGINI, MCHPO3=MCHPO1 83 : SEGINI, MSOUP3=MSOUP1 84 : SEGINI, MPOVA3=MPOVA1 85 : MCHPO3.IPCHP(1) = MSOUP3 86 : MSOUP3.IPOVAL = MPOVA3 87 : SEGDES MCHPO1,MCHPO2,MCHPO3,MSOUP1,MSOUP2,MSOUP3 87 : CALL HVS1(MPOVA1,MPOVA2,MPOVA3,ISAT) 88 : SEGDES MPOVA1,MPOVA2,MPOVA3 89 : ELSE 90 : SEGACT MCHPO1 91 : NSOUP1 = MCHPO1.IPCHP(/1) 92 : MSOUP1 = MCHPO1.IPCHP(1) 93 : SEGACT MSOUP1 94 : NC1 = MSOUP1.NOHARM(/1) 95 : MPOVA1 = MSOUP1.IPOVAL 96 : SEGACT MPOVA1 97 : IF (NSOUP1.NE.1) IFLAG=2 98 : IF (NC1.NE.1) IFLAG=4 99 : IF (IFLAG.NE.0) THEN 99 : CALL ERREUR(21) 100 : RETURN 101 : ENDIF 102 : SEGINI, MCHPO3=MCHPO1 103 : SEGINI, MSOUP3=MSOUP1 104 : SEGINI, MPOVA3=MPOVA1 105 : MCHPO3.IPCHP(1) = MSOUP3 106 : MSOUP3.IPOVAL = MPOVA3 107 : SEGDES MCHPO1,MCHPO3,MSOUP1,MSOUP3 108 : MPOVA2 = -1 108 : CALL HVS1(MPOVA1,MPOVA2,MPOVA3,ISAT) 109 : SEGDES MPOVA1,MPOVA3 110 : ENDIF 110 : CALL ECROBJ(TYPE,MCHPO3) 111 : RETURN 112 : C 113 : C FLOTTANT 114 : C 115 : 10 CONTINUE 115 : CALL LIRREE(X1,0,IRETOU) 116 : IF (IRETOU.EQ.0) GOTO 20 116 : CALL LIRREE(X2,0,IRETOU) 117 : IF (IRETOU.EQ.0) X2=TSATP0(X1) 118 : X3 = HVS0(X1,X2) 118 : CALL ECRREE(X3) 119 : RETURN 120 : C 121 : C LISTREEL 122 : C 123 : 20 CONTINUE 124 : TYPE = 'LISTREEL' 124 : CALL LIROBJ(TYPE,MLREE1,0,IRETOU) 125 : IF (IRETOU.EQ.0) GOTO 30 125 : CALL LIROBJ(TYPE,MLREE2,0,IRETOU) 126 : IF (IRETOU.EQ.0) ISAT=1 127 : IF (ISAT.EQ.0) THEN 128 : SEGACT MLREE1,MLREE2 129 : JG1 = MLREE1.PROG(/1) 130 : JG2 = MLREE2.PROG(/1) 131 : IF (JG1.NE.JG2) IFLAG=1 132 : IF (IFLAG.NE.0) THEN 132 : CALL ERREUR(21) 133 : RETURN 134 : ENDIF 135 : SEGINI, MLREE3=MLREE1 135 : CALL HVS3(MLREE1,MLREE2,MLREE3,ISAT) 136 : SEGDES MLREE1,MLREE2,MLREE3 137 : ELSE 138 : SEGACT MLREE1 139 : SEGINI, MLREE3=MLREE1 140 : MLREE2 = -1 140 : CALL HVS3(MLREE1,MLREE2,MLREE3,ISAT) 141 : SEGDES MLREE1,MLREE3 142 : ENDIF 142 : CALL ECROBJ(TYPE,MLREE3) 143 : RETURN 144 : C 145 : C Autres 146 : C 147 : 30 CONTINUE 147 : CALL ERREUR(19) 148 : RETURN 149 : END 150 : 151 :
© Cast3M 2003 - All rights reserved.
Disclaimer