C CZERIL    SOURCE    OF166741  25/11/04    21:15:41     12349          

      SUBROUTINE CZERIL(wrk52,wrk53,wrk54,wrk2,wrk3,
     &  IB,IGAU,NBPGAU,necou,ecou,iecou,xecou)

*_________________________________________________________________
*
*
*    ENTREES :
*    ---------
*
* CELLES DE ECOINC PLUS:
* DT = PAS DE TEMPS DU CALCUL
*
*    SORTIE :
*    --------
*
* CELLES DE ECOINC
* TRAC(2*NCOURB) LE TABLEAU DE LA COURBE DE TRACTION
*
* ============================================================
*       ICI IL FAUT PROGRAMMER EN FORTRAN PUR
*=============================================================

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

-INC PPARAM
-INC CCOPTIO

-INC DECHE

-INC TECOU

      SEGMENT WRK2
        REAL*8 TRAC(LTRAC)
      ENDSEGMENT

      SEGMENT WRK3
        REAL*8 WORK(LW),WORK2(LW2)
      ENDSEGMENT

      DIMENSION RDEPS(6)

      NSTRS1 = iecou.NSTRSS

*   Traitement des deplacements suivant le type de calcul
*===========================================================
      IF (iecou.MFR1.EQ.1 .OR. iecou.MFR1.EQ.31)  THEN
*
*---> 1 formulation massive
*---> 2 formulation quasi incompressible
*---> MASSIF 3D
*
        IF (NSTRS1 .EQ. 6) THEN
          DO 110 I=1,NSTRS1
            RDEPS(I)=DEPST(I)
 110      CONTINUE
        ELSE IF (NSTRS1.EQ.4.AND.((IFOUR.EQ. 0)
     &           .OR.(IFOUR.EQ.-1).OR.(IFOUR.EQ.-2))) THEN
*
*---> Calcul en mode deformations planes ou axisymetrique
*---> Calcul en mode contraintes planes
*
          DO 115 I=1,NSTRS1
            RDEPS(I)=DEPST(I)
 115      CONTINUE
          RDEPS(5)=0.D0
          RDEPS(6)=0.D0
        ENDIF

      ELSE
        KERRE = 99
        RETURN
      ENDIF

*   Passage des deformations de cisaillement exprimées
*   en GAMA aux déformations de cisaillement exprimées
*   en déformations
      DO 117 I=4,6
         RDEPS(I)=RDEPS(I)*0.5D0
 117  CONTINUE

*   Données du materiau
*===========================================================
      YOUNG=XMAT(1)
      XNU=XMAT(2)
      DYG0=XMAT(5)
      C1=XMAT(6)
      C2=XMAT(7)
      C3=XMAT(8)
      C4=XMAT(9)
      C5=XMAT(10)
      XM0=XMAT(11)
      XK0=XMAT(12)
      XL0=XMAT(13)
      TYPE0=XMAT(14)

***************************************************
*  Preparation au calcul de la courbe de traction
***************************************************
*
*---> Déformation plastique équivalente EPSP
*
      EPSP0=var0(1)
*
*---> Cas contraintes planes: déformation dans l'épaisseur
*
      iter00=0
      IF (IFOUR.EQ.-2) THEN
        tr00=-1.D0*XNU/(1.D0-XNU)
        RDEPS(3)=tr00*(RDEPS(1)+RDEPS(2))
      ENDIF
 98   treps0=RDEPS(1)+RDEPS(2)+RDEPS(3)

*---> Vitesse de deformation equivalente
*      DT=5.D-7
      DEPS2=RDEPS(1)*RDEPS(1)+RDEPS(2)*RDEPS(2)+RDEPS(3)*RDEPS(3)
      DEPS2=DEPS2-RDEPS(1)*RDEPS(2)-RDEPS(2)*RDEPS(3)
      DEPS2=DEPS2-RDEPS(3)*RDEPS(1)
      DEPS3=RDEPS(4)*RDEPS(4)+RDEPS(5)*RDEPS(5)+RDEPS(6)*RDEPS(6)
      DEPS2=DEPS2+3.D0*DEPS3
      DEPS0=((DEPS2)**(0.5D0))*2.D0/3.D0
      DEPS0=DEPS0+(treps0/3.D0)
      IF (ABS(DT).LT.1D-10) THEN
         DEPS=0.D0
      ELSE
         DEPS=DEPS0/DT
      END IF

