Télécharger konfl3.eso

Retour à la liste

Numérotation des lignes :

konfl3
  1. C KONFL3 SOURCE OF166741 24/12/13 21:16:25 12097
  2. SUBROUTINE KONFL3(LOGME,INDMET,
  3. & IROF,IVITF,IPF,IGAMF,IFRMAF,
  4. & ICHPSU,ICHPDI,
  5. & MELEMC,MELEMF,MELEFE,MELLIM,
  6. & IUINF,IUPRI,
  7. & ICHFLU,DT,
  8. & LOGNC,LOGAN,MESERR)
  9. C************************************************************************
  10. C
  11. C PROJET : CASTEM 2000
  12. C
  13. C NOM : KONFL3
  14. C
  15. C DESCRIPTION : Voir KONV11
  16. C
  17. C Cas trois dimensions, gaz "calorically perfect"
  18. C
  19. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  20. C
  21. C AUTEUR : A. BECCANTINI, SFME, LTMF
  22. C
  23. C************************************************************************
  24. C
  25. C ENTREES
  26. C
  27. C
  28. C 1) PARAMETRES
  29. C
  30. C LOGME : (LOGICAL); .TRUE. -> MULTI-ESPECES
  31. C .FALSE. -> MONO-ESPECE
  32. C
  33. C INDMET : 1 Godunov
  34. C
  35. C 2 van Leer FVS
  36. C
  37. C 3 van Leer Hanel FVS
  38. C
  39. C 4 HUS (Van Leer FVS + Osher FDS)
  40. C
  41. C 5 HUS (Van Leer - Hanel FVS + Osher FDS)
  42. C
  43. C 6 AUSM+
  44. C
  45. C 9 AUSM+ Low Mach
  46. C
  47. C 2) Pointeurs des MCHAMLs
  48. C
  49. C IROF : MCHAML sur "FACEL" contenant la masse volumique
  50. C ("gauche" et "droite");
  51. C
  52. C IVITF : MCHAML sur "FACEL" contenant la vitesse dans le repaire
  53. C local (n,t) et les cosinus directeurs des repaire local;
  54. C
  55. C IPF : MCHAML sur "FACEL" contenant la pression;
  56. C
  57. C IGAMF : MCHAML sur "FACEL" contenant le gamma;
  58. C
  59. C IFRAMAF : MCHAML sur "FACEL", contenant les fractions massiques
  60. C si LOGME = .TRUE.;
  61. C LOGME = .FALSE. -> IFRAMAF = 0
  62. C
  63. C
  64. C 3) Pointeurs de CHPOINTs de la table DOMAINE
  65. C
  66. C ICHPSU : CHPOINT "FACE" contenant la surface des faces
  67. C
  68. C ICHPDI : CHPOINT "CENTRE" contenant le diametre minimum
  69. C de chaque element
  70. C
  71. C
  72. C 4) Pointeurs de MELEME
  73. C
  74. C MELEMC : MELEME 'CENTRE' du SPG des CENTRES
  75. C
  76. C MELEMF : MELEME 'FACE' du SPG des FACES
  77. C
  78. C MELEFE : MELEME 'FACEL' du connectivité FACES -> ELEM
  79. C
  80. C MELLIM : MELEME SPG des conditions aux bords
  81. C
  82. C 5) Cas Bas MACH
  83. C
  84. C IUINF : CHPOINT, one component, "cut-off velocity"
  85. C 0 if no Bas MACH
  86. C
  87. C IUPRI : CHPOINT, one component, "minimum reference velocity"
  88. C 0 if no BAs Mach
  89. C
  90. C SORTIES
  91. C
  92. C ICHFLU : pointeurs de CHPOINTs "FACE" des flux aux interfaces:
  93. C
  94. C DT : pas de temps pour le respect de la CFL-like condition
  95. C DT < DIAMMIN /2 /max(Lambda_i)
  96. C En maillage regulier cette condition garantie la
  97. C non-interaction des ondes
  98. C
  99. C
  100. C LOGNC : (LOGICAL): si .TRUE. la methode de Newton-Rapson, utilisée
  101. C dans pour la solution du probleme Riemann exacte ou dans
  102. C l'algorithm HUS, n'a pas bien marchéee; MESERR = 'Goudunov'
  103. C ou 'HUS'.
  104. C
  105. C LOGAN : (LOGICAL): si .TRUE. une anomalie à été detectée
  106. C
  107. C MESERR : pour l'ecriture des messages d'erreurs
  108. C
  109. C************************************************************************
  110. C
  111. C HISTORIQUE (Anomalies et modifications éventuelles)
  112. C
  113. C HISTORIQUE :
  114. C 02/05/2005 par T. KLOCZKO (DEN/DM2S/SFME/LTMF)
  115. C Ajout de 3 méthodes de décentrement dont 2 pour les écoulements
  116. C bas-Mach.
  117. C
  118. C INDMET : 10 Rusanov
  119. C 11 Rusanov Low-Mach
  120. C 13 ROE Low-Mach
  121. C
  122. C************************************************************************
  123. C
  124. C
  125. C N.B.: On suppose qu'on a déjà controllé RO, P > 0
  126. C GAMMA \in (1,3)
  127. C Y \in (0,1)
  128. C Si non il faut le faire!!!
  129. C
  130. C************************************************************************
  131. C
  132. IMPLICIT INTEGER(I-N)
  133. INTEGER I1
  134. & ,INDMET
  135. & ,IROF,IVITF,IPF,IGAMF,IFRMAF
  136. & ,ICHPSU,ICHPDI,MELEMC,MELEMF,MELEFE
  137. & ,IGEOMC,IGEOMF
  138. & ,IUINF,IUPRI
  139. & ,ICHFLU
  140. & ,NESP, NFAC
  141. & ,NLCF, NGCEG, NGCED, NLCEG, NLCED
  142. & ,NGCF, NLCF1, SPG1, SPG2
  143. REAL*8 DT, UNSDT, CELLT
  144. & , ROG, UNG, UTG, UVG, PG, GAMG
  145. & , ROD, UND, UTD, UVD, PD, GAMD
  146. & , SURF,CNX, CNY, CNZ, CTX , CTY, CTZ
  147. & , CVX, CVY, CVZ, V_INF
  148. & , CELL, DIAMG, DIAMD, DIAM
  149. & , ASON, LAMBDA
  150. LOGICAL LOGME, LOGNC, LOGAN
  151. CHARACTER*(40) MESERR
  152. CHARACTER*(8) TYPE
  153. C
  154. C**** LES INCLUDES
  155. C
  156.  
  157. -INC PPARAM
  158. -INC CCOPTIO
  159. -INC SMCOORD
  160. -INC SMCHAML
  161. POINTEUR MELVNX.MELVAL, MELVNY.MELVAL,MELVNZ.MELVAL,
  162. & MELT1X.MELVAL, MELT1Y.MELVAL,MELT1Z.MELVAL,
  163. & MELT2X.MELVAL, MELT2Y.MELVAL,MELT2Z.MELVAL
  164. POINTEUR MELVUN.MELVAL, MELVUT.MELVAL, MELVUV.MELVAL
  165. POINTEUR MELRO.MELVAL, MELP.MELVAL,
  166. & MELGAM.MELVAL
  167. -INC SMCHPOI
  168. POINTEUR MPOVSU.MPOVAL, MPOVDI.MPOVAL
  169. & , MPOFLU.MPOVAL
  170. & , MPUINF.MPOVAL, MPUPRI.MPOVAL
  171. POINTEUR MCHAMY.MCHAML
  172. -INC SMELEME
  173. POINTEUR MELLIM.MELEME
  174. -INC SMLMOTS
  175. -INC SMLENTI
  176. POINTEUR MLELIM.MLENTI
  177. C
  178. C**** Les fractiones massiques.
  179. C
  180. SEGMENT FRAMAS
  181. REAL*8 YET(NESP)
  182. ENDSEGMENT
  183. POINTEUR FRAMAG.FRAMAS, FRAMAD.FRAMAS
  184. C
  185. C**** Les flux aux interface dans le repaire (n,t,v)
  186. C
  187. SEGMENT IFLUX
  188. REAL*8 FLUX(NESP+5)
  189. ENDSEGMENT
  190. POINTEUR IFLU1.IFLUX, IFLU2.IFLUX
  191. C
  192. C**** KRIPAD pour la correspondance global/local des conditions limits
  193. C
  194. CALL KRIPAD(MELLIM,MLELIM)
  195. C SEGACT MELLIM
  196. C
  197. C**** Initialisation des MCHAMLs
  198. C
  199. C**** Masse volumique
  200. C
  201. MCHEL1 = IROF
  202. SEGACT MCHEL1
  203. MCHAM1 = MCHEL1.ICHAML(1)
  204. SEGACT MCHAM1
  205. MELRO = MCHAM1.IELVAL(1)
  206. SEGDES MCHEL1
  207. SEGDES MCHAM1
  208. C
  209. C**** Pression
  210. C
  211. MCHEL1 = IPF
  212. SEGACT MCHEL1
  213. MCHAM1 = MCHEL1.ICHAML(1)
  214. SEGACT MCHAM1
  215. MELP = MCHAM1.IELVAL(1)
  216. SEGDES MCHEL1
  217. SEGDES MCHAM1
  218. C
  219. C**** Gamma
  220. C
  221. MCHEL1 = IGAMF
  222. SEGACT MCHEL1
  223. MCHAM1 = MCHEL1.ICHAML(1)
  224. SEGACT MCHAM1
  225. MELGAM = MCHAM1.IELVAL(1)
  226. SEGDES MCHEL1
  227. SEGDES MCHAM1
  228. C
  229. C**** Vitesse et cosinus directeurs du repere (n,t)
  230. C
  231. MCHEL1 = IVITF
  232. SEGACT MCHEL1
  233. C
  234. C**** La vitesse a comme SPG MELEFE
  235. C Le cosinus directeurs ont comme SPG MELEMF
  236. C
  237. C MCHAM1 -> Cosinus directeurs
  238. C MCHAM2 -> Vitesse
  239. C
  240. SPG1 = MCHEL1.IMACHE(1)
  241. SPG2 = MCHEL1.IMACHE(2)
  242. IF((SPG1 .EQ. MELEMF) .AND. (SPG2 .EQ. MELEFE))THEN
  243. MCHAM1 = MCHEL1.ICHAML(1)
  244. MCHAM2 = MCHEL1.ICHAML(2)
  245. ELSEIF((SPG1 .EQ. MELEFE) .AND. (SPG2 .EQ. MELEMF))THEN
  246. MCHAM1 = MCHEL1.ICHAML(2)
  247. MCHAM2 = MCHEL1.ICHAML(1)
  248. ELSE
  249. LOGAN = .TRUE.
  250. GOTO 9999
  251. ENDIF
  252. SEGACT MCHAM1
  253. MELVNX = MCHAM1.IELVAL(1)
  254. MELVNY = MCHAM1.IELVAL(2)
  255. MELVNZ = MCHAM1.IELVAL(3)
  256. MELT1X = MCHAM1.IELVAL(4)
  257. MELT1Y = MCHAM1.IELVAL(5)
  258. MELT1Z = MCHAM1.IELVAL(6)
  259. MELT2X = MCHAM1.IELVAL(7)
  260. MELT2Y = MCHAM1.IELVAL(8)
  261. MELT2Z = MCHAM1.IELVAL(9)
  262. SEGDES MCHAM1
  263. SEGACT MCHAM2
  264. MELVUN = MCHAM2.IELVAL(1)
  265. MELVUT = MCHAM2.IELVAL(2)
  266. MELVUV = MCHAM2.IELVAL(3)
  267. SEGDES MCHAM2
  268. SEGDES MCHEL1
  269. C
  270. C**** Fractions massiques
  271. C
  272. IF(LOGME)THEN
  273. MCHEL1 = IFRMAF
  274. SEGACT MCHEL1
  275. MCHAMY = MCHEL1.ICHAML(1)
  276. SEGACT MCHAMY
  277. C
  278. C******* Numero d'especes dans les equations d'Euler
  279. C
  280. NESP = MCHAMY.IELVAL(/1)
  281. DO I1 = 1, NESP
  282. MELVA1 = MCHAMY.IELVAL(I1)
  283. SEGACT MELVA1
  284. ENDDO
  285. SEGINI FRAMAG
  286. SEGINI FRAMAD
  287. SEGDES MCHEL1
  288. ELSE
  289. C
  290. C******* Definition minimale de YET, necessaire pour transmetre YET aux
  291. C subroutines FORTRAN qui calculent les flux
  292. C
  293. NESP = 1
  294. SEGINI FRAMAG
  295. SEGINI FRAMAD
  296. NESP = 0
  297. ENDIF
  298. C
  299. C**** Initialisation des MELEMEs
  300. C
  301. C 'CENTRE', 'FACEL'
  302. C
  303. IPT2 = MELEFE
  304. SEGACT IPT2
  305. NFAC = IPT2.NUM(/2)
  306. C
  307. C**** KRIPAD pour la correspondance global/local de centre
  308. C
  309. CALL KRIPAD(MELEMC,MLENT1)
  310. C
  311. C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
  312. C
  313. C Si i est le numero global d'un noeud de ICEN,
  314. C MLENT1.LECT(i) contient sa position, i.e.
  315. C
  316. C I = numero global du noeud centre
  317. C MLENT1.LECT(i) = numero local du noeud centre
  318. C
  319. C MLENT1 déjà activé, i.e.
  320. C
  321. C SEGACT MLENT1
  322. C
  323. C
  324. C**** KRIPAD pour la correspondance global/local de 'FACE'
  325. C
  326. CALL KRIPAD(MELEMF,MLENT2)
  327. C
  328. C**** Initialisation de flux
  329. C
  330. SEGINI IFLU1
  331. SEGINI IFLU2
  332. C
  333. C**** IFLU2 = segment de travail en FLUVLH; c'est plus rapide le definir ici
  334. C
  335. C
  336. C**** CHPOINTs de la table DOMAINE
  337. C
  338. CALL LICHT(ICHPSU,MPOVSU,TYPE,IGEOMF)
  339. CALL LICHT(ICHPDI,MPOVDI,TYPE,IGEOMC)
  340. C
  341. C**** LICHT active les MPOVALs en *MOD
  342. C
  343. C i.e.
  344. C
  345. C SEGACT MPOVSU*MOD
  346. C SEGACT MPOVDI*MOD
  347. C
  348. C
  349. C**** Les FLUX aux face
  350. C
  351. C La densité
  352. C
  353. CALL LICHT(ICHFLU,MPOFLU,TYPE,IGEOMF)
  354. C SEGACT MPOFLU*MOD
  355. C
  356. C**** Activation des MCHAMLs
  357. C
  358. SEGACT MELRO
  359. SEGACT MELP
  360. SEGACT MELGAM
  361. SEGACT MELVUN
  362. SEGACT MELVUT
  363. SEGACT MELVUV
  364. SEGACT MELVNX
  365. SEGACT MELVNY
  366. SEGACT MELVNZ
  367. SEGACT MELT1X
  368. SEGACT MELT1Y
  369. SEGACT MELT1Z
  370. SEGACT MELT2X
  371. SEGACT MELT2Y
  372. SEGACT MELT2Z
  373. C********************************************************
  374. C Bas Mach
  375. C*******************************************************
  376. IF(IUINF .NE. 0)THEN
  377. CALL LICHT(IUPRI,MPUPRI,TYPE,IGEOMC)
  378. CALL LICHT(IUINF,MPUINF,TYPE,IGEOMC)
  379. ELSE
  380. MPUPRI=0
  381. MPUINF=0
  382. ENDIF
  383. C*******************************************************
  384. C**** Initialisation de 1/DT
  385. C*******************************************************
  386. UNSDT = 0.0D0
  387. C
  388. C**** BOUCLE SUR FACEL pour le calcul du FLUX
  389. C
  390. DO NLCF = 1, NFAC
  391. C
  392. C******* NLCF = numero local du centre de facel
  393. C NGCF = numero global du centre de facel
  394. C NLCF1 = numero local du centre de face
  395. C NGCEG = numero global du centre ELT "gauche"
  396. C NLCEG = numero local du centre ELT "gauche"
  397. C NGCED = numero global du centre ELT "droite"
  398. C NLCED = numero local du centre ELT "droite"
  399. C
  400. NGCEG = IPT2.NUM(1,NLCF)
  401. NGCED = IPT2.NUM(3,NLCF)
  402. NGCF = IPT2.NUM(2,NLCF)
  403. NLCF1 = MLENT2.LECT(NGCF)
  404. NLCEG = MLENT1.LECT(NGCEG)
  405. NLCED = MLENT1.LECT(NGCED)
  406. NLFL = MLELIM.LECT(NGCF)
  407. C
  408. C******* NLCF != NLCF1 -> l'auteur (MOI) n'a rien compris.
  409. C
  410. IF(NLCF .NE. NLCF1)THEN
  411. MESERR = 'FACEL et FACE = ? '
  412. LOGAN = .TRUE.
  413. GOTO 9999
  414. ENDIF
  415. IF(NLFL .EQ. 0)THEN
  416. C
  417. C******* Recuperation des Etats "gauche" et "droite"
  418. C
  419. ROG = MELRO.VELCHE(1,NLCF)
  420. UNG = MELVUN.VELCHE(1,NLCF)
  421. UTG = MELVUT.VELCHE(1,NLCF)
  422. UVG = MELVUV.VELCHE(1,NLCF)
  423. PG = MELP.VELCHE(1,NLCF)
  424. GAMG = MELGAM.VELCHE(1,NLCF)
  425. C
  426. ROD = MELRO.VELCHE(3,NLCF)
  427. UND = MELVUN.VELCHE(3,NLCF)
  428. UTD = MELVUT.VELCHE(3,NLCF)
  429. UVD = MELVUV.VELCHE(3,NLCF)
  430. PD = MELP.VELCHE(3,NLCF)
  431. GAMD = MELGAM.VELCHE(3,NLCF)
  432. C
  433. CNX = MELVNX.VELCHE(1,NLCF)
  434. CNY = MELVNY.VELCHE(1,NLCF)
  435. CNZ = MELVNZ.VELCHE(1,NLCF)
  436. CTX = MELT1X.VELCHE(1,NLCF)
  437. CTY = MELT1Y.VELCHE(1,NLCF)
  438. CTZ = MELT1Z.VELCHE(1,NLCF)
  439. CVX = MELT2X.VELCHE(1,NLCF)
  440. CVY = MELT2Y.VELCHE(1,NLCF)
  441. CVZ = MELT2Z.VELCHE(1,NLCF)
  442. C
  443. C******* Le fractiones massiques
  444. C
  445. IF(LOGME)THEN
  446. DO I1 = 1, NESP
  447. MELVA1 = MCHAMY.IELVAL(I1)
  448. FRAMAG.YET(I1) = MELVA1.VELCHE(1,NLCF)
  449. FRAMAD.YET(I1) = MELVA1.VELCHE(3,NLCF)
  450. ENDDO
  451. ENDIF
  452. C
  453. C******* On a defini (ROg,ROUNg,ROUTg,Pg,(Yg)), (ROd,ROUNd,ROUTd,Pd,(Yd))
  454. C et on a déjà verifié ROg, ROd, Pg, Pd > 0 et 0<Y_i<1
  455. C
  456. C
  457. C******* Calcul du flux aux interfaces
  458. C
  459. IF(INDMET .EQ. 1)THEN
  460. C
  461. C******* GODUNOV
  462. C FLURIE en FORTRAN STANDARD
  463. C
  464. CALL FLURI2(NESP,
  465. & GAMG,ROG,PG,UNG,UTG,UVG,
  466. & GAMD,ROD,PD,UND,UTD,UVD,
  467. & FRAMAG.YET,FRAMAD.YET,
  468. & IFLU1.FLUX,
  469. & CELLT,
  470. & LOGNC,LOGAN,MESERR)
  471. C
  472. ELSEIF(INDMET .EQ. 2)THEN
  473. C
  474. C******* Van Leer FVS
  475. C
  476. C N.B: FLUXVL en FORTRAN pure
  477. C FRAMAG.YET = table d'un pointeur -> table
  478. C La meme chose pour FRAMAD.YET, IFLU1.FLUX,
  479. C IFLU2.FLUX
  480. C
  481. CALL FLUXV2(NESP,
  482. & GAMG,ROG,PG,UNG,UTG,UVG,
  483. & GAMD,ROD,PD,UND,UTD,UVD,
  484. & FRAMAG.YET,FRAMAD.YET,
  485. & IFLU1.FLUX,IFLU2.FLUX,
  486. & CELLT)
  487. ELSEIF(INDMET .EQ. 3)THEN
  488. C
  489. C******* Van Leer - Hanel FVS
  490. C
  491. C N.B: FLUVLH en FORTRAN pure
  492. C FRAMAG.YET = table d'un pointeur -> table
  493. C La meme chose pour FRAMAD.YET, IFLU1.FLUX,
  494. C IFLU2.FLUX
  495. C
  496. CALL FLUVL2(NESP,
  497. & GAMG,ROG,PG,UNG,UTG,UVG,
  498. & GAMD,ROD,PD,UND,UTD,UVD,
  499. & FRAMAG.YET,FRAMAD.YET,
  500. & IFLU1.FLUX,IFLU2.FLUX,
  501. & CELLT)
  502. ELSEIF(INDMET .EQ. 4)THEN
  503. C
  504. C******* HUS (Van Leer FVS + Osher FDS)
  505. C
  506. CALL FLHU21(NESP,
  507. & GAMG,ROG,PG,UNG,UTG,UVG,
  508. & GAMD,ROD,PD,UND,UTD,UVD,
  509. & FRAMAG.YET,FRAMAD.YET,
  510. & IFLU1.FLUX,IFLU2.FLUX,
  511. & CELLT,
  512. & LOGNC,MESERR,LOGAN)
  513. ELSEIF(INDMET .EQ. 5)THEN
  514. C
  515. C******* HUS (Van Leer - Hanel FVS + Osher FDS)
  516. C
  517. CALL FLHU22(NESP,
  518. & GAMG,ROG,PG,UNG,UTG,UVG,
  519. & GAMD,ROD,PD,UND,UTD,UVD,
  520. & FRAMAG.YET,FRAMAD.YET,
  521. & IFLU1.FLUX,IFLU2.FLUX,
  522. & CELLT,
  523. & LOGNC,MESERR,LOGAN)
  524. ELSEIF(INDMET .EQ. 6)THEN
  525. C
  526. C******** AUSM+ (Liou)
  527. C
  528. CALL FAUSM3(NESP,
  529. & GAMG,ROG,PG,UNG,UTG,UVG,
  530. & GAMD,ROD,PD,UND,UTD,UVD,
  531. & FRAMAG.YET,FRAMAD.YET,
  532. & IFLU1.FLUX,
  533. & CELLT)
  534. C
  535. C******** AUSM+(P) for low-Mach number flows (Edwards and Liou)
  536. C
  537. ELSEIF(INDMET .EQ. 9)THEN
  538. V_INF=MAX(MPUINF.VPOCHA(NLCEG,1),
  539. & MPUINF.VPOCHA(NLCED,1),
  540. & MPUPRI.VPOCHA(NLCEG,1),
  541. & MPUPRI.VPOCHA(NLCED,1))
  542. CALL FAUSM4(NESP,
  543. & GAMG,ROG,PG,UNG,UTG,UVG,
  544. & GAMD,ROD,PD,UND,UTD,UVD,
  545. & FRAMAG.YET,FRAMAD.YET,
  546. & V_INF,
  547. & IFLU1.FLUX,
  548. & CELLT)
  549. C
  550. C******** RUSANOV Scheme
  551. C
  552. ELSEIF(INDMET .EQ. 10)THEN
  553. CALL FRUSA3(NESP,
  554. & GAMG,ROG,PG,UNG,UTG,UVG,
  555. & GAMD,ROD,PD,UND,UTD,UVD,
  556. & FRAMAG.YET,FRAMAD.YET,
  557. & IFLU1.FLUX,
  558. & CELLT)
  559. C
  560. C******** RUSANOV Scheme for Low-Mach number flows
  561. C
  562. ELSEIF(INDMET .EQ. 11)THEN
  563. V_INF=MAX(MPUINF.VPOCHA(NLCEG,1),
  564. & MPUINF.VPOCHA(NLCED,1),
  565. & MPUPRI.VPOCHA(NLCEG,1),
  566. & MPUPRI.VPOCHA(NLCED,1))
  567. CALL FRUSB3(NESP,
  568. & GAMG,ROG,PG,UNG,UTG,UVG,
  569. & GAMD,ROD,PD,UND,UTD,UVD,
  570. & FRAMAG.YET,FRAMAD.YET,
  571. & V_INF,
  572. & IFLU1.FLUX,
  573. & CELLT)
  574. C
  575. C******* Centered scheme
  576. C
  577. ELSEIF(INDMET .EQ. 12)THEN
  578. CALL FVCEN3(NESP,
  579. & GAMG,ROG,PG,UNG,UTG,UVG,
  580. & GAMD,ROD,PD,UND,UTD,UVD,
  581. & FRAMAG.YET,FRAMAD.YET,
  582. & IFLU1.FLUX,
  583. & CELLT)
  584. C
  585. C******** ROE-TURKEL schem for low-Mach number flows
  586. C
  587. ELSEIF(INDMET .EQ. 13)THEN
  588. V_INF=MAX(MPUINF.VPOCHA(NLCEG,1),
  589. & MPUINF.VPOCHA(NLCED,1),
  590. & MPUPRI.VPOCHA(NLCEG,1),
  591. & MPUPRI.VPOCHA(NLCED,1))
  592. CALL FROEB3(NESP,
  593. & GAMG,ROG,PG,UNG,UTG,UVG,
  594. & GAMD,ROD,PD,UND,UTD,UVD,
  595. & FRAMAG.YET,FRAMAD.YET,
  596. & V_INF,
  597. & IFLU1.FLUX,
  598. & CELLT)
  599. ENDIF
  600. C
  601. IF(LOGAN) GOTO 9999
  602. IF(LOGNC) GOTO 9999
  603. C
  604. C******* Ecriture des flux
  605. C
  606. C FLUX(1) = RO Un RO Un
  607. C FLUX(2) = RO Un Un + P -> RO Un Ux + P CNX
  608. C FLUX(3) = RO Un Ut -> RO Un Uy + P CNY
  609. C FLUX(4) = RO Un Et RO Un Et
  610. C
  611. SURF = MPOVSU.VPOCHA(NLCF,1)
  612. MPOFLU.VPOCHA(NLCF,1) =
  613. & (IFLU1.FLUX(1) * SURF )
  614. MPOFLU.VPOCHA(NLCF,2) =
  615. & ((IFLU1.FLUX(2)*CNX+IFLU1.FLUX(3)*CTX+IFLU1.FLUX(4)*CVX
  616. $ )* SURF)
  617. MPOFLU.VPOCHA(NLCF,3) =
  618. & ((IFLU1.FLUX(2)*CNY+IFLU1.FLUX(3)*CTY+IFLU1.FLUX(4)*CVY
  619. $ )* SURF)
  620. MPOFLU.VPOCHA(NLCF,4) =
  621. & ((IFLU1.FLUX(2)*CNZ+IFLU1.FLUX(3)*CTZ+IFLU1.FLUX(4)*CVZ
  622. $ )* SURF)
  623. MPOFLU.VPOCHA(NLCF,5) =
  624. & (IFLU1.FLUX(5) * SURF)
  625. IF(LOGME)THEN
  626. DO I1 = 1, NESP, 1
  627. MPOFLU.VPOCHA(NLCF,5+I1) = IFLU1.FLUX(5+I1)
  628. & * SURF
  629. ENDDO
  630. ENDIF
  631. C
  632. C******* Calcul du pas du temps (CFL)
  633. C
  634. C****** a) etat a l'interface
  635. C
  636. DIAMG = MPOVDI.VPOCHA(NLCEG,1)
  637. DIAMD = MPOVDI.VPOCHA(NLCED,1)
  638. DIAM = (DIAMG+DIAMD)/2.0D0
  639. CELL = 1.0D0/DIAM/CELLT
  640. IF(CELL .GT. UNSDT)THEN
  641. UNSDT = CELL
  642. ENDIF
  643. C
  644. C****** b) etat gauche
  645. C
  646. ASON = SQRT(GAMG*PG/ROG)
  647. LAMBDA = ABS(UNG) + ASON
  648. CELL = LAMBDA / DIAM
  649. IF(CELL .GT. UNSDT)THEN
  650. UNSDT = CELL
  651. ENDIF
  652. C
  653. C****** C) etat droite
  654. C
  655. ASON = SQRT(GAMD*PD/ROD)
  656. LAMBDA = ABS(UND) + ASON
  657. CELL = LAMBDA / DIAM
  658. IF(CELL .GT. UNSDT)THEN
  659. UNSDT = CELL
  660. ENDIF
  661. C
  662. C**** Fin boucle sur FACEL
  663. C
  664. ENDIF
  665. ENDDO
  666. C
  667. C**** Pas du temps (condition de non interaction en 1D)
  668. C
  669. DT = 0.5D0 / UNSDT
  670. C
  671. C**** Desactivation des segments et
  672. C on detruit les MCHAMLs
  673. C
  674. C
  675. C**** SEGSUP FRAMAG
  676. C SEGSUP FRAMAD
  677. C meme si LOGME = .FALSE.
  678. C
  679. SEGSUP FRAMAG
  680. SEGSUP FRAMAD
  681. C
  682. SEGSUP MLENT1
  683. SEGDES MLENT2
  684. SEGDES IPT2
  685. C
  686. SEGSUP IFLU1
  687. SEGSUP IFLU2
  688. C
  689. SEGDES MPOVSU
  690. SEGDES MPOVDI
  691. C
  692. SEGDES MPOFLU
  693. C
  694. SEGDES MELRO
  695. SEGDES MELP
  696. SEGDES MELGAM
  697. SEGDES MELVUN
  698. SEGDES MELVUT
  699. SEGDES MELVUV
  700. SEGDES MELVNX
  701. SEGDES MELVNY
  702. SEGDES MELVNZ
  703. SEGDES MELT1X
  704. SEGDES MELT1Y
  705. SEGDES MELT1Z
  706. SEGDES MELT2X
  707. SEGDES MELT2Y
  708. SEGDES MELT2Z
  709. C
  710. IF(LOGME) THEN
  711. DO I1 = 1, NESP
  712. MELVA1 = MCHAMY.IELVAL(I1)
  713. SEGDES MELVA1
  714. ENDDO
  715. C
  716. SEGDES MCHAMY
  717. ENDIF
  718. SEGSUP MLELIM
  719. CC
  720. 9999 CONTINUE
  721. C
  722. RETURN
  723. END
  724. C
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  

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