Télécharger konfl2.eso

Retour à la liste

Numérotation des lignes :

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

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