C TRJNOE    SOURCE    CHAT      05/01/13    03:50:16     5004
      SUBROUTINE TRJNOE(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL1,IEL,
     * INOELO,IZPART,IZUN,IZCOU,ITP,IFORML,XY)
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
C     LORSQU UNE PARTICULE EST LACHEE SUR UN NOEUD DU MAILLAGE
C     GEOMETRIQUE ON DETERMINE SI ELLE EST OU NON DANS L ELEMENT IEL1
C
C     IZUN VITESSE OU FLUX
C     XY COORDONNEES DE REFERENCE DU POINT CONSIDERE
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
C
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C

-INC PPARAM
-INC CCOPTIO
C
C
      SEGMENT IZPART
           INTEGER NLEPA(NPART),NUMPA(NPART)
           REAL*8  COORPA(NDIM,NPART)
      ENDSEGMENT
      POINTEUR IZREF.IZPART
      SEGMENT  IZCOU
           REAL*8 DTCO(NEL),COU
      ENDSEGMENT
C
      SEGMENT IZTRAV
           REAL*8  COOR(NDIM,NPART)
      ENDSEGMENT
      SEGMENT  IZNOEU
            REAL*8 XELE(IDIM,NOEL)
            INTEGER NOEGLO(NOEL)
      ENDSEGMENT
      SEGMENT  IZAPAR
            INTEGER IAPAR(4,NPART)
      ENDSEGMENT
      SEGMENT IZUN
           REAL*8 UN(I1,I2,I3)
      ENDSEGMENT
      SEGMENT HYTRAV
            REAL*8 XEL(3,NOEL),SHP(6,NOEL),SHY(12,NOEL)
            REAL*8 ZJAC(NDIM,NDIM)
      ENDSEGMENT
C
C
      DIMENSION XY(3),UELEM(3),VECT(3)
      DIMENSION TLI(4)
C
C
      NDIM=COORPA(/1)
      COUR=0.001D0
      INOEL1= INOELO
      IF(IFORML.EQ.1)THEN
C                        FORMULATION ELEMENTS FINIS
      DO 10 ID=1,NDIM
      UELEM(ID)=UN(ID,INOELO,IEL)
   10 CONTINUE
      ELSEIF(IFORML.EQ.2)THEN
C                     FORMULATION HYBRIDE ON VA CALCULER LA VITESSE
C                   REELLE AU NOEUD DU MAILLAGE

         CALL VHYNOE(UELEM,IZNOEU,IZUN,NDIM,XY,ITP,IEL)
      ENDIF
      DO 70 ID=1,NDIM
      COOR(ID,IPART)=COORPA(ID,IPART)+
     *              UELEM(ID)*DTCO(IEL1)*COUR
C     write(6,*)' coor trjnoe ',COOR(ID,IPART),COORPA(ID,IPART),
C    *              UELEM(ID),DTCO(IEL1),COUR
  70  CONTINUE
      CALL INITI(IAPAR(1,IPART),4,0)
C***  TRIANGLES
C
            IF(ITP.EQ.4.OR.ITP.EQ.6.OR.ITP.EQ.7)THEN
                CALL TRJTRI(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL1,
     *                    INOELO,TLI)
C
C***  QUADRANGLES
C
            ELSEIF(ITP.EQ.8.OR.ITP.EQ.11)THEN
                CALL TRJQUA(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL1,
     *                    INOELO,TLI)
C***  PRISMES
C
            ELSEIF(ITP.EQ.16)THEN
                CALL TRJPRI(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL,
     *                                  INOELO,TLI,ITRI)
C
C***  CUBES
C
            ELSEIF(ITP.EQ.14)THEN
                CALL TRJCUB(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL,
     *                                               INOELO,TLI)
C
C***  TETRAEDRE
C
            ELSEIF(ITP.EQ.23)THEN
                CALL TRJTET(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL,
     *                                               INOELO,TLI)
          ELSE
             CALL ERREUR(16)
          ENDIF
      DO 80 ID=1,NDIM
            COOR(ID,IPART)=COORPA(ID,IPART)
  80  CONTINUE
      INOELO=INOEL1
C
      END


