C DKTSHP    SOURCE    CHAT      05/02/25    21:15:12     5035
      SUBROUTINE DKTSHP(IGAU,XEL,SHP,DJAC)
C=======================================================================
C   EBERSOLT OCT 85      FONCTIONS DE FORME POUR W DU DKT
C  ENTREES
C    IGAU = NUMERO DU POINT DE GAUSS
C    XEL(3,3) = COORDONNEES LOCALES DE L ELEMENT
C  SORTIES
C    SHP(6,9)  =  W   W,X   W,Y EN CE POINT DE  GAUSS
C    DJAC  =   JACOBIEN AU POINT DE GAUSS
C    NE PAS CONFONDRE AVEC BFDKT DONNANT     THET X,X THET Y,X
C                                            THET Y,X THET Y,Y
C
C======================================================================
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
      DIMENSION SHP(6,*),XEL(3,*)
      DATA UNDEMI,UNQUA,TRDEMI/.5D0,.25D0,1.5D0/
      DATA UNHUIT,TRQUA/.125D0,.75D0/
C
      CALL ZERO(SHP,6,9)
C
      X21=XEL(1,2)-XEL(1,1)
      Y31=XEL(2,3)-XEL(2,1)
      DJAC=Y31*X21
C
      GOTO (100,200,300) ,IGAU
  100 CONTINUE
      DX=XEL(1,2)-XEL(1,1)
      DY=XEL(2,2)-XEL(2,1)
      IDEB=0
      IFIN=3
      GOTO 500
  200 CONTINUE
      DX=XEL(1,3)-XEL(1,1)
      DY=XEL(2,3)-XEL(2,1)
      IDEB=0
      IFIN=6
      GOTO 500
  300 CONTINUE
      DX=XEL(1,3)-XEL(1,2)
      DY=XEL(2,3)-XEL(2,2)
      IDEB=3
      IFIN=6
      GOTO 500
  500 CONTINUE
      XLONG= DX*DX + DY*DY
      XLON2= SQRT(XLONG)
      CC=DX/XLON2
      SS=DY/XLON2
C
C
      SHP(1,IDEB+1)= UNDEMI
      SHP(2,IDEB+1)=-TRDEMI*CC/XLON2
      SHP(3,IDEB+1)=-TRDEMI*SS/XLON2
C
      SHP(1,IDEB+2)=-UNHUIT*XLON2*CC
      SHP(2,IDEB+2)= -TRQUA*CC*SS
      SHP(3,IDEB+2)= - SS*SS*UNQUA+CC*CC*UNDEMI
C
      SHP(1,IDEB+3)=-UNHUIT*XLON2*SS
      SHP(2,IDEB+3)= CC*CC*UNQUA-SS*SS*UNDEMI
      SHP(3,IDEB+3)= TRQUA*CC*SS
C

      DO 510 IA=1,3
      DO 510 IB=1,3
      SHP(IA,IFIN+IB)=SHP(IA,IDEB+IB)
  510 CONTINUE
C
      SHP(2,IFIN+1)=-SHP(2,IDEB+1)
      SHP(3,IFIN+1)=-SHP(3,IDEB+1)
C

      SHP(1,IFIN+2)=-SHP(1,IDEB+2)
      SHP(1,IFIN+3)=-SHP(1,IDEB+3)
C
      RETURN
      END

