C CALC3     SOURCE    CHAT      05/01/12    21:45:39     5004
C CALC3.eso     SOURCE     bald     MAR 28/03/95     00:00:00
        SUBROUTINE CALC3(KNN,KNT,KTN,KTT,SIG0,DU1,DU2,DV,NSTRS,
     $                   DELTA,RI0,DCON)
C
C-------------------------------------------------------------
C
C   ENTREES
C
C     KNN,KNT,KTN,KTT   = RAIDEURS DU JOINT 2D EQUIVALENT
C     SIG0(NSTRS)       = CONTRAINTES INITIALES (AU PAS PRECEDENT)
C     DU1               = INCREMENT DE LA U1
C     DU2               = INCREMENT DE LA U2
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 (3D)
c
       IF((ABS(SIG0(1)).LE.TOL1).AND.(ABS(SIG0(2)).LE.TOL1))THEN
c
c    les deux tau sont nulles
c
          IF((ABS(DU1).LE.TOL2).AND.(ABS(DU2).LE.TOL2))THEN
c
c       les deux incréments de déformation sont nuls
c
             DELTA=0.D0
c
             RI0(1,1)=0.D0
             RI0(1,2)=0.D0
             RI0(1,3)=0.D0
c
             RI0(2,1)=0.D0
             RI0(2,2)=0.D0
             RI0(2,3)=0.D0
c
             RI0(3,1)=0.D0
             RI0(3,2)=0.D0
             RI0(3,3)=KNN
c
          ELSE
c
             DELTA=SQRT(DU1**2+DU2**2)
c
             RI0(1,1)=KTT
             RI0(1,2)=0.D0
             RI0(1,3)=KTN*(DU1/SQRT(DU1**2+DU2**2))
c
             RI0(2,1)=0.D0
             RI0(2,2)=KTT
             RI0(2,3)=KTN*(DU2/SQRT(DU1**2+DU2**2))
c
             RI0(3,1)=KNT*(DU1/SQRT(DU1**2+DU2**2))
             RI0(3,2)=KNT*(DU2/SQRT(DU1**2+DU2**2))
             RI0(3,3)=KNN
c
          END IF
c
       ELSE
c
       DELTA=(SIG0(1)*DU1+SIG0(2)*DU2)/SQRT(SIG0(1)**2+SIG0(2)**2)
c
       RI0(1,1)=KTT*(1.D0+(SIG0(2)**2)/(SIG0(1)**2+SIG0(2)**2))
       RI0(1,2)=-KTT*(SIG0(1)*SIG0(2))/(SIG0(1)**2+SIG0(2)**2)
       RI0(1,3)=KTN*SIG0(1)/SQRT(SIG0(1)**2+SIG0(2)**2)
c
       RI0(2,1)=-KTT*(SIG0(2)*SIG0(1))/(SIG0(1)**2+SIG0(2)**2)
       RI0(2,2)=KTT*(1.D0+(SIG0(1)**2)/(SIG0(1)**2+SIG0(2)**2))
       RI0(2,3)=KTN*SIG0(2)/SQRT(SIG0(1)**2+SIG0(2)**2)
c
       RI0(3,1)=KNT*SIG0(1)/SQRT(SIG0(1)**2+SIG0(2)**2)
       RI0(3,2)=KNT*SIG0(2)/SQRT(SIG0(1)**2+SIG0(2)**2)
       RI0(3,3)=KNN
c
       END IF
c
       DCON(1)=RI0(1,1)*DU1+RI0(1,2)*DU2+RI0(1,3)*DV
       DCON(2)=RI0(2,1)*DU1+RI0(2,2)*DU2+RI0(2,3)*DV
       DCON(3)=RI0(3,1)*DU1+RI0(3,2)*DU2+RI0(3,3)*DV
c
       RETURN
c
       END

