trjcdt
C TRJCDT SOURCE CHAT 05/01/13 03:48:54 5004 *************************************************************************** *** SP 'TRJCDT' : permet de choisir un pas de tps judicieux (traversée *** de la maille en 5 pas de tps en moyenne) pour le calcul de *** l'avancée de la particule dans la maille par convection+diffusion. *** *** APPELES 1 = aucun *** APPELES 2 = aucun *** *** E = 'NDIM' dimension de l'espace *** 'DIAM' "longueur caracteristique" de la maille considérée *** 'IZVIT' segment decrivant les vitesses (<- 'TRJVIT' OU 'TRJFLU') *** 'IVPT' entier valant dans le cas du régime permanent *** 'IEL1' n° global de l'element contenant particule *** 'DIFL' coefficient dispersion longitudinal ds element *** 'DIFT' coefficient dispersion transversal ds element *** 'UCEN' vitesse ds element reel au pt centre *** *** S = 'DTCALC' pas de tps utilisé pour calcul saut particule *** *** Rq : critere convectif, dtcalcul=1/5*(diam/ucentre) *** critere diffusif, dtcalcul=1/5*diam²/(6*max(dl,dt)) *** *** ORIGINE = CYRIL NOU ****************************************************************************** IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) SEGMENT IZSH REAL*8 SHP(6,MNO9),SHY(12,MNO9),XYZL(3,MNO9) ENDSEGMENT SEGMENT IZVIT REAL*8 TEMTRA(NVIPT) INTEGER IPUN(NBS),IDUN(NBS),IPVPT(NVIPT),IFORML ENDSEGMENT SEGMENT IZVPT INTEGER IPUN1(NBS),IPUMAX ENDSEGMENT SEGMENT IZUN ENDSEGMENT SEGMENT IZUMAX REAL*8 UMAX(NBREL) ENDSEGMENT DIMENSION UCEN(3) *** recuperation de la vitesse ou flux maximal dans l'element 'IEL1' IZVPT=IPVPT(IVPT) SEGACT IZVPT IZUMAX=IPUMAX SEGACT IZUMAX UEM=UMAX(IEL1) SEGDES IZUMAX SEGDES IZVPT *** initialisation à -1 des variables de travail DTC=-1.D0 DTD=-1.D0 DTCALC=-1.D0 DIFCAL=-1.D0 *** calcul de la norme de la vitesse au centre (moyenne sur element) UNORM=0.D0 DO 10 I=1,NDIM UNORM=UNORM+UCEN(I)**2 10 CONTINUE UNORM=SQRT(UNORM) *** pas de tps selon un critere convectif IF (UNORM.GT.0.D0) DTC=DIAM/(5*UNORM) *** recuperation du coeff dispersion max IF (DIFL.GE.DIFT) THEN DIFCAL=DIFL ELSE DIFCAL=DIFT ENDIF *** pas de tps selon un critere diffusif IF (DIFCAL.GT.0.D0) DTD=(DIAM)**2/(5*6*DIFCAL) *** on choisit le min pour pas de tps de calcul IF (DTC.GT.0.D0) THEN IF (DTD.GT.0.D0) THEN IF (DTC.GE.DTD) THEN DTCALC=DTD ELSE DTCALC=DTC ENDIF ELSE *** cas ou pas de diffusion DTCALC=DTC ENDIF ELSE IF (DTD.GT.0.D0) THEN *** cas ou pas de convection DTCALC=DTD ELSE *** aucun mouvement! (ni convection, ni diffusion) IEL1=-1 ENDIF ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales