C FACREF    SOURCE    CHAT      05/01/12    23:55:49     5004
      SUBROUTINE FACREF(X,ITYP,IFAC)
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
C      RECHERCHE IFAC NUMERO DE LA FACE OU SE TROUVE LE POINT DE
C       COORDONNEES X DANS L'ELEMENT DE REFERENCE
C
C       ITYP TYPE DE L ELEMENT
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
      DIMENSION X(*)
       IFAC=0
      IF(ITYP.EQ.4.OR.ITYP.EQ.6.OR.ITYP.EQ.7)THEN
C               L ELEMENT DE REFERENCE EST UN TRIANGLE
           IF(X(2).EQ.0.D0)THEN
               IFAC=1
           ELSEIF((X(1)+X(2)).EQ.1.D0)THEN
               IFAC=2
           ELSEIF(X(1).EQ.0.D0)THEN
               IFAC=3
           ENDIF
      ELSEIF(ITYP.EQ.8.OR.ITYP.EQ.11)THEN
C              L ELEMENT DE REFERENCE EST UN CARRE
           IF(X(2).EQ.-1.D0)THEN
               IFAC=1
           ELSEIF(X(1).EQ.1.D0)THEN
               IFAC=2
           ELSEIF(X(2).EQ.1.D0)THEN
               IFAC=3
           ELSEIF(X(1).EQ.-1.D0)THEN
               IFAC=4
           ENDIF
      ELSEIF(ITYP.EQ.14)THEN
C              L ELEMENT DE REFERENCE EST UN CUBE
           IF(X(3).EQ.-1.D0)THEN
               IFAC=1
           ELSEIF(X(3).EQ.1.D0)THEN
               IFAC=2
           ELSEIF(X(2).EQ.-1.D0)THEN
               IFAC=3
           ELSEIF(X(1).EQ.1.D0)THEN
               IFAC=4
           ELSEIF(X(2).EQ.1.D0)THEN
               IFAC=5
           ELSEIF(X(1).EQ.-1.D0)THEN
               IFAC=3
           ENDIF
      ELSEIF(ITYP.EQ.16)THEN
C              L ELEMENT DE REFERENCE EST UN PRISME
           IF(X(3).EQ.-1.D0)THEN
               IFAC=1
           ELSEIF(X(3).EQ.1.D0)THEN
               IFAC=2
           ELSEIF(X(2).EQ.0.D0)THEN
               IFAC=3
           ELSEIF((X(1)+X(2)).EQ.1.D0)THEN
               IFAC=4
           ELSEIF(X(1).EQ.0.D0)THEN
               IFAC=5
           ENDIF
      ELSEIF(ITYP.EQ.23)THEN
C              L ELEMENT DE REFERENCE EST TETRAEDRE
           IF(X(2).EQ.0.D0)THEN
               IFAC=1
           ELSEIF(X(3).EQ.0.D0)THEN
               IFAC=2
           ELSEIF((X(1)+X(2)+X(3)).EQ.1.D0)THEN
               IFAC=3
           ELSEIF(X(1).EQ.0.D0)THEN
               IFAC=4
           ENDIF
      ELSE
           CALL ERREUR(16)
      ENDIF
      RETURN
      END


