C INTIMP    SOURCE    CB215821  16/04/21    21:17:13     8920
C   sub intimpfib
C====&===1=========2=========3=========4=========5=========6=========7==
C Commentaires : Subroutine permettant de mettre en oeuvre les
C                    modeles RICINT et OUGLOVA pour une formulation fibre
C                avec interface imparfaite
C Auteurs      : B. Richard (doctorant)
C Date         : Février 2008
C====&===1=========2=========3=========4=========5=========6=========7==
      SUBROUTINE INTIMP(XMAT,DEPST,SIG0,VAR0,SIGF,VARF)
C
C-----DECLARATION GENERALE
C
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
-INC CCREEL
C
C-----DECLARATION DES VARIABLES
C
      REAL*8 XMAT(18),VAR0(25),VARF(25)
        REAL*8 EPTO,GCOEFF,ES,LCCOEF,SIGMAES
        REAL*8 XRESIDU,XSECT,DEPST(3),SIG0(3),SIGI,SIGA,XRAYON
        REAL*8 FORCEACIER,FORCEINTER,XCRITERE,XLAMBDA,EPT1
        REAL*8 SIGF(3),DEFP,XDLAMBDA,DEPST0
        INTEGER INDITER,ITERMAX,I
C
C-----NOMENCLATURE DES PARAMETRES MATERIAUX (XMAT) ET
C     INTERNES (VAR0, VARF)
C

C  ---------------------------
C |     ACIER CORRODE         |
C  ---------------------------
C      XMAT( 1) ES
C      XMAT( 2) NUS
C      XMAT( 3)
C      XMAT( 4)
C      XMAT( 5) XSECT
C      XMAT( 6) DCS
C      XMAT( 7) SIGMAES
C      XMAT( 8) TCS
C      XMAT( 9) MS
C      XMAT(10) KS
C
C  ---------------------------
C |   INTERFACE A/B CORRODEE  |
C  ---------------------------
C      XMAT(11) GCOEFF
C      XMAT(12) AD
C      XMAT(13) ACOEFF
C      XMAT(14) GAMCOE
C      XMAT(15) LCCOEF
C      XMAT(16) EPS0CO
C      XMAT(17) TCI
C      XMAT(18) CALA
C
C  ---------------------------
C |     ACIER CORRODE         |
C  ---------------------------
C      VAR0( 1) VARF( 1) ENDS
C      VAR0( 2) VARF( 2) PVAR
C      VAR0( 3) VARF( 3) DEPP
C      VAR0( 4) VARF( 4) RVAR
C      VAR0( 5) VARF( 5) SIGS
C      VAR0( 6) VARF( 6) EPSP
C      VAR0( 7) VARF( 7)
C      VAR0( 8) VARF( 8)
C      VAR0( 9) VARF( 9)
C      VAR0(10) VARF(10)
C
C  ---------------------------
C |   INTERFACE A/B CORRODEE  |
C  ---------------------------
C      VAR0(11) VARF(11) ENDI
C      VAR0(12) VARF(12) ALPH
C      VAR0(13) VARF(13) EPSF
C      VAR0(14) VARF(14) XVAR
C      VAR0(15) VARF(15) ZVAR
C      VAR0(16) VARF(16) EINT
C      VAR0(17) VARF(17) SIGF
C      VAR0(18) VARF(18)
C      VAR0(19) VARF(19)
C      VAR0(20) VARF(20)
C
C  ---------------------------
C |          AUTRES           |
C  ---------------------------
C      VAR0(21) VARF(21) XLAM
C      VAR0(22) VARF(22) EPTO
C      VAR0(23) VARF(23) INDITER
C        VAR0(24) VARF(24) FORCEINTER
C        VAR0(25) VARF(25) FORCEACIER
C
C  ---------------------------
C |   CONTRAINTES             |
C  ---------------------------
C      SIGF
C
C  ---------------------------
C |   DEFORMATION PLASTIQUES  |
C  ---------------------------
C      DEFP
C
C  ---------------------------
C |  INCREMENT DE DEFORMATION |
C  ---------------------------
C      DEPST
c
C
C-----ON RECUPERE LE NUMERO DE L ITERATION COURRANTE
C
      DEFP      = 0.0D0
      XSECT     = XMAT(5 )
        INDITER   = nint(VAR0(23)) + 1
      DEPST0    = DEPST(1)
