C CFATTT    SOURCE    OF166741  25/11/04    21:15:14     12349          
      SUBROUTINE CFATTT(WRK52,WRK53,WRK54,NVARI,Iecou)
C
C    calcule la deformation initiale et l'increment de deformation
C    a partir de la contrainte initiale et l'increment de contrainte
C    elastique puis appelle la subroutine CFATI
C
C
C     variables en entree
C
C     WRK0,KRK1,WRK5  pointeurs sur des segments de travail
C
C     NSTRS1      nombre de composantes dans les vecteurs des contraintes
C                                        et les vecteurs des deformations
C
C     NVARI      nombre de variables internes (doit etre egal a 2)
C
C     NMATT      nombre de constantes du materiau
C
C     ISTEP      flag utilise pour separer les etapes dans un calcul non local
C                ISTEP=0 -----> calcul local
C                ISTEP=1 -----> calcul non local etape 1 on calcule les seuils
C                ISTEP=2 -----> calcul non local etape 2 on continue le calcul
C                               a partir des seuils moyennes
C
C
C     variables en sortie
C
C     VARF      variables internes finales dans WRK0
C
C     SIGF      contraintes finales dans WRK0
C
C Modif L.Bode - 09/10/92 - Traitement particulier des coques
C Modif L.Bode - 14/10/92 - Modifications complementaires
C
c KICH XCARB<- XCAR , CMAZAR <- MAZARS

      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)

-INC PPARAM
-INC CCOPTIO
-INC DECHE
-INC TECOU

      SEGMENT WRKK2
         REAL*8 EPSILI(NSTRSV)
      END SEGMENT
*
      SEGMENT WRK6
        REAL*8 SIG0S(NSTRS),DEPSTS(NSTRS)
      END SEGMENT
*
      INTEGER NVARI
      INTEGER KCAS,IRTD,ISTRS
      REAL*8 PREC,EPAI,FAC,AUX,AUX1,AUX2,YOUN,XNU
      REAL*8 UN
      PARAMETER (UN=1.D0)

      KERRE=0
      YOUN = XMAT(1)
      XNU  = XMAT(2)

      NSTRS1 = iecou.NSTRSS
C
C     ON CALCULE LES CONTRAINTES VRAIES DANS LE CAS DES COQUES
C
C      print*,'dans mazzzz MFR1=', mfr1
      IF (MFR1 .EQ. 9) THEN
         EPAI=XCARB(1)
         SEGINI WRK6
         DO 101 ISTRS=1,NSTRS1
            SIG0S(ISTRS)=SIG0(ISTRS)
            DEPSTS(ISTRS)=DEPST(ISTRS)
  101    CONTINUE
         NSTRSV=4
         IFOUR2=-2
C Modif L.Bode - 14/10/92
C Dans le cas des coques, on force la dimension a 2 pour MAZARS
C ie on travaille en contraintes planes
         JDIM =2
C Fin modif L.Bode
         DO 102 ISTRS=1,2
            SIG0(ISTRS)=SIG0S(ISTRS)/EPAI
  102    CONTINUE
         DEPST(3)=0.D0
         DEPST(4)=DEPSTS(3)
         SIG0(3)=0.D0
         SIG0(4)=SIG0S(3)/EPAI
      ELSE IF (MFR1 .EQ. 1) THEN
         NSTRSV=NSTRS1
         IFOUR2=IFOUR
C Modif L.Bode - 14/10/92
C Pour les elts massifs, on utilise la vraie dimension
         JDIM = IDIM
C Fin modif L.Bode
      ELSE
         PRINT*,'MFR1=',MFR1
         KERRE=57
         RETURN
      END IF
      SEGINI WRKK2
C
C     calcul de la matrice elastique
C
      CMATE = 'ISOTROPE'
      KCAS=1
*      print*,'increment de deformation elastique'
      CALL DOHMAS(XMAT,CMATE,IFOUR2,NSTRSV,KCAS,DDHOOK,IRTD)
