C COURBU    SOURCE    GOUNAND   14/05/28    21:15:04     8056
      SUBROUTINE COURBU(SIG,FT,ISGN1,ISGN2,NSURF,FFF)
C Calcul de la derivee seconde pour le calcul de la matrice tangente
C 21/08/95
C
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
C
C========================================================================
C
C ENTREES:
C -------
C   SIG    = Vecteurs contraintes egal a SIGT pour les deux surfaces
C   ISGN1  =  1 EN TRACTION -1 EN COMPRESSION
C   ISGN2  = -1 SI ON ECOULE SUR LA PLUS PETITE CONT. PRIN.
C            +1 SI ON ECOULE SUR LA PLUS GRANDE CONT. PRINC.
C   FT     = Contrainte de reference pour le test de l'apex
C SORTIES:
C -------
C   FFF    = Derivee seconde (matrice 3*3)
C
C
C========================================================================
C
      PARAMETER(XZER=0.D0,UNDEMI=.5D0,UNQUAR=.25D0,UN=1.D0,
     &          DEUX =2.D0,PRECIS=1.D-4)
C
      DIMENSION SIG(4),XPP(3,3),FFF(3,3),XPSIG(3,1),XPSIGT(1,3)
C
      CALL ZERO(XPP,3,3)
      CALL ZERO(FFF,3,3)
      XPP(1,1) = UNDEMI
      XPP(1,2) = (-1.D0)*UNDEMI
      XPP(2,1) = (-1.D0)*UNDEMI
      XPP(2,2) = UNDEMI
      XPP(3,3) = DEUX
      SIG(3) = SIG(4)
C========================================================================
C                      Calcul de phi
C====================================================================
      PHI = SQRT ((UNDEMI*(SIG(1)-SIG(2)))**2+SIG(3)**2)
      IF (PHI.LT.ABS(PRECIS*FT)) THEN
C                      Cas de l'apex
        IF (NSURF.EQ.2) THEN
          PHI = (ISGN2*ISGN1)*(UN/ABS(PRECIS*FT))
          CALL PLMATR(XPP,UNDEMI*PHI,FFF,XZER,3,3,FFF)
        ELSE
          CALL ZERO(FFF,3,3)
        ENDIF
      ELSE
C                      Cas regulier
        CALL MATVE1(XPP,SIG,3,3,XPSIG,2)
        CALL MATVE1(XPP,SIG,3,3,XPSIGT,1)
        CALL MATMAT(XPSIG,XPSIGT,3,1,3,FFF)
        PHI = (ISGN1*ISGN2)*(UN/PHI)
        CALL PLMATR(XPP,UNDEMI*PHI,FFF,-UNQUAR*(PHI**3),3,3,FFF)
      ENDIF
C========================================================================
C                     Fin de la routine
C========================================================================
      RETURN
      END