C
C-----ON RECUPERE LA DEFORMATION TOTALE ET LE LAMBDA PRECEDENT
C
        EPTO      = VAR0(22)
      EPT1      = VAR0(22) + DEPST(1)
       XLAMBDA=VAR0(21)
        IF (INDITER.LT.2.0D0) THEN
                XLAMBDA  = 0.5D0
                VAR0(21) = 0.5D0
        END IF
C
C-----ON RECUPERE LES MODULES ELASTIQUES
C
        GCOEFF  = XMAT( 9)
        ES      = XMAT( 1)
        LCCOEF  = XMAT(15)
        SIGMAES = XMAT( 7)
C
C---------------------------------
C DEBUT DU PROCESSUS DE PARTITION
C---------------------------------
C
C-----INITIALISATION
C
        XRESIDU = 1.0D6
        ITERMAX = 500000000
C
C-----BOUCLE SUR LES ITERATIONS INTERNES
C
 101  CONTINUE
C
C-----CALCUL DES CONTRAINTES DANS L ACIER
C
                CALL OUGLFL(XMAT,XSECT,DEPST0,SIG0,VAR0,SIGA,VARF)
C
C-----CALCUL DES CONTRAINTES DANS L INTERFACE
C
                CALL INTFIB(XMAT,XSECT,DEPST0,SIG0,VAR0,SIGI,VARF)
C
C-----CALCUL DES FORCES DANS L ACIER
C
            XRAYON     = SQRT(XSECT/XPI)
                FORCEACIER = XPI*XRAYON*XRAYON*SIGA
C
C-----CALCUL DES FORCES DANS L INTERFACE
C
                FORCEINTER = 2.0D0*XPI*XRAYON*LCCOEF*SIGI
C
C-----CALCUL DU RESIDU
C
                XRESIDU     = -FORCEINTER + FORCEACIER
C
C-----CRITERE DE CONVERGENCE
C
                XCRITERE   = ABS(XRESIDU/(XPI*XRAYON*XRAYON*SIGMAES))

                IF (XCRITERE.LE.1.0D-6) THEN
                    GOTO 10
                END IF
C
C-----CALCUL DU XLAMBDA POUR EFFECTUER LES CORRECTIONS
C
                XDLAMBDA   = -XRESIDU/(XPI*XRAYON*LCCOEF*2.0D0*GCOEFF+
     &                          XPI*XRAYON*XRAYON*ES)*
     &                          (ABS(EPT1))/(EPT1)
                XLAMBDA    = XLAMBDA + XDLAMBDA

C               IF (XLAMBDA.GT.1.0D0.OR.XLAMBDA.LT.0.0D0) THEN
C                       XLAMBDA = 0.0D0
C               END IF

                VAR0(21)   = XLAMBDA

        GOTO 101
C
C-----BALISE DE SORTIE APRES CONVERGENCE
C
 10   CONTINUE

        VARF(21) = XLAMBDA
        VARF(22) = EPTO + DEPST0
        VARF(23) = INDITER

        VARF(24) = FORCEINTER
        VARF(25) = FORCEACIER
C
C-------------------------------
C FIN DU PROCESSUS DE PARTITION
C-------------------------------
C

C
C-----LES CONTRAINTES EN SORTIE
C

      SIGF(1)     = SIGA
      SIGF(2)     = SIG0(2) +
     &              (XMAT(1)/(2.0D0*(1.0D0+XMAT(2))))*DEPST(2)*XLAMBDA
      SIGF(3)     = SIG0(3) +
     &              (XMAT(1)/(2.0D0*(1.0D0+XMAT(2))))*DEPST(3)*XLAMBDA

      RETURN
      END








