trjava
C TRJAVA SOURCE CB215821 20/11/25 13:41:27 10792 * MELEME,IELTFA,IZCENT,IFACEL,DELTAT,IZSH,IEROR,DT1) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Issu du sp AVATAR de TRIO-EF ( adapté par F Auriol) C C FAIT AVANCER UNE PARTICULE ( COORDONNEES DE REFERENCES ) C JUSQU'A L'INSTANT TMAX OU A L'INSTANT DE SORTIE C IZVIT SEGMENT DECRIVANT LES VITESSES ( <--- TRJVIT TRJFLU) C IZPART POSITIONS INITIALES DES PARTICULES C IZN3 SEGMENT RESULTANT (AJUSTE ICI) C IPART NUMERO DE LA PARTICULE C TMIN INSTANT DE DEPART C TMAX INSTANT A NE PAS DEPASSER C IZCOU SEGMENT DES DT DONNANT UN NOMBRE DE COURANT DE 1 C COU VALEUR DU NOMBRE DE COURANT VOULU C 2 PERM C 3 TRANS C MELEME POINTEUR DU MAILLAGE C IELTFA POINTEUR DE DOMAINE.ELTFA C IZCENT POINTEUR DE DOMAINE.CENTRE C IFACEL POINTEUR DE DOMAINE.FACEL C DELTAT PAS DE TEMPS AVEC LEQUEL ON CONSERVE LES RESULTATS C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMELEME -INC SMCHPOI C POINTEUR IZCENT.MELEME,IELTFA.MELEME,IZFAC1.MELEME POINTEUR IFACEL.MELEME C SEGMENT IZPART INTEGER NLEPA(NPART),NUMPA(NPART) REAL*8 COORPA(NDIM,NPART) ENDSEGMENT C SEGMENT IZN3 INTEGER NAPAR3(NPOS),NUM3(NPOS) REAL*8 CREF3(NDIM,NPOS),TPAR(NPOS) ENDSEGMENT C 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 IZVIT REAL*8 TEMTRA(NVIPT) INTEGER IPUN(NBS),IDUN(NBS),IPVPT(NVIPT),IFORML ENDSEGMENT C IDUN(I) nombre d elements avant le sous maillage I C IPVPT pointeurs de izvpt pour chaque pas de temps SEGMENT IZVPT INTEGER IPUN1(NBS),IPUMAX ENDSEGMENT C SEGMENT IZUN ENDSEGMENT POINTEUR IZUN1.IZUN,IZUN2.IZUN SEGMENT IZUMAX REAL*8 UMAX(NBREL) ENDSEGMENT C DIMENSION UELEM(3),XARI(3),XDEP(3),XINT(3) C C*** C ISENS=0 IEROR=0 KIO=0 NDIM=IDIM NPOS=50 SEGINI IZN3 SEGACT IZVIT IFORMU=IFORML IEL1=NLEPA(IPART) DO 2 ID1=1,NDIM XDEP(ID1)=COORPA(ID1,IPART) 2 CONTINUE ITER=2 NAPAR3(1)=IEL1 DO 3 ID1=1,NDIM CREF3(ID1,1)=XDEP(ID1) 3 CONTINUE TCOUR=TMIN TPAR(1)=TMIN NUAPAR=IEL1 C DT1=0.D0 SENS=SIGN(1.D0,(TMAX-TMIN)) C SEGACT IELTFA,IZCENT,IFACEL SEGACT IZSH NVIPT=TEMTRA(/1) 1 CONTINUE C IVPT 1 EN PERMANENT C EN TRANSITOIRE NUMERO DU PAS DE TEMPS DIRECTEMENT C SUPERIEUR AU TEMPS CONSIDERE IF(NVIPT.EQ.1)THEN IVPT=1 ELSE IVPT=2 ENDIF NOEL1=IPT1.NUM(/1) IELL=IEL1-NEL0 ITY1=IPT1.ITYPEL C C*** NOMBRE DE COURANT C C IF(DTCO(IEL1).EQ.0.D0) THEN C WRITE(6,*) 'APPEL A TRJCN5 DANS TRJAVA ' C IF(IERR.GT.0) RETURN IF(ISENS.NE.IJK)THEN IF(ISENS.EQ.0)THEN ISENS=IJK ELSE IEROR=1 GO TO 10 ENDIF ENDIF IZVPT=IPVPT(IVPT) SEGACT IZVPT IZUMAX=IPUMAX SEGACT IZUMAX UEM=UMAX(IEL1) SEGDES IZUMAX SEGDES IZVPT IF(IVPT.NE.1)THEN IZVPT=IPVPT(IVPT-1) SEGACT IZVPT IZUMAX=IPUMAX SEGACT IZUMAX UEM=MAX(UEM,UMAX(IEL1)) SEGDES IZUMAX SEGDES IZVPT ENDIF NUCENT=IZCENT.NUM(1,IEL1) C ENDIF C C*** PAS DE TEMPS C TPREC=TCOUR IF(ABS(DELTAT).GT.1.D-15)THEN DTT=DELTAT ELSE DTT=10.D0*COU*DTCO(IEL1)*SENS IF (ABS(TMAX-TPREC).LE.ABS(DTT))DTT=TMAX-TPREC DT1=0.D0 ENDIF DTI=DTCO(IEL1)*COU*SENS C write(6,*) ' dtco ',DTCO(IEL1),IEL1,COU,DTT IF(ABS(DTT-DT1).LT.ABS(DTI*1.1D0))THEN DTI=DTT-DT1 ELSE ENDIF C write(6,*)iel1,ni,dti,dt1,dtt,li LI=1 C DT1=0.D0 C 6 CONTINUE DTC=DTI*0.5D0 DTC1=DTC C write(6,*)' trjava li ni ',li,ni,iel1,dti,dtc,dtt TTEMP=TPREC+(LI-1)*DTI NOUN=UN(/2) * IFORMU,SHP,SHY) DO 9 ID1=1,NDIM XARI(ID1)=XDEP(ID1)+UELEM(ID1)*DTC 9 CONTINUE IF(IO.NE.0)THEN C C*** RATTRAPAGE C KIO=KIO+1 C IF(MOD(KIO,2).EQ.0)WRITE(6,999)IPART,IEL1,IEL2 IF(MOD(KIO,2).EQ.0)THEN INTERR(1)=IPART INTERR(2)=IEL1 ENDIF C WRITE(6,*)'TRJRAT 1 ',IPART,IEL1,IEL2, C * XARI,XDEP,XINT,UELEM,DTT,DTINT,NDIM,ICONT,ITYG,IO C IF(MOD(KIO,10).EQ.0) STOP INTERR(1)=IPART * IZCENT,IELTFA,XINT,DTINT,ICONT,IZSH,TTEMP) C write(6,*) ' apres trjrat ', icont ,iel1,iel2 IF(ICONT.NE.0)GO TO 16 IF(IEL2.EQ.0)THEN DO 99 ID1=1,NDIM XINT(ID1)=XDEP(ID1) 99 CONTINUE DTINT=0.D0 GO TO 10 ENDIF DO 12 ID1=1,NDIM XDEP(ID1)=XARI(ID1) 12 CONTINUE TCOUR=TPREC+(LI-1)*DTI+DTC1 NUAPAR=IEL2 DT1=0.D0 GO TO 13 ENDIF 16 CONTINUE IF(ICONT.NE.0) THEN C C*** LA PARTICULE I EST SORTIE DE L'ELEMENT COURANT C C write(6,*)' apres TRJIEL 1 ',IEL1,IEL2,' nuapar' ,NUAPAR ,ITER IF(IEL2 .EQ.0)GO TO 10 GO TO 14 ENDIF DTC=DTI DTC1=DTI TTEMP=TPREC+(LI-0.5D0)*DTI NOUN=UN(/2) * IFORMU,SHP,SHY) DO 17 ID1=1,NDIM XARI(ID1)=XDEP(ID1)+DTC*UELEM(ID1) 17 CONTINUE C write(6,*)' apres trjint ',io IF(IO.NE.0)THEN C C*** RATTRAPAGE C KIO=KIO+1 C IF(MOD(KIO,2).EQ.0)WRITE(6,999)IPART,IEL1,IEL2 IF(MOD(KIO,2).EQ.0)THEN INTERR(1)=IPART INTERR(2)=IEL1 ENDIF C WRITE(6,*)'TRJRAT 2 ',IPART,IEL1,IEL2, C * XARI,XDEP,XINT,UELEM,DTT,DTINT,NDIM,ICONT,ITYG,IO C IF(MOD(KIO,10).EQ.0) STOP INTERR(1)=IPART * IZCENT,IELTFA,XINT,DTINT,ICONT,IZSH,TTEMP) IF(ICONT.NE.0)GO TO 28 IF(IEL2.EQ.0)THEN DO 98 ID1=1,NDIM XINT(ID1)=XDEP(ID1) 98 CONTINUE DTINT=0.D0 GO TO 10 ENDIF IF(IEL1.EQ.IEL2)GO TO 11 DO 18 ID1=1,NDIM XDEP(ID1)=XARI(ID1) 18 CONTINUE TCOUR=TPREC+(LI-1)*DTI+DTC1 NUAPAR=IEL2 DT1=0.D0 GO TO 13 ENDIF 28 CONTINUE IF(ICONT.NE.0) THEN C C*** LA PARTICULE I EST SORTIE DE L'ELEMENT COURANT C IF(IEL2 .EQ.0)GO TO 10 GO TO 14 ENDIF C 11 CONTINUE LI=LI+1 DO 24 ID1=1,NDIM IF(ABS(XARI(ID1)-XDEP(ID1)).GT.1.D-15)GO TO 25 24 CONTINUE IF(IIMPI.GT.0)WRITE(6,*)' LA PARTICULE ',IPART , * ' N AVANCE PLUS ON ARETE LE CALCUL ' NUAPAR=IEL1 GO TO 21 25 CONTINUE DO 19 ID1=1,NDIM XDEP(ID1)=XARI(ID1) 19 CONTINUE C C*** LA PARTICULE I EST RESTE DANS L'ELEMENT COURANT C NUAPAR=IEL1 IF (ABS((TMAX-TCOUR)/TMAX).LE.1.D-04)GO TO 21 DT1=0.D0 GO TO 13 C C*** LA PARTICULE I RESTE DANS LE DOMAINE DE CALCUL C 14 CONTINUE IELL2=IEL2-NEL2 JTY=IPT2.ITYPEL CCCCCCCCCCC C write(6,*) 'iel2 ',iel2,'iel1' ,iel1,'ITER',ITER NOEL2=IPT2.NUM(/1) C IF(IERR.GT.0) RETURN IF(ISENS.NE.IJK) THEN IEROR= 1 IEL2= 0 C WRITE (6,*) ' JE VAIS EN 10 ', iel1,ITER,ieror GO TO 10 ENDIF CCCCCCCCCCC IOR=1 C WRITE(6,*)' IOR ',IOR,TCOUR TCOUR=TPREC+(LI-1)*DTI+DTINT NUAPAR=IEL2 C DT1=DTINT+(LI-1)*DTI IF(ABS(DELTAT).GT.1.D-15)THEN DT1=DTINT+(LI-1)*DTI+DT1 IEL1=NUAPAR GO TO 1 ENDIF 13 CONTINUE DO 22 ID1=1,NDIM CREF3(ID1,ITER)=XDEP(ID1) 22 CONTINUE TPAR(ITER)=TCOUR NAPAR3(ITER)=NUAPAR IEL1=NUAPAR IF ((NPOS-ITER).LE.1) THEN NPOS=NPOS+50 SEGADJ IZN3 ENDIF ITER=ITER+1 GO TO 1 C C*** LA PARTICULE I EST SORTIE DU DOMAINE DE CALCUL C 10 CONTINUE DO 23 ID1=1,NDIM XDEP(ID1)=XINT(ID1) 23 CONTINUE TCOUR=TPREC+(LI-1)*DTI+DTINT NUAPAR=IEL1 21 CONTINUE DO 20 ID1=1,NDIM CREF3(ID1,ITER)=XDEP(ID1) 20 CONTINUE C write(6,*)' IEL1 NUAPAR ITER ', IEL1,NUAPAR,ITER TPAR(ITER)=TCOUR NAPAR3(ITER)=NUAPAR NPOS=ITER SEGADJ IZN3 C 999 FORMAT('PARTICULE',I4,': PROBLEMES DANS LE COIN D''UN ELEMENT !!', * 2I7 ) C END
© Cast3M 2003 - Tous droits réservés.
Mentions légales