saudif
C SAUDIF SOURCE CHAT 05/01/13 03:11:15 5004 $ ,DIFL,DIFT,U,XARI2) ************************************************************************* *** SP 'SAUDIF' : fait avancer la particule d'un pas de tps 'DTREEL' par *** dispersion explicite uniquement dans l'element reel considere *** *** APPELES 1 = 'MATMAT' *** APPELES 2 = aucun *** *** E = 'NDIM' dimension de l'espace *** 'Z' vecteur aleatoire entre -1 et 1 pour le saut diffusif *** 'XDEP2' coordonnees reelles de depart apres convection *** 'UREEL' vitesse particule dans l'element reel au pt de depart *** 'DTREEL' pas de tps reel considere pour avancee particule *** 'XNORM' norme de la vitesse *** 'UXY' -> racine carree de UX*UX+UY*UY (cas 3D) *** 'DIFL' coefficient dispersion longitudinal ds elemt *** 'DIFT' coefficient dispersion transversal ds elemt *** *** S = 'U' vecteur "vitesse diffusive" = XL*Z = XPASS*XLU*Z *** 'XARI2' coordonnees reelles d'arrivee apres diffusion *** *** Rq : 'XZPREC' (-INC CCREEL) erreur precision calcul machine *** *** Auteur Cyril Nou ************************************************************************* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCREEL DIMENSION XDEP2(3),XARI2(3),UREEL(3) DIMENSION Z(3),U(3),XLU(3,3),XL(3,3),XPASS(3,3) *** initialisation de depart des vecteurs et matrices DO 10 I=1,3 U(I)=0.D0 DO 20 J=1,3 XLU(I,J)=0.D0 XL(I,J)=0.D0 XPASS(I,J)=0.D0 20 CONTINUE 10 CONTINUE ************************************************** *** CAS DE LA DIFFUSION PURE (SANS CONVECTION) *** ************************************************** IF (ABS(XNORM).LE.XZPREC) THEN *** matrice associée à la diffusion moleculaire ds repere absolu XLU(1,1)=SQRT(6*DIFL) XLU(2,2)=SQRT(6*DIFT) XLU(3,3)=SQRT(6*DIFT) *** vecteur associé à la "vitesse diffusive" ds repere absolu ************************************************* *** CAS DE LA DIFFUSION ASSOCIEE A CONVECTION *** ************************************************* ELSE ********** CAS 2D ********** IF (NDIM.EQ.2) THEN *** matrice de passage du repere lié à la vitesse vers repere absolu XPASS(1,1)=UREEL(1)/XNORM XPASS(1,2)=-UREEL(2)/XNORM XPASS(2,1)=UREEL(2)/XNORM XPASS(2,2)=UREEL(1)/XNORM *** matrice associée à la diffusion dans le repere lié à la vitesse XLU(1,1)=SQRT(6*DIFL) XLU(2,2)=SQRT(6*DIFT) *** matrice associée à la diffusion dans le repere absolu *** vecteur associé à la "vitesse diffusive" dans le repere absolu ********** CAS 3D ********** ELSEIF (NDIM.EQ.3) THEN *** matrice de passage du repere lié à la vitesse vers repere absolu IF ((ABS(UREEL(1)/XNORM).LE.XZPREC) $ .AND.(ABS(UREEL(2)/XNORM).LE.XZPREC)) THEN *** cas particulier ou UX=UY=0 et UZ<>0 XPASS(1,2)=1 XPASS(2,3)=1 XPASS(3,1)=1 ELSE *** cas classique general XPASS(1,1)=UREEL(1)/XNORM XPASS(2,1)=UREEL(2)/XNORM XPASS(3,1)=UREEL(3)/XNORM XPASS(1,2)=-UREEL(2)/UXY XPASS(2,2)=UREEL(1)/UXY XPASS(3,2)=0 XPASS(1,3)=-UREEL(1)*UREEL(3)/(XNORM*UXY) XPASS(2,3)=-UREEL(2)*UREEL(3)/(XNORM*UXY) XPASS(3,3)=UXY/XNORM ENDIF *** matrice associée à la diffusion dans le repere lié à la vitesse XLU(1,1)=SQRT(6*DIFL) XLU(2,2)=SQRT(6*DIFT) XLU(3,3)=SQRT(6*DIFT) *** matrice associée à la diffusion dans le repere absolu *** vecteur associé à la "vitesse diffusive" dans le repere absolu ENDIF ENDIF *********************************************** *** CALCUL DU PT D'ARRIVEE DS REPERE ABSOLU *** *********************************************** DO 30 I=1,NDIM XARI2(I)=XDEP2(I)+U(I)*SQRT(DTREEL) 30 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales