C TRJART SOURCE CHAT 05/01/13 03:48:38 5004 SUBROUTINE TRJART(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL1,IEL, * INOELO,IZPART,IZUN,IZCOU,ITP,IFORML,IZSH) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C EN 3D C LORSQU UNE PARTICULE EST LACHEE SUR UNE ARETE DU MAILLAGE C GEOMETRIQUE ON DETERMINE SI ELLE EST OU NON DANS L ELEMENT IEL1 C C IZUN VITESSE OU FLUX C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C -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 IZSH REAL*8 SHP(6,MNO9),SHY(12,MNO9),XYZL(3,MNO9) 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 C C DIMENSION XYREF(3),ZXY(3),UELEM(3) DIMENSION TLJ(4) C C NDIM=COORPA(/1) IF(IFORML.EQ.1)THEN COUR=0.001D0 CALL TRJVLO(IZNOEU,IZUN,IZTRAV,ITP,UELEM,IPART,IEL,IZSH) DO 6 ID=1,NDIM COOR(ID,IPART)=COORPA(ID,IPART)+ * UELEM(ID)*DTCO(IEL1)*COUR 6 CONTINUE CALL INITI(IAPAR(1,IPART),4,0) C*** PRISMES C IF(ITP.EQ.16)THEN CALL TRJPRI(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL, * INOELO,TLJ,ITRI) C C*** CUBES C ELSEIF(ITP.EQ.14)THEN CALL TRJCUB(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL, * INOELO,TLJ) C C*** TETRAEDRE C ELSEIF(ITP.EQ.23)THEN CALL TRJTET(IZNOEU,IZTRAV,IZAPAR,NPAPAR,IPART,IEL, * INOELO,TLJ) ELSE CALL ERREUR(16) ENDIF ELSEIF(IFORML.EQ.2)THEN C FORMULATION HYBRIDE LA PARTICULE IRA DANS L'ELEMENT C OU LES DEUX FLUX SONT NEGATIFS NAR=IAPAR(3,IPART) CALL TRJARF(NAR,NF1,NF2,ITP) C write(6,*)' arete face ', nar,nf1 ,nf2, C * UN(1,NF1,IEL),UN(1,NF2,IEL) IF((UN(1,NF1,IEL).LE.0.D0).AND.(UN(1,NF2,IEL).LE.0.D0))THEN NPAPAR=NPAPAR+1 ELSE CALL INITI(IAPAR(1,IPART),4,0) ENDIF ENDIF DO 28 ID=1,NDIM COOR(ID,IPART)=COORPA(ID,IPART) 28 CONTINUE C RETURN END