Télécharger ckon3.eso

Retour à la liste

Numérotation des lignes :

ckon3
  1. C CKON3 SOURCE OF166741 24/12/13 21:15:04 12097
  2. SUBROUTINE CKON3(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 : 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 INDMET : 1 VLH (van Leer Hanel FVS)
  42. C
  43. C 2 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 n'a pas bien
  113. C marchéee
  114. C
  115. C LOGAN : (LOGICAL): si .TRUE. une anomalie à été detectée
  116. C
  117. C MESERR : pour l'ecriture des messages d'erreurs
  118. C
  119. C************************************************************************
  120. C
  121. C HISTORIQUE (Anomalies et modifications éventuelles)
  122. C
  123. C HISTORIQUE : 22.12.98 Creation
  124. C
  125. C 08.02.00 Ajout du flux numerique de Colella-Glaz
  126. C
  127. C 21.02.00 Ajout de transport de scalaires passifs
  128. C
  129. C************************************************************************
  130. C
  131. C
  132. C N.B.: On suppose qu'on a déjà controllé RO, P > 0
  133. C GAMMA \in (1,3)
  134. C Y \in (0,1)
  135. C Si non il faut le faire!!!
  136. C
  137. C************************************************************************
  138. C
  139. IMPLICIT INTEGER(I-N)
  140. INTEGER I1, I2
  141. & ,INDMET, NORDP1
  142. & ,IROF,IVITF,IPF,ISCAF,IFRMAF
  143. & ,ICHPSU,ICHPDI,MELEMC,MELEMF,MELEFE
  144. & ,IGEOMC,IGEOMF
  145. & ,IZG1,IZG2,IZG3,IZG4,IZG5,NLCEMI
  146. & ,NESP, NFAC, NSCA, NMA, NMA2
  147. & ,NLCF, NGCEG, NGCED, NLCEG, NLCED
  148. & ,NGCF, NLCF1, SPG1, SPG2
  149. REAL*8 DIAMEL, DT, UNSDT, CELLT
  150. & , ROG, UNG, UTG, PG, GAMG, TG
  151. & , ROD, UND, UTD, PD, GAMD, TD
  152. & , SURF,CNX, CNY, CTX , CTY
  153. & , CELL, DIAMG, DIAMD, DIAM
  154. & , ASON, LAMBDA
  155. & , Y1G, Y1D, RTOTG, RTOTD, CVTOTG, CVTOTD, ETHERG, ETHERD
  156. & , YG, YD, FUNTG, FUNTD, DCV, XST
  157. LOGICAL LOGME, LOGNC, LOGAN
  158. CHARACTER*(40) MESERR
  159. CHARACTER*(8) TYPE
  160. C
  161. C**** Segment des proprietes du gaz
  162. C
  163. SEGMENT PROPHY
  164. REAL*8 ACV(NORDP1,NESP+1), R(NESP+1), H0K(NESP+1)
  165. & ,ACVTOG(NORDP1), ACVTOD(NORDP1)
  166. ENDSEGMENT
  167. C
  168. C**** Les Includes
  169. C
  170. C
  171. C**** LES INCLUDES
  172. C
  173.  
  174. -INC PPARAM
  175. -INC CCOPTIO
  176. -INC SMCOORD
  177. -INC SMCHAML
  178. POINTEUR MELVNX.MELVAL, MELVNY.MELVAL,
  179. & MELT1X.MELVAL, MELT1Y.MELVAL
  180. POINTEUR MELVUN.MELVAL, MELVUT.MELVAL
  181. POINTEUR MELRO.MELVAL, MELP.MELVAL
  182. -INC SMCHPOI
  183. POINTEUR MPOVSU.MPOVAL, MPOVDI.MPOVAL
  184. & , MPOVG1.MPOVAL, MPOVG2.MPOVAL
  185. & , MPOVG3.MPOVAL, MPOVG4.MPOVAL, MPOVG5.MPOVAL
  186. POINTEUR MCHAMY.MCHAML, MCHAMS.MCHAML
  187. -INC SMELEME
  188. -INC SMLMOTS
  189. -INC SMLENTI
  190. C
  191. C**** Les fractiones massiques.
  192. C
  193. SEGMENT FRAMAS
  194. REAL*8 YET(NMA)
  195. ENDSEGMENT
  196. POINTEUR FRAMAG.FRAMAS, FRAMAD.FRAMAS, SCAG.FRAMAS, SCAD.FRAMAS
  197. C
  198. C**** Les flux aux interface dans le repaire (n,t)
  199. C
  200. SEGMENT IFLUX
  201. REAL*8 FLUX(NMA2)
  202. ENDSEGMENT
  203. POINTEUR IFLU1.IFLUX, IFLU2.IFLUX
  204. C
  205. C
  206. C**** Initialisation des MCHAMLs
  207. C
  208. C**** Masse volumique
  209. C
  210. MCHEL1 = IROF
  211. SEGACT MCHEL1
  212. MCHAM1 = MCHEL1.ICHAML(1)
  213. SEGACT MCHAM1
  214. MELRO = MCHAM1.IELVAL(1)
  215. SEGDES MCHEL1
  216. SEGDES MCHAM1
  217. C
  218. C**** Pression
  219. C
  220. MCHEL1 = IPF
  221. SEGACT MCHEL1
  222. MCHAM1 = MCHEL1.ICHAML(1)
  223. SEGACT MCHAM1
  224. MELP = MCHAM1.IELVAL(1)
  225. SEGDES MCHEL1
  226. SEGDES MCHAM1
  227. C
  228. C**** Vitesse et cosinus directeurs du repere (n,t)
  229. C
  230. MCHEL1 = IVITF
  231. SEGACT MCHEL1
  232. C
  233. C**** La vitesse a comme SPG MELEFE
  234. C Le cosinus directeurs ont comme SPG MELEMF
  235. C
  236. C MCHAM1 -> Cosinus directeurs
  237. C MCHAM2 -> Vitesse
  238. C
  239. SPG1 = MCHEL1.IMACHE(1)
  240. SPG2 = MCHEL1.IMACHE(2)
  241. IF((SPG1 .EQ. MELEMF) .AND. (SPG2 .EQ. MELEFE))THEN
  242. MCHAM1 = MCHEL1.ICHAML(1)
  243. MCHAM2 = MCHEL1.ICHAML(2)
  244. ELSEIF((SPG1 .EQ. MELEFE) .AND. (SPG2 .EQ. MELEMF))THEN
  245. MCHAM1 = MCHEL1.ICHAML(2)
  246. MCHAM2 = MCHEL1.ICHAML(1)
  247. ELSE
  248. LOGAN = .TRUE.
  249. GOTO 9999
  250. ENDIF
  251. SEGACT MCHAM1
  252. MELVNX = MCHAM1.IELVAL(1)
  253. MELVNY = MCHAM1.IELVAL(2)
  254. MELT1X = MCHAM1.IELVAL(3)
  255. MELT1Y = MCHAM1.IELVAL(4)
  256. SEGDES MCHAM1
  257. SEGACT MCHAM2
  258. MELVUN = MCHAM2.IELVAL(1)
  259. MELVUT = MCHAM2.IELVAL(2)
  260. SEGDES MCHAM2
  261. SEGDES MCHEL1
  262. C
  263. C**** Fractions massiques
  264. C
  265. IF(LOGME)THEN
  266. MCHEL1 = IFRMAF
  267. SEGACT MCHEL1
  268. MCHAMY = MCHEL1.ICHAML(1)
  269. SEGACT MCHAMY
  270. C
  271. C******* Numero d'especes dans les equations d'Euler
  272. C
  273. NESP = MCHAMY.IELVAL(/1)
  274. DO I1 = 1, NESP
  275. MELVA1 = MCHAMY.IELVAL(I1)
  276. SEGACT MELVA1
  277. ENDDO
  278. NMA = NESP
  279. SEGINI FRAMAG
  280. SEGINI FRAMAD
  281. SEGDES MCHEL1
  282. ELSE
  283. C
  284. C******* Definition minimale de YET, necessaire pour transmetre YET aux
  285. C subroutines FORTRAN qui calculent les flux
  286. C
  287. NMA = 1
  288. SEGINI FRAMAG
  289. SEGINI FRAMAD
  290. NESP = 0
  291. ENDIF
  292. C
  293. C**** Scalaires passifs
  294. C
  295. IF(ISCAF .GT. 0)THEN
  296. MCHEL1 = ISCAF
  297. SEGACT MCHEL1
  298. MCHAMS = MCHEL1.ICHAML(1)
  299. SEGACT MCHAMS
  300. NSCA = MCHAMS.IELVAL(/1)
  301. DO I1 = 1, NSCA, 1
  302. MELVA1 = MCHAMS.IELVAL(I1)
  303. SEGACT MELVA1
  304. ENDDO
  305. NMA = NSCA
  306. SEGINI SCAG
  307. SEGINI SCAD
  308. SEGDES MCHEL1
  309. ELSE
  310. C
  311. C******* Definition minimale de YET, necessaire pour transmetre YET aux
  312. C subroutines FORTRAN qui calculent les flux
  313. C
  314. NMA = 1
  315. SEGINI SCAG
  316. SEGINI SCAD
  317. NSCA= 0
  318. ENDIF
  319. C
  320. C**** Initialisation des MELEMEs
  321. C
  322. C 'CENTRE', 'FACEL'
  323. C
  324. IPT2 = MELEFE
  325. SEGACT IPT2
  326. NFAC = IPT2.NUM(/2)
  327. C
  328. C**** KRIPAD pour la correspondance global/local de centre
  329. C
  330. CALL KRIPAD(MELEMC,MLENT1)
  331. C
  332. C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
  333. C
  334. C Si i est le numero global d'un noeud de ICEN,
  335. C MLENT1.LECT(i) contient sa position, i.e.
  336. C
  337. C I = numero global du noeud centre
  338. C MLENT1.LECT(i) = numero local du noeud centre
  339. C
  340. C MLENT1 déjà activé, i.e.
  341. C
  342. C SEGACT MLENT1
  343. C
  344. C
  345. C**** KRIPAD pour la correspondance global/local de 'FACE'
  346. C
  347. CALL KRIPAD(MELEMF,MLENT2)
  348. C
  349. C**** Initialisation de flux
  350. C
  351. NMA2 = 4 + NESP + NSCA
  352. SEGINI IFLU1
  353. SEGINI IFLU2
  354. C
  355. C**** IFLU2 = segment de travail en FLUVLH; c'est plus rapide le definir ici
  356. C
  357. C
  358. C**** CHPOINTs de la table DOMAINE
  359. C
  360. CALL LICHT(ICHPSU,MPOVSU,TYPE,IGEOMF)
  361. CALL LICHT(ICHPDI,MPOVDI,TYPE,IGEOMC)
  362. C
  363. C**** LICHT active les MPOVALs en *MOD
  364. C
  365. C i.e.
  366. C
  367. C SEGACT MPOVSU*MOD
  368. C SEGACT MPOVDI*MOD
  369. C
  370. C
  371. C**** Les FLUX aux face
  372. C
  373. C La densité
  374. C
  375. CALL LICHT(IZG1,MPOVG1,TYPE,IGEOMF)
  376. C
  377. C SEGACT MPOVG1*MOD
  378. C
  379. C**** Les debits
  380. C
  381. CALL LICHT(IZG2,MPOVG2,TYPE,IGEOMF)
  382. C
  383. C SEGACT MPOVG2*MOD
  384. C
  385. C**** L'energie totale volumique
  386. C
  387. CALL LICHT(IZG3,MPOVG3,TYPE,IGEOMF)
  388. C
  389. C SEGACT MPOVG3*MOD
  390. C
  391. C**** Les Fractions Massiques
  392. C
  393. IF(LOGME)THEN
  394. CALL LICHT(IZG4,MPOVG4,TYPE,IGEOMF)
  395. C
  396. C SEGACT MPOVG4*MOD
  397. C
  398. ENDIF
  399. C
  400. C**** Les scalaires passifs
  401. C
  402. IF(ISCAF .GT. 0)THEN
  403. CALL LICHT(IZG5,MPOVG5,TYPE,IGEOMF)
  404. C
  405. C SEGACT MPOVG5*MOD
  406. C
  407. ENDIF
  408. C
  409. C**** Activation des MCHAMLs
  410. C
  411. SEGACT MELRO
  412. SEGACT MELP
  413. SEGACT MELVUN
  414. SEGACT MELVUT
  415. SEGACT MELVNX
  416. SEGACT MELVNY
  417. SEGACT MELT1X
  418. SEGACT MELT1Y
  419. C
  420. C**** Initialisation de 1/DT
  421. C
  422. UNSDT = 0.0D0
  423. C
  424. C**** BOUCLE SUR FACEL pour le calcul du FLUX
  425. C
  426. DO NLCF = 1, NFAC
  427. C
  428. C******* NLCF = numero local du centre de facel
  429. C NGCF = numero global du centre de facel
  430. C NLCF1 = numero local du centre de face
  431. C NGCEG = numero global du centre ELT "gauche"
  432. C NLCEG = numero local du centre ELT "gauche"
  433. C NGCED = numero global du centre ELT "droite"
  434. C NLCED = numero local du centre ELT "droite"
  435. C
  436. NGCEG = IPT2.NUM(1,NLCF)
  437. NGCED = IPT2.NUM(3,NLCF)
  438. NGCF = IPT2.NUM(2,NLCF)
  439. NLCF1 = MLENT2.LECT(NGCF)
  440. NLCEG = MLENT1.LECT(NGCEG)
  441. NLCED = MLENT1.LECT(NGCED)
  442. C
  443. C******* NLCF != NLCF1 -> l'auteur (MOI) n'a rien compris.
  444. C
  445. IF(NLCF .NE. NLCF1)THEN
  446. MESERR = 'Il ne faut pas jouer avec la console. '
  447. LOGAN = .TRUE.
  448. GOTO 9999
  449. ENDIF
  450. C
  451. C******* Recuperation des Etats "gauche" et "droite"
  452. C
  453. ROG = MELRO.VELCHE(1,NLCF)
  454. UNG = MELVUN.VELCHE(1,NLCF)
  455. UTG = MELVUT.VELCHE(1,NLCF)
  456. PG = MELP.VELCHE(1,NLCF)
  457. C
  458. ROD = MELRO.VELCHE(3,NLCF)
  459. UND = MELVUN.VELCHE(3,NLCF)
  460. UTD = MELVUT.VELCHE(3,NLCF)
  461. PD = MELP.VELCHE(3,NLCF)
  462. C
  463. CNX = MELVNX.VELCHE(1,NLCF)
  464. CNY = MELVNY.VELCHE(1,NLCF)
  465. CTX = MELT1X.VELCHE(1,NLCF)
  466. CTY = MELT1Y.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 FVLHTE(NESP,NSCA,
  547. & GAMG,ROG,PG,UNG,UTG,ETHERG,
  548. & GAMD,ROD,PD,UND,UTD,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 FCOLTE(NESP,NSCA,NORDP1,XST,
  559. & GAMG,RTOTG,PROPHY.ACVTOG,ROG,PG,TG,UNG,UTG,ETHERG,
  560. & GAMD,RTOTD,PROPHY.ACVTOD,ROD,PD,TD,UND,UTD,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. MPOVG1.VPOCHA(NLCF,1) = MPOVG1.VPOCHA(NLCF,1) +
  579. & (IFLU1.FLUX(1) * SURF )
  580. MPOVG2.VPOCHA(NLCF,1) = MPOVG2.VPOCHA(NLCF,1) +
  581. & ((IFLU1.FLUX(2)*CNX+IFLU1.FLUX(3)*CTX) * SURF)
  582. MPOVG2.VPOCHA(NLCF,2) = MPOVG2.VPOCHA(NLCF,2) +
  583. & ((IFLU1.FLUX(2)*CNY+IFLU1.FLUX(3)*CTY) * SURF)
  584. MPOVG3.VPOCHA(NLCF,1) = MPOVG3.VPOCHA(NLCF,1) +
  585. & (IFLU1.FLUX(4) * SURF)
  586. DO I1 = 1, NESP, 1
  587. MPOVG4.VPOCHA(NLCF,I1)=IFLU1.FLUX(4+I1)
  588. & * SURF
  589. ENDDO
  590. DO I1 = 1, NSCA, 1
  591. MPOVG5.VPOCHA(NLCF,I1)=IFLU1.FLUX(4+I1+NESP)
  592. & * SURF
  593. ENDDO
  594. C
  595. C******* Calcul du pas du temps (CFL)
  596. C
  597. C****** a) etat a l'interface
  598. C
  599. DIAMG = MPOVDI.VPOCHA(NLCEG,1)
  600. DIAMD = MPOVDI.VPOCHA(NLCED,1)
  601. DIAM = MIN(DIAMG,DIAMD)
  602. CELL = 1.0D0/DIAM/CELLT
  603. IF(CELL .GT. UNSDT)THEN
  604. UNSDT = CELL
  605. DIAMEL = DIAMG
  606. NLCEMI = NLCEG
  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. DIAMEL = DIAMG
  617. NLCEMI = NLCEG
  618. ENDIF
  619. C
  620. C****** C) etat droite
  621. C
  622. ASON = SQRT(GAMD*PD/ROD)
  623. LAMBDA = ABS(UND) + ASON
  624. CELL = LAMBDA / DIAM
  625. IF(CELL .GT. UNSDT)THEN
  626. UNSDT = CELL
  627. DIAMEL = DIAMD
  628. NLCEMI = NLCED
  629. ENDIF
  630. C
  631. C
  632. C**** Fin boucle sur FACEL
  633. C
  634. ENDDO
  635. C
  636. C**** Pas du temps (condition de non interaction en 1D)
  637. C
  638. DT = 0.5D0 / UNSDT
  639. C
  640. C**** Desactivation des segments et
  641. C on detruit les MCHAMLs
  642. C
  643. C
  644. C**** SEGSUP FRAMAG
  645. C SEGSUP FRAMAD
  646. C
  647. C meme si LOGME = .FALSE.
  648. C
  649. SEGSUP FRAMAG
  650. SEGSUP FRAMAD
  651. C
  652. SEGSUP MLENT1
  653. SEGDES MLENT2
  654. SEGDES IPT2
  655. C
  656. SEGSUP IFLU1
  657. SEGSUP IFLU2
  658. C
  659. SEGDES MPOVSU
  660. SEGDES MPOVDI
  661. C
  662. SEGDES MPOVG1
  663. SEGDES MPOVG2
  664. SEGDES MPOVG3
  665. C
  666. SEGDES MELRO
  667. SEGDES MELP
  668. SEGDES MELVUN
  669. SEGDES MELVUT
  670. SEGDES MELVNX
  671. SEGDES MELVNY
  672. SEGDES MELT1X
  673. SEGDES MELT1Y
  674. C
  675. IF(LOGME) THEN
  676. DO I1 = 1, NESP
  677. MELVA1 = MCHAMY.IELVAL(I1)
  678. SEGDES MELVA1
  679. ENDDO
  680. SEGDES MPOVG4
  681. C
  682. SEGDES MCHAMY
  683. ENDIF
  684. IF(ISCAF .GT. 0) THEN
  685. DO I1 = 1, NSCA, 1
  686. MELVA1 = MCHAMS.IELVAL(I1)
  687. SEGDES MELVA1
  688. ENDDO
  689. SEGDES MPOVG5
  690. C
  691. SEGDES MCHAMS
  692. ENDIF
  693. C
  694. 9999 CONTINUE
  695. C
  696. RETURN
  697. END
  698. C
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  

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