*---> Deformation maximale
      EPSM0=10.D0*DEPS0

*---> Nombre de points de la courbe de traction
      necou.NCOURB=100

*---> Partie constante de la courbe de traction
      Y0=(XK0*(XL0**(-0.5D0)))+DYG0

*---> Partie exponentielle de la courbe de traction
*
      IF (ABS(DEPS).LT.1D-10) THEN
        COEFF0=0.D0
      ELSE
        COEFF0=EXP(C4*LOG(DEPS)-C3)
      END IF

*---> Debut de la courbe de traction
      TRAC(1)=0.D0
      TRAC(2)=0.D0
      TRAC(3)=Y0
      TRAC(4)=0.D0

***************************************************
*  Courbe de traction dans le cas CFC
***************************************************

      IF (TYPE0.EQ.0.) THEN
*
*---> Courbe de traction avant le point courant
*
         EPSP=0.D0
         DEPS=EPSP0/48.D0
         DO 100 I=3,50
            EPSP=EPSP+DEPS
*---> Calcul de la limite d'elasticite dans le cas cfc
            TRAC(2*I-1)=C2*COEFF0*SQRT(EPSP)+Y0
            TRAC(2*I)=EPSP
 100     CONTINUE
*
*---> Courbe de traction apres le point courrant
*
         DEPS=EPSM0/(NCOURB-50.D0)
         EPSP=EPSP0
         DO 200 I=51,NCOURB
            EPSP=EPSP+DEPS
*---> Calcul de la limite d'elasticite dans le cas cfc
            TRAC(2*I-1)=C2*COEFF0*SQRT(EPSP)+Y0
            TRAC(2*I)=EPSP
 200     CONTINUE

*****************************************************
*  Courbe de traction dans le cas CC
*****************************************************
*
      ELSE
*
*---> Courbe de traction avant le point courant
*
         EPSP=0.D0
         DEPS=EPSP0/48.D0
         DO 300 I=3,50
            EPSP=EPSP+DEPS
*---> Calcul de la limite d'elasticite dans le cas cc
            TRAC(2*I-1)=(C1*COEFF0)+(C5*(EPSP**XM0))+Y0
            TRAC(2*I)=EPSP
 300     CONTINUE
*
*---> Courbe de traction apres le point courrant
*
         DEPS=EPSM0/(NCOURB-50.D0)
         EPSP=EPSP0
         DO 400 I=51,NCOURB
            EPSP=EPSP+DEPS
*---> Calcul de la limite d'elasticite dans le cas cc
            TRAC(2*I-1)=(C1*COEFF0)+(C5*(EPSP**XM0))+Y0
            TRAC(2*I)=EPSP
 400     CONTINUE

      END IF

*********************************************
*  Fin du calcul de la courbe de traction
*  CALCUL DE L'ECOULEMENT PLASTIQUE
*   MODELE PLASTIQUE ISOTROPE
*********************************************
      inpla0 = INPLAS
      if (inpla0.eq.50) INPLAS = 5

      CALL CCOINC(wrk52,wrk53,wrk54,wrk2,wrk3,
     &            IB,IGAU,NBPGAU,ecou,necou,iecou)

      INPLAS = inpla0
*
*  Cas contraintes planes
*
      IF (IFOUR.EQ.-2) THEN
        iter00=iter00+1
        RDEPS3=DEFP(3)+tr00*(RDEPS(1)-DEFP(1)+RDEPS(2)-DEFP(2))
        RDEPS4=ABS(RDEPS(3))
        RDEPS5=ABS(RDEPS3)
        IF (RDEPS4.LE.1.D-10) THEN
          IF ((iter00.LE.200).AND.(RDEPS5.GT.1.E-10)) THEN
            RDEPS(3)=RDEPS3
            GOTO 98
          ENDIF
        ELSE
          ERR0=ABS(RDEPS3-RDEPS(3))/RDEPS4
          IF ((iter00.LE.200).AND.(ERR0.GT.1.D-5)) THEN
            RDEPS(3)=RDEPS3
            GOTO 98
          ENDIF
        ENDIF
      ENDIF

      RETURN
      END

 
