C LBDALIQ   SOURCE    CB215821  20/11/25    13:33:29     10792          
      SUBROUTINE LBDALIQ
C
C--------------------------------------------------------------------
C Conductivité thermique de l'eau en fonction de P et de T
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 = LBDAW 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 : Conductivité thermique de l'eau (en W/m/K)
C
C-----------------------------------------------------------------------
C
C Langage : ESOPE + FORTRAN77
C Auteurs : F.DABBENE 2016/05
C
C-----------------------------------------------------------------------
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
      REAL*8 LBDALIQ0
      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
C     IF (IGEO1.NE.IGEO2) IFLAG=5
C     IF (N1.NE.N2) IFLAG=6
      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 LBDALIQ1(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 = LBDALIQ0(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 LBDALIQ3(MLREE1,MLREE2,MLREE3)
      SEGDES MLREE1,MLREE2,MLREE3
      CALL ECROBJ(TYPE,MLREE3)
      RETURN
C
C Autres
C
 30   CONTINUE
      CALL ERREUR(19)
      RETURN
      END


 
 
