C DGCHFR    SOURCE    CHAT      05/01/12    22:48:33     5004
        SUBROUTINE DGCHFR(IDIM,IGP,XPALB,NLIAB,I,I0,I1,I2,I3,I4,
     +  XGLIS,XADHE,XRAIT,XAMOT,XFN,XFT,XPUS,XPAS)
      IMPLICIT INTEGER(I-N)
        IMPLICIT REAL*8(A-H,O-Z)
*----------------------------------------------------------------
*                                                                    *
*     Op{rateur DYNE : algorithme de Fu - de Vogelaere               *
*     ________________________________________________               *
*                                                                    *
*     LE PAS DE TEMPS DOIT ETRE CHOISI DE TELLE FACON QUE LE         *
*     RESSORT TANGENTIEL NE PUISSE PAS PASSER DE LA COMPRESSION      *
*     ET A L EXTENSION DURANT UN PAS DE TEMPS CE QUI EXCLUT LE       *
*     PASSAGE BRUTAL D UN GLISSEMENT DANS UN SENS A UN GLISSEMENT    *
*     DANS L AUTRE SENS                                              *
*                                                                    *
*                                                                    *
*     Gestion des phases glissement et adh{rence du frottement de    *
*     COULOMB                                                        *
*                                                                    *
*     Param}tres:                                                    *
*                                                                    *
* e   IGP     Indice de glissement au pas pr{c{dent                  *
* es  XPALB   Tableau contenant les param}tres de la liaison         *
* e   NLIAB   Nombre de liaisons sur la base B                       *
* e   I       Num{ro de la liaison                                   *
* e   I0      Pointeur de la vitesse tangentielle dans XPALB         *
* e   I1      Pointeur de la vitesse tangentielle au pas pr{c{dent   *
*             dans XPALB                                             *
* e   I2      Pointeur de la force tangentielle au pas               *
*             pr{c{dent dans XPALB                                   *
* e   I3      Pointeur de la vitesse du glisseur au pas              *
*             pr{c{dent dans XPALB                                   *
* e   XFN     Valeur de la force de choc suivant la normale.         *
* e   XGLIS   Valeur du coefficient de glissement                    *
* e   XADHE   Valeur du coefficient d'adh{rence
* e   XRAIT   Valeur de la raideur tangentielle                      *
* e   XAMOT   Valeur de l'amortissement tangentiel                   *
*  s  XFT     Module de la force de choc projet{e sur le plan tangent*
*  s  XPUS    Valeur de la puissance d'usure instantan{e             *
*  e  XPAS    Pas de temps                                           *                                                                *
*                                                                    *
* Auteurs Heidi NEDJAI  Rene GIBERT
**********************************************************************
        DIMENSION XPALB(NLIAB,*)
        DIMENSION XFORT (3)
        DIMENSION XVITG (3)
        XFT = 0.D0
        XPUS = 0.D0

*  modele d' Antunez
        IF (IGP.EQ.1) THEN
*
*CAS1 IL Y AVAIT GLISSEMENT AU PAS PRECEDENT ON SUPPOSE QUE LE     *
*GLISSEMENT CONTINUE DANS LE MEME SENS                             *
        CALL DGCHGL(IDIM,IGP,XPALB,NLIAB,I,I0,I1,I2,I3,XGLIS,
     +  XRAIT,XAMOT,XFN,XFT,XPUS,XVITG,XFORT,XPAS)
*ON FAIT LE TEST SUR LES VITESSES DU GLISSEUR                      *
*PRODUIT SCALAIRE DE LA VITESSE DU GLISSEUR AU PAS n ET AU         *
*PAS  n-1                                                          *
*
        PSVITG = 0.D0
        DO 10 ID = 1,IDIM
        PSVITG = PSVITG + XVITG(ID) * XPALB(I,I3+ID)
*
  10    CONTINUE
* end do
        IF  (PSVITG.GT.0.D0) THEN
*IL Y A GLISSEMENT
        IGP = 1
*
        DO 11 ID = 1,IDIM
        XPALB(I,I2+ID) = XFORT(ID)
        XPALB(I,I3+ID) = XVITG(ID)

  11    CONTINUE
* end do
        ELSE
        CALL DGCHAD(IDIM,IGP,XPALB,NLIAB,I,I0,I1,I2,I3,XADHE,
     +  XRAIT,XAMOT,XFN,XFT,XPUS,XVITG,XFORT,XPAS)
        IGP = 0
        DO 30 ID = 1,IDIM
        XPALB(I,I2+ID) = XFORT(ID)
        XPALB(I,I3+ID) = XVITG(ID)
  30    CONTINUE

        ENDIF
        ELSE
*(ELSE DE IGP=1 DU DEBUT)
*CAS2 IL Y AVAIT ADHERENCE AU PAS PRECEDENT ,ON SUPPOSE QUE     *
*L ADHERENCE CONTINUE

        CALL DGCHAD(IDIM,IGP,XPALB,NLIAB,I,I0,I1,I2,I3,XADHE,
     +  XRAIT,XAMOT,XFN,XFT,XPUS,XVITG,XFORT,XPAS)
*

*ON FAIT LE TEST
        IF (XFT.GT.(XADHE * ABS(XFN))) THEN
*L ADHERENCE NE TIENT PAS
        IGP = 1
        CALL DGCHGL(IDIM,IGP,XPALB,NLIAB,I,I0,I1,I2,I3,XGLIS,
     +  XRAIT,XAMOT,XFN,XFT,XPUS,XVITG,XFORT,XPAS)

        DO 40 ID = 1,IDIM
        XPALB(I,I2+ID) = XFORT(ID)
        XPALB(I,I3+ID) = XVITG(ID)
***ICI ON RAJOUTE BOUCLE 40

  40    CONTINUE
*End do
        ELSE
        IGP = 0

        DO 50 ID = 1,IDIM
        XPALB(I,I2+ID) = XFORT(ID)
        XPALB(I,I3+ID) = XVITG(ID)
***ICI ON RAJOUTE BOUCLE 50

  50    CONTINUE

        endif
        endif
        end









