C LUMP2     SOURCE    CHAT      05/01/13    01:26:58     5004
      SUBROUTINE LUMP2(REL,LRE,RE,IFOUR)
c====================================================================
c
c     utilisé par l'opérateur LUMP
c
c     remplissage de RE à partir de
c     rel (lre,lre) matrice de rigidite triangulaire
c     inferieure.
c
c     méthode HRZ
c     on diagonalise la matrice en conservant le rapport
c     des termes diagonaux de la matrice consistante
c     et en corrigeant pour assurer que la masse est conservée
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,*)
*
*
      IF ( IFOUR .EQ. -3) LRE=LRE-3
*
*  calcul de la masse de l'element
*
      SUM1 = 0.D0
      SUM2 = 0.D0
      DO 200 IA=1,LRE
          DO 100 IB=1,LRE
              I = MAX(IA,IB)
              J = MIN(IA,IB)
              SUM1 = SUM1 + REL(I,J)
 100      CONTINUE
          SUM2 = SUM2 + REL(IA,IA)
 200  CONTINUE
*
*     normalisation
      RAP = SUM1 / SUM2
      DO 300 I=1,LRE
         RE(I,I)=REL(I,I)*RAP
 300  CONTINUE
*
*  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+2,LRE+2)=(REL(LRE+2,LRE+2)+REL(LRE+3,LRE+3))/2.D0
*       inconue RY
        RE(LRE+3,LRE+3)=RE(LRE+2,LRE+2)
*       inconnue UZ
        RE(LRE+1,LRE+1)=REL(LRE+1,LRE+1)
        LRE = LRE + 3
      ENDIF
*
      RETURN
      END


