C DHVDP SOURCE CB215821 20/11/25 13:25:27 10792 SUBROUTINE DHVDP C C-------------------------------------------------------------------- C Enthalpie vapeur spécifique en fonction de P et de T: C dérivée partielle par rapport à la pression partielle de vapeur C C Dans le cas ou seule la pression est fournie, on considère que la C pression P transmise est Psat et on calcule Tsat afin d'évaluer C la fonction derivée C-------------------------------------------------------------------- C Les données d'entrée sont des CHPOINT, des FLOTTANT ou des LISTREEL C Le résultat est du meme type que les input. C-------------------------------------------------------------------- C C--------------------------- C Phrase d'appel (GIBIANE) : C--------------------------- C C OBJ3 = VARI 'DHVDP' OBJ1 (OBJ2) ; C C------------------------ C Opérandes et résultat : C------------------------ C C OBJ1 : Pression partielle de vapeur (en Pa) C OBJ2 : Température (en K) C OBJ3 : Dérivée partielle de l'enthalpie spécifique de la vapeur C par rapport à la pression partielle de vapeur(en J/kg/Pa) C (en J/kg/Pa) C---------------------- C Variables principales C---------------------- C C ISAT : Flag valant 0 si 2 arguments, 1 sinon (T=Tsat(P)) C C----------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) CHARACTER*8 TYPE CHARACTER*4 NOMTOT(1) C -INC SMCHPOI -INC SMLREEL C IFLAG = 0 ISAT = 0 C C- Lecture et controles des données d'entrée, C- Création de la structure chapeau pour la donnée de sortie C C- Gestion des ERREURS C 21 -> Données incompatibles C 19 -> Option indisponible C C CHPOINT C TYPE = 'CHPOINT ' CALL LIROBJ(TYPE,MCHPO1,0,IRETOU) IF (IRETOU.EQ.0) GOTO 10 CALL LIROBJ(TYPE,MCHPO2,0,IRETOU) IF (IRETOU.EQ.0) ISAT=1 C IF (ISAT.EQ.0) THEN SEGACT MCHPO1,MCHPO2 NSOUP1 = MCHPO1.IPCHP(/1) NSOUP2 = MCHPO2.IPCHP(/1) MSOUP1 = MCHPO1.IPCHP(1) MSOUP2 = MCHPO2.IPCHP(1) SEGACT MSOUP1,MSOUP2 NC1 = MSOUP1.NOHARM(/1) NC2 = MSOUP2.NOHARM(/1) IGEO1 = MSOUP1.IGEOC INDIC = 1 NBCOMP = -1 CALL QUEPOI(MCHPO2,IGEO1,INDIC,NBCOMP,NOMTOT) SEGACT MCHPO2,MSOUP2 MPOVA1 = MSOUP1.IPOVAL MPOVA2 = MSOUP2.IPOVAL SEGACT MPOVA1,MPOVA2 IF (NSOUP1.NE.NSOUP2) IFLAG=1 IF (NC1.NE.NC2) IFLAG=3 IF (NC1.NE.1) IFLAG=4 IF (INDIC.LT.0) IFLAG=5 IF (IFLAG.NE.0) THEN CALL ERREUR(21) RETURN ENDIF SEGINI, MCHPO3=MCHPO1 SEGINI, MSOUP3=MSOUP1 SEGINI, MPOVA3=MPOVA1 MCHPO3.IPCHP(1) = MSOUP3 MSOUP3.IPOVAL = MPOVA3 SEGDES MCHPO1,MCHPO2,MCHPO3,MSOUP1,MSOUP2,MSOUP3 CALL DHVDP1(MPOVA1,MPOVA2,MPOVA3,ISAT) SEGDES MPOVA1,MPOVA2,MPOVA3 ELSE SEGACT MCHPO1 NSOUP1 = MCHPO1.IPCHP(/1) MSOUP1 = MCHPO1.IPCHP(1) SEGACT MSOUP1 NC1 = MSOUP1.NOHARM(/1) MPOVA1 = MSOUP1.IPOVAL SEGACT MPOVA1 IF (NSOUP1.NE.1) IFLAG=2 IF (NC1.NE.1) IFLAG=4 IF (IFLAG.NE.0) THEN CALL ERREUR(21) RETURN ENDIF SEGINI, MCHPO3=MCHPO1 SEGINI, MSOUP3=MSOUP1 SEGINI, MPOVA3=MPOVA1 MCHPO3.IPCHP(1) = MSOUP3 MSOUP3.IPOVAL = MPOVA3 SEGDES MCHPO1,MCHPO3,MSOUP1,MSOUP3 MPOVA2 = -1 CALL DHVDP1(MPOVA1,MPOVA2,MPOVA3,ISAT) SEGDES MPOVA1,MPOVA3 ENDIF CALL ECROBJ(TYPE,MCHPO3) RETURN C C FLOTTANT C 10 CONTINUE CALL LIRREE(X1,0,IRETOU) IF (IRETOU.EQ.0) GOTO 20 CALL LIRREE(X2,0,IRETOU) IF (IRETOU.EQ.0) X2=TSATP0(X1) X3 = DHVDP0(X1,X2) CALL ECRREE(X3) RETURN C C LISTREEL C 20 CONTINUE TYPE = 'LISTREEL' CALL LIROBJ(TYPE,MLREE1,0,IRETOU) IF (IRETOU.EQ.0) GOTO 30 CALL LIROBJ(TYPE,MLREE2,0,IRETOU) IF (IRETOU.EQ.0) ISAT=1 IF (ISAT.EQ.0) THEN SEGACT MLREE1,MLREE2 JG1 = MLREE1.PROG(/1) JG2 = MLREE2.PROG(/1) IF (JG1.NE.JG2) IFLAG=1 IF (IFLAG.NE.0) THEN CALL ERREUR(21) RETURN ENDIF SEGINI, MLREE3=MLREE1 CALL DHVDP3(MLREE1,MLREE2,MLREE3,ISAT) SEGDES MLREE1,MLREE2,MLREE3 ELSE SEGACT MLREE1 SEGINI, MLREE3=MLREE1 MLREE2 = -1 CALL DHVDP3(MLREE1,MLREE2,MLREE3,ISAT) SEGDES MLREE1,MLREE3 ENDIF CALL ECROBJ(TYPE,MLREE3) RETURN C C Autres C 30 CONTINUE CALL ERREUR(19) RETURN END