C PB302     SOURCE    MAGN      10/05/18    21:16:33     6675
      SUBROUTINE PB302(XREF,X,Y,PG,FN,GR,FM,GM,ND,NP,MP,NPG,NOM2,ITYPI)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C************************************************************************
C
C     CALCULE LES FONCTIONS DE FORME D'UN : TRI3
C
C     ^ eta
C     |
C   a |n3
C     |\
C     | \     a=sqrt(2)
C     |  \
C     |___\ _____>ksi
C     0   a
C     n1  n2
C
C
C************************************************************************

      REAL*8 XREF(ND,NP),X(NPG),Y(NPG)
      DIMENSION FN(NP,NPG),GR(ND,NP,NPG),PG(NPG)
      DIMENSION FM(MP,NPG),GM(ND,MP,NPG)
      REAL*8 A,B,C,D,U(5),H(5)
      CHARACTER*4 NOM2
C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

      NP2=NP*ND

      R2=SQRT(2.D0)

      XREF(1,1)=0.D0
      XREF(2,1)=0.D0
      XREF(1,2)=R2
      XREF(2,2)=0.D0
      XREF(1,3)=0.D0
      XREF(2,3)=R2

      IF(ITYPI.EQ.2)THEN
      X(1)=0.D0
      Y(1)=0.D0
      X(2)=R2
      Y(2)=0.D0
      X(3)=0.D0
      Y(3)=R2
      DO 2 L=1,3
      PG(L)=1.D0/3.D0
 2    CONTINUE
      ELSE
      CALL CALUHH(X,Y,PG,NPG)
      ENDIF
      DO 1 L=1,NPG
C
      FN(1,L)=-R2/2.D0*(X(L)+Y(L)-R2)
      FN(2,L)=R2/2.D0*X(L)
      FN(3,L)=R2/2.D0*Y(L)
C
      GR(1,1,L)=-R2/2.D0
      GR(2,1,L)=-R2/2.D0
      GR(1,2,L)=R2/2.D0
      GR(2,2,L)=0.D0
      GR(1,3,L)=0.D0
      GR(2,3,L)=R2/2.D0
C

      IF(NOM2.EQ.'P1P1')THEN
      FM(1,L)=FN(1,L)
      FM(2,L)=FN(2,L)
      FM(3,L)=FN(3,L)
      GM(1,1,L)=-R2/2.D0
      GM(2,1,L)=-R2/2.D0
      GM(1,2,L)=R2/2.D0
      GM(2,2,L)=0.D0
      GM(1,3,L)=0.D0
      GM(2,3,L)=R2/2.D0
      ELSE
      FM(1,L)=1.D0
      GM(1,1,L)=0.D0
      GM(2,1,L)=0.D0
      ENDIF

 1    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






