C VLHJ5     SOURCE    CHAT      05/01/13    04:08:01     5004
      SUBROUTINE VLHJ5(RHO,UX,UY,UZ,P,RHOET,GAM,CNX,CNY,CNZ,
     &     CT1X,CT1Y,CT1Z,CT2X,CT2Y,CT2Z,
     &     DFRO,DFRUN,DFRUT1,DFRUT2,DFRET)
C************************************************************************
C
C PROJET            :  CASTEM 2000
C
C NOM               :  VLHJ5
C
C DESCRIPTION       :  Calcul du Jacobien du flux numerique VLH
C                      3D monoespece.
C                      Contribution de l'onde de gauche à droite
C                      Voir VLHJ4
C
C LANGAGE           :  FORTRAN 77
C
C AUTEUR            :  A. BECCANTINI SFME/LTMF
C
C************************************************************************
C
C APPELES           :  MPFUNT
C
C************************************************************************
C
C**** Entrées:
C
C     RHO          =  densité
C
C     UX, UY, UZ   =  vitesse
C
C     P            =  pression
C
C     RHOET        =  rho * (ein + ecin)
C
C     GAM          =  le "gamma"
C
C     CNX,  CNY,  CNZ =  normale à la face
C
C     CT1X, CT1Y, CT1Z
C     CT2X, CT2Y, CT2Z=  tangentes à la face (T1,T2)
C
C
C**** Sorties:
C
C     DFRO(5)  = derivés partielles de F_RHO+ par raport a RHO, UX,
C                UY, UZ, P
C
C     DFRUN(5) = derivés partielles de F_RHOUN+ par raport a RHO, UX,
C                UY, UZ, P
C
C     DFRUT1(5)= derivés partielles de F_RHOUT1+ par raport a RHO, UX,
C                UY, UZ, P
C
C     DFRUT2(5)= derivés partielles de F_RHOUT2+ par raport a RHO, UX,
C                UY, UZ, P
C
C     DFRET(5) = derivés partielles de F_RHOET+ par raport a RHO,
C                UX, UY, UZ, P
C
C************************************************************************
C
C HISTORIQUE (Anomalies et modifications éventuelles)
C
C HISTORIQUE :  Créé le 23/07/01
C
C************************************************************************
C
C N.B.: Toutes les variables sont declarées explicitement
C
C
      IMPLICIT INTEGER(I-N)
      REAL*8 RHO,UX,UY,UZ,P,RHOET,GAM,CNX,CNY,CNZ
     &     ,CT1X,CT1Y,CT1Z,CT2X,CT2Y,CT2Z
     &     ,DFRO(5),DFRUN(5),DFRUT1(5),DFRUT2(5),DFRET(5)
     &     ,UN,UT1,UT2,CSON2,CSON,HT
     &     ,MACH,MNUM,DERMNU,PNUM,DERPNU
     &     ,CELL, FRHO
C
      UN = UX * CNX + UY * CNY + UZ * CNZ
      UT1 = UX * CT1X + UY * CT1Y + UZ * CT1Z
      UT2 = UX * CT2X + UY * CT2Y + UZ * CT2Z
      CSON2 = GAM * P / RHO
      CSON = SQRT(CSON2)
      MACH = UN / CSON
      HT = (RHOET + P) / RHO
      CALL MPFUNT(MACH,MNUM,DERMNU,PNUM,DERPNU)
C
      FRHO = MNUM * RHO * CSON
C
      DFRO(1) = ((DERMNU * UN) + (MNUM * CSON))  / 2.0D0
      DFRO(2) = DERMNU * RHO * CNX
      DFRO(3) = DERMNU * RHO * CNY
      DFRO(4) = DERMNU * RHO * CNZ
      DFRO(5) = (MNUM - DERMNU * MACH) * RHO * CSON / (2.0D0 * P)
C
      DFRUN(1) = (DFRO(1) * UN) + (DERPNU * MACH * P / (2.0D0 * RHO))
      CELL = (MNUM * RHO * CSON) + (DERPNU  * P / CSON)
      DFRUN(2) = (DFRO(2) * UN) + (CELL * CNX)
      DFRUN(3) = (DFRO(3) * UN) + (CELL * CNY)
      DFRUN(4) = (DFRO(4) * UN) + (CELL * CNZ)
      DFRUN(5) = (DFRO(5) * UN) - (0.5D0 * MACH * DERPNU) + PNUM
C
      DFRUT1(1) = DFRO(1) * UT1
      DFRUT1(2) = (DFRO(2) * UT1)  + (FRHO * CT1X)
      DFRUT1(3) = (DFRO(3) * UT1)  + (FRHO * CT1Y)
      DFRUT1(4) = (DFRO(4) * UT1)  + (FRHO * CT1Z)
      DFRUT1(5) = DFRO(5) * UT1
C
      DFRUT2(1) = DFRO(1) * UT2
      DFRUT2(2) = (DFRO(2) * UT2)  + (FRHO * CT2X)
      DFRUT2(3) = (DFRO(3) * UT2)  + (FRHO * CT2Y)
      DFRUT2(4) = (DFRO(4) * UT2)  + (FRHO * CT2Z)
      DFRUT2(5) = DFRO(5) * UT2
C
      CELL = CSON2 / (GAM - 1.0D0)
      DFRET(1) = (DFRO(1) * HT) - (FRHO * CELL / RHO)
      DFRET(2) = (DFRO(2) * HT)  + (FRHO * UX)
      DFRET(3) = (DFRO(3) * HT)  + (FRHO * UY)
      DFRET(4) = (DFRO(4) * HT)  + (FRHO * UZ)
      DFRET(5) = (DFRO(5) * HT) + (FRHO * CELL / P)
C
      RETURN
      END




