Télécharger konfl3.eso

Retour à la liste

Numérotation des lignes :

  1. C KONFL3 SOURCE PV 09/03/12 21:26:29 6325
  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. C
  133. C**** Variables de COOPTIO
  134. C
  135. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  136. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  137. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  138. C & ,IECHO, IIMPI, IOSPI
  139. C & ,IDIM
  140. CC & ,MCOORD
  141. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  142. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  143. C & ,NORINC,NORVAL,NORIND,NORVAD
  144. C & ,NUCROU, IPSAUV
  145. C
  146. IMPLICIT INTEGER(I-N)
  147. INTEGER I1
  148. & ,INDMET
  149. & ,IROF,IVITF,IPF,IGAMF,IFRMAF
  150. & ,ICHPSU,ICHPDI,MELEMC,MELEMF,MELEFE
  151. & ,IGEOMC,IGEOMF
  152. & ,IUINF,IUPRI
  153. & ,ICHFLU
  154. & ,NESP, NFAC
  155. & ,NLCF, NGCEG, NGCED, NLCEG, NLCED
  156. & ,NGCF, NLCF1, SPG1, SPG2
  157. REAL*8 DT, UNSDT, CELLT
  158. & , ROG, UNG, UTG, UVG, PG, GAMG
  159. & , ROD, UND, UTD, UVD, PD, GAMD
  160. & , SURF,CNX, CNY, CNZ, CTX , CTY, CTZ
  161. & , CVX, CVY, CVZ, V_INF
  162. & , CELL, DIAMG, DIAMD, DIAM
  163. & , ASON, LAMBDA
  164. LOGICAL LOGME, LOGNC, LOGAN
  165. CHARACTER*(40) MESERR
  166. CHARACTER*(8) TYPE
  167. C
  168. C**** LES INCLUDES
  169. C
  170. -INC CCOPTIO
  171. -INC SMCOORD
  172. -INC SMCHAML
  173. POINTEUR MELVNX.MELVAL, MELVNY.MELVAL,MELVNZ.MELVAL,
  174. & MELT1X.MELVAL, MELT1Y.MELVAL,MELT1Z.MELVAL,
  175. & MELT2X.MELVAL, MELT2Y.MELVAL,MELT2Z.MELVAL
  176. POINTEUR MELVUN.MELVAL, MELVUT.MELVAL, MELVUV.MELVAL
  177. POINTEUR MELRO.MELVAL, MELP.MELVAL,
  178. & MELGAM.MELVAL
  179. -INC SMCHPOI
  180. POINTEUR MPOVSU.MPOVAL, MPOVDI.MPOVAL
  181. & , MPOFLU.MPOVAL
  182. & , MPUINF.MPOVAL, MPUPRI.MPOVAL
  183. POINTEUR MCHAMY.MCHAML
  184. -INC SMELEME
  185. POINTEUR MELLIM.MELEME
  186. -INC SMLMOTS
  187. -INC SMLENTI
  188. POINTEUR MLELIM.MLENTI
  189. C
  190. C**** Les fractiones massiques.
  191. C
  192. SEGMENT FRAMAS
  193. REAL*8 YET(NESP)
  194. ENDSEGMENT
  195. POINTEUR FRAMAG.FRAMAS, FRAMAD.FRAMAS
  196. C
  197. C**** Les flux aux interface dans le repaire (n,t,v)
  198. C
  199. SEGMENT IFLUX
  200. REAL*8 FLUX(NESP+5)
  201. ENDSEGMENT
  202. POINTEUR IFLU1.IFLUX, IFLU2.IFLUX
  203. C
  204. C**** KRIPAD pour la correspondance global/local des conditions limits
  205. C
  206. CALL KRIPAD(MELLIM,MLELIM)
  207. C SEGACT MELLIM
  208. C
  209. C**** Initialisation des MCHAMLs
  210. C
  211. C**** Masse volumique
  212. C
  213. MCHEL1 = IROF
  214. SEGACT MCHEL1
  215. MCHAM1 = MCHEL1.ICHAML(1)
  216. SEGACT MCHAM1
  217. MELRO = MCHAM1.IELVAL(1)
  218. SEGDES MCHEL1
  219. SEGDES MCHAM1
  220. C
  221. C**** Pression
  222. C
  223. MCHEL1 = IPF
  224. SEGACT MCHEL1
  225. MCHAM1 = MCHEL1.ICHAML(1)
  226. SEGACT MCHAM1
  227. MELP = MCHAM1.IELVAL(1)
  228. SEGDES MCHEL1
  229. SEGDES MCHAM1
  230. C
  231. C**** Gamma
  232. C
  233. MCHEL1 = IGAMF
  234. SEGACT MCHEL1
  235. MCHAM1 = MCHEL1.ICHAML(1)
  236. SEGACT MCHAM1
  237. MELGAM = MCHAM1.IELVAL(1)
  238. SEGDES MCHEL1
  239. SEGDES MCHAM1
  240. C
  241. C**** Vitesse et cosinus directeurs du repere (n,t)
  242. C
  243. MCHEL1 = IVITF
  244. SEGACT MCHEL1
  245. C
  246. C**** La vitesse a comme SPG MELEFE
  247. C Le cosinus directeurs ont comme SPG MELEMF
  248. C
  249. C MCHAM1 -> Cosinus directeurs
  250. C MCHAM2 -> Vitesse
  251. C
  252. SPG1 = MCHEL1.IMACHE(1)
  253. SPG2 = MCHEL1.IMACHE(2)
  254. IF((SPG1 .EQ. MELEMF) .AND. (SPG2 .EQ. MELEFE))THEN
  255. MCHAM1 = MCHEL1.ICHAML(1)
  256. MCHAM2 = MCHEL1.ICHAML(2)
  257. ELSEIF((SPG1 .EQ. MELEFE) .AND. (SPG2 .EQ. MELEMF))THEN
  258. MCHAM1 = MCHEL1.ICHAML(2)
  259. MCHAM2 = MCHEL1.ICHAML(1)
  260. ELSE
  261. LOGAN = .TRUE.
  262. GOTO 9999
  263. ENDIF
  264. SEGACT MCHAM1
  265. MELVNX = MCHAM1.IELVAL(1)
  266. MELVNY = MCHAM1.IELVAL(2)
  267. MELVNZ = MCHAM1.IELVAL(3)
  268. MELT1X = MCHAM1.IELVAL(4)
  269. MELT1Y = MCHAM1.IELVAL(5)
  270. MELT1Z = MCHAM1.IELVAL(6)
  271. MELT2X = MCHAM1.IELVAL(7)
  272. MELT2Y = MCHAM1.IELVAL(8)
  273. MELT2Z = MCHAM1.IELVAL(9)
  274. SEGDES MCHAM1
  275. SEGACT MCHAM2
  276. MELVUN = MCHAM2.IELVAL(1)
  277. MELVUT = MCHAM2.IELVAL(2)
  278. MELVUV = MCHAM2.IELVAL(3)
  279. SEGDES MCHAM2
  280. SEGDES MCHEL1
  281. C
  282. C**** Fractions massiques
  283. C
  284. IF(LOGME)THEN
  285. MCHEL1 = IFRMAF
  286. SEGACT MCHEL1
  287. MCHAMY = MCHEL1.ICHAML(1)
  288. SEGACT MCHAMY
  289. C
  290. C******* Numero d'especes dans les equations d'Euler
  291. C
  292. NESP = MCHAMY.IELVAL(/1)
  293. DO I1 = 1, NESP
  294. MELVA1 = MCHAMY.IELVAL(I1)
  295. SEGACT MELVA1
  296. ENDDO
  297. SEGINI FRAMAG
  298. SEGINI FRAMAD
  299. SEGDES MCHEL1
  300. ELSE
  301. C
  302. C******* Definition minimale de YET, necessaire pour transmetre YET aux
  303. C subroutines FORTRAN qui calculent les flux
  304. C
  305. NESP = 1
  306. SEGINI FRAMAG
  307. SEGINI FRAMAD
  308. NESP = 0
  309. ENDIF
  310. C
  311. C**** Initialisation des MELEMEs
  312. C
  313. C 'CENTRE', 'FACEL'
  314. C
  315. IPT2 = MELEFE
  316. SEGACT IPT2
  317. NFAC = IPT2.NUM(/2)
  318. C
  319. C**** KRIPAD pour la correspondance global/local de centre
  320. C
  321. CALL KRIPAD(MELEMC,MLENT1)
  322. C
  323. C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
  324. C
  325. C Si i est le numero global d'un noeud de ICEN,
  326. C MLENT1.LECT(i) contient sa position, i.e.
  327. C
  328. C I = numero global du noeud centre
  329. C MLENT1.LECT(i) = numero local du noeud centre
  330. C
  331. C MLENT1 déjà activé, i.e.
  332. C
  333. C SEGACT MLENT1
  334. C
  335. C
  336. C**** KRIPAD pour la correspondance global/local de 'FACE'
  337. C
  338. CALL KRIPAD(MELEMF,MLENT2)
  339. C
  340. C**** Initialisation de flux
  341. C
  342. SEGINI IFLU1
  343. SEGINI IFLU2
  344. C
  345. C**** IFLU2 = segment de travail en FLUVLH; c'est plus rapide le definir ici
  346. C
  347. C
  348. C**** CHPOINTs de la table DOMAINE
  349. C
  350. CALL LICHT(ICHPSU,MPOVSU,TYPE,IGEOMF)
  351. CALL LICHT(ICHPDI,MPOVDI,TYPE,IGEOMC)
  352. C
  353. C**** LICHT active les MPOVALs en *MOD
  354. C
  355. C i.e.
  356. C
  357. C SEGACT MPOVSU*MOD
  358. C SEGACT MPOVDI*MOD
  359. C
  360. C
  361. C**** Les FLUX aux face
  362. C
  363. C La densité
  364. C
  365. CALL LICHT(ICHFLU,MPOFLU,TYPE,IGEOMF)
  366. C SEGACT MPOFLU*MOD
  367. C
  368. C**** Activation des MCHAMLs
  369. C
  370. SEGACT MELRO
  371. SEGACT MELP
  372. SEGACT MELGAM
  373. SEGACT MELVUN
  374. SEGACT MELVUT
  375. SEGACT MELVUV
  376. SEGACT MELVNX
  377. SEGACT MELVNY
  378. SEGACT MELVNZ
  379. SEGACT MELT1X
  380. SEGACT MELT1Y
  381. SEGACT MELT1Z
  382. SEGACT MELT2X
  383. SEGACT MELT2Y
  384. SEGACT MELT2Z
  385. C********************************************************
  386. C Bas Mach
  387. C*******************************************************
  388. IF(IUINF .NE. 0)THEN
  389. CALL LICHT(IUPRI,MPUPRI,TYPE,IGEOMC)
  390. CALL LICHT(IUINF,MPUINF,TYPE,IGEOMC)
  391. ELSE
  392. MPUPRI=0
  393. MPUINF=0
  394. ENDIF
  395. C*******************************************************
  396. C**** Initialisation de 1/DT
  397. C*******************************************************
  398. UNSDT = 0.0D0
  399. C
  400. C**** BOUCLE SUR FACEL pour le calcul du FLUX
  401. C
  402. DO NLCF = 1, NFAC
  403. C
  404. C******* NLCF = numero local du centre de facel
  405. C NGCF = numero global du centre de facel
  406. C NLCF1 = numero local du centre de face
  407. C NGCEG = numero global du centre ELT "gauche"
  408. C NLCEG = numero local du centre ELT "gauche"
  409. C NGCED = numero global du centre ELT "droite"
  410. C NLCED = numero local du centre ELT "droite"
  411. C
  412. NGCEG = IPT2.NUM(1,NLCF)
  413. NGCED = IPT2.NUM(3,NLCF)
  414. NGCF = IPT2.NUM(2,NLCF)
  415. NLCF1 = MLENT2.LECT(NGCF)
  416. NLCEG = MLENT1.LECT(NGCEG)
  417. NLCED = MLENT1.LECT(NGCED)
  418. NLFL = MLELIM.LECT(NGCF)
  419. C
  420. C******* NLCF != NLCF1 -> l'auteur (MOI) n'a rien compris.
  421. C
  422. IF(NLCF .NE. NLCF1)THEN
  423. MESERR = 'FACEL et FACE = ? '
  424. LOGAN = .TRUE.
  425. GOTO 9999
  426. ENDIF
  427. IF(NLFL .EQ. 0)THEN
  428. C
  429. C******* Recuperation des Etats "gauche" et "droite"
  430. C
  431. ROG = MELRO.VELCHE(1,NLCF)
  432. UNG = MELVUN.VELCHE(1,NLCF)
  433. UTG = MELVUT.VELCHE(1,NLCF)
  434. UVG = MELVUV.VELCHE(1,NLCF)
  435. PG = MELP.VELCHE(1,NLCF)
  436. GAMG = MELGAM.VELCHE(1,NLCF)
  437. C
  438. ROD = MELRO.VELCHE(3,NLCF)
  439. UND = MELVUN.VELCHE(3,NLCF)
  440. UTD = MELVUT.VELCHE(3,NLCF)
  441. UVD = MELVUV.VELCHE(3,NLCF)
  442. PD = MELP.VELCHE(3,NLCF)
  443. GAMD = MELGAM.VELCHE(3,NLCF)
  444. C
  445. CNX = MELVNX.VELCHE(1,NLCF)
  446. CNY = MELVNY.VELCHE(1,NLCF)
  447. CNZ = MELVNZ.VELCHE(1,NLCF)
  448. CTX = MELT1X.VELCHE(1,NLCF)
  449. CTY = MELT1Y.VELCHE(1,NLCF)
  450. CTZ = MELT1Z.VELCHE(1,NLCF)
  451. CVX = MELT2X.VELCHE(1,NLCF)
  452. CVY = MELT2Y.VELCHE(1,NLCF)
  453. CVZ = MELT2Z.VELCHE(1,NLCF)
  454. C
  455. C******* Le fractiones massiques
  456. C
  457. IF(LOGME)THEN
  458. DO I1 = 1, NESP
  459. MELVA1 = MCHAMY.IELVAL(I1)
  460. FRAMAG.YET(I1) = MELVA1.VELCHE(1,NLCF)
  461. FRAMAD.YET(I1) = MELVA1.VELCHE(3,NLCF)
  462. ENDDO
  463. ENDIF
  464. C
  465. C******* On a defini (ROg,ROUNg,ROUTg,Pg,(Yg)), (ROd,ROUNd,ROUTd,Pd,(Yd))
  466. C et on a déjà verifié ROg, ROd, Pg, Pd > 0 et 0<Y_i<1
  467. C
  468. C
  469. C******* Calcul du flux aux interfaces
  470. C
  471. IF(INDMET .EQ. 1)THEN
  472. C
  473. C******* GODUNOV
  474. C FLURIE en FORTRAN STANDARD
  475. C
  476. CALL FLURI2(NESP,
  477. & GAMG,ROG,PG,UNG,UTG,UVG,
  478. & GAMD,ROD,PD,UND,UTD,UVD,
  479. & FRAMAG.YET,FRAMAD.YET,
  480. & IFLU1.FLUX,
  481. & CELLT,
  482. & LOGNC,LOGAN,MESERR)
  483. C
  484. ELSEIF(INDMET .EQ. 2)THEN
  485. C
  486. C******* Van Leer FVS
  487. C
  488. C N.B: FLUXVL en FORTRAN pure
  489. C FRAMAG.YET = table d'un pointeur -> table
  490. C La meme chose pour FRAMAD.YET, IFLU1.FLUX,
  491. C IFLU2.FLUX
  492. C
  493. CALL FLUXV2(NESP,
  494. & GAMG,ROG,PG,UNG,UTG,UVG,
  495. & GAMD,ROD,PD,UND,UTD,UVD,
  496. & FRAMAG.YET,FRAMAD.YET,
  497. & IFLU1.FLUX,IFLU2.FLUX,
  498. & CELLT)
  499. ELSEIF(INDMET .EQ. 3)THEN
  500. C
  501. C******* Van Leer - Hanel FVS
  502. C
  503. C N.B: FLUVLH en FORTRAN pure
  504. C FRAMAG.YET = table d'un pointeur -> table
  505. C La meme chose pour FRAMAD.YET, IFLU1.FLUX,
  506. C IFLU2.FLUX
  507. C
  508. CALL FLUVL2(NESP,
  509. & GAMG,ROG,PG,UNG,UTG,UVG,
  510. & GAMD,ROD,PD,UND,UTD,UVD,
  511. & FRAMAG.YET,FRAMAD.YET,
  512. & IFLU1.FLUX,IFLU2.FLUX,
  513. & CELLT)
  514. ELSEIF(INDMET .EQ. 4)THEN
  515. C
  516. C******* HUS (Van Leer FVS + Osher FDS)
  517. C
  518. CALL FLHU21(NESP,
  519. & GAMG,ROG,PG,UNG,UTG,UVG,
  520. & GAMD,ROD,PD,UND,UTD,UVD,
  521. & FRAMAG.YET,FRAMAD.YET,
  522. & IFLU1.FLUX,IFLU2.FLUX,
  523. & CELLT,
  524. & LOGNC,MESERR,LOGAN)
  525. ELSEIF(INDMET .EQ. 5)THEN
  526. C
  527. C******* HUS (Van Leer - Hanel FVS + Osher FDS)
  528. C
  529. CALL FLHU22(NESP,
  530. & GAMG,ROG,PG,UNG,UTG,UVG,
  531. & GAMD,ROD,PD,UND,UTD,UVD,
  532. & FRAMAG.YET,FRAMAD.YET,
  533. & IFLU1.FLUX,IFLU2.FLUX,
  534. & CELLT,
  535. & LOGNC,MESERR,LOGAN)
  536. ELSEIF(INDMET .EQ. 6)THEN
  537. C
  538. C******** AUSM+ (Liou)
  539. C
  540. CALL FAUSM3(NESP,
  541. & GAMG,ROG,PG,UNG,UTG,UVG,
  542. & GAMD,ROD,PD,UND,UTD,UVD,
  543. & FRAMAG.YET,FRAMAD.YET,
  544. & IFLU1.FLUX,
  545. & CELLT)
  546. C
  547. C******** AUSM+(P) for low-Mach number flows (Edwards and Liou)
  548. C
  549. ELSEIF(INDMET .EQ. 9)THEN
  550. V_INF=MAX(MPUINF.VPOCHA(NLCEG,1),
  551. & MPUINF.VPOCHA(NLCED,1),
  552. & MPUPRI.VPOCHA(NLCEG,1),
  553. & MPUPRI.VPOCHA(NLCED,1))
  554. CALL FAUSM4(NESP,
  555. & GAMG,ROG,PG,UNG,UTG,UVG,
  556. & GAMD,ROD,PD,UND,UTD,UVD,
  557. & FRAMAG.YET,FRAMAD.YET,
  558. & V_INF,
  559. & IFLU1.FLUX,
  560. & CELLT)
  561. C
  562. C******** RUSANOV Scheme
  563. C
  564. ELSEIF(INDMET .EQ. 10)THEN
  565. CALL FRUSA3(NESP,
  566. & GAMG,ROG,PG,UNG,UTG,UVG,
  567. & GAMD,ROD,PD,UND,UTD,UVD,
  568. & FRAMAG.YET,FRAMAD.YET,
  569. & IFLU1.FLUX,
  570. & CELLT)
  571. C
  572. C******** RUSANOV Scheme for Low-Mach number flows
  573. C
  574. ELSEIF(INDMET .EQ. 11)THEN
  575. V_INF=MAX(MPUINF.VPOCHA(NLCEG,1),
  576. & MPUINF.VPOCHA(NLCED,1),
  577. & MPUPRI.VPOCHA(NLCEG,1),
  578. & MPUPRI.VPOCHA(NLCED,1))
  579. CALL FRUSB3(NESP,
  580. & GAMG,ROG,PG,UNG,UTG,UVG,
  581. & GAMD,ROD,PD,UND,UTD,UVD,
  582. & FRAMAG.YET,FRAMAD.YET,
  583. & V_INF,
  584. & IFLU1.FLUX,
  585. & CELLT)
  586. C
  587. C******* Centered scheme
  588. C
  589. ELSEIF(INDMET .EQ. 12)THEN
  590. CALL FVCEN3(NESP,
  591. & GAMG,ROG,PG,UNG,UTG,UVG,
  592. & GAMD,ROD,PD,UND,UTD,UVD,
  593. & FRAMAG.YET,FRAMAD.YET,
  594. & IFLU1.FLUX,
  595. & CELLT)
  596. C
  597. C******** ROE-TURKEL schem for low-Mach number flows
  598. C
  599. ELSEIF(INDMET .EQ. 13)THEN
  600. V_INF=MAX(MPUINF.VPOCHA(NLCEG,1),
  601. & MPUINF.VPOCHA(NLCED,1),
  602. & MPUPRI.VPOCHA(NLCEG,1),
  603. & MPUPRI.VPOCHA(NLCED,1))
  604. CALL FROEB3(NESP,
  605. & GAMG,ROG,PG,UNG,UTG,UVG,
  606. & GAMD,ROD,PD,UND,UTD,UVD,
  607. & FRAMAG.YET,FRAMAD.YET,
  608. & V_INF,
  609. & IFLU1.FLUX,
  610. & CELLT)
  611. ENDIF
  612. C
  613. IF(LOGAN) GOTO 9999
  614. IF(LOGNC) GOTO 9999
  615. C
  616. C******* Ecriture des flux
  617. C
  618. C FLUX(1) = RO Un RO Un
  619. C FLUX(2) = RO Un Un + P -> RO Un Ux + P CNX
  620. C FLUX(3) = RO Un Ut -> RO Un Uy + P CNY
  621. C FLUX(4) = RO Un Et RO Un Et
  622. C
  623. SURF = MPOVSU.VPOCHA(NLCF,1)
  624. MPOFLU.VPOCHA(NLCF,1) =
  625. & (IFLU1.FLUX(1) * SURF )
  626. MPOFLU.VPOCHA(NLCF,2) =
  627. & ((IFLU1.FLUX(2)*CNX+IFLU1.FLUX(3)*CTX+IFLU1.FLUX(4)*CVX
  628. $ )* SURF)
  629. MPOFLU.VPOCHA(NLCF,3) =
  630. & ((IFLU1.FLUX(2)*CNY+IFLU1.FLUX(3)*CTY+IFLU1.FLUX(4)*CVY
  631. $ )* SURF)
  632. MPOFLU.VPOCHA(NLCF,4) =
  633. & ((IFLU1.FLUX(2)*CNZ+IFLU1.FLUX(3)*CTZ+IFLU1.FLUX(4)*CVZ
  634. $ )* SURF)
  635. MPOFLU.VPOCHA(NLCF,5) =
  636. & (IFLU1.FLUX(5) * SURF)
  637. IF(LOGME)THEN
  638. DO I1 = 1, NESP, 1
  639. MPOFLU.VPOCHA(NLCF,5+I1) = IFLU1.FLUX(5+I1)
  640. & * SURF
  641. ENDDO
  642. ENDIF
  643. C
  644. C******* Calcul du pas du temps (CFL)
  645. C
  646. C****** a) etat a l'interface
  647. C
  648. DIAMG = MPOVDI.VPOCHA(NLCEG,1)
  649. DIAMD = MPOVDI.VPOCHA(NLCED,1)
  650. DIAM = (DIAMG+DIAMD)/2.0D0
  651. CELL = 1.0D0/DIAM/CELLT
  652. IF(CELL .GT. UNSDT)THEN
  653. UNSDT = CELL
  654. ENDIF
  655. C
  656. C****** b) etat gauche
  657. C
  658. ASON = SQRT(GAMG*PG/ROG)
  659. LAMBDA = ABS(UNG) + ASON
  660. CELL = LAMBDA / DIAM
  661. IF(CELL .GT. UNSDT)THEN
  662. UNSDT = CELL
  663. ENDIF
  664. C
  665. C****** C) etat droite
  666. C
  667. ASON = SQRT(GAMD*PD/ROD)
  668. LAMBDA = ABS(UND) + ASON
  669. CELL = LAMBDA / DIAM
  670. IF(CELL .GT. UNSDT)THEN
  671. UNSDT = CELL
  672. ENDIF
  673. C
  674. C**** Fin boucle sur FACEL
  675. C
  676. ENDIF
  677. ENDDO
  678. C
  679. C**** Pas du temps (condition de non interaction en 1D)
  680. C
  681. DT = 0.5D0 / UNSDT
  682. C
  683. C**** Desactivation des segments et
  684. C on detruit les MCHAMLs
  685. C
  686. C
  687. C**** SEGSUP FRAMAG
  688. C SEGSUP FRAMAD
  689. C meme si LOGME = .FALSE.
  690. C
  691. SEGSUP FRAMAG
  692. SEGSUP FRAMAD
  693. C
  694. SEGSUP MLENT1
  695. SEGDES MLENT2
  696. SEGDES IPT2
  697. C
  698. SEGSUP IFLU1
  699. SEGSUP IFLU2
  700. C
  701. SEGDES MPOVSU
  702. SEGDES MPOVDI
  703. C
  704. SEGDES MPOFLU
  705. C
  706. SEGDES MELRO
  707. SEGDES MELP
  708. SEGDES MELGAM
  709. SEGDES MELVUN
  710. SEGDES MELVUT
  711. SEGDES MELVUV
  712. SEGDES MELVNX
  713. SEGDES MELVNY
  714. SEGDES MELVNZ
  715. SEGDES MELT1X
  716. SEGDES MELT1Y
  717. SEGDES MELT1Z
  718. SEGDES MELT2X
  719. SEGDES MELT2Y
  720. SEGDES MELT2Z
  721. C
  722. IF(LOGME) THEN
  723. DO I1 = 1, NESP
  724. MELVA1 = MCHAMY.IELVAL(I1)
  725. SEGDES MELVA1
  726. ENDDO
  727. C
  728. SEGDES MCHAMY
  729. ENDIF
  730. SEGSUP MLELIM
  731. CC
  732. 9999 CONTINUE
  733. C
  734. RETURN
  735. END
  736. C
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  

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