C BB302     SOURCE    MAGN      10/05/31    21:15:00     6679
      SUBROUTINE BB302(XREF,XCOPG,XPOPG,
     $     FFPGV,DFFPGV,
     $     FFPGP,DFFPGP,
     $     X,Y,PG,FN,GR,FM,GM,ND,NP,MP,NPG)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C************************************************************************
C
C     CALCULE LES FONCTIONS DE FORME D'UN : TRI4   P1 + bulle P1
C                                              ou  P1 + bulle P0
C     ^ eta
C     |
C   a |n3
C     |\
C     | \     a=sqrt(2)
C     |n4\
C     |___\ _____>ksi
C     0   a
C     n1  n2
C
C
C************************************************************************
* Entrées
      INTEGER ND,NP,MP,NPG
*
      REAL*8 XREF(ND,NP)
      REAL*8 XCOPG(ND,NPG)
      REAL*8 XPOPG(NPG)
      REAL*8 FFPGV(NP,NPG)
      REAL*8 DFFPGV(NP,ND,NPG)
      REAL*8 FFPGP(MP,NPG)
      REAL*8 DFFPGP(MP,ND,NPG)
* Sorties
      REAL*8 X(NPG),Y(NPG)
      REAL*8 PG(NPG)
      REAL*8 FN(NP,NPG),GR(ND,NP,NPG)
      REAL*8 FM(MP,NPG),GM(ND,MP,NPG)
* Travail
      INTEGER IPG,IP,ID
      REAL*8 UNSVOL,USVUSD
C***
      A=SQRT(2.D0)
      XREF(1,1)=0.D0
      XREF(2,1)=0.D0
      XREF(1,2)=A
      XREF(2,2)=0.D0
      XREF(1,3)=0.D0
      XREF(2,3)=A
      XREF(1,4)=A/3.D0
      XREF(2,4)=A/3.D0

* magn veut que les volumes de ses éléments fasse 1
      UNSVOL=2.D0
      USVUSD=UNSVOL**(1.D0/DBLE(ND))
* Recopie des points de Gauss
      DO 1 IPG=1,NPG
         X(IPG)=XCOPG(1,IPG)*USVUSD
         Y(IPG)=XCOPG(2,IPG)*USVUSD
         PG(IPG)=XPOPG(IPG)*UNSVOL
 1    CONTINUE
* Recopie des fns. de forme vitesse
      DO 3 IPG=1,NPG
         DO 32 IP=1,NP
            FN(IP,IPG)=FFPGV(IP,IPG)
            DO 322 ID=1,ND
               GR(ID,IP,IPG)=DFFPGV(IP,ID,IPG)
 322        CONTINUE
 32      CONTINUE
 3    CONTINUE
* Recopie des fns. de forme pression
      DO 5 IPG=1,NPG
         DO 52 IP=1,MP
            FM(IP,IPG)=FFPGP(IP,IPG)
            DO 522 ID=1,ND
               GM(ID,IP,IPG)=DFFPGP(IP,ID,IPG)
 522        CONTINUE
 52      CONTINUE
 5    CONTINUE
C     WRITE(6,101)
C     WRITE(6,1002)FM
C     WRITE(6,1002)GM
C     WRITE(6,1002)FN
C     WRITE(6,1002)GR
C     WRITE(6,101)
      RETURN
 1002 FORMAT(10(1X,1PD11.4))
 1001 FORMAT(20(1X,I5))
 101  FORMAT(1X,'... SUBPB302 ... FM,GM,FN,GR ',9(10H..........)/)
C
      END







