C FVNU      SOURCE    CHAT      07/04/20    21:15:15     5723
      FUNCTION FVNU(VALPAR,NPARA,IERUT)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
C-----------------------------------------------------------------------
C     DESCRIPTION FONCTIONNELLE :
C     -------------------------
C     Fonction externe d'evaluation de la composante 'NU  ' du modele
C     'FLUAGE' 'POLYNOMIAL' externalise pour TOUTATIS
C
C     INTERFACE :
C     ---------
C     ENTREE : VALPAR : REAL*8(NPARA), valeurs des parametres
C     ENTREE : NPARA  : INTEGER, nombre de parametres
C     SORTIE : IERUT  : INTEGER, code retour
C
C     CODIFICATION DES ERREURS :
C     ------------------------
C     IERUT=0   : OK
C     IERUT=221 : temp. inferieure au zero absolu
C     IERUT=222 : valeur illicite de 'PORO'
C     IERUT=223 : valeur illicite de 'YOGC'
C-----------------------------------------------------------------------
C     Type de la fonction
C
      REAL*8       FVNU
C
C     Arguments de l'interface
C
      INTEGER      NPARA, IERUT
      REAL*8       VALPAR(NPARA)
C
C     Variables locales
C
      REAL*8       T, PORO, YOUC1, CISC1, YOUC2, CISC2
      INTEGER      IYOGC
C
C---------------------- Debut du code executable -----------------------
C
C     Identification des parametres : affectation de variables locales
C
      T=VALPAR(1)
      PORO=VALPAR(2)
      IF(VALPAR(3).GE.0.99999 . and. VALPAR(3).le.1.00001) IYOGC=1
      IF(VALPAR(3).GE.1.99999 . and. VALPAR(3).le.2.00001) IYOGC=2
C
C     Tests d'erreur sur les parametres
C
      IERUT=0
      FVNU=0.D0
C
      IF (T.LT.0.0D0) THEN
C........Temperature en Kelvin
         IERUT = 221
         RETURN
      ELSE IF ((PORO.LT.0.0D0).OR.(PORO.GT.1.0D0)) THEN
         IERUT = 222
         RETURN
      ELSE IF ((IYOGC.LT.1).OR.(IYOGC.GT.2)) THEN
         IERUT = 223
         RETURN
      ENDIF
C
C     Calcul de la fonction
C
      IF (T.LT.2610.0D0) THEN
         YOUC1 = 2.2693D11 - (1.5399D7 * T) - (9.3597D3 * T * T)
         CISC1 = 8.583D10 - (5.157D6 * T) - (3.747D3 * T * T)
      ELSE
         YOUC1 = -1.33445D12 + (1.18106D9 * T) - (2.38803D5 * T * T)
         CISC1 = -5.7625D11 + (5.02189D8 * T) - (1.00939D5 * T * T)
      ENDIF
C
C.....Si correction de porosite
C
      IF (IYOGC.EQ.2) THEN
         IF (PORO.LT.0.3D0) THEN
            YOUC2 = YOUC1 * (1.D0-(2.5D0*PORO))
            CISC2 = CISC1 * (1.D0-(2.25D0*PORO))
         ELSE
            YOUC2 = YOUC1 * ((1.D0-PORO)/(1.D0+(6.D0*PORO)))
            CISC2 = CISC1 * ((1.D0-PORO)/(1.D0+(3.85D0*PORO)))
         ENDIF
         FVNU = (YOUC2/(2.D0*CISC2)) - 1.D0
C
      ELSE
         FVNU = (YOUC1/(2.D0*CISC1)) - 1.D0
      ENDIF
C
      RETURN
      END



