C DYCHPL2   SOURCE    BP208322  19/02/25    21:15:49     10120          
C DYCHPL2    SOURCE    LAVARENN  96/08/05    21:19:09     2237
      SUBROUTINE DYCHPL2(XDEP,XVIT,XDPLAS,XRAID,XJEU,XAMO,XSEUIL
     &           ,XABSCI,XORDON,NIP,NLIAB,I,XFL,IPERM,iannul)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
*--------------------------------------------------------------------*
*                                                                    *
*     Operateur DYNE : algorithme de Fu - de Vogelaere               *
*     ________________________________________________               *
*                                                                    *
*     Calcul de la force de choc pour un choc elementaire point-plan
*     elastoplastique, la force restant toujours positive
*                                                                    *
*     Parametres:                                                    *
*                                                                    *
* e   XDEP    Valeur du d{placement.                                 *
* e   XVIT    Valeur de la vitesse normale
* e   XJEU    Valeur de la limite de force elastique (positive)
* e   XAMO    Valeur de l'amortissement
* e   XABSCI  Abscisses loi elastique                                *
* e   XORDON  Ordonnees loi elastique                                *
* e   XSEUIL  Valeur de la force plastique
* e   IPERM   =2 si liaison permanente                               *
* es  XDPLAS  Valeur du deplacement plastique (du pas precedent
*              en entree, du pas actuel en sortie)
*  s  XFL     Valeur de la force de choc.                            *
*                                                                    *
*                                                                    *
*     Auteur, date de cr{ation:                                      *
*                                                                    *
*     Bruno FONTAINE, le 26/02/98                                    *
*                                                                    *
*--------------------------------------------------------------------*
      REAL*8 XABSCI(NLIAB,*),XORDON(NLIAB,*)

      XFL = 0.D0
      XVAL = XDEP - XJEU - XDPLAS
      IF (IPERM.EQ.2) THEN
cbp         IF (iannul.EQ.0) THEN
        CALL LIRANG(XSEUIL,XORDON,XABSCI,I,NLIAB,NRG,XPENTE,NIP)
          XE = XABSCI(I,NRG) + XPENTE*(XSEUIL-XORDON(I,NRG))
        CALL LIRANG(XVAL,XABSCI,XORDON,I,NLIAB,NRG,XPENTE,NIP)
        XFLR = XORDON(I,NRG) + XPENTE*(XVAL-XABSCI(I,NRG))
          IF (XFLR.LT.0) XCRIT=-XSEUIL
          IF (XFLR.GE.0) XCRIT= XSEUIL

          DXFLP =  XFLR - XCRIT
            IF (ABS(XFLR).LE.ABS(XCRIT)) THEN
              XFL = XFLR
            ELSE
              XFL = XCRIT
              XDPLAS = XDEP - XJEU - XCRIT/XRAID
            ENDIF
          XFL = - XFL - XAMO*XVIT
cbp         ENDIF
      ELSE
        IF ((XVAL .GE. 0.D0).AND.(iannul.EQ.0)) THEN
        CALL LIRANG(XSEUIL,XORDON,XABSCI,I,NLIAB,NRG,XPENTE,NIP)
          XE = XABSCI(I,NRG) + XPENTE*(XSEUIL-XORDON(I,NRG))
        CALL LIRANG(XVAL,XABSCI,XORDON,I,NLIAB,NRG,XPENTE,NIP)
        XFLR = - (XORDON(I,NRG) + XPENTE*(XVAL-XABSCI(I,NRG)))
          DXFLP =  XSEUIL - (ABS (XFLR))
            IF (DXFLP.LE.0.D0) THEN
              XDPLAS = XDEP - XJEU - XE
              XFLR = - XSEUIL
            ENDIF
          XFL = XFLR - XAMO*XVIT
          IF (XFL.GT.0.D0) XFL = 0.D0
        ELSE
          XFL = 0.D0
        ENDIF
      ENDIF

      END







 
