Télécharger konfl2.eso

Retour à la liste

Numérotation des lignes :

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

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