C KREPER    SOURCE    CB215821  16/04/21    21:17:37     8920
      SUBROUTINE  KREPER(NES,NSOM,U1,A1,HCM)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
      DIMENSION U1(NES),A1(NES,NSOM),HCM(NES,NES)
      DIMENSION R(3,3),T1(3),T2(3)
C
C Calcul des facteurs de forme en 3D
C     calcul de la matrice de passage du repere H.C au repere global
C
C     NES  : dim espace
C     NSOM : nombre de sommets
C     U1   : vecteur normal unitaire
C     A1   : sommets du triangle
C     HCM  : matrice de passage
C     le repere local est orthonorme =(U1,A1.12,produit vectoriel)
C
      DO 1 I=1,NES
      R(I,1)=U1(I)
      T1(I)=A1(I,2)-A1(I,1)
  1   CONTINUE

      S=0.D0
      DO 2 I=1,NES
      S = S+T1(I)*T1(I)
  2   CONTINUE
      S = SQRT(S)

      IF(S.LT.1D-10) THEN
        WRITE(6,*) ' >KREPER longueur cote 1 nulle'
      ELSE
        DO 3 I=1,NES
        T1(I)=T1(I)/S
  3     CONTINUE

C    produit vectoriel
        CALL KPVEC(U1,T1,T2)

        DO 4 I=1,NES
        R(I,2)=T1(I)
        R(I,3)=T2(I)
  4     CONTINUE

C     matrice inverse
        CALL KPINV3(R,HCM)

C       write(6,*) ' >KREPER : matrice R '
C       CALL UTPRIN(R,NES,NES)
C       write(6,*) ' >KREPER : matrice inverse '
C       CALL UTPRIN(HCM,NES,NES)
      ENDIF

      RETURN
      END




