C PRTT3D    SOURCE    PV090527  23/01/27    21:15:59     11574          
c*************************************************************************
      subroutine prtt3d(sige6,sige3,vsige33,vsige33t,
     #siget6,sigec6,sigec3,siget3)

c     declaration des varibles externes
      real*8 sige6(6),sige3(3),vsige33(3,3),vsige33t(3,3)
      real*8 siget6(6),sigec6(6),sigec3(3),siget3(3)
c     declaration des varibles locales
      real*8 sige33(3,3)
      real*8 x33(3,3),siget33(3,3),sigec33(3,3),sige33p(3,3),sige6p(6)
      integer i      

c     rangement des contraintes effectives en tableau 3*3
      call x6x33(sige6,sige33)
c     diagonalisation contraintes effectives actuelles et valeurs propres par la methode de jacobi
      call b3_v33(sige33,sige3,vsige33)
c     creation de la matrice de passage inverse    
      call traps1(vsige33t,vsige33,3)
c     decomposition des contraintes principales en partie positive et négative dans 
c     la base principale (avec prise en compte des erreurs numeriques de diagonalisation)
c     on suppose sige33p pas tout a fait diagonale par defaut et on utilise
c     que les contraintes normales positves pour faire la partition
      call chre3(sige33p,sige33,vsige33)
      call x33x6(sige33p,sige6p)
      do i=1,3
       siget3(i)=0.5d0*(sige33p(i,i)+abs(sige33p(i,i)))
       sigec3(i)=0.5d0*(sige33p(i,i)-abs(sige33p(i,i)))
       siget6(i)=siget3(i)
       sigec6(i)=sigec3(i)
      end do
      do i=4,6
       siget6(i)=0.d0
       sigec6(i)=sige6p(i)-siget6(i)
      end do
c     stockage des parties positives et negatives en base fixe
c     cas des contraintes de traction
      call x6x33(siget6,x33)
      call chre3(siget33,x33,vsige33t)
      call x33x6(siget33,siget6)
c     cas des contraintes de compression
      call x6x33(sigec6,x33)
      call chre3(sigec33,x33,vsige33t)
      call x33x6(sigec33,sigec6)
      return
      end

**************************************************************************************

 
