C ELAST4    SOURCE    AM        08/12/19    21:16:35     6237
      SUBROUTINE ELAST4(ISENS,IFOUR,VAR,NNVARI,XMATT,NCOMAT,
     &   YUNGV,XNUV,XCAR,ICARA,MFR,NSTRS,DD,DDV,KERRE,INDIC,ITHHER)
C
C----------------------------------------------------------------------------
C Objet: Calcul de la matrice de Hooke endommagee(ISENS=1)
C        ou son inverse(ISENS=2) dans le cas de la viscoplasticite avec
C        endommagement anisotrope (materiau 142) en regime isotherme.
C        La matrice est calculée à partir de l'expression de la loi de Hooke
C----------------------------------------------------------------------------
C
C----------------------------------------------------------------------------
C Entree: ISENS= 1  DD en sortie est la matrice de Hooke endommagee
C           d'ou SIG=DD*EPSELAS
C              = 2  DD en sortie est la matrice de Hooke inverse
C            endommagee d'ou EPSELAS=DD*SIG
C           avec SIG contraintes et EPSELAS deformations elastiques
C         IFOUR= -2 EN CONTR. PLANES
C                -1 EN DEFORM. PLANES
C                 0 EN AXISYMETRIE
C                 1 EN SERIE DE FOURIER
C                 2 EN TRIDIM
C         NSTRS nombre de composantes des contraintes ou
C           des deformations
C         NNVARI nombre de variables internes pilotant les
C           equations du modele
C         VAR(NVARI) tableau des variables internes
C         XMATT(NCOMAT) tableau des parametres scalaires du materiau
C           a une temperature T donnee
C           dont XMATT(1) module d'Young et XMATT(2) coeff de Poisson
C         YUNGV derivee /T du module d'Young a T
C         XNUV derivee /T du coeff de Poisson a T
C         MFR indice de la formulation mecanique(seulement massif
C           pour les materiaux endommageables)
C         ICARA nombre de caracteristiques geometriques des elements
C           finis
C         XCAR(ICARA) tableau des caracteristiques geometriques des
C           elements finis
C         INDIC=0, 1 OU -1 pour plasticite avec endommagement
C              =2 OU -2 pour viscoplasticite avec endommagement
C         ITHHER = 0 pas de chargement thermique et materiau constant
C                = 1 chargement thermique et materiau constant
C                = 2 chargement thermique et materiau(T)
C--------------------------------------------------------------------------------
C
C--------------------------------------------------------------------------------
C Sortie: DD(NSTRS,NSTRS) matrice de Hooke
C                          endommagee si ISENS=1
C                         son inverse si ISENS=2
C         DDV(NSTRS,NSTRS) derivee de la matrice de Hooke
C                          endommagee si ISENS=1
C                         son inverse si ISENS=2
C         KERRE indice qui regit les erreurs
C          Il vaut 99 si la formulation mecanique n'est pas disponible ou
C          s'il y a incompatibilite entre MFR et IFOUR
C _______________________________________________________________________________
C
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
      DIMENSION VAR(*),XCAR(*),XMATT(*)
      DIMENSION DD(NSTRS,NSTRS),DDV(NSTRS,NSTRS)
C
      CALL ZERO(DD,NSTRS,NSTRS)
      CALL ZERO(DDV,NSTRS,NSTRS)
      KERRE=0
C
C--------------------------------------------------------------------------------
C TERMES DU TENSEUR D'ENDOMMAGEMENT
C--------------------------------------------------------------------------------
C
      YUNG=XMATT(1)
      XNU=XMATT(2)
      D11=VAR(2)
      D22=VAR(3)
      D33=VAR(4)
      D12=VAR(5)
      D13=VAR(6)
      D23=VAR(7)

      IF (D11.LE.1.D0) THEN
        DEN1 = 1.D0-D11
      ELSE
        DEN1 = 1.D-6
      ENDIF
      IF (D22.LE.1.D0) THEN
        DEN2 = 1.D0-D22
      ELSE
        DEN2 = 1.D-6
      ENDIF
      IF (D33.LE.1.D0) THEN
        DEN3 = 1.D0-D33
      ELSE
        DEN3 = 1.D-6
      ENDIF

C --- Déterminant de la matrice I - D ---
       det=(DEN1)*(DEN2)*(DEN3)
     &    - 2.D0*D12*D13*D23-D12*D12*(DEN3)
     &    - D23*D23*(DEN1)-D13*D13*(DEN2)
