Télécharger konfl4.eso

Retour à la liste

Numérotation des lignes :

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

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