C MATPO2    SOURCE    CHAT      05/01/13    01:35:20     5004
      SUBROUTINE MATPO2 ( TAU, DT, TEMP, DTEMP, PREDEF, DPRED, WMAT,
     &                    IERUT )
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
C-----------------------------------------------------------------------
C
C     DESCRIPTION FONCTIONNELLE :
C     -------------------------
C
C     Dependance UMAPO2
C     => Dependance en deuxieme niveau du module Utilisateur UMAT
C     Appelee dans le cas suivant :
C     ILOI = 22 : Modele 'FLUAGE' 'POLYNOMIAL' de CAST3M, INPLAS=21
C                 RESTRICTION A LA FORMULATION MASSIVE
C                 Instanciation des composantes de materiau au fur et a
C                 mesure des iterations internes.
C                 Le modele comprend cette fois des parametres externes.
C                 Les composantes de materiau sont evaluees par les
C                 memes fonctions externes que celles utilisees par
C                 l'operateur VARI.
C                 MODELE 'MAQUETTE'
C
C     Calcul des proprietes de materiau au point TAU
C
C     ENTREES : TAU, DT, TEMP, DTEMP, PREDEF, DPRED
C     SORTIES : WMAT, IERUT
C
C-----------------------------------------------------------------------
C
C     Composantes de materiau
C     -----------------------
C     WMAT  ( 1) : 'YOUN'        WMAT  ( 5) : 'SMAX'
C     WMAT  ( 2) : 'NU  '        WMAT  ( 6) : 'AF0 '
C                                WMAT  ( 7) : 'AF1 '
C     WMAT  ( 4) : 'ALPH'        WMAT  ( 8) : 'AF2 '
C                                WMAT  ( 9) : 'AF3 '
C                                WMAT  (10) : 'AF4 '
C                                WMAT  (11) : 'AF5 '
C                                WMAT  (12) : 'AF6 '
C
C     N.B. WMAT(3) est laissee libre en coherence avec la declaration
C          des composantes de materiau du modele, correspond a 'RHO '
C          qui n'est pas utilisee par l'application TOUTATIS
C
C     Parametres externes
C     -------------------
C     TEMP       : 'T   '
C     PREDEF( 1) : 'PORO'
C     PREDEF( 2) : 'YOGC'
C     PREDEF( 3) : 'ALPC'
C     PREDEF( 4) : 'TFIS'
C     PREDEF( 5) : 'TU02'
C     PREDEF( 6) : 'FACF'
C     PREDEF( 7) : 'DSIU'
C     PREDEF( 8) : 'DGRA'
C
C     DTEMP      : increment de 'T   ' sur le pas de temps
C     DPRED ( 1) : increment de 'PORO' sur le pas de temps
C     DPRED ( 2) : increment de 'YOGC' sur le pas de temps - INUTILE
C     DPRED ( 3) : increment de 'ALPC' sur le pas de temps - INUTILE
C     DPRED ( 4) : increment de 'TFIS' sur le pas de temps
C     DPRED ( 5) : increment de 'TUO2' sur le pas de temps
C     DPRED ( 6) : increment de 'FACF' sur le pas de temps
C     DPRED ( 7) : increment de 'DSIU' sur le pas de temps
C     DPRED ( 8) : increment de 'DGRA' sur le pas de temps
C
C-----------------------------------------------------------------------
C     Arguments de l'interface
C
      REAL*8        TAU, DT, TEMP, DTEMP, PREDEF(*), DPRED(*), WMAT(*)
      INTEGER       IERUT
C
C     Variables locales
C
      INTEGER    NBPAR
      REAL*8     VALPAR(5)
      REAL*8     DDT, TC, POROC, YOGCC, ALPCC, TFISC, TUO2C, FACFC,
     &           DSIUC, DGRAC
C
      REAL*8     FVYOUN, FVNU, FVALPH, FVSMAX, FVAF0, FVAF1, FVAF2,
     &           FVAF3, FVAF4, FVAF5, FVAF6
      EXTERNAL   FVYOUN, FVNU, FVALPH, FVSMAX, FVAF0, FVAF1, FVAF2,
     &           FVAF3, FVAF4, FVAF5, FVAF6
C
C------------------- Debut du code executable --------------------------
C
      IERUT = 0
C
      IF (INT(DPRED(2)).NE.0) THEN
         IERUT = -22002
         RETURN
      ENDIF
      IF (INT(DPRED(3)).NE.0) THEN
         IERUT = -22003
         RETURN
      ENDIF
C
C 1 - Evaluation des parametres au point TAU
C
      DDT = TAU/DT
C
      TC = TEMP + ( DDT * DTEMP )
      POROC = PREDEF(1) + ( DDT * DPRED(1) )
      YOGCC = PREDEF(2)
      ALPCC = PREDEF(3)
      TFISC = PREDEF(4) + ( DDT * DPRED(4) )
      TUO2C = PREDEF(5) + ( DDT * DPRED(5) )
      FACFC = PREDEF(6) + ( DDT * DPRED(6) )
      DSIUC = PREDEF(7) + ( DDT * DPRED(7) )
      DGRAC = PREDEF(8) + ( DDT * DPRED(8) )
C
C 2 - Evaluation des proprietes de materiau au point TAU
C
C.....Module d'Young 'YOUN'
C
      NBPAR = 3
      VALPAR(1) = TC
      VALPAR(2) = POROC
      VALPAR(3) = YOGCC
      WMAT(1) = FVYOUN(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Coefficient de Poisson 'NU  '
C
      WMAT(2) = FVNU(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Modele de fluage : contrainte de reference 'SMAX'
C
      WMAT(5) = FVSMAX(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Coefficient de dilatation thermique 'ALPH'
C
      NBPAR = 2
      VALPAR(2) = ALPCC
      WMAT(4) = FVALPH(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Modele de fluage : coefficient du polynome 'AF0 '
C
      NBPAR = 3
      VALPAR(1) = TFISC
      VALPAR(2) = TUO2C
      VALPAR(3) = FACFC
      WMAT(6) = FVAF0(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Modele de fluage : coefficient du polynome 'AF2 '
C
      WMAT(8) = FVAF2(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Modele de fluage : coefficient du polynome 'AF4 '
C
      WMAT(10) = FVAF4(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Modele de fluage : coefficient du polynome 'AF5 '
C
      WMAT(11) = FVAF5(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Modele de fluage : coefficient du polynome 'AF6 '
C
      WMAT(12) = FVAF6(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Modele de fluage : coefficient du polynome 'AF3 '
C
      NBPAR = 4
      VALPAR(4) = DSIUC
      WMAT(9) = FVAF3(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
C.....Modele de fluage : coefficient du polynome 'AF1 '
C
      NBPAR = 5
      VALPAR(5) = DGRAC
      WMAT(7) = FVAF1(VALPAR,NBPAR,IERUT)
      IF (IERUT.GT.0) THEN
         IERUT = -22000-IERUT
         RETURN
      ENDIF
C
      RETURN
      END


