C LIAMAS    SOURCE    CHAT      05/01/13    01:16:42     5004
      SUBROUTINE LIAMAS(NBPGAU,IDIM,NBNN,NDDL,XE,CFPI,WORK,POIGAU,
     1         SHPTOT,REL,LRE,IER246)
C=======================================================================
C
C      CALCULE LA MATRICE MASSE DE L ELEMENT DE RACCORD
C       LIQUIDE MASSIF LINEAIRE   CAS TRIDIMENSIONNEL
C      (INTEGRE LE PRODUIT PI*U AVEC U DEPLACEMENT NORMAL A LA PAROI
C         DU SOLIDE)
C
C      ROUTINE FORTRAN PUR
C
C     JACQUELINE BROCHARD OCTOBRE 85
C=======================================================================
C      ENTREES
C         NBPGAU = NB DE PTS DE GAUSS
C         NBNN   = NB DE NOEUDS DE L ELEMENT DE RACCORD
C         XE(3,NBNN) = COORDONNEES LOCALES DE L ELEMENT
C         CFPI   = COEFFICIENT DE NORMALISATION SUR PI
C         WORK(IDIM) = COMPOSANTES DE LA NORMALE SORTANTE AU FLUIDE
C         POIGAU(NBPGAU) = POIDS DE GAUSS
C         SHPTOT(6,NBNN,NBPGAU) = FONCTIONS DE FORME ET DERIVEES DE
C            L ELEMENT DE RACCORD
C      SORTIES
C         REL(LRE,LRE) = MATRICE DE MASSE
C=======================================================================
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
      DIMENSION XE(3,1),WORK(IDIM),POIGAU(NBPGAU),SHPTOT(6,NBNN,1)
      DIMENSION REL(LRE,1)
      DATA EPSI/1.D-12/
      DATA XZER/0.D0/
C
C     BOUCLE SUR LES NOEUDS LIQUIDE ET INTEGRATION NUMERIQUE
C
      IER246=0
      NBNNL=NBNN/2
      DO 100 NL=1,NBNNL
      DO 80 IGAU=1,NBPGAU
C
C     CALCUL DU RAYON ET DES COMPOSANTES DU VECTEUR NORMAL A LA PAROI
C
      VNQSI1=XZER
      VNQSI2=XZER
      VNQSI3=XZER
      VNETA1=XZER
      VNETA2=XZER
      VNETA3=XZER
      ALFA=XZER
      BETA=XZER
      GAMMA=XZER
      ID=NBNNL+1
      DO 20 J=ID,NBNN
      VNQSI1=VNQSI1+SHPTOT(2,J,IGAU)*XE(1,J)
      VNQSI2=VNQSI2+SHPTOT(2,J,IGAU)*XE(2,J)
      VNQSI3=VNQSI3+SHPTOT(2,J,IGAU)*XE(3,J)
      VNETA1=VNETA1+SHPTOT(3,J,IGAU)*XE(1,J)
      VNETA2=VNETA2+SHPTOT(3,J,IGAU)*XE(2,J)
      VNETA3=VNETA3+SHPTOT(3,J,IGAU)*XE(3,J)
 20   CONTINUE
      ALFA=VNQSI2*VNETA3-VNQSI3*VNETA2
      BETA=VNQSI3*VNETA1-VNQSI1*VNETA3
      GAMMA=VNQSI1*VNETA2-VNQSI2*VNETA1
C
C     ON COMPARE L ORIENTATION DE LA NORMALE SORTANTE AU FLUIDE
C       A CELLE DE LA PAROI
C
      PSCAL=ALFA*WORK(1)+BETA*WORK(2)+GAMMA*WORK(3)
      IF (ABS(PSCAL).LT.EPSI) GOTO 777
      SENS=PSCAL/ABS(PSCAL)
C
C     ON REMPLIT LA MATRICE
C
      DO 30 J=ID,NBNN
      IL=2*NL
      IC1=2*NBNNL+(J-ID)*NDDL+1
      IC2=IC1+1
      IC3=IC1+2
      REL(IL,IC1)=REL(IL,IC1)-SENS*CFPI*SHPTOT(1,NL,IGAU)
     1                      *POIGAU(IGAU)*ALFA*SHPTOT(1,J,IGAU)
      REL(IL,IC2)=REL(IL,IC2)-SENS*CFPI*SHPTOT(1,NL,IGAU)
     1                      *POIGAU(IGAU)*BETA*SHPTOT(1,J,IGAU)
      REL(IL,IC3)=REL(IL,IC3)-SENS*CFPI*SHPTOT(1,NL,IGAU)
     1                     *POIGAU(IGAU)*GAMMA*SHPTOT(1,J,IGAU)
 30   CONTINUE
 80   CONTINUE
C
C     SYMETRISATION
C
      DO 40 J=ID,NBNN
      IL=2*NL
      IC1=2*NBNNL+(J-ID)*NDDL+1
      IC2=IC1+1
      IC3=IC1+2
      REL(IC1,IL)=REL(IL,IC1)
      REL(IC2,IL)=REL(IL,IC2)
      REL(IC3,IL)=REL(IL,IC3)
 40   CONTINUE
100   CONTINUE
      GOTO 666
C
C     ERREUR  LE VECTEUR PERMETTANT D ORIENTER L ELEMENT DE RACCORD
C     EST NUL OU PARALLELE A LA FRONTIERE DU FLUIDE
C
777   IER246=246
666   CONTINUE
      RETURN
      END

