C BDBST     SOURCE    CHAT      05/01/12    21:37:58     5004

C=======================================================================
C=                             B D B S T                               =
C=                             ---------                               =
C=                                                                     =
C=  Fonction :                                                         =
C=  ----------                                                         =
C=   Calcul de la contribution d'un point de Gauss a la matrice de     =
C=   RIGIDITE elastique REL d'un element fini.                         =
C=   Contribution : Jacobien.transpose(BGENE)*DHOOK*BGENE              =
C=                                                                     =
C=  Parametres :  (E)=Entree  (S)=Sortie                               =
C=  ------------                                                       =
C=   BGENE    (E)   Matrice B                                          =
C=   DJac     (E)   "Volume" associe au point de Gauss                 =
C=   DHOOK    (E)   Matrice de Hooke au point de Gauss                 =
C=   LRE      (E)   Nombre de DDL de l'element fini                    =
C=   NSTRS    (E)   Nombre de composantes de contraintes/deformations  =
C=   REL     (E/S)  Matrice de rigidite de l'element fini              =
C=                                                                     =
C=   Remarque : Actuellement, NSTRS doit etre inferieur ou egal a 10 ! =
C=======================================================================

      SUBROUTINE BDBST(BGENE,DJAC,DHOOK,LRE,NSTRS,REL)

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

-INC CCREEL

      DIMENSION DHOOK(NSTRS,*),REL(LRE,*),BGENE(NSTRS,*)
      DIMENSION WORK1(10),WORK2(10)

C= Boucle sur les DDL
      DO IX=1,LRE
C== Calcul de JACobien*Poids*B pour le DDL IX
        DO i=1,NSTRS
          WORK1(i)=DJAC*BGENE(i,IX)
        ENDDO
C== Calcul de Vol.*B*D pour le DDL IX
        DO i=1,NSTRS
          CC=XZero
          DO j=1,NSTRS
            CC=CC+WORK1(j)*DHOOK(i,j)
          ENDDO
          WORK2(i)=CC
        ENDDO
C== Calcul de Vol.Bt.D.B pour les DDL IX et IY
        DO IY=1,IX
          CC=XZero
          DO i=1,NSTRS
            CC=CC+BGENE(i,IY)*WORK2(i)
          ENDDO
          REL(IX,IY)=REL(IX,IY)+CC
          REL(IY,IX)=REL(IX,IY)
        ENDDO
      ENDDO

      RETURN
      END



