C TUFIEN    SOURCE    CHAT      05/01/13    03:55:36     5004
      SUBROUTINE TUFIEN(XM,XP,DELTAM,DELTAP,THETA,XJP,PRECIS,THETA0,
     &     XM0,XP0,XJ1C,T,RAYOM,EPAI,YOUN)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C=======================================================================
C          CE SOUS PROGRAMME SERT A CALCULER LE NOUVEL ANGLE DE LA
C          FISSURE DANS LE CAS D UN INCREMENT DE CHARGE POUR
C          LEQUEL IL Y A PROPAGATION EN ELASTICITE
C          SI ON PLASTIFIE ON RENVOIT LA PARTIE DE L INCREMENT
C          QU IL VA FALLOIR ECOULER
C          IL EST APPELE PAR TUFPLA
C
C          ENTREES:XM     VALEUR DU MOMENT AU DEBUT DU PAS
C                  XP     VALEUR DE L EFFORT NORMAL AU DEBUT DU PAS
C                  DELTAM  INCREMENT DE MOMENT
C                  DELTAP  INCREMENT D EFFORT NORMAL
C                  THETA   ANGLE DE LA FISSURE AU DEBUT DU PAS
C                  XJP    VALEUR DE LA PARTIE PLASTIQUE DE J
C
C          SORTIES:XM     VALEUR DU MOMENT A LA FIN DU PAS
C                  XP     VALEUR DE L EFFORT NORMAL A LA FIN DU PAS
C                  DELTAM  PARTIE DE L INCREMENT DE MOMENT RESTANT
C                          A ECOULER EN PLASTICITE
C                  DELTAP  PARTIE DE L INCREMENT D EFFORT NORMAL
C                          RESTANT A ECOULER EN PLASTICITE
C                  THETA   ANGLE DE LA FISSURE A LA FIN DU PAS
C=======================================================================
-INC CCREEL

-INC PPARAM
-INC CCOPTIO
      DIMENSION XX(2,2),YY(2,2)
      XM1=XM+DELTAM
      XP1=XP+DELTAP
C
C     ON CALCULE LE NOUVEL ANGLE DE LA FISSURE PAR LA METHODE
C     DE NEWTON EN APPROXIMANT LA DERIVEE
C
      X0=THETA
      X1=THETA+XPI/180.D0
      NBIT=0
 1    CONTINUE
      F0=CRIT2(XM1,XP1,X0,XJP,XJ1C,T,RAYOM,THETA0,EPAI,YOUN)
      F1=CRIT2(XM1,XP1,X1,XJP,XJ1C,T,RAYOM,THETA0,EPAI,YOUN)
      FP=(F1-F0)/(X1-X0)
      X2=X1-F1/FP
      IF(X2.LT.THETA0) THEN
         IF(IIMPI.EQ.999)THEN
            WRITE(IOIMP,111)
 111        FORMAT(1X,'L ANGLE EST INFERIEUR A L ANGLE INITIAL')
         ENDIF
         DELTAM=0.D0
         DELTAP=0.D0
         RETURN
      ENDIF
      IF(X2.GT.360.D0) THEN
         IF(IIMPI.EQ.999)THEN
            WRITE(IOIMP,222)
 222        FORMAT(1X,'PAS DE SOLUTION REALISTE')
         ENDIF
         DELTAM=0.D0
         DELTAP=0.D0
         RETURN
      ENDIF
      NBIT=NBIT+1
      CRI=ABS((X2-X1)/X1)
      F2=CRIT2(XM1,XP1,X2,XJP,XJ1C,T,RAYOM,THETA0,EPAI,YOUN)
      CRU=ABS(F2)
      IF(CRI.GE.PRECIS.OR.CRU.GE.PRECIS) THEN
         X0=X1
         X1=X2
         GOTO 1
      ELSE
         THETA=X2
         IF(IIMPI.EQ.999)THEN
            WRITE(IOIMP,*)THETA
            WRITE(IOIMP,*)'NBRE ITERATIONS',NBIT
            VER=CRIT2(XM1,XP1,THETA,XJP,XJ1C,T,RAYOM,THETA0,EPAI,YOUN)
            WRITE(IOIMP,900)VER
 900        FORMAT(1X,'VERIF RESOLUTION',1X,F12.5)
         ENDIF
C
C     THETA EST LE NOUVEL ANGLE DE LA FISSURE
C
      ENDIF
C
C     ON TESTE POUR SAVOIR SI ON EST TOUJOURS ELASTIQUE
C
      CALL TUFIC1(XM1,XP1,THETA,IRETOU,PRECIS,XM0,XP0)
