C BJT3      SOURCE    CHAT      05/01/12    21:40:46     5004
      SUBROUTINE BJT3(IGAU,MFR,IFOU,NIFOU,XEL,BPSS,SHPTOT,SHP,
     .                                  BGENE,DJAC,IRRT)
C=======================================================================
C
C     CALCUL DE LA MATRICE B = TETA * ( N , -N )
C     ET DU JACOBIEN EN IGAU
C          ROUTINE FORTRAN PUR
C          DERIVEE DE LA ROUTINE BJO4 PAR S. FELIX
C=======================================================================
C  INPUT
C     IGAU  = NUMERO DU POINT DE GAUSS
C     XEL   = COORDONNEES DES NOEUDS DE L'ELEMENT
C     BPSS  = MATRICE DE PASSAGE
C             BPSS(,) = AXE S1
C             BPSS(,) = AXE S2
C             BPSS(,) = AXE SN
C     SHPTOT= FONCTIONS DE FORME ET DERIVEES DANS L'ESPACE DE REFERENCE
C             SHPTOT(1, ) = FONCTION DE FORME
C             SHPTOT(2, ) = DERIVEES PAR RAPPORT A QSI
C             SHPTOT(3, ) = DERIVEES PAR RAPPORT A ETA
C  OUTPUT
C     SHP   = FONCTIONS DE FORME ET DERIVEES DANS L'ESPACE GEOMETRIQUE
C             SHP(1, ) = FONCTION DE FORME
C             SHP(2, ) = DERIVEES PAR RAPPORT A X LOCAL
C             SHP(3, ) = DERIVEES PAR RAPPORT A Y LOCAL
C     DJAC  = JACOBIEN AU POINT D'INTEGRATION IGAU
C     BGENE = MATRICE B AU POINT D'INTEGRATION IGAU
C     IRRT  = DIFFERENT DE ZERO SI ERREUR
C  CONSTANTES
C     NBNO  = NOMBRE DE NOEUDS
C     LRE   = NOMBRE DE COLONNES DE LA MATRICE B
C     NST   = NOMBRE DE COMPOSANTES DE CONTRAINTES
C
C  REMARQUE : ATTENTION : DANS LES CAS CONTRAINTES PLANES ET
C             AXISYMETRIQUE, LA MATRICE BPSS ( RESPECTIVEMENT BGENE )
C             N'A PLUS LA DIMENSION (3X3) ( RESPECTIVEMENT (3X18) ).
C             TROUVER LEURS DIMENSIONS CORRECTES ET MODIFIER LES
C             PARAMETRES LRE, NST, NBNO. CEUX CI CORRESPONDRONT A
C             CEUX DU CAS BIDIMENSIONNELS.
C
C=======================================================================
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
      PARAMETER (LRE=18,NST=3,NBNO=6)
      DIMENSION XEL(3,*),BGENE(NST,*),SHP(6,*),SHPTOT(6,NBNO,*)
      DIMENSION BPSS(3,3)
C
      IRRT = 0
C
C     MATRICE JACOBIENNE
C
      DO 1 I=1,NBNO
       SHP(1,I) = SHPTOT(1,I,IGAU)
       SHP(2,I) = SHPTOT(2,I,IGAU)
       SHP(3,I) = SHPTOT(3,I,IGAU)
    1 CONTINUE
C
C !!!!!! ATTENTION : IL FAUT CALCULER LE JACOBIEN AVEC NBNO=3 !!!!!!
C        IL NE FAUT SURTOUT PAS METTRE NBNO=6 CAR CA FAUSSE ALORS
C        LES RESULTATS ... NBNO DOIT ETRE EGAL A 6 CAR IL YA 6 NOEUDS
C
      NBNONN=NBNO/2
      CALL DEVOLU(XEL,SHP,MFR,NBNONN,IFOU,NIFOU,2,1.D0,RR,DJAC)
      IF (DJAC.LT.0.0D0) THEN
         IRRT = 1
      ELSE IF (DJAC.EQ.0.0D0) THEN
         IRRT = 2
      ENDIF
C
C     MATRICE B
C
      CALL ZERO(BGENE,NST,LRE)
      DO 2 I=1,3
       DO 3 J=1,3
        DO 4 K=1,3
         L=3*(J-1)+K
         M=L+9
         BGENE(I,L)=BPSS(I,K)*SHP(1,J)
         BGENE(I,M)=-BGENE(I,L)
    4   CONTINUE
    3  CONTINUE
    2 CONTINUE
C
      RETURN
      END




