C LUMP7     SOURCE    CHAT      05/01/13    01:27:23     5004
      SUBROUTINE LUMP7(REL,LRE,RE,NBNO)
c====================================================================
c
c     utilisé par l'opérateur lump pour les éléments coq6 et coq8
c
c     remplissage de re à partir de
c     rel (lre,lre) matrice de rigidite triangulaire
c     inferieure.
c
c     nbno est les nombre de noeuds
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 ddl de rotation on prend la trace divisée par le
c     nombre de termes
c
c     ce travail est realisé dans le repere global
c
c     on suppose que re est initialisée à 0
c
c====================================================================
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
      DIMENSION REL(LRE,*),RE(LRE,*)
*
*
*
c      on traite ux uy uz
c       boucle sur les noeuds
      SUM2 = 0.D0
      SUM3 = 0.D0
      NTRA = 3
      DO 430 I=1,NBNO
c         boucle sur les ddl ux uy uz locaux
          DO 420 J=1,NTRA
              IDERIJ = (NTRA+3)*(I-1) + J
              SUM = 0.D0
              DO 410 K=1,NBNO
                  DO 400 L=1,NTRA
                      IDERKL= (NTRA+3)*(K-1)+L
                      SUM = SUM + REL(IDERIJ,IDERKL)
 400              CONTINUE
 410          CONTINUE
              SUM2 = SUM2 +  REL(IDERIJ,IDERIJ)
              SUM3 = SUM3 + SUM
              RE(IDERIJ,IDERIJ) = SUM
 420      CONTINUE
 430  CONTINUE
c
c     si il s'agit du tri6 il faut appliquer la méthode HRZ sur les translations
c
       IF (NBNO .EQ. 6) THEN
         RAP = SUM3/SUM2
         DO 730 I=1,NBNO
c         boucle sur les ddl ux uy uz locaux
           DO 720 J=1,NTRA
              IDERIJ = (NTRA+3)*(I-1) + J
              RE(IDERIJ,IDERIJ) = REL(IDERIJ,IDERIJ)*RAP
 720       CONTINUE
 730     CONTINUE
        ENDIF
c
c        on traite maintenant rx ry rz
c
      NTRA = 3
      TRAC = 0.D0
c       boucle sur les noeuds
      DO 530 I=1,NBNO
c         boucle sur les ddl rx ry rz
          DO 520 J=1,NTRA
              IDERIJ = (NTRA+3)*(I-1) +3 + J
              TRAC = TRAC + REL(IDERIJ,IDERIJ)
 520      CONTINUE
 530  CONTINUE
c
      DO 630 I=1,NBNO
c         boucle sur les ddl rx ry rz  remplir re()
          DO 620 J=1,NTRA
              IDERIJ = (NTRA+3)*(I-1) +3 + J
              RE(IDERIJ,IDERIJ) = TRAC / 3.D0 / NBNO
 620      CONTINUE
 630  CONTINUE
*
      RETURN
      END