C
C     SI OUI ON A TOUT ECOULE ET ON MET DELTAM ET DELTAP
C     A ZERO
C
      IF(IRETOU.EQ.0) THEN
         XM=XM+DELTAM
         XP=XP+DELTAP
         DELTAM=0.D0
         DELTAP=0.D0
         RETURN
C
C      SINON ON CHERCHE L ANGLE QUI CORRESPOND A LA FRONTIERE
C      DU DOMAINE D ELASTICITE
C      ON RESOUD UN SYSTEME DU TYPE F(A,B)=G(A,B)=0 D UNE
C      MANIERE ANALOGUE A LA METHODE DE NEWTON
C
      ELSE
         IF(IIMPI.EQ.999)THEN
            WRITE(IOIMP,901)
 901        FORMAT(1X,'MAIS ON PLASTIFIE')
         ENDIF
         NBIT=0
         A1=0.D0
         B1=1.D0
         XM1=XM+A1*DELTAM
         XP1=XP+A1*DELTAP
         THETA1=B1*THETA
         A2=1.D0
         B2=0.9D0
         XM2=XM+A2*DELTAM
         XP2=XP+A2*DELTAP
         THETA2=B2*THETA
 2       CONTINUE
         F11=CRIT1(XM1,XP1,THETA1,XM0,XP0)
         F21=CRIT1(XM2,XP2,THETA1,XM0,XP0)
         XX(1,1)=(F21-F11)/(A2-A1)
         F12=CRIT1(XM1,XP1,THETA2,XM0,XP0)
         XX(1,2)=(F12-F11)/(B2-B1)
         F22=CRIT1(XM2,XP2,THETA2,XM0,XP0)
         G11=CRIT2(XM1,XP1,THETA1,XJP,XJ1C,T,RAYOM,THETA0,EPAI,
     &        YOUN)
         G21=CRIT2(XM2,XP2,THETA1,XJP,XJ1C,T,RAYOM,THETA0,EPAI,
     &        YOUN)
         XX(2,1)=(G21-G11)/(A2-A1)
         G12=CRIT2(XM1,XP1,THETA2,XJP,XJ1C,T,RAYOM,THETA0,EPAI,
     &        YOUN)
         XX(2,2)=(G12-G11)/(B2-B1)
         G22=CRIT2(XM2,XP2,THETA2,XJP,XJ1C,T,RAYOM,THETA0,EPAI,
     &        YOUN)
         DET=XX(1,1)*XX(2,2)-XX(1,2)*XX(2,1)
         YY(1,1)=XX(2,2)/DET
         YY(1,2)=-XX(1,2)/DET
         YY(2,1)=-XX(2,1)/DET
         YY(2,2)=XX(1,1)/DET
         A3=A2-YY(1,1)*F22-YY(1,2)*G22
         B3=B2-YY(2,1)*F22-YY(2,2)*G22
         XM3=XM+A3*DELTAM
         XP3=XP+A3*DELTAP
         THETA3=B3*THETA
         NBIT=NBIT+1
         CRA=ABS((A3-A2)/A2)
         CRO=ABS((B3-B2)/B2)
         CRU=CRA+CRO
         F3=CRIT1(XM3,XP3,THETA3,XM0,XP0)
         G3=CRIT2(XM3,XP3,THETA3,XJP,XJ1C,T,RAYOM,THETA0,EPAI,
     &        YOUN)
         CRI=(F3**2+G3**2)**0.5D0
         IF(CRI.GE.PRECIS.OR.CRU.GE.PRECIS) THEN
            A1=A2
            B1=B2
            A2=A3
            B2=B3
            XM1=XM2
            XP1=XP2
            THETA1=THETA2
            XM2=XM3
            XP2=XP3
            THETA2=THETA3
            GOTO 2
         ELSE
C
C    ON A ENFIN TROUVE A ET B QUI CONVIENNENT
C
            A=A3
            B=B3
         ENDIF
         XM=XM+A*DELTAM
         XP=XP+A*DELTAP
         DELTAM=(1.D0-A)*DELTAM
         DELTAP=(1.D0-A)*DELTAP
         THETA=B*THETA
         VER1=CRIT1(XM,XP,THETA,XM0,XP0)
         VER2=CRIT2(XM,XP,THETA,XJP,XJ1C,T,RAYOM,THETA0,EPAI,
     &        YOUN)
         IF(IIMPI.EQ.999)THEN
            WRITE(IOIMP,903)VER1,VER2
 903        FORMAT(1X,'REVERIF RESO',1X,2F12.5)
            WRITE(IOIMP,*)'NBRE ITERATIONS',NBIT
         ENDIF
         RETURN
      ENDIF
      END