C
       det2=det*det
       det4=det2*det2
C
C --- Expression des cofacteurs de la matrice I - D ---
       A11=(DEN2)*(DEN3)-D23*D23
       A22=(DEN1)*(DEN3)-D13*D13
       A33=(DEN2)*(DEN1)-D12*D12
       A12=D12*(DEN3)+D23*D13
       A13=D13*(DEN2)+D23*D12
       A23=D23*(DEN1)+D13*D12
C
       COEFF1=(1.D0+XNU)/YUNG
       COEFF2=XNU/YUNG
       COEFF3=1.D0/YUNG
C
      IF (MFR.NE.1) GOTO 40
C
C------------
C MASSIFS
C------------
      IF (IFOUR.EQ.-2) GOTO 40
C
C-------------------
C EPSELAS=DD*SIG
C-------------------

      DD(1,1)=COEFF3*(A11*A11/det2)
      DD(1,2)=(COEFF1*A12*A12-COEFF2*A11*A22)/det2
      DD(1,3)=(COEFF1*A13*A13-COEFF2*A11*A33)/det2
      DD(1,4)=2.D0*COEFF3*A11*A12/det2
      IF (IFOUR.GT.0) THEN
      DD(1,5)=2.D0*COEFF3*A11*A13/det2
      DD(1,6)=2.D0*(COEFF1*A12*A13-COEFF2*A11*A23)/det2
      ENDIF

      DD(2,1)=DD(1,2)
      DD(2,2)=COEFF3*A22*A22/det2
      DD(2,3)=(COEFF1*A23*A23-COEFF2*A22*A33)/det2
      DD(2,4)=2.D0*COEFF3*A12*A22/det2
      IF (IFOUR.GT.0) THEN
      DD(2,5)=2.D0*(COEFF1*A12*A23-COEFF2*A13*A22)/det2
      DD(2,6)=2.D0*COEFF3*A22*A23/det2
      ENDIF

      DD(3,1)=DD(1,3)
      DD(3,2)=DD(2,3)
      DD(3,3)=COEFF3*A33*A33/det2
      DD(3,4)=2.D0*(COEFF1*A13*A23-COEFF2*A33*A12)/det2
      IF (IFOUR.GT.0) THEN
      DD(3,5)=2.D0*COEFF3*A13*A33/det2
      DD(3,6)=2.D0*COEFF3*A33*A23/det2
      ENDIF

      DD(4,1)=DD(1,4)
      DD(4,2)=DD(2,4)
      DD(4,3)=DD(3,4)
      DD(4,4)=2.D0*(COEFF1*(A12*A12+A11*A22)-COEFF2*2.D0*A12*A12)/det2
      IF (IFOUR.GT.0) THEN
      DD(4,5)=2.D0*(COEFF1*(A12*A13+A11*A23)-COEFF2*2.D0*A13*A12)/det2
      DD(4,6)=2.D0*(COEFF1*(A12*A23+A22*A13)-COEFF2*2.D0*A23*A12)/det2
      ENDIF

      IF (IFOUR.GT.0) THEN
      DD(5,1)=DD(1,5)
      DD(5,2)=DD(2,5)
      DD(5,3)=DD(3,5)
      DD(5,4)=DD(4,5)
      DD(5,5)=2.D0*(COEFF1*(A13*A13+A11*A33)-COEFF2*2.D0*A13*A13)/det2
      DD(5,6)=2.D0*(COEFF1*(A13*A23+A33*A12)-COEFF2*2.D0*A23*A13)/det2
      ENDIF


      IF (IFOUR.GT.0) THEN
      DD(6,1)=DD(1,6)
      DD(6,2)=DD(2,6)
      DD(6,3)=DD(3,6)
      DD(6,4)=DD(4,6)
      DD(6,5)=DD(5,6)
      DD(6,6)=2.D0*(COEFF1*(A23*A23+A33*A22)-COEFF2*2.D0*A23*A23)/det2
      ENDIF
C
      IF (ISENS.EQ.2) GOTO 500
C
C----------------
C SIG=DD*EPSELAS
C----------------
      CALL INVALM (DD, NSTRS , NSTRS , KER, 1.D-12)
      GOTO 500
C
C FORMULATION NON DISPONIBLE
40    KERRE=99
500   CONTINUE
      RETURN
      END














