Télécharger fluri2.eso

Retour à la liste

Numérotation des lignes :

  1. C FLURI2 SOURCE CHAT 05/01/13 00:04:50 5004
  2. C FLURIE SOURCE BECC 97/12/23 22:14:53 3017
  3. SUBROUTINE FLURI2(NESP,
  4. & GAMG,ROG,PG,UNG,UTG,UVG,
  5. & GAMD,ROD,PD,UND,UTD,UVD,
  6. & YG,YD,FLUX,
  7. & CELLT,
  8. & LOGNC,LOGAN,MESERR)
  9. C
  10. C************************************************************************
  11. C
  12. C PROJET : CASTEM 2000
  13. C
  14. C NOM : FLURIE
  15. C
  16. C DESCRIPTION : Formulation Volumes Finis pour les Equations
  17. C d'Euler Multi-Especes relatives à un melange
  18. C de gaz ideals.
  19. C
  20. C Calcul du flux aux interfaces avec la mèthode
  21. C de Godunov (Solveur de Riemann exact).
  22. C
  23. C Parametrisation de Smoller
  24. C
  25. C (voir:
  26. C 1) J. SMOLLER, "Shock Waves and Reaction
  27. C Diffusion Equations", Springer Verlag, 1983;
  28. C
  29. C 2) Beccantini, Paillere,
  30. C "Upwind Flux Splitting Schemes..."
  31. C RAPPORT DMT 97//268
  32. C )
  33. C
  34. C LANGAGE : FORTRAN 77
  35. C
  36. C AUTEUR : A. BECCANTINI DRN/DMT/SEMT/TTMF
  37. C
  38. C************************************************************************
  39. C
  40. C APPELES
  41. C
  42. C FLURIE
  43. C |
  44. C |
  45. C ---- RIECOM ---- RACC ---- WNVXC ---- VLH1
  46. C |
  47. C |
  48. C -------- VLH1
  49. C |
  50. C |
  51. C -------- VLF1
  52. C |
  53. C |
  54. C -------- VLF3
  55. C
  56. C************************************************************************
  57. C
  58. C**** Entrées:
  59. C
  60. C NESP = nombre d'especes considérées dans les Equations
  61. C d'Euler
  62. C
  63. C GAMG, GAMD = les "gamma" du gaz (gauche et droite)
  64. C
  65. C ROG, ROD = les densités
  66. C
  67. C PG, PD = les pressions
  68. C
  69. C UNG, UND = vitesses normales
  70. C
  71. C UTG, UTD = vitesses tangentielles
  72. C
  73. C UVG, UVD = vitesses tangentielles
  74. C
  75. C YG, YD = tables des fractiones massiques
  76. C
  77. C**** Sorties:
  78. C
  79. C FLUX = table du flux a l'interface, i.e.
  80. C (rho*un, rho*un*un + p, rho*un*ut, rho*un*ht,
  81. C rho*un*y1, ...)
  82. C
  83. C CELLT = condition de stabilité, i.e.
  84. C
  85. C dT/diamax < cellt
  86. C
  87. C LOGNC = si .TRUE. -> no convergence
  88. C
  89. C LOGAN = si .TRUE. -> une anomalie a été detectée
  90. C
  91. C MESERR = message d'erreur
  92. C
  93. C
  94. C************************************************************************
  95. C
  96. C HISTORIQUE (Anomalies et modifications éventuelles)
  97. C
  98. C HISTORIQUE : Créé le 7.1.98
  99. C
  100. C************************************************************************
  101. C
  102. C N.B.: Toutes les variables sont DECLAREES
  103. C
  104. IMPLICIT INTEGER(I-N)
  105. INTEGER NESP, NMAX, NMAX0, I1
  106. REAL*8 ZERO, ZERO0, EPSI, EPSI0
  107. & ,GAMG,ROG,PG,UNG,UTG,UVG
  108. & ,GAMD,ROD,PD,UND,UTD,UVD
  109. & ,VGRIL
  110. & ,ROR,UNR,UTR,UVR,ROETR,PR
  111. & ,VREL, FLUM, RHTR
  112. & ,CELLT, AR, GAMR
  113. & ,YG(*),YD(*),FLUX(*)
  114. C
  115. CHARACTER*(40) MESERR
  116. LOGICAL LOGNC, LOGAN, LOGETD, LOGLAR
  117. PARAMETER(NMAX=1000,ZERO = 1.0D-14,EPSI=1D-12)
  118. C
  119. C**** ZERO = tolérance d'egalite pour REAL*8
  120. C
  121. C NMAX = nombre max d'itérations in racc.eso
  122. C pour calculer l'etats d'intersection
  123. C invariants de Riemann - conditions de
  124. C Rankine-Hugoniot.
  125. C
  126. C EPSI = erreur tolérée in racc.eso
  127. C
  128. C
  129. C**** Initialisation de LOGNC, LOGAN,MESERR ne doit pas etre faite ici,
  130. C mais avant, i.e.
  131. C
  132. C LOGNC = .FALSE.
  133. C LOGAN = .FALSE.
  134. C MESERR(1:40) = ' '
  135. C
  136. C
  137. C**** Les fractions massiques
  138. C
  139. C YG, YD déjà definis
  140. C
  141. C**** Le flux à l'interfaces sont dans le repaire (n,t)
  142. C
  143. C
  144. C
  145. C**** VGRIL = pour ALE
  146. C
  147. VGRIL = 0.0D0
  148. C
  149. C**** On protege le "PARAMETER"
  150. C
  151. NMAX0 = NMAX
  152. ZERO0 = ZERO
  153. EPSI0 = EPSI
  154. C
  155. C**** Calcul de l'etat a l'interface
  156. C
  157. CALL RIECO2(NMAX0,EPSI0,ZERO0,
  158. & VGRIL,
  159. & GAMG,ROG,PG,UNG,UTG,UVG,
  160. & GAMD,ROD,PD,UND,UTD,UVD,
  161. & ROR,UNR,UTR,UVR,ROETR,PR,GAMR,LOGETD,
  162. & LOGAN,LOGNC,MESERR)
  163. C
  164. C**** Valeurs à l' interface (x/t=VGRIL)
  165. C
  166. C ROR = rho
  167. C UNR = = un
  168. C UTR = = ut
  169. C ROETR = rho*et
  170. C PR = p
  171. C LOGETD = .FALSE. -> on est à gauche de la discontinuité de contact.
  172. C .TRUE. -> on est à droite de la discontinuité de contact.
  173. C
  174. IF(LOGNC .OR. LOGAN) GOTO 9999
  175. C
  176. C**** Les flux
  177. C
  178. VREL = UNR - VGRIL
  179. FLUM = ROR * VREL
  180. RHTR = ROETR + PR
  181. FLUX(1) = FLUM
  182. FLUX(2) = FLUM * UNR + PR
  183. FLUX(3) = FLUM * UTR
  184. FLUX(4) = FLUM * UVR
  185. FLUX(5) = VREL * RHTR
  186. C
  187. C**** TEST
  188. C
  189. C On peut demontrer que le sign de la vitesse
  190. C sur la discontinuité de contact est le meme
  191. C que le sign de ROR*(UNR-VGRIL)
  192. C (voir Larrouturou,
  193. C J. Comp. Phys., 95, 1991)
  194. C
  195. C Par contre, si ROR = 0, ceci n'est plus vrai,
  196. C mais dans ce cas RHO*U*Y = 0
  197. C
  198. C
  199. C FLUM < 0 -> On est à droite
  200. C
  201. LOGLAR = FLUM .LT. 0.0D0
  202. IF((ABS(FLUM) .GT. 1.0D-8) .AND. (LOGLAR .NEQV. LOGETD)) THEN
  203. MESERR = 'RIEMANN, flurie.eso (Larrouturou) '
  204. LOGAN = .TRUE.
  205. GOTO 9999
  206. ENDIF
  207. C
  208. C**** Fin test
  209. C
  210. C
  211. IF(NESP .GT. 0)THEN
  212. IF(LOGETD)THEN
  213. DO I1 = 1, NESP
  214. FLUX(I1+5) = FLUM * YD(I1)
  215. ENDDO
  216. ELSE
  217. DO I1 = 1, NESP
  218. FLUX(I1+5) = FLUM * YG(I1)
  219. ENDDO
  220. ENDIF
  221. ENDIF
  222. C
  223. C**** CFL
  224. C
  225. AR = SQRT (GAMR * PR / ROR)
  226. CELLT = 1.0D0 / (ABS(VREL)+AR)
  227. C
  228. 9999 CONTINUE
  229. C
  230. RETURN
  231. END
  232.  
  233.  
  234.  
  235.  
  236.  

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