Télécharger ckon4.eso

Retour à la liste

Numérotation des lignes :

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

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