C CALC2     SOURCE    CHAT      05/01/12    21:45:37     5004
C CALC2.eso     SOURCE     bald     MAR 28/03/95     00:00:00
        SUBROUTINE CALC2(KNN,KNT,KTN,KTT,SIG0,DU,DV,NSTRS,
     $                   DELTA,RI0,DCON)
C
C-------------------------------------------------------------
C
C   ENTREES
C
C     KNN,KNT,KTN,KTT    = RAIDEURS DU JOINT 2D
C     SIG0(NSTRS)        = CONTRAINTES INITIALES (AU PAS PRECEDENT)
C     DU                 = INCREMENT DE LA U
C     DV                 = INCREMENT DE LA V
C     NSTRS              = NOMBRE DE COMPOSANTES DE CONTRAINTES
C
C   SORTIES
C
C     DELTA              = INCREMENT DE LA U EQUIVALENTE
C     RI0(NSTRS,NSTRS)   = MATRICE DE RIGIDITE DU JOINT
C     DCON(NSTRS)        = VECTEUR DES INCREMENTS DE CONTRAINTE
C
C-------------------------------------------------------------
C
c
      IMPLICIT INTEGER(I-N)
       IMPLICIT REAL*8(A-H,O-Z)
       DIMENSION SIG0(NSTRS), RI0(NSTRS,NSTRS), DCON(NSTRS)
       REAL*8 KNN, KNT, KTN, KTT
c
       TOL1=1.D-20
       TOL2=1.D-8
c
c    calcul de la matrice Dt reale (2D)
c
       IF(ABS(SIG0(1)).LE.TOL1)THEN
c
c    la tau est nulle
c
          IF(ABS(DU).LE.TOL2)THEN
c
c       l' incrément de déformation est nul
c
             DELTA=0.D0
c
             RI0(1,1)=0.D0
             RI0(1,2)=0.D0
c
             RI0(2,1)=0.D0
             RI0(2,2)=KNN
c
          ELSE
c
             DELTA=ABS(DU)
c
             RI0(1,1)=KTT
             RI0(1,2)=KTN*(DU/ABS(DU))
c
             RI0(2,1)=KNT*(DU/ABS(DU))
             RI0(2,2)=KNN
c
          END IF
c
       ELSE
c
       DELTA=DU*(SIG0(1)/ABS(SIG0(1)))
c
       RI0(1,1)=KTT
       RI0(1,2)=KTN*(SIG0(1)/ABS(SIG0(1)))
c
       RI0(2,1)=KNT*(SIG0(1)/ABS(SIG0(1)))
       RI0(2,2)=KNN
c
       END IF
c
       DCON(1)=RI0(1,1)*DU+RI0(1,2)*DV
       DCON(2)=RI0(2,1)*DU+RI0(2,2)*DV
c
       RETURN
c
       END


