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