Télécharger saudif.eso

Retour à la liste

Numérotation des lignes :

saudif
  1. C SAUDIF SOURCE CHAT 05/01/13 03:11:15 5004
  2. SUBROUTINE SAUDIF(NDIM,Z,XDEP2,UREEL,DTREEL,XNORM,UXY
  3. $ ,DIFL,DIFT,U,XARI2)
  4. *************************************************************************
  5. *** SP 'SAUDIF' : fait avancer la particule d'un pas de tps 'DTREEL' par
  6. *** dispersion explicite uniquement dans l'element reel considere
  7. ***
  8. *** APPELES 1 = 'MATMAT'
  9. *** APPELES 2 = aucun
  10. ***
  11. *** E = 'NDIM' dimension de l'espace
  12. *** 'Z' vecteur aleatoire entre -1 et 1 pour le saut diffusif
  13. *** 'XDEP2' coordonnees reelles de depart apres convection
  14. *** 'UREEL' vitesse particule dans l'element reel au pt de depart
  15. *** 'DTREEL' pas de tps reel considere pour avancee particule
  16. *** 'XNORM' norme de la vitesse
  17. *** 'UXY' -> racine carree de UX*UX+UY*UY (cas 3D)
  18. *** 'DIFL' coefficient dispersion longitudinal ds elemt
  19. *** 'DIFT' coefficient dispersion transversal ds elemt
  20. ***
  21. *** S = 'U' vecteur "vitesse diffusive" = XL*Z = XPASS*XLU*Z
  22. *** 'XARI2' coordonnees reelles d'arrivee apres diffusion
  23. ***
  24. *** Rq : 'XZPREC' (-INC CCREEL) erreur precision calcul machine
  25. ***
  26. *** Auteur Cyril Nou
  27. *************************************************************************
  28. IMPLICIT INTEGER(I-N)
  29. IMPLICIT REAL*8 (A-H,O-Z)
  30. -INC CCREEL
  31. DIMENSION XDEP2(3),XARI2(3),UREEL(3)
  32. DIMENSION Z(3),U(3),XLU(3,3),XL(3,3),XPASS(3,3)
  33. *** initialisation de depart des vecteurs et matrices
  34. DO 10 I=1,3
  35. U(I)=0.D0
  36. DO 20 J=1,3
  37. XLU(I,J)=0.D0
  38. XL(I,J)=0.D0
  39. XPASS(I,J)=0.D0
  40. 20 CONTINUE
  41. 10 CONTINUE
  42.  
  43. **************************************************
  44. *** CAS DE LA DIFFUSION PURE (SANS CONVECTION) ***
  45. **************************************************
  46.  
  47. IF (ABS(XNORM).LE.XZPREC) THEN
  48. *** matrice associée à la diffusion moleculaire ds repere absolu
  49. XLU(1,1)=SQRT(6*DIFL)
  50. XLU(2,2)=SQRT(6*DIFT)
  51. XLU(3,3)=SQRT(6*DIFT)
  52. *** vecteur associé à la "vitesse diffusive" ds repere absolu
  53. CALL MATMAT(XLU,Z,3,3,1,U)
  54.  
  55. *************************************************
  56. *** CAS DE LA DIFFUSION ASSOCIEE A CONVECTION ***
  57. *************************************************
  58.  
  59. ELSE
  60. ********** CAS 2D **********
  61. IF (NDIM.EQ.2) THEN
  62. *** matrice de passage du repere lié à la vitesse vers repere absolu
  63. XPASS(1,1)=UREEL(1)/XNORM
  64. XPASS(1,2)=-UREEL(2)/XNORM
  65. XPASS(2,1)=UREEL(2)/XNORM
  66. XPASS(2,2)=UREEL(1)/XNORM
  67. *** matrice associée à la diffusion dans le repere lié à la vitesse
  68. XLU(1,1)=SQRT(6*DIFL)
  69. XLU(2,2)=SQRT(6*DIFT)
  70. *** matrice associée à la diffusion dans le repere absolu
  71. CALL MATMAT(XPASS,XLU,3,3,3,XL)
  72. *** vecteur associé à la "vitesse diffusive" dans le repere absolu
  73. CALL MATMAT(XL,Z,3,3,1,U)
  74. ********** CAS 3D **********
  75. ELSEIF (NDIM.EQ.3) THEN
  76. *** matrice de passage du repere lié à la vitesse vers repere absolu
  77. IF ((ABS(UREEL(1)/XNORM).LE.XZPREC)
  78. $ .AND.(ABS(UREEL(2)/XNORM).LE.XZPREC)) THEN
  79. *** cas particulier ou UX=UY=0 et UZ<>0
  80. XPASS(1,2)=1
  81. XPASS(2,3)=1
  82. XPASS(3,1)=1
  83. ELSE
  84. *** cas classique general
  85. XPASS(1,1)=UREEL(1)/XNORM
  86. XPASS(2,1)=UREEL(2)/XNORM
  87. XPASS(3,1)=UREEL(3)/XNORM
  88. XPASS(1,2)=-UREEL(2)/UXY
  89. XPASS(2,2)=UREEL(1)/UXY
  90. XPASS(3,2)=0
  91. XPASS(1,3)=-UREEL(1)*UREEL(3)/(XNORM*UXY)
  92. XPASS(2,3)=-UREEL(2)*UREEL(3)/(XNORM*UXY)
  93. XPASS(3,3)=UXY/XNORM
  94. ENDIF
  95. *** matrice associée à la diffusion dans le repere lié à la vitesse
  96. XLU(1,1)=SQRT(6*DIFL)
  97. XLU(2,2)=SQRT(6*DIFT)
  98. XLU(3,3)=SQRT(6*DIFT)
  99. *** matrice associée à la diffusion dans le repere absolu
  100. CALL MATMAT(XPASS,XLU,3,3,3,XL)
  101. *** vecteur associé à la "vitesse diffusive" dans le repere absolu
  102. CALL MATMAT(XL,Z,3,3,1,U)
  103. ENDIF
  104. ENDIF
  105.  
  106. ***********************************************
  107. *** CALCUL DU PT D'ARRIVEE DS REPERE ABSOLU ***
  108. ***********************************************
  109.  
  110. DO 30 I=1,NDIM
  111. XARI2(I)=XDEP2(I)+U(I)*SQRT(DTREEL)
  112. 30 CONTINUE
  113.  
  114. RETURN
  115. END
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales