Télécharger ckon4.eso

Retour à la liste

Numérotation des lignes :

ckon4
  1. C CKON4 SOURCE OF166741 24/12/13 21:15:04 12097
  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. IMPLICIT INTEGER(I-N)
  141. INTEGER I1, I2
  142. & ,INDMET, NORDP1
  143. & ,IROF,IVITF,IPF,IFRMAF, ISCAF
  144. & ,ICHPSU,ICHPDI,MELEMC,MELEMF,MELEFE
  145. & ,IGEOMC,IGEOMF
  146. & ,IZG1,IZG2,IZG3,IZG4,IZG5,NLCEMI
  147. & ,NESP, NFAC, NSCA, NMA, NMA2
  148. & ,NLCF, NGCEG, NGCED, NLCEG, NLCED
  149. & ,NGCF, NLCF1, SPG1, SPG2
  150. REAL*8 DIAMEL, DT, UNSDT, CELLT
  151. & , ROG, UNG, UTG, UVG, PG, GAMG, TG
  152. & , ROD, UND, UTD, UVD, PD, GAMD, TD
  153. & , SURF,CNX, CNY, CNZ, CTX , CTY, CTZ
  154. & , CVX, CVY, CVZ
  155. & , CELL, DIAMG, DIAMD, DIAM
  156. & , ASON, LAMBDA
  157. & , Y1G, Y1D, RTOTG, RTOTD, CVTOTG, CVTOTD, ETHERG, ETHERD
  158. & , YG, YD, FUNTG, FUNTD, DCV, XST
  159. LOGICAL LOGME, LOGNC, LOGAN
  160. CHARACTER*(40) MESERR
  161. CHARACTER*(8) TYPE
  162. C
  163. C**** Segment des proprietes du gaz
  164. C
  165. SEGMENT PROPHY
  166. REAL*8 ACV(NORDP1,NESP+1), R(NESP+1), H0K(NESP+1)
  167. & ,ACVTOG(NORDP1), ACVTOD(NORDP1)
  168. ENDSEGMENT
  169. C
  170. C**** Les Includes
  171. C
  172. C
  173. C**** LES INCLUDES
  174. C
  175.  
  176. -INC PPARAM
  177. -INC CCOPTIO
  178. -INC SMCOORD
  179. -INC SMCHAML
  180. POINTEUR MELVNX.MELVAL, MELVNY.MELVAL,MELVNZ.MELVAL,
  181. & MELT1X.MELVAL, MELT1Y.MELVAL,MELT1Z.MELVAL,
  182. & MELT2X.MELVAL, MELT2Y.MELVAL,MELT2Z.MELVAL
  183. POINTEUR MELVUN.MELVAL, MELVUT.MELVAL, MELVUV.MELVAL
  184. POINTEUR MELRO.MELVAL, MELP.MELVAL
  185. -INC SMCHPOI
  186. POINTEUR MPOVSU.MPOVAL, MPOVDI.MPOVAL
  187. & , MPOVG1.MPOVAL, MPOVG2.MPOVAL
  188. & , MPOVG3.MPOVAL, MPOVG4.MPOVAL, MPOVG5.MPOVAL
  189. POINTEUR MCHAMY.MCHAML, MCHAMS.MCHAML
  190. -INC SMELEME
  191. -INC SMLMOTS
  192. -INC SMLENTI
  193. C
  194. C**** Les fractiones massiques.
  195. C
  196. SEGMENT FRAMAS
  197. REAL*8 YET(NMA)
  198. ENDSEGMENT
  199. POINTEUR FRAMAG.FRAMAS, FRAMAD.FRAMAS, SCAG.FRAMAS, SCAD.FRAMAS
  200. C
  201. C**** Les flux aux interface dans le repaire (n,t)
  202. C
  203. SEGMENT IFLUX
  204. REAL*8 FLUX(NMA2)
  205. ENDSEGMENT
  206. POINTEUR IFLU1.IFLUX, IFLU2.IFLUX
  207. C
  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**** Vitesse et cosinus directeurs du repere (n,t)
  232. C
  233. MCHEL1 = IVITF
  234. SEGACT MCHEL1
  235. C
  236. C**** La vitesse a comme SPG MELEFE
  237. C Le cosinus directeurs ont comme SPG MELEMF
  238. C
  239. C MCHAM1 -> Cosinus directeurs
  240. C MCHAM2 -> Vitesse
  241. C
  242. SPG1 = MCHEL1.IMACHE(1)
  243. SPG2 = MCHEL1.IMACHE(2)
  244. IF((SPG1 .EQ. MELEMF) .AND. (SPG2 .EQ. MELEFE))THEN
  245. MCHAM1 = MCHEL1.ICHAML(1)
  246. MCHAM2 = MCHEL1.ICHAML(2)
  247. ELSEIF((SPG1 .EQ. MELEFE) .AND. (SPG2 .EQ. MELEMF))THEN
  248. MCHAM1 = MCHEL1.ICHAML(2)
  249. MCHAM2 = MCHEL1.ICHAML(1)
  250. ELSE
  251. LOGAN = .TRUE.
  252. GOTO 9999
  253. ENDIF
  254. SEGACT MCHAM1
  255. MELVNX = MCHAM1.IELVAL(1)
  256. MELVNY = MCHAM1.IELVAL(2)
  257. MELVNZ = MCHAM1.IELVAL(3)
  258. MELT1X = MCHAM1.IELVAL(4)
  259. MELT1Y = MCHAM1.IELVAL(5)
  260. MELT1Z = MCHAM1.IELVAL(6)
  261. MELT2X = MCHAM1.IELVAL(7)
  262. MELT2Y = MCHAM1.IELVAL(8)
  263. MELT2Z = MCHAM1.IELVAL(9)
  264. SEGDES MCHAM1
  265. SEGACT MCHAM2
  266. MELVUN = MCHAM2.IELVAL(1)
  267. MELVUT = MCHAM2.IELVAL(2)
  268. MELVUV = MCHAM2.IELVAL(3)
  269. SEGDES MCHAM2
  270. SEGDES MCHEL1
  271. C
  272. C**** Fractions massiques
  273. C
  274. IF(LOGME)THEN
  275. MCHEL1 = IFRMAF
  276. SEGACT MCHEL1
  277. MCHAMY = MCHEL1.ICHAML(1)
  278. SEGACT MCHAMY
  279. C
  280. C******* Numero d'especes dans les equations d'Euler
  281. C
  282. NESP = MCHAMY.IELVAL(/1)
  283. DO I1 = 1, NESP
  284. MELVA1 = MCHAMY.IELVAL(I1)
  285. SEGACT MELVA1
  286. ENDDO
  287. NMA = NESP
  288. SEGINI FRAMAG
  289. SEGINI FRAMAD
  290. SEGDES MCHEL1
  291. ELSE
  292. C
  293. C******* Definition minimale de YET, necessaire pour transmetre YET aux
  294. C subroutines FORTRAN qui calculent les flux
  295. C
  296. NMA = 1
  297. SEGINI FRAMAG
  298. SEGINI FRAMAD
  299. NESP = 0
  300. ENDIF
  301. C
  302. C**** Scalaires passifs
  303. C
  304. IF(ISCAF .GT. 0)THEN
  305. MCHEL1 = ISCAF
  306. SEGACT MCHEL1
  307. MCHAMS = MCHEL1.ICHAML(1)
  308. SEGACT MCHAMS
  309. NSCA = MCHAMS.IELVAL(/1)
  310. DO I1 = 1, NSCA, 1
  311. MELVA1 = MCHAMS.IELVAL(I1)
  312. SEGACT MELVA1
  313. ENDDO
  314. NMA = NSCA
  315. SEGINI SCAG
  316. SEGINI SCAD
  317. SEGDES MCHEL1
  318. ELSE
  319. C
  320. C******* Definition minimale de YET, necessaire pour transmetre YET aux
  321. C subroutines FORTRAN qui calculent les flux
  322. C
  323. NMA = 1
  324. SEGINI SCAG
  325. SEGINI SCAD
  326. NSCA= 0
  327. ENDIF
  328. C
  329. C
  330. C**** Initialisation des MELEMEs
  331. C
  332. C 'CENTRE', 'FACEL'
  333. C
  334. IPT2 = MELEFE
  335. SEGACT IPT2
  336. NFAC = IPT2.NUM(/2)
  337. C
  338. C**** KRIPAD pour la correspondance global/local de centre
  339. C
  340. CALL KRIPAD(MELEMC,MLENT1)
  341. C
  342. C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
  343. C
  344. C Si i est le numero global d'un noeud de ICEN,
  345. C MLENT1.LECT(i) contient sa position, i.e.
  346. C
  347. C I = numero global du noeud centre
  348. C MLENT1.LECT(i) = numero local du noeud centre
  349. C
  350. C MLENT1 déjà activé, i.e.
  351. C
  352. C SEGACT MLENT1
  353. C
  354. C
  355. C**** KRIPAD pour la correspondance global/local de 'FACE'
  356. C
  357. CALL KRIPAD(MELEMF,MLENT2)
  358. C
  359. C**** Initialisation de flux
  360. C
  361. NMA2 = 5 + NESP + NSCA
  362. SEGINI IFLU1
  363. SEGINI IFLU2
  364. C
  365. C**** IFLU2 = segment de travail en FLUVLH; c'est plus rapide le definir ici
  366. C
  367. C
  368. C**** CHPOINTs de la table DOMAINE
  369. C
  370. CALL LICHT(ICHPSU,MPOVSU,TYPE,IGEOMF)
  371. CALL LICHT(ICHPDI,MPOVDI,TYPE,IGEOMC)
  372. C
  373. C**** LICHT active les MPOVALs en *MOD
  374. C
  375. C i.e.
  376. C
  377. C SEGACT MPOVSU*MOD
  378. C SEGACT MPOVDI*MOD
  379. C
  380. C
  381. C**** Les FLUX aux face
  382. C
  383. C La densité
  384. C
  385. CALL LICHT(IZG1,MPOVG1,TYPE,IGEOMF)
  386. C
  387. C SEGACT MPOVG1*MOD
  388. C
  389. C**** Les debits
  390. C
  391. CALL LICHT(IZG2,MPOVG2,TYPE,IGEOMF)
  392. C
  393. C SEGACT MPOVG2*MOD
  394. C
  395. C**** L'energie totale volumique
  396. C
  397. CALL LICHT(IZG3,MPOVG3,TYPE,IGEOMF)
  398. C
  399. C SEGACT MPOVG3*MOD
  400. C
  401. C**** Les Fractions Massiques
  402. C
  403. IF(LOGME)THEN
  404. CALL LICHT(IZG4,MPOVG4,TYPE,IGEOMF)
  405. C
  406. C SEGACT MPOVG4*MOD
  407. C
  408. ENDIF
  409. C
  410. C**** Les scalaires passifs
  411. C
  412. IF(ISCAF .GT. 0)THEN
  413. CALL LICHT(IZG5,MPOVG5,TYPE,IGEOMF)
  414. C
  415. C SEGACT MPOVG5*MOD
  416. C
  417. ENDIF
  418. C
  419. C**** Activation des MCHAMLs
  420. C
  421. SEGACT MELRO
  422. SEGACT MELP
  423. SEGACT MELVUN
  424. SEGACT MELVUT
  425. SEGACT MELVUV
  426. SEGACT MELVNX
  427. SEGACT MELVNY
  428. SEGACT MELVNZ
  429. SEGACT MELT1X
  430. SEGACT MELT1Y
  431. SEGACT MELT1Z
  432. SEGACT MELT2X
  433. SEGACT MELT2Y
  434. SEGACT MELT2Z
  435. C
  436. C**** Initialisation de 1/DT
  437. C
  438. UNSDT = 0.0D0
  439. C
  440. C**** BOUCLE SUR FACEL pour le calcul du FLUX
  441. C
  442. DO NLCF = 1, NFAC
  443. C
  444. C******* NLCF = numero local du centre de facel
  445. C NGCF = numero global du centre de facel
  446. C NLCF1 = numero local du centre de face
  447. C NGCEG = numero global du centre ELT "gauche"
  448. C NLCEG = numero local du centre ELT "gauche"
  449. C NGCED = numero global du centre ELT "droite"
  450. C NLCED = numero local du centre ELT "droite"
  451. C
  452. NGCEG = IPT2.NUM(1,NLCF)
  453. NGCED = IPT2.NUM(3,NLCF)
  454. NGCF = IPT2.NUM(2,NLCF)
  455. NLCF1 = MLENT2.LECT(NGCF)
  456. NLCEG = MLENT1.LECT(NGCEG)
  457. NLCED = MLENT1.LECT(NGCED)
  458. C
  459. C******* NLCF != NLCF1 -> l'auteur (MOI) n'a rien compris.
  460. C
  461. IF(NLCF .NE. NLCF1)THEN
  462. MESERR = 'Il ne faut pas jouer avec la console. '
  463. LOGAN = .TRUE.
  464. GOTO 9999
  465. ENDIF
  466. C
  467. C******* Recuperation des Etats "gauche" et "droite"
  468. C
  469. ROG = MELRO.VELCHE(1,NLCF)
  470. UNG = MELVUN.VELCHE(1,NLCF)
  471. UTG = MELVUT.VELCHE(1,NLCF)
  472. UVG = MELVUV.VELCHE(1,NLCF)
  473. PG = MELP.VELCHE(1,NLCF)
  474. C
  475. ROD = MELRO.VELCHE(3,NLCF)
  476. UND = MELVUN.VELCHE(3,NLCF)
  477. UTD = MELVUT.VELCHE(3,NLCF)
  478. UVD = MELVUV.VELCHE(3,NLCF)
  479. PD = MELP.VELCHE(3,NLCF)
  480. C
  481. CNX = MELVNX.VELCHE(1,NLCF)
  482. CNY = MELVNY.VELCHE(1,NLCF)
  483. CNZ = MELVNZ.VELCHE(1,NLCF)
  484. CTX = MELT1X.VELCHE(1,NLCF)
  485. CTY = MELT1Y.VELCHE(1,NLCF)
  486. CTZ = MELT1Z.VELCHE(1,NLCF)
  487. CVX = MELT2X.VELCHE(1,NLCF)
  488. CVY = MELT2Y.VELCHE(1,NLCF)
  489. CVZ = MELT2Z.VELCHE(1,NLCF)
  490. C
  491. C******* Le fractiones massiques, R et ACVTO
  492. C
  493. RTOTG = 0.0D0
  494. RTOTD = 0.0D0
  495. CVTOTG = 0.0D0
  496. CVTOTD = 0.0D0
  497. Y1G = 1.0D0
  498. Y1D = 1.0D0
  499. ETHERG = 0.0D0
  500. ETHERD = 0.0D0
  501. DO I1= 1, NORDP1, 1
  502. PROPHY.ACVTOG(I1) =0.0D0
  503. PROPHY.ACVTOD(I1) =0.0D0
  504. ENDDO
  505. DO I1 = 1, NESP, 1
  506. MELVA1 = MCHAMY.IELVAL(I1)
  507. YG = MELVA1.VELCHE(1,NLCF)
  508. YD = MELVA1.VELCHE(3,NLCF)
  509. Y1G = Y1G - YG
  510. Y1D = Y1D - YD
  511. FRAMAG.YET(I1) = YG
  512. FRAMAD.YET(I1) = YD
  513. RTOTG = RTOTG + YG * PROPHY.R(I1)
  514. RTOTD = RTOTD + YD * PROPHY.R(I1)
  515. DO I2 = 1, NORDP1
  516. PROPHY.ACVTOG(I2) = PROPHY.ACVTOG(I2) +
  517. & YG * PROPHY.ACV(I2,I1)
  518. PROPHY.ACVTOD(I2) = PROPHY.ACVTOD(I2) +
  519. & YD * PROPHY.ACV(I2,I1)
  520. ENDDO
  521. ENDDO
  522. RTOTG = RTOTG + Y1G * PROPHY.R(NESP+1)
  523. RTOTD = RTOTD + Y1D * PROPHY.R(NESP+1)
  524. DO I2 = 1, NORDP1, 1
  525. PROPHY.ACVTOG(I2) = PROPHY.ACVTOG(I2) +
  526. & Y1G * PROPHY.ACV(I2,NESP+1)
  527. PROPHY.ACVTOD(I2) = PROPHY.ACVTOD(I2) +
  528. & Y1D * PROPHY.ACV(I2,NESP+1)
  529. ENDDO
  530. TG = PG / (ROG * RTOTG)
  531. TD = PD / (ROD * RTOTD)
  532. FUNTG = 1.0D0
  533. FUNTD = 1.0D0
  534. CVTOTG = PROPHY.ACVTOG(1)
  535. ETHERG = CVTOTG * TG
  536. CVTOTD = PROPHY.ACVTOD(1)
  537. ETHERD = CVTOTD * TD
  538. DO I1 = 2, NORDP1, 1
  539. FUNTG = FUNTG * TG
  540. FUNTD = FUNTD * TD
  541. DCV = PROPHY.ACVTOG(I1) * FUNTG
  542. CVTOTG = CVTOTG + DCV
  543. ETHERG = ETHERG + DCV * TG / I1
  544. DCV = PROPHY.ACVTOD(I1) * FUNTD
  545. CVTOTD = CVTOTD + DCV
  546. ETHERD = ETHERD + DCV * TD / I1
  547. ENDDO
  548. GAMG = (CVTOTG + RTOTG) /CVTOTG
  549. GAMD = (CVTOTD + RTOTD) /CVTOTD
  550. C
  551. C******* Les scalaires passifs
  552. C
  553. DO I1 = 1, NSCA, 1
  554. MELVA1 = MCHAMS.IELVAL(I1)
  555. SCAG.YET(I1) = MELVA1.VELCHE(1,NLCF)
  556. SCAD.YET(I1) = MELVA1.VELCHE(3,NLCF)
  557. ENDDO
  558. C
  559. C******* On a defini (ROg,ROUNg,ROUTg,Pg,(Yg)), (ROd,ROUNd,ROUTd,Pd,(Yd))
  560. C et on a déjà verifié ROg, ROd, Pg, Pd > 0 et 0<Y_i<1
  561. C
  562. C
  563. C******* Calcul du flux aux interfaces
  564. C
  565. IF(INDMET .EQ. 1)THEN
  566. C
  567. C********** VLH FVS
  568. C
  569. CALL FVLHT2(NESP,NSCA,
  570. & GAMG,ROG,PG,UNG,UTG,UVG,ETHERG,
  571. & GAMD,ROD,PD,UND,UTD,UVD,ETHERD,
  572. & FRAMAG.YET,FRAMAD.YET,
  573. & SCAG.YET,SCAD.YET,
  574. & IFLU1.FLUX,IFLU2.FLUX,
  575. & CELLT)
  576. ELSEIF(INDMET .EQ. 2)THEN
  577. C
  578. C******* Colella-Glaz FDS (avec Entropy-fix)
  579. C
  580. XST=0.0D0
  581. CALL FCOLT2(NESP,NSCA,NORDP1,XST,
  582. & GAMG,RTOTG,PROPHY.ACVTOG,ROG,PG,TG,UNG,UTG,UVG,ETHERG,
  583. & GAMD,RTOTD,PROPHY.ACVTOD,ROD,PD,TD,UND,UTD,UVD,ETHERD,
  584. & FRAMAG.YET,FRAMAD.YET,
  585. & SCAG.YET,SCAD.YET,
  586. & IFLU1.FLUX,CELLT,
  587. & LOGNC,MESERR,LOGAN)
  588. ENDIF
  589. C
  590. IF(LOGAN) GOTO 9999
  591. IF(LOGNC) GOTO 9999
  592. C
  593. C******* Ecriture des flux
  594. C
  595. C FLUX(1) = RO Un RO Un
  596. C FLUX(2) = RO Un Un + P -> RO Un Ux + P CNX
  597. C FLUX(3) = RO Un Ut -> RO Un Uy + P CNY
  598. C FLUX(4) = RO Un Et RO Un Et
  599. C
  600. SURF = MPOVSU.VPOCHA(NLCF,1)
  601. MPOVG1.VPOCHA(NLCF,1) = MPOVG1.VPOCHA(NLCF,1) +
  602. & (IFLU1.FLUX(1) * SURF )
  603. MPOVG2.VPOCHA(NLCF,1) = MPOVG2.VPOCHA(NLCF,1) +
  604. &((IFLU1.FLUX(2)*CNX+IFLU1.FLUX(3)*CTX+IFLU1.FLUX(4)*CVX) * SURF)
  605. MPOVG2.VPOCHA(NLCF,2) = MPOVG2.VPOCHA(NLCF,2) +
  606. &((IFLU1.FLUX(2)*CNY+IFLU1.FLUX(3)*CTY+IFLU1.FLUX(4)*CVY) * SURF)
  607. MPOVG2.VPOCHA(NLCF,3) = MPOVG2.VPOCHA(NLCF,3) +
  608. &((IFLU1.FLUX(2)*CNZ+IFLU1.FLUX(3)*CTZ+IFLU1.FLUX(4)*CVZ) * SURF)
  609. MPOVG3.VPOCHA(NLCF,1) = MPOVG3.VPOCHA(NLCF,1) +
  610. & (IFLU1.FLUX(5) * SURF)
  611. DO I1 = 1, NESP, 1
  612. MPOVG4.VPOCHA(NLCF,I1)=IFLU1.FLUX(5+I1)
  613. & * SURF
  614. ENDDO
  615. DO I1 = 1, NSCA, 1
  616. MPOVG5.VPOCHA(NLCF,I1)=IFLU1.FLUX(5+I1+NESP)
  617. & * SURF
  618. ENDDO
  619. C
  620. C******* Calcul du pas du temps (CFL)
  621. C
  622. C****** a) etat a l'interface
  623. C
  624. DIAMG = MPOVDI.VPOCHA(NLCEG,1)
  625. DIAMD = MPOVDI.VPOCHA(NLCED,1)
  626. DIAM = MIN(DIAMG,DIAMD)
  627. CELL = 1.0D0/DIAM/CELLT
  628. IF(CELL .GT. UNSDT)THEN
  629. UNSDT = CELL
  630. DIAMEL = DIAMG
  631. NLCEMI = NLCEG
  632. ENDIF
  633. C
  634. C****** b) etat gauche
  635. C
  636. ASON = SQRT(GAMG*PG/ROG)
  637. LAMBDA = ABS(UNG) + ASON
  638. CELL = LAMBDA / DIAM
  639. IF(CELL .GT. UNSDT)THEN
  640. UNSDT = CELL
  641. DIAMEL = DIAMG
  642. NLCEMI = NLCEG
  643. ENDIF
  644. C
  645. C****** C) etat droite
  646. C
  647. ASON = SQRT(GAMD*PD/ROD)
  648. LAMBDA = ABS(UND) + ASON
  649. CELL = LAMBDA / DIAM
  650. IF(CELL .GT. UNSDT)THEN
  651. UNSDT = CELL
  652. DIAMEL = DIAMD
  653. NLCEMI = NLCED
  654. ENDIF
  655. C
  656. C
  657. C**** Fin boucle sur FACEL
  658. C
  659. ENDDO
  660. C
  661. C**** Pas du temps (condition de non interaction en 1D)
  662. C
  663. DT = 0.5D0 / UNSDT
  664. C
  665. C**** Desactivation des segments et
  666. C on detruit les MCHAMLs
  667. C
  668. C
  669. C**** SEGSUP FRAMAG
  670. C SEGSUP FRAMAD
  671. C
  672. C meme si LOGME = .FALSE.
  673. C
  674. SEGSUP FRAMAG
  675. SEGSUP FRAMAD
  676. C
  677. SEGSUP MLENT1
  678. SEGDES MLENT2
  679. SEGDES IPT2
  680. C
  681. SEGSUP IFLU1
  682. SEGSUP IFLU2
  683. C
  684. SEGDES MPOVSU
  685. SEGDES MPOVDI
  686. C
  687. SEGDES MPOVG1
  688. SEGDES MPOVG2
  689. SEGDES MPOVG3
  690. C
  691. SEGDES MELRO
  692. SEGDES MELP
  693. SEGDES MELVUN
  694. SEGDES MELVUT
  695. SEGDES MELVNX
  696. SEGDES MELVNY
  697. SEGDES MELT1X
  698. SEGDES MELT1Y
  699. C
  700. IF(LOGME) THEN
  701. DO I1 = 1, NESP
  702. MELVA1 = MCHAMY.IELVAL(I1)
  703. SEGDES MELVA1
  704. ENDDO
  705. SEGDES MPOVG4
  706. C
  707. SEGDES MCHAMY
  708. ENDIF
  709. IF(ISCAF .GT. 0) THEN
  710. DO I1 = 1, NSCA, 1
  711. MELVA1 = MCHAMS.IELVAL(I1)
  712. SEGDES MELVA1
  713. ENDDO
  714. SEGDES MPOVG5
  715. C
  716. SEGDES MCHAMS
  717. ENDIF
  718. C
  719. 9999 CONTINUE
  720. C
  721. RETURN
  722. END
  723. C
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  

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