C DYCHPL    SOURCE    BP208322  19/02/25    21:15:48     10120          
      SUBROUTINE DYCHPL(XDEP,XVIT,XDPLAS,XRAID,XJEU,XAMO,XSEUIL,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   XRAID   Valeur de la raideur.                                  *
* e   XJEU    Valeur de la limite de force elastique (positive)
* e   XAMO    Valeur de l'amortissement
* 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 creation:                                      *
*                                                                    *
*     I. POLITOPOULOS  19/09/1994
*                                                                    *
*--------------------------------------------------------------------*

      XFL = 0.D0
      XVAL = XDEP - XJEU - XDPLAS

      IF (IPERM.EQ.2) THEN
cbp         IF (iannul.EQ.0) THEN
          XE = XSEUIL/XRAID
          XFLR = XRAID * XVAL
          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
          XE = XSEUIL/XRAID
          XFLR = - XRAID * XVAL
          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





 
