1 : C DRVDT SOURCE CHAT 05/01/12 22:56:09 5004 2 : SUBROUTINE DRVDT 3 : C 4 : C-------------------------------------------------------------------- 5 : C Densité de la vapeur d'eau en fonction de P et de T: 6 : C dérivée partielle par rapport à la température 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 dérivée partielle de la densité. 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 'DRVDT' 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 la densité de la vapeur d'eau 29 : C par rapport à la température (en kg/m3/K) 30 : C---------------------- 31 : C Variables principales 32 : C---------------------- 33 : C 34 : C ISAT : Flag valant 0 si 2 arguments, 1 sinon (T=Tsat(P)) 35 : C 36 : C----------------------------------------------------------------------- 37 : IMPLICIT INTEGER(I-N) 38 : IMPLICIT REAL*8 (A-H,O-Z) 39 : CHARACTER*8 TYPE 40 : CHARACTER*4 NOMTOT(1) 41 : C 42 : -INC SMCHPOI 43 : -INC SMLREEL 44 : C 45 : IFLAG = 0 46 : ISAT = 0 47 : C 48 : C- Lecture et controles des données d'entrée, 49 : C- Création de la structure chapeau pour la donnée de sortie 50 : C 51 : C- Gestion des ERREURS 52 : C 21 -> Données incompatibles 53 : C 19 -> Option indisponible 54 : C 55 : C CHPOINT 56 : C 57 : TYPE = 'CHPOINT ' 57 : CALL LIROBJ(TYPE,MCHPO1,0,IRETOU) 58 : 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 72 : CALL QUEPOI(MCHPO2,IGEO1,INDIC,NBCOMP,NOMTOT) 73 : SEGACT MCHPO2,MSOUP2 74 : MPOVA1 = MSOUP1.IPOVAL 75 : MPOVA2 = MSOUP2.IPOVAL 76 : SEGACT MPOVA1,MPOVA2 77 : IF (NSOUP1.NE.NSOUP2) IFLAG=1 78 : IF (NC1.NE.NC2) IFLAG=3 79 : IF (NC1.NE.1) IFLAG=4 80 : IF (INDIC.LT.0) IFLAG=5 81 : IF (IFLAG.NE.0) THEN 81 : CALL ERREUR(21) 82 : RETURN 83 : ENDIF 84 : SEGINI, MCHPO3=MCHPO1 85 : SEGINI, MSOUP3=MSOUP1 86 : SEGINI, MPOVA3=MPOVA1 87 : MCHPO3.IPCHP(1) = MSOUP3 88 : MSOUP3.IPOVAL = MPOVA3 89 : SEGDES MCHPO1,MCHPO2,MCHPO3,MSOUP1,MSOUP2,MSOUP3 89 : CALL DRVDT1(MPOVA1,MPOVA2,MPOVA3,ISAT) 90 : SEGDES MPOVA1,MPOVA2,MPOVA3 91 : ELSE 92 : SEGACT MCHPO1 93 : NSOUP1 = MCHPO1.IPCHP(/1) 94 : MSOUP1 = MCHPO1.IPCHP(1) 95 : SEGACT MSOUP1 96 : NC1 = MSOUP1.NOHARM(/1) 97 : MPOVA1 = MSOUP1.IPOVAL 98 : SEGACT MPOVA1 99 : IF (NSOUP1.NE.1) IFLAG=2 100 : IF (NC1.NE.1) IFLAG=4 101 : IF (IFLAG.NE.0) THEN 101 : CALL ERREUR(21) 102 : RETURN 103 : ENDIF 104 : SEGINI, MCHPO3=MCHPO1 105 : SEGINI, MSOUP3=MSOUP1 106 : SEGINI, MPOVA3=MPOVA1 107 : MCHPO3.IPCHP(1) = MSOUP3 108 : MSOUP3.IPOVAL = MPOVA3 109 : SEGDES MCHPO1,MCHPO3,MSOUP1,MSOUP3 110 : MPOVA2 = -1 110 : CALL DRVDT1(MPOVA1,MPOVA2,MPOVA3,ISAT) 111 : SEGDES MPOVA1,MPOVA3 112 : ENDIF 112 : CALL ECROBJ(TYPE,MCHPO3) 113 : RETURN 114 : C 115 : C FLOTTANT 116 : C 117 : 10 CONTINUE 117 : CALL LIRREE(X1,0,IRETOU) 118 : IF (IRETOU.EQ.0) GOTO 20 118 : CALL LIRREE(X2,0,IRETOU) 119 : IF (IRETOU.EQ.0) X2=TSATP0(X1) 120 : X3 = DRVDT0(X1,X2) 120 : CALL ECRREE(X3) 121 : RETURN 122 : C 123 : C LISTREEL 124 : C 125 : 20 CONTINUE 126 : TYPE = 'LISTREEL' 126 : CALL LIROBJ(TYPE,MLREE1,0,IRETOU) 127 : IF (IRETOU.EQ.0) GOTO 30 127 : CALL LIROBJ(TYPE,MLREE2,0,IRETOU) 128 : IF (IRETOU.EQ.0) ISAT=1 129 : IF (ISAT.EQ.0) THEN 130 : SEGACT MLREE1,MLREE2 131 : JG1 = MLREE1.PROG(/1) 132 : JG2 = MLREE2.PROG(/1) 133 : IF (JG1.NE.JG2) IFLAG=1 134 : IF (IFLAG.NE.0) THEN 134 : CALL ERREUR(21) 135 : RETURN 136 : ENDIF 137 : SEGINI, MLREE3=MLREE1 137 : CALL DRVDT3(MLREE1,MLREE2,MLREE3,ISAT) 138 : SEGDES MLREE1,MLREE2,MLREE3 139 : ELSE 140 : SEGACT MLREE1 141 : SEGINI, MLREE3=MLREE1 142 : MLREE2 = -1 142 : CALL DRVDT3(MLREE1,MLREE2,MLREE3,ISAT) 143 : SEGDES MLREE1,MLREE3 144 : ENDIF 144 : CALL ECROBJ(TYPE,MLREE3) 145 : RETURN 146 : C 147 : C Autres 148 : C 149 : 30 CONTINUE 149 : CALL ERREUR(19) 150 : RETURN 151 : END 152 : 153 : 154 :
© Cast3M 2003 - All rights reserved.
Disclaimer