C LUMP5     SOURCE    CHAT      05/01/13    01:27:12     5004
      SUBROUTINE LUMP5(REL,LRE,RE,IFOUR)
c====================================================================
c
c     utilisé par l'opérateur LUMP pour le coq2
c
c     remplissage de RE à partir de
c     rel (lre,lre) matrice de rigidite triangulaire
c     inferieure.
c
c     on diagonalise la matrice en somme les termes de la
c     meme lignes, somme que l'on met sur la diagonale
c     pour les dd de translation
c
c     pour les
c
c     on suppsoe que RE est initialisée à 0
c
c====================================================================
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
      DIMENSION REL(LRE,*),RE(LRE,*)
*
*
*
      NTRA = 2
      IF (IFOUR .EQ. 1) NTRA = 3
c      on traite ux uy uz
c       boucle sur les noeuds
      DO 430 I=1,2
c         boucle sur les ddl ux uy uz locaux
          DO 420 J=1,NTRA
              IDERIJ = (NTRA+1)*(I-1) + J
              SUM = 0.D0
              DO 410 K=1,2
                  DO 400 L=1,NTRA
                      IDERKL= (NTRA+1)*(K-1)+L
                      SUM = SUM + REL(IDERIJ,IDERKL)
 400              CONTINUE
 410          CONTINUE
              RE(IDERIJ,IDERIJ) = SUM
 420      CONTINUE
 430  CONTINUE
c
c        on traite maintenant les ddl de rotation
c
      TRAC = REL(NTRA+1,NTRA+1) + REL(2*NTRA+2,2*NTRA+2)
      RE(NTRA+1,NTRA+1) = TRAC / 2.D0
      RE(2*NTRA+2,2*NTRA+2) = RE(3,3)
*
*  cas des déformations planes généralisées
*  la diagonalisation est différente pour les ddl transverses
      IF ( IFOUR .EQ. -3) THEN
*       inconnue RX
        RE(LRE-1,LRE-1)=(REL(LRE-1,LRE-1)+REL(LRE,LRE))/2.D0
*       inconue RY
        RE(LRE,LRE)=RE(LRE-1,LRE-1)
*       inconnue UZ
        RE(LRE-2,LRE-2)=RE(LRE-1,LRE-1)
      ENDIF
*
      RETURN
      END


