Télécharger ckon2.eso

Retour à la liste

Numérotation des lignes :

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

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