Télécharger konfl4.eso

Retour à la liste

Numérotation des lignes :

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

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