C BMAT28    SOURCE    FANDEUR   10/08/31    21:15:16     6735

C=======================================================================
C=                          B M A T 2 8                                =
C=                          -----------                                =
C=  Fonction :                                                         =
C=  ----------                                                         =
C=   Calcul de la matrice B reliant les deformations en un point d'un  =
C=   element fini aux ddls de deplacement aux noeuds de cet element    =
C=   Le jacobien est egalement evalue au point de Gauss pour verifier  =
C=   ulterieurement si l'element fini n'est pas trop distordu.         =
C=                                                                     =
C=  Parametres :  (E)=Entree  (S)=Sortie                               =
C=  ------------                                                       =
C=   iGau     (E)   Numero du point de Gauss considere                 =
C=   NBPGAU   (E)   Nombre de points de Gauss de l'element fini        =
C=   POIGAU,QSIGAU   (E)   |  Poids et coordonnees de reference des    =
C=   ETAGAU,DZEGAU   (E)   |  differents points de Gauss de l'element  =
C=   ITEL     (E)   Type de l'element fini (cf. NOMTP dans bdata.eso)  =
C=   MFR      (E)   Formulation associee a l'element fini              =
C=   NBNO     (E)   Nombre de noeuds de l'element fini                 =
C=   LRE      (E)   Nombre de DDL de l'element fini                    =
C=   IFOU     (E)   Mode de calcul utilise (cf. IFOUR dans CCOPTIO)    =
C=   NST      (E)   Nombre de composantes de deformations              =
C=   NN       (E)   Numero du mode de Fourier (si IFOU=1)              =
C=   DIM3     (E)   Epaisseur dans l'hypothese des contraintes planes  =
C=   XEL      (E)   Coordonnees des noeuds de l'element fini etudie    =
C=   SHPTOT   (E)   Fonctions de forme et leurs derivees               =
C=   SHP      (S)   Fonctions de forme et leurs derivees actuelles     =
C=   BGENE    (S)   Matrice de gradients (B) calcule au point de Gauss =
C=   DJAC     (S)   Jacobien au point de Gauss etudie                  =
C=   XDPGE,YDPGE   (E)   Coordonnees du noeud support (mode PLAN GENE) =
C=                                                                     =
C=  Remarque :                                                         =
C=  ----------                                                         =
C=   Lors de l'entree dans le sous-programme, SHPTOT(2 a 4,*) contient =
C=   les DERIVEES des fonctions de forme par rapport aux coordonnees   =
C=   de REFERENCE Qsi,Eta,Dzeta.                                       =
C=   En sortie du sous-programme, SHP(2 a 4,*) contient les DERIVEES   =
C=   des fonctions de FORME par rapport aux coordonnees REELLES x,y,z. =
C=======================================================================

      SUBROUTINE BMAT28 (iGau,NBPGAU,POIGAU,QSIGAU,ETAGAU,DZEGAU,
     &                   ITEL,MFR,NBNO,LRE,IFOU,NST,NN,DIM3,XEL,
     &                   SHPTOT,SHP,BGENE,DJAC,XDPGE,YDPGE)

      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)

-INC CCREEL

      DIMENSION XEL(3,*),BGENE(NST,*),SHP(6,*),SHPTOT(6,NBNO,*),
     &          POIGAU(*),QSIGAU(*),ETAGAU(*),DZEGAU(*)

      DIMENSION BB1(3,9),GEOM(20),XX(3),YY(3)

      DATA XX / .5D0,.0D0,.5D0 /
      DATA YY / .0D0,.5D0,.5D0 /

      IF (ITEL.NE.28.AND.ITEL.NE.45) RETURN

      RR=XZero
      CALL ZERO(BGENE,NST,LRE)

C ===
C  Element COQUE DKT
C ===
      DO i=1,NBNO
        SHP(1,i)=SHPTOT(1,i,iGau)
        SHP(2,i)=SHPTOT(2,i,iGau)
        SHP(3,i)=SHPTOT(3,i,iGau)
      ENDDO
      CALL DEVOLU(XEL,SHP,MFR,NBNO,IFOU,NN,2,DIM3,RR,DJAC)
      k = 1
      DO i = 1, NBNO
        BGENE(1,k) = SHP(2,i)
        BGENE(2,k) = XZero
        BGENE(3,k) = SHP(3,i)
        BGENE(1,k+1) = XZero
        BGENE(2,k+1) = SHP(3,i)
        BGENE(3,k+1) = SHP(2,i)
        K=K+6
      ENDDO
      CALL GEOCST(XEL,GEOM)
      CALL BFDKT(XX(iGau),YY(iGau),GEOM,BB1)
      DJAC=GEOM(17)
      K=2
      KK=0
      DO i=1,3
        DO IX=1,3
          DO IY=1,3
            BGENE(3+IX,K+IY)=BB1(IX,IY+KK)
          ENDDO
        ENDDO
        K=K+6
        KK=KK+3
      ENDDO

      RETURN
      END


