C TESTNO    SOURCE    CHAT      05/01/13    03:36:35     5004
      SUBROUTINE TESTNO(EPSILO,ITYG,XREF,INOEUD)
************************************************************************
*** SP 'TESTNO' : en coordonnees de reference, teste un pt par rapport
*** à un element pour savoir s'il appartient à l'un de ses noeuds à
*** 'EPSILO' près (erreur acceptable % noeud).
***
*** APPELES 1 = aucun
*** APPELES 2 = aucun
***
*** E = 'EPSILO' erreur de précision de calcul (calibrage) acceptable
***     'ITYG' entier caracterisant la géométrie de l'élément
***     'XREF' coordonnées reference du pt considéré
***
*** S = 'INOEUD' vaut n° local du noeud où se trouve le pt, 0 sinon
***
*** ORIGINE = PATRICK, MODIFICATION = CYRIL, TEST = OK !!!
************************************************************************
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
      DIMENSION XREF(3)
      INOEUD=0
***   element de reference est un triangle TRI3
      IF (ITYG.EQ.4) THEN
         IF (ABS(XREF(1)).LT.EPSILO) THEN
            IF (ABS(XREF(2)).LT.EPSILO) THEN
               INOEUD=1
               XREF(1)=0.D0
               XREF(2)=0.D0
            ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
               INOEUD=3
               XREF(1)=0.D0
               XREF(2)=1.D0
            ENDIF
         ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN
            IF (ABS(XREF(2)).LT.EPSILO) THEN
               INOEUD=2
               XREF(1)=1.D0
               XREF(2)=0.D0
            ENDIF
         ENDIF
***   element de reference est un carre QUA4
      ELSEIF (ITYG.EQ.8) THEN
         IF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN
            IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN
               INOEUD=1
               XREF(1)=-1.D0
               XREF(2)=-1.D0
            ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
               INOEUD=4
               XREF(1)=-1.D0
               XREF(2)=1.D0
            ENDIF
         ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN
            IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN
               INOEUD=2
               XREF(1)=1.D0
               XREF(2)=-1.D0
            ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
               INOEUD=3
               XREF(1)=1.D0
               XREF(2)=1.D0
            ENDIF
         ENDIF
***   element de reference est un cube CUB8
      ELSEIF (ITYG.EQ.14) THEN
         IF (ABS(1.D0+XREF(3)).LT.EPSILO) THEN
            IF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN
               IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN
                  INOEUD=1
                  XREF(1)=-1.D0
                  XREF(2)=-1.D0
                  XREF(3)=-1.D0
               ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
                  INOEUD=4
                  XREF(1)=-1.D0
                  XREF(2)=1.D0
                  XREF(3)=-1.D0
               ENDIF
            ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN
               IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN
                  INOEUD=2
                  XREF(1)=1.D0
                  XREF(2)=-1.D0
                  XREF(3)=-1.D0
               ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
                  INOEUD=3
                  XREF(1)=1.D0
                  XREF(2)=1.D0
                  XREF(3)=-1.D0
               ENDIF
            ENDIF
         ELSEIF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN
            IF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN
               IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN
                  INOEUD=5
                  XREF(1)=-1.D0
                  XREF(2)=-1.D0
                  XREF(3)=1.D0
               ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
                  INOEUD=8
                  XREF(1)=-1.D0
                  XREF(2)=1.D0
                  XREF(3)=1.D0
               ENDIF
            ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN
               IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN
                  INOEUD=6
                  XREF(1)=1.D0
                  XREF(2)=-1.D0
                  XREF(3)=1.D0
               ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
                  INOEUD=7
                  XREF(1)=1.D0
                  XREF(2)=1.D0
                  XREF(3)=1.D0
               ENDIF
            ENDIF
         ENDIF
***   element de reference est un prisme PRI6
      ELSEIF (ITYG.EQ.16) THEN
         IF ((ABS(XREF(3)+1.D0).LT.EPSILO)) THEN
            IF (ABS(XREF(1)).LT.EPSILO) THEN
               IF (ABS(XREF(2)).LT.EPSILO) THEN
                  INOEUD=1
                  XREF(1)=0.D0
                  XREF(2)=0.D0
                  XREF(3)=-1.D0
               ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
                  INOEUD=3
                  XREF(1)=0.D0
                  XREF(2)=1.D0
                  XREF(3)=-1.D0
               ENDIF
            ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN
               IF (ABS(XREF(2)).LT.EPSILO) THEN
                  INOEUD=2
                  XREF(1)=1.D0
                  XREF(2)=0.D0
                  XREF(3)=-1.D0
               ENDIF
            ENDIF
         ELSEIF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN
            IF (ABS(XREF(1)).LT.EPSILO) THEN
               IF (ABS(XREF(2)).LT.EPSILO) THEN
                  INOEUD=4
                  XREF(1)=0.D0
                  XREF(2)=0.D0
                  XREF(3)=1.D0
               ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
                  INOEUD=6
                  XREF(1)=0.D0
                  XREF(2)=1.D0
                  XREF(3)=1.D0
               ENDIF
            ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN
               IF (ABS(XREF(2)).LT.EPSILO) THEN
                  INOEUD=5
                  XREF(1)=1.D0
                  XREF(2)=0.D0
                  XREF(3)=1.D0
               ENDIF
            ENDIF
         ENDIF
***   element de reference est un tetraedre TET4
      ELSEIF (ITYG.EQ.23) THEN
         IF (ABS(XREF(3)).LT.EPSILO) THEN
            IF (ABS(XREF(1)).LT.EPSILO) THEN
               IF (ABS(XREF(2)).LT.EPSILO) THEN
                  INOEUD=1
                  XREF(1)=0.D0
                  XREF(2)=0.D0
                  XREF(3)=0.D0
               ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN
                  INOEUD=3
                  XREF(1)=0.D0
                  XREF(2)=1.D0
                  XREF(3)=0.D0
               ENDIF
            ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN
               IF (ABS(XREF(2)).LT.EPSILO) THEN
                  INOEUD=2
                  XREF(1)=1.D0
                  XREF(2)=0.D0
                  XREF(3)=0.D0
               ENDIF
            ENDIF
         ELSEIF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN
            IF (ABS(XREF(1)).LT.EPSILO) THEN
               IF (ABS(XREF(2)).LT.EPSILO) THEN
                  INOEUD=4
                  XREF(1)=0.D0
                  XREF(2)=0.D0
                  XREF(3)=1.D0
               ENDIF
            ENDIF
         ENDIF
      ENDIF
      RETURN
      END