*      DO ISTRS=1,NSTRS1
*         print*,(DDHOOK(ISTRS,J),j=1,nstrs)
*         print*,DEPST(ISTRS)
*      END DO
      IF ( IRTD .EQ. 1) THEN
C
C      calcul de l'increment de contrainte
C
         CALL MATVE1 (DDHOOK,DEPST,NSTRSV,NSTRSV,DSIGT,1)
C
C     inversion de cette matrice
C
         PREC=1.D-08
      CALL DOHMAS(XMAT,CMATE,IFOUR2,NSTRSV,2,DDHOOK,IRTD)
*      DO ISTRS=1,NSTRSV
*              print*,(DDHOOK(ISTRS,J),j=1,nstrsv)
*      END DO
*         print*,'appel a invalm'
         CALL INVALM(DDHOOK,NSTRSV,NSTRSV,IRTD,PREC)
         IF (IRTD.EQ.0)THEN
C
C     calcul des deformations du materiau elastique lineaire
C
*           print*,'appel a matve1'
           CALL MATVE1 (DDHOOK,SIG0,NSTRSV,NSTRSV,EPSILI,1)
C
C     modification pour tenir compte de l'endommagement
C
            DO 100 ISTRS=1,NSTRSV
               EPSILI(ISTRS)=EPSILI(ISTRS)+EPIN0(ISTRS)
100         CONTINUE

C
C      appel a la routine MAZARS
C
C Modif L.Bode - 14/10/92
C On envoie la dimension et le numero de la formulation
C  ( Elts Coques JDIM =2 , IFOUR2 = -2 => contraintes planes
C    Elts Massifs JDIM = IDIM ,IFOUR2 = IFOUR)
*            print*,'appel a mazars'
          icarbi=iecou.icara
            CALL  CFATI (WRK52,WRK53,WRK54,WRKK2,NSTRSV,NVARI,
     1                    ICARbi,JDIM,IFOUR2)
c*          iecou.icara=icarbi
C Fin modif L.Bode
C
C      ON RECALCULE LES CONTRAINTES EFFECTIVES POUR LES COQUES
C
*            print*,'apres mazars'
            IF (MFR1 .EQ. 9) THEN
C
C     ON MET A JOUR DE FACON NON LINEAIRE LA PARTIE MEMBRANE
C     ET  LES PARTIES FLEXION ET EFFORTS
C     TRANCHANTS LE CAS ECHEANT
C
               FAC=(EPAI**3)/12.D0
               AUX =FAC*YOUN/(1.D0-XNU*XNU)
               AUX1=FAC*YOUN*.5D0/(1.D0+XNU)
               AUX2=EPAI*YOUN*.5D0/(1.d0+XNU)/1.2d0
               DO 103 ISTRS=1,NSTRS1
                  SIG0(ISTRS)=SIG0S(ISTRS)
                  DEPST(ISTRS)=DEPSTS(ISTRS)
 103           CONTINUE
               SIGF(1)=SIGF(1)*EPAI
               SIGF(2)=SIGF(2)*EPAI
               SIGF(3)=SIGF(4)*EPAI
               SIGF(4)=SIG0(4)+AUX*(DEPST(4)+XNU*DEPST(5))
               SIGF(5)=SIG0(5)+AUX*(DEPST(5)+XNU*DEPST(4))
               SIGF(6)=SIG0(6)+AUX1*DEPST(6)
               SIGF(7)=SIG0(7)+AUX2*DEPST(7)
               SIGF(8)=SIG0(8)+AUX2*DEPST(8)
               SEGSUP WRK6
            END IF
         ELSE
             print*,'erreur dans invalm'
             KERRE=56
         END IF
      ELSE
         print*,'erreur dans dohmas'
         KERRE=56
      END IF
      SEGSUP WRKK2

      RETURN
      END

 
