C DZVDT     SOURCE    CB215821  20/11/25    13:26:43     10792          
      SUBROUTINE DZVDT
C
C---------------------------------------------------------------------
C Correction gaz reel de la loi d'état en vapeur (issue de RALOC):
C derivee partielle de Z par rapport a la temperature
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 'DZVDT' OBJ1 OBJ2 ;
C
C------------------------
C Opérandes et résultat :
C------------------------
C
C  OBJ1 : Densité de vapeur (en kg/m3)
C  OBJ2 : Température (en K)
C  OBJ3 : Correction gaz reel de la vapeur (p = ro R Z T)
C         D/DT(ZVAP)(P,T)    (en /K)
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
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,1,IRETOU)
      IF (IRETOU.EQ.0) RETURN
C
      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
      IGEO2  = MSOUP2.IGEOC
      INDIC  =  1
      NBCOMP = -1
      CALL QUEPOI(MCHPO2,IGEO1,INDIC,NBCOMP,NOMTOT)
      SEGACT MCHPO2,MSOUP2
      MPOVA1 = MSOUP1.IPOVAL
      MPOVA2 = MSOUP2.IPOVAL
      SEGACT MPOVA1,MPOVA2
      N1     = MPOVA1.VPOCHA(/1)
      N2     = MPOVA2.VPOCHA(/1)
C
      IF (NSOUP1.NE.NSOUP2) IFLAG=1
      IF (NSOUP1.NE.1) IFLAG=2
      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
C
      SEGINI, MCHPO3=MCHPO1
      SEGINI, MSOUP3=MSOUP1
      SEGINI, MPOVA3=MPOVA1
      MCHPO3.IPCHP(1) = MSOUP3
      MSOUP3.IPOVAL = MPOVA3
      SEGDES MCHPO1,MCHPO2,MCHPO3,MSOUP1,MSOUP2,MSOUP3
      CALL DZVDT1(MPOVA1,MPOVA2,MPOVA3)
      SEGDES MPOVA1,MPOVA2,MPOVA3
      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,1,IRETOU)
      IF (IRETOU.EQ.0) RETURN
      X3 = DZVDT0(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,1,IRETOU)
      IF (IRETOU.EQ.0) RETURN
      MLREE3 = 0
      IFLAG  = 0
      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 DZVDT3(MLREE1,MLREE2,MLREE3)
      SEGDES MLREE1,MLREE2,MLREE3
      CALL ECROBJ(TYPE,MLREE3)
      RETURN
C
C Autres
C
 30   CONTINUE
      CALL ERREUR(19)
      RETURN
      END



 
