Télécharger prepaenc.procedur

Retour à la liste

Numérotation des lignes :

  1. * PREPAENC PROCEDUR SERRE 22/03/01 21:15:06 11300
  2. 'DEBPROC' PREPAENC rxt*'TABLE ' TBT*'TABLE '
  3. geo*'TABLE ' TIC*'TABLE ' ;
  4. *----------------------------------------------------------
  5. *---- Suivi des modifications
  6. *--- 10/01/00 : Creation
  7. *
  8. *--- 14/03/05 option THERCO pour thermique implicite (Alex Bleyer et JPM)
  9. *
  10. * 1/changer discrH en discr
  11. *
  12. *
  13. *
  14. *----------------------------------------------------------
  15.  
  16. *----------------------------------------------------------
  17. * Test des entrees et debut de preparation de l'algorithme
  18. *----------------------------------------------------------
  19.  
  20. 'MESS' '==> PREPARATION DES EQUATIONS A RESOUDRE' ;
  21.  
  22. *--------------------------------------------------------
  23. ********************* PREPARATION ***********************
  24. *--------------------------------------------------------
  25.  
  26. Si(NON (EXIST TBT 'VERSION')) ;
  27. TBT.'VERSION'=0 ;
  28. Finsi ;
  29.  
  30. Si ('EXIST' TBT 'TTsortie') ;
  31. TTsortie=TBT.'TTsortie' ;
  32. Sinon ;
  33. TTsortie=FAUX ;
  34. Finsi ;
  35.  
  36. Si ('EXIST' TBT 'TTbreche') ;
  37. TTbreche=TBT.'TTbreche' ;
  38. Sinon ;
  39. TTbreche=FAUX ;
  40. Finsi ;
  41.  
  42. Si ('EXIST' TBT 'TFIMP') ;
  43. TFIMP=TBT.'TFIMP' ;
  44. Sinon ;
  45. TFIMP=FAUX ;
  46. Finsi ;
  47.  
  48. Si ('EXIST' TBT 'TTIMP') ;
  49. TTIMP=TBT.'TTIMP' ;
  50. Sinon ;
  51. TTIMP=FAUX ;
  52. Finsi ;
  53.  
  54. Si ('EXIST' TBT 'TPAROIS') ;
  55. TPAROIS=TBT.'TPAROIS' ;
  56. Sinon ;
  57. TPAROIS=FAUX ;
  58. Finsi ;
  59.  
  60. idim = vale 'DIME';
  61. DIM3D=FAUX ;
  62. Si(EGA idim 3);
  63. DIM3D=VRAI ;
  64. Finsi ;
  65.  
  66. *-----------------------------------------------------------
  67. * Definition du modele FLUIDE : NAVIER_STOKES
  68. * appel a MODELE avec la discretisation choisie DISCR
  69. *-----------------------------------------------------------
  70.  
  71. * On Crée la géométrie discrérisée pour le fluide
  72. vtf = rxt.'vtf' ;
  73. ltpvf= vtf ELEM 'TYPE' ;
  74. tyell2=mots 'TRI3' 'QUA4' ;
  75. tyell3=mots 'CUB8' 'PRI6' 'TET4' ;
  76. tyelq2=mots 'TRI6' 'QUA8' ;
  77. tyelq3=mots 'CU20' 'PR15' 'TE10' ;
  78. nbe=dime ltpvf ;
  79. tyelvf='XXXX' ;
  80.  
  81. Si('EXIST' tyell2 ('EXTR' 1 ltpvf)) ;
  82. tyelvf='LI2D' ;
  83. Si (NON ('EGA' (VALE DIME) 2)) ;
  84. Mess '*********************************************************' ;
  85. Mess ' ERREUR ERREUR ERREUR ERREUR ERREUR ERREUR ' ;
  86. Mess ' ' ;
  87. Mess 'Maillage Foireux ' ;
  88. Mess ' ' ;
  89. Mess '*********************************************************' ;
  90. ERREUR 21 ;
  91. Finsi ;
  92. Finsi ;
  93.  
  94. Si('EXIST' tyell3 ('EXTR' 1 ltpvf)) ;
  95. tyelvf='LI3D' ;
  96. Si (NON ('EGA' (VALE DIME) 3)) ;
  97. Mess '*********************************************************' ;
  98. Mess ' ERREUR ERREUR ERREUR ERREUR ERREUR ERREUR ' ;
  99. Mess ' ' ;
  100. Mess 'Maillage Foireux ' ;
  101. Mess ' ' ;
  102. Mess '*********************************************************' ;
  103. ERREUR 21 ;
  104. Finsi ;
  105. Finsi ;
  106.  
  107. Si('EXIST' tyelq2 ('EXTR' 1 ltpvf)) ;
  108. tyelvf='QD2D' ;
  109. Si (NON ('EGA' (VALE DIME) 2)) ;
  110. Mess '*********************************************************' ;
  111. Mess ' ERREUR ERREUR ERREUR ERREUR ERREUR ERREUR ' ;
  112. Mess ' ' ;
  113. Mess 'Maillage Foireux ' ;
  114. Mess ' ' ;
  115. Mess '*********************************************************' ;
  116. ERREUR 21 ;
  117. Finsi ;
  118. Finsi ;
  119.  
  120. Si('EXIST' tyelq3 ('EXTR' 1 ltpvf)) ;
  121. tyelvf='QD3D' ;
  122. Si (NON ('EGA' (VALE DIME) 3)) ;
  123. Mess '*********************************************************' ;
  124. Mess ' ERREUR ERREUR ERREUR ERREUR ERREUR ERREUR ' ;
  125. Mess ' ' ;
  126. Mess 'Maillage Foireux ' ;
  127. Mess ' ' ;
  128. Mess '*********************************************************' ;
  129. ERREUR 21 ;
  130. Finsi ;
  131. Finsi ;
  132.  
  133. Si(EGA 'LI2D' tyelvf) ;
  134. repeter bcle nbe ;
  135. Si(NON('EXIST' tyell2 ('EXTR' &bcle ltpvf))) ;
  136. ERREUR 21 ;
  137. Finsi ;
  138. Fin bcle ;
  139. Finsi ;
  140.  
  141. Si(EGA 'LI3D' tyelvf) ;
  142. repeter bcle nbe ;
  143. Si(NON('EXIST' tyell3 ('EXTR' &bcle ltpvf))) ;
  144. ERREUR 21 ;
  145. Finsi ;
  146. Fin bcle ;
  147. Finsi ;
  148.  
  149. Si(EGA tyelvf 'QD2D') ;
  150. repeter bcle nbe ;
  151. Si(NON('EXIST' tyelq2 ('EXTR' &bcle ltpvf))) ;
  152. ERREUR 21 ;
  153. Finsi ;
  154. Fin bcle ;
  155. Finsi ;
  156.  
  157. Si(EGA tyelvf 'QD3D') ;
  158. repeter bcle nbe ;
  159. Si(NON('EXIST' tyelq3 ('EXTR' &bcle ltpvf))) ;
  160. ERREUR 21 ;
  161. Finsi ;
  162. Fin bcle ;
  163. Finsi ;
  164.  
  165. epsi = GEO . 'epsi' ;
  166. mdns = 'NAVIER_STOKES' ;
  167. Mvtf = 'CHAN' vtf 'QUAF' ;
  168. elim Mvtf epsi ;
  169. $vtf = 'MODE' Mvtf mdns TBT.'discr' ;
  170. VTotal = 'SOMT' ('DOMA' $vtf 'VOLUME') ;
  171. GEO.'Mvtf' = Mvtf ;
  172. GEO.'$vtf' = $vtf ;
  173. GEO.'VTotal'= VTotal ;
  174. GEO.'vtf' =doma $vtf MAILLAGE ;
  175. GEO.'Diag' = doma $vtf 'XXDIAGSI' ;
  176. GEO.'cx' =coor 1 vtf ;
  177. GEO.'cy' =coor 2 vtf ;
  178. Si(Ega IDIM 3) ;
  179. GEO.'cz' =coor 3 vtf ;
  180. Finsi ;
  181.  
  182. *-----------------------------------------------------------
  183. * sortie menvfU
  184. * ............__________________
  185. * | |
  186. * . |
  187. * | |
  188. * . |
  189. * | |
  190. * . |
  191. * | menvfU |
  192. * . |
  193. * | |
  194. * . |
  195. * |axe |
  196. * . |
  197. * | |
  198. * . |
  199. * | |_
  200. * . |/|
  201. * | |/|
  202. * . |/|
  203. * | |/|
  204. * . |/|
  205. * | menvfU |/|
  206. * . |/|
  207. * | |/|
  208. * . |/|
  209. * | |/|
  210. * . |/|
  211. * | menvfU |/|
  212. * ............__________________|/|
  213. * breche
  214. *
  215. *
  216. *-----------------------------------------------------------
  217. * Creation de l'enveloppe du maillage FLUIDE
  218.  
  219. GEO.'Mmenvf' = 'DOMA' $vtf 'ENVELOPP' ;
  220. GEO.'$menvf' = 'MODE' GEO.'Mmenvf' 'NAVIER_STOKES' TBT.'discr' ;
  221. GEO.'menvf' = 'DOMA' GEO.'$menvf' maillage ;
  222. GEO.'MmenvfU' = GEO.'Mmenvf' ;
  223. GEO.'$menvfU' = 'MODE' GEO.'MmenvfU' 'NAVIER_STOKES' TBT.'discr';
  224. GEO.'menvfU' = 'DOMA' GEO.'$menvfU' maillage ;
  225. *----------------------------------------------------------
  226. * Traitement de l'axe en 2D et des plans de symétrie en 3D
  227. *
  228. 'SI' TBT . 'Taxe' ;
  229. axe = rxt . 'axe' ;
  230. Maxe= 'CHAN' axe 'QUAF' ;
  231. 'ELIM' (Maxe 'ET' Mvtf) epsi ;
  232.  
  233. GEO . 'MmenvfU' = 'DIFF' GEO . 'MmenvfU' Maxe ;
  234. GEO . '$menvfU' = 'MODE' GEO . 'MmenvfU' 'NAVIER_STOKES' TBT . 'discr' ;
  235. GEO . 'menvfU' = 'DOMA' GEO . '$menvfU' maillage ;
  236.  
  237. $axe = 'MODE' Maxe mdns TBT . 'discr' ;
  238. axe = 'DOMA' $axe 'MAILLAGE' ;
  239. axe1 = 'CHAN' axe 'POI1' ;
  240. GEO . '$axe' = $axe ;
  241. GEO . 'axe' = axe ;
  242. 'FINS' ;
  243. *
  244. *
  245. *-----------------------------------------------------------
  246. *-----------------------------------------------------------
  247. * Traitement d'un nombre de brèches et sorties quelconques
  248. * - vérification de son inclusion dans l'enveloppe
  249. * - définition de BRECHEI : maillage BRECHE interieur
  250. * - définition de BRECHEC : maillage du contour de la brèche
  251.  
  252. Si TTsortie ;
  253. *µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ
  254.  
  255. NBR=dime rxt.'Sorties' ;
  256. mess ' Il y a' ' ' NBR ' ' 'Sorties)' ;
  257.  
  258. ibr=index (rxt.'Sorties') ;
  259.  
  260. Repeter BBRS NBR ;
  261. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  262. 'MESS' ' ==> Verification inclusion Sortie/ENVELOPPE '
  263. ' ' 'pour la sortie' ' ' (ibr.&BBRS) ;
  264.  
  265. sreche = Sriches.'Maillage' ;
  266. Si DIM3D ;
  267. Byint = BARY (vtf elem 'APPUYE' 'LARGEMENT' sreche) ;
  268. Bybre = BARY sreche ;
  269. diru = Bybre moins Byint ;
  270. sreche = ORIE sreche 'DIRECTION' diru ;
  271. Finsi ;
  272. Msreche = 'CHAN' sreche 'QUAF' ;
  273. elim Msreche epsi ;
  274. $sreche = 'MODE' Msreche mdns TBT.'discr' ;
  275. sreche = 'DOMA' $sreche 'MAILLAGE' ;
  276. Ssreche = 'SOMT' ('DOMA' $sreche 'VOLUME') ;
  277. Dsreche = Ssreche**(1./(VALE DIME)) ;
  278.  
  279. 'ELIM' (Mvtf 'ET' Msreche) epsi ;
  280.  
  281. Sriches.'Msreche' = Msreche ;
  282. Sriches.'$sreche' = $sreche ;
  283. Sriches.'sreche' = sreche ;
  284. Sriches.'Ssreche' = Ssreche ;
  285. Sriches.'Dsreche' = Dsreche ;
  286.  
  287.  
  288. ai= 'INTER' Msreche (GEO.'Mmenvf') ;
  289. nbai= nbel ai ;
  290. Si (ega nbai 0) ;
  291. Mess ' Sortie non incluse dans l enveloppe ' ;
  292. 'ERRE' 21 ;
  293. Finsi ;
  294.  
  295. GEO.'MmenvfU' = 'DIFF' GEO.'MmenvfU' Msreche ;
  296. GEO.'$menvfU' = 'MODE' GEO.'MmenvfU' 'NAVIER_STOKES' TBT.'discr' ;
  297. GEO.'menvfU' = 'DOMA' GEO.'$menvfU' maillage ;
  298.  
  299.  
  300. * Internal and external points
  301.  
  302. 'SI' ('NON' DIM3D) ;
  303. sreche1 = 'CHAN' sreche 'POI1' ;
  304. nbbc = 'NBEL' sreche1 ;
  305. srechec = 'ELEM' sreche1 ('LECT' 1 nbbc) ;
  306. srechei = 'ELEM' sreche1 ('LECT' 2 'PAS' 1 (nbbc - 1)) ;
  307. 'SI' TBT . 'Taxe' ;
  308. int1 = 'INTE' srechec axe1 ;
  309. nint1 = 'NBEL' int1 ;
  310. 'SI' ('NEG' nint1 0) ;
  311. srechec = 'DIFF' srechec int1 ;
  312. srechei = 'DIFF' sreche1 srechec ;
  313. 'FINS' ;
  314. 'FINS' ;
  315. 'SINO' ;
  316. srechec = 'CONT' sreche ;
  317. sreche1 = 'CHAN' sreche 'POI1' ;
  318. srechei = 'DIFF' sreche1 ( 'CHAN' srechec 'POI1') ;
  319. 'FINS' ;
  320.  
  321. a = 'NBEL' srechei ;
  322. 'SI' ('EGA' a 0) ;
  323. 'MESS' '==> Le cas ne comporte pas de Sortie CORRECTE' ;
  324. 'ERRE' 21 ;
  325. 'FINS' ;
  326.  
  327. srechei = srechei 'COUL' 'ROUG' ;
  328. srechec = srechec 'COUL' 'VERT' ;
  329. Sriches . 'srechec' = srechec ;
  330. Sriches . 'srechei' = srechei ;
  331.  
  332. 'FIN' BBRS ;
  333. 'FINS' ;
  334. *µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ
  335.  
  336. Si TTbreche ;
  337. *µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ
  338.  
  339. NBR=dime rxt.'Breches' ;
  340. mess ' Il y a' ' ' NBR ' ' 'Brèche(s)' ;
  341.  
  342. ibr=index (rxt.'Breches') ;
  343.  
  344. Repeter BBRS NBR ;
  345. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  346. 'MESS' ' ==> Verification inclusion BRECHE/ENVELOPPE '
  347. ' ' 'pour la brèche' ' ' (ibr.&BBRS) ;
  348.  
  349. creche = Briches.'Maillage' ;
  350. Si DIM3D ;
  351. Byint = BARY (vtf elem 'APPUYE' 'LARGEMENT' creche) ;
  352. Bybre = BARY creche ;
  353. diru = Bybre moins Byint ;
  354. creche = ORIE creche 'DIRECTION' diru ;
  355. Finsi ;
  356. Mcreche = 'CHAN' creche 'QUAF' ;
  357. elim Mcreche epsi ;
  358. $creche = 'MODE' Mcreche mdns TBT.'discr' ;
  359. creche = 'DOMA' $creche 'MAILLAGE' ;
  360. Screche = 'SOMT' ('DOMA' $creche 'VOLUME') ;
  361. Dcreche = Screche**(1./(VALE DIME)) ;
  362.  
  363. 'ELIM' (Mvtf 'ET' Mcreche) epsi ;
  364.  
  365. Briches.'Mbreche' = Mcreche ;
  366. Briches.'$breche' = $creche ;
  367. Briches.'breche' = creche ;
  368. Briches.'Sbreche' = Screche ;
  369. Briches.'Dbreche' = Dcreche ;
  370.  
  371.  
  372. ai= 'INTER' Mcreche (GEO.'Mmenvf') ;
  373. nbai= nbel ai ;
  374. Si (ega nbai 0) ;
  375. Mess ' Breche non incluse dans l enveloppe ' ;
  376. 'ERRE' 21 ;
  377. Finsi ;
  378.  
  379. GEO.'MmenvfU' = 'DIFF' GEO.'MmenvfU' Mcreche ;
  380. GEO.'$menvfU' = 'MODE' GEO.'MmenvfU' 'NAVIER_STOKES' TBT.'discr' ;
  381. GEO.'menvfU' = 'DOMA' GEO.'$menvfU' maillage ;
  382.  
  383.  
  384. * Internal and external points
  385.  
  386. 'SI' ('NON' DIM3D) ;
  387. creche1 = 'CHAN' creche 'POI1' ;
  388. nbbc = 'NBEL' creche1 ;
  389. crechec = 'ELEM' creche1 ('LECT' 1 nbbc) ;
  390. crechei = 'ELEM' creche1 ('LECT' 2 'PAS' 1 (nbbc - 1)) ;
  391. 'SI' (TBT . 'Taxe') ;
  392. int1 = 'INTE' crechec axe1 ;
  393. nint1 = 'NBEL' int1 ;
  394. 'SI' ('NEG' nint1 0) ;
  395. crechec = 'DIFF' crechec int1 ;
  396. crechei = 'DIFF' creche1 crechec ;
  397. 'FINS' ;
  398. 'FINS' ;
  399. 'SINO' ;
  400. crechec = 'CONT' creche ;
  401. creche1 = 'CHAN' creche 'POI1' ;
  402. crechei = 'DIFF' creche1 ( 'CHAN' crechec 'POI1') ;
  403. 'FINS' ;
  404.  
  405. a = 'NBEL' crechei ;
  406. 'SI' ('EGA' a 0) ;
  407. 'MESS' '==> Le cas ne comporte pas de Sortie CORRECTE' ;
  408. 'ERRE' 21 ;
  409. 'FINS' ;
  410.  
  411. crechei = crechei 'COUL' 'ROUG' ;
  412. crechec = crechec 'COUL' 'VERT' ;
  413. Briches . 'brechec' = crechec ;
  414. Briches . 'brechei' = crechei ;
  415.  
  416.  
  417. 'FIN' BBRS ;
  418. 'FINS' ;
  419. *µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ
  420.  
  421.  
  422. *----- TRAITEMENT DES RECOMBINEURS -------------------------
  423. 'SI' (TBT.'TRECOMB') ;
  424. NBREC = 'DIME' rxt.'RECOMB' ;
  425. 'REPETER' BCLREC NBREC ;
  426. PAREXT = rxt.'RECOMB'. &BCLREC . 'PAREXT' ;
  427. ENTREE = rxt.'RECOMB'. &BCLREC . 'ENTREE' ;
  428. SORTIE = rxt.'RECOMB'. &BCLREC . 'SORTIE' ;
  429. direntr = rxt.'RECOMB'. &BCLREC . 'direntr' ;
  430. direntr = direntr / ('NORM' direntr) ;
  431. dirsort = rxt.'RECOMB'. &BCLREC . 'dirsort' ;
  432. dirsort = dirsort / ('NORM' dirsort) ;
  433. DIRNAME = 'CHAIN' 'DREC' 'ent' &BCLREC ;
  434. GEO. DIRNAME = direntr ;
  435. DIRNAME = 'CHAIN' 'DREC' 'sor' &BCLREC ;
  436. GEO. DIRNAME = dirsort ;
  437. M_PAREXT = 'CHAN' PAREXT 'QUAF' ;
  438. M_ENTREE = 'CHAN' ENTREE 'QUAF' ;
  439. M_SORTIE = 'CHAN' SORTIE 'QUAF' ;
  440. 'ELIM' (Mvtf 'ET' M_PAREXT 'ET' M_ENTREE 'ET' M_SORTIE) epsi;
  441. $PAREXT = 'MODE' M_PAREXT mdns TBT.'discr' ;
  442. $ENTREE = 'MODE' M_ENTREE mdns TBT.'discr' ;
  443. $SORTIE = 'MODE' M_SORTIE mdns TBT.'discr' ;
  444. QNAME = 'CHAIN' 'MREC' 'par' &BCLREC ;
  445. GEO. QNAME = M_PAREXT ;
  446. QNAME = 'CHAIN' 'MREC' 'ent' &BCLREC ;
  447. GEO. QNAME = M_ENTREE ;
  448. QNAME = 'CHAIN' 'MREC' 'sor' &BCLREC ;
  449. GEO. QNAME = M_SORTIE ;
  450. $NAME = 'CHAIN' '$REC' 'par' &BCLREC ;
  451. GEO. $NAME = $PAREXT ;
  452. $NAME = 'CHAIN' '$REC' 'ent' &BCLREC ;
  453. GEO. $NAME = $ENTREE ;
  454. $NAME = 'CHAIN' '$REC' 'sor' &BCLREC ;
  455. GEO. $NAME = $SORTIE ;
  456. NAME = 'CHAIN' 'REC' 'par' &BCLREC ;
  457. GEO. NAME = 'DOMA' $PAREXT 'MAILLAGE' ;
  458. ENTREE = 'DOMA' $ENTREE 'MAILLAGE' ;
  459. NAME = 'CHAIN' 'REC' 'ent' &BCLREC ;
  460. GEO. NAME = ENTREE ;
  461. SORTIE = 'DOMA' $SORTIE 'MAILLAGE' ;
  462. NAME = 'CHAIN' 'REC' 'sor' &BCLREC ;
  463. GEO. NAME = SORTIE ;
  464. NAME = 'CHAIN' 'SREC' 'ent' &BCLREC ;
  465. GEO. NAME = 'SOMT' ('DOMA' $ENTREE 'XXDIAGSI') ;
  466. NAME = 'CHAIN' 'SREC' 'sor' &BCLREC ;
  467. GEO. NAME = 'SOMT' ('DOMA' $SORTIE 'XXDIAGSI') ;
  468. 'MESS' ' ==> Vérification inclusion recomb' &BCLREC ' ' 'ENVELOPPE' ;
  469.  
  470. ai = 'INTER' (M_PAREXT 'ET' M_ENTREE 'ET' M_SORTIE)
  471. (GEO.'Mmenvf') ;
  472. nbai = 'NBEL' ai ;
  473. 'SI' ('EGA' nbai 0) ;
  474. 'MESS' ' Recomb' &BCLREC ' ' 'non inclus dans l enveloppe ' ;
  475. 'ERRE' 21 ;
  476. 'FINSI' ;
  477.  
  478. GEO.'MmenvfU' = 'DIFF' GEO.'MmenvfU' (M_ENTREE 'ET' M_SORTIE) ;
  479. GEO.'$menvfU' = 'MODE' GEO.'MmenvfU' 'NAVIER_STOKES' TBT.'discr' ;
  480. GEO.'menvfU' = 'DOMA' GEO.'$menvfU' 'MAILLAGE' ;
  481.  
  482. * Travail en 2D pour définir l'entree et la sortie du recombineur
  483. 'SI' ('NON' DIM3D) ;
  484. ENTREE1 = 'CHAN' ENTREE 'POI1' ;
  485. nbbc ='NBEL' ENTREE1 ;
  486. ENTREEc = 'ELEM' ENTREE1 ('LECT' 1 nbbc) ;
  487. ENTREEi = 'ELEM' ENTREE1 ('LECT' 2 'PAS' 1 (nbbc - 1)) ;
  488. a = 'NBEL' ENTREEi ;
  489. 'SI' ('EGA' a 0) ;
  490. 'MESS' '==> Le cas ne comporte pas de recombineur' &BCLREC ;
  491. 'ERREUR' 5 ;
  492. 'FINSI' ;
  493. SORTIE1 = 'CHAN' SORTIE 'POI1' ;
  494. nbbc ='NBEL' SORTIE1 ;
  495. SORTIEc = 'ELEM' SORTIE1 ('LECT' 1 nbbc) ;
  496. SORTIEi = 'ELEM' SORTIE1 ('LECT' 2 'PAS' 1 (nbbc - 1)) ;
  497. a = 'NBEL' SORTIEi ;
  498. 'SI' ('EGA' a 0) ;
  499. 'MESS' '==> Le cas ne comporte pas de recombineur' &BCLREC ;
  500. 'ERREUR' 5 ;
  501. 'FINSI' ;
  502. 'SINON' ;
  503. * Travail en 3D pour définir l'entree et la sortie du recombineur
  504. ENTREEc = 'CONT' ENTREE ;
  505. ENTREE1 = 'CHAN' ENTREE 'POI1' ;
  506. ENTREEi = 'DIFF' ENTREE1 ( 'CHAN' ENTREEc 'POI1') ;
  507. a = 'NBEL' ENTREEi ;
  508. 'SI' ('EGA' a 0) ;
  509. 'MESS' '==> Le cas ne comporte pas de recombineur' &BCLREC ;
  510. 'ERREUR' 5 ;
  511. 'FINSI' ;
  512. SORTIEc = 'CONT' SORTIE ;
  513. SORTIE1 = 'CHAN' SORTIE 'POI1' ;
  514. SORTIEi = 'DIFF' SORTIE1 ( 'CHAN' SORTIEc 'POI1') ;
  515. a = 'NBEL' SORTIEi ;
  516. 'SI' ('EGA' a 0) ;
  517. 'MESS' '==> Le cas ne comporte pas de recombineur' &BCLREC ;
  518. 'ERREUR' 5 ;
  519. 'FINSI' ;
  520. 'FINSI' ;
  521. ENTREEi = ENTREEi 'COUL' 'ROUG' ;
  522. ENTREEc = ENTREEc 'COUL' 'VERT' ;
  523. NAME = 'CHAIN' 'REC' 'entI' &BCLREC ;
  524. GEO.NAME = ENTREEi ;
  525. NAME = 'CHAIN' 'REC' 'entC' &BCLREC ;
  526. GEO.NAME = ENTREEc ;
  527. SORTIEi = SORTIEi 'COUL' 'ROUG' ;
  528. SORTIEc = SORTIEc 'COUL' 'VERT' ;
  529. NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ;
  530. GEO.NAME = SORTIEi ;
  531. NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ;
  532. GEO.NAME = SORTIEc ;
  533. 'FIN' BCLREC ;
  534.  
  535. 'FINSI' ;
  536.  
  537.  
  538. 'SI' TBT . 'GRAPH' ;
  539. 'SI' TBT . 'Taxe' ;
  540. axe =axe 'COUL' 'JAUN' ;
  541. tmenvf = axe 'ET' GEO . 'menvfU' ;
  542. 'SINO' ;
  543. tmenvf = GEO . 'menvfU' ;
  544. 'FINS' ;
  545.  
  546. Si TTsortie ;
  547. NBR=dime rxt.'Sorties' ;
  548. ibr=index (rxt.'Sorties') ;
  549. Repeter BBRS NBR ;
  550. Briches=rxt.'Sorties'.(ibr.&BBRS) ;
  551. srechei=Briches.'srechei' ;
  552. srechec=Briches.'srechec' ;
  553. tmenvf = tmenvf et srechei et srechec ;
  554. FIN BBRS ;
  555. FINSI ;
  556.  
  557. Si TTbreche ;
  558. NBR=dime rxt.'Breches' ;
  559. ibr=index (rxt.'Breches') ;
  560. Repeter BBRS NBR ;
  561. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  562. brechei=Briches.'brechei' ;
  563. brechec=Briches.'brechec' ;
  564. tmenvf = tmenvf et brechei et brechec ;
  565. FIN BBRS ;
  566. FINSI ;
  567.  
  568. 'SI' (TBT.'TRECOMB') ;
  569. NBREC = 'DIME' rxt.'RECOMB' ;
  570. 'REPETER' BCLREC NBREC ;
  571. NAME = 'CHAIN' 'REC' 'entI' &BCLREC ;
  572. ENTREEi = GEO.NAME ;
  573. NAME = 'CHAIN' 'REC' 'entC' &BCLREC ;
  574. ENTREEc = GEO.NAME ;
  575. NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ;
  576. SORTIEi = GEO.NAME ;
  577. NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ;
  578. SORTIEc = GEO.NAME ;
  579.  
  580. tmenvf = tmenvf et ENTREEi et ENTREEc ;
  581. tmenvf = tmenvf et SORTIEi et SORTIEc ;
  582. 'FIN' BCLREC ;
  583. 'FINSI' ;
  584.  
  585. 'TRAC' tmenvf
  586. 'TITR' 'Maillage - Axe, Fluide, Breches, Sortie';
  587. 'FINSI' ;
  588. *-----------------------------------------------------------
  589. * Traitement de la thermique paroi
  590. * => Il doit y avoir deux types de paroi dans le modele
  591. * Type 1 = THERMP la paroi est couplee au fluide et on calcule
  592. * son evolution thermique en fonction du temps
  593. * Type 2 = TP_IMPOSEE : la paroi produit une condition
  594. * limite de type temperature imposee pour la resolution
  595. * de la temperature fluide en fonction du temps
  596. * Dans un meme cas test, l'utilisateur veut pouvoir coupler
  597. * les deux approches et pouvoir definir des conditions initiales
  598. * differentes et piloter la variation en fonction du temps
  599. * Les parois sont decrites dans la table RXT.'TABMUR'
  600. * Il faut regrouper les parois servant de CL en temperature et
  601. * par type (beton/acier...) les parois dont on veut traiter la
  602. * thermique
  603. *
  604. * On Crée la géométrie discrérisée pour la thermique paroi
  605.  
  606.  
  607.  
  608. 'SI' TPAROIS ;
  609. mess ' THERMIQUE PAROIS MULTIPLES ' ;
  610. NPAR=dime rxt.'PAROIS' ;
  611. ipr=index (rxt.'PAROIS') ;
  612. mdns = 'NAVIER_STOKES' ;
  613. Repeter BPRS NPAR ;
  614. Parois=rxt.'PAROIS'.(ipr.&BPRS) ;
  615. GEO.(ipr.&BPRS)='TABLE' ;
  616. vtp=Parois.'vtp' ;
  617. Mvtp = 'CHAN' vtp 'QUAF' ;
  618. $vtpi = 'MODE' Mvtp mdns TBT.'discr' ;
  619. VTotalp = 'SOMT' ('DOMA' $vtpi 'VOLUME') ;
  620. Diagpi = doma $vtpi 'XXDIAGSI' ;
  621. GEO.(ipr.&BPRS).'vtp' = vtp ;
  622. GEO.(ipr.&BPRS).'Mvtp' = Mvtp ;
  623. GEO.(ipr.&BPRS).'$vtp' = $vtpi ;
  624. GEO.(ipr.&BPRS).'eMvtp' = doma $vtpi 'ENVELOPP' ;
  625. GEO.(ipr.&BPRS).'vtp' = doma $vtpi MAILLAGE ;
  626. GEO.(ipr.&BPRS).'VTotalp'= VTotalp ;
  627. GEO.(ipr.&BPRS).'Diagp' = Diagpi ;
  628. 'SI' TBT.'GRAPH' ;
  629. 'TRACE' GEO.(ipr.&BPRS).'vtp' CACHE 'TITR'
  630. (Chai 'Maillage pour la THERMIQUE : ' (ipr.&BPRS)) ;
  631. 'FINSI' ;
  632. 'SI'('EGA' &BPRS 1) ;
  633. ROCP = Parois.'ROCP'*Diagpi ;
  634. LAMB = Parois.'LAMBDA'*Diagpi ;
  635. TPPI = Parois.'Tp0'*Diagpi ;
  636. vtpt = vtp ;
  637. Mvtpt= Mvtp ;
  638. 'SINON' ;
  639. a=inter vtpt vtp 'NOVERIF' ;
  640. Si (NON ('EGA' (NBEL a) 0)) ;
  641. trace a CACHE TITR ' maillage intersection' ;
  642. Mess ;
  643. Mess '---------------- ERREUR Dans PAROIS ----------- ' ;
  644. Mess ' Les éléments de maillage composant la paroi se chevauchent';
  645. Mess '---------------- ERREUR Dans PAROIS ----------- ' ;
  646. Mess ;
  647. ERREUR ' ' ;
  648. Quitter PREPAENC ;
  649. Finsi ;
  650. ROCP = ROCP + (Parois.'ROCP'*Diagpi) ;
  651. LAMB = LAMB + (Parois.'LAMBDA'*Diagpi) ;
  652. TPPI = TPPI + (Parois.'Tp0'*Diagpi) ;
  653. vtpt = vtpt et vtp ;
  654. Mvtpt = Mvtpt et Mvtp ;
  655. Elim Mvtpt epsi ;
  656. 'FINSI' ;
  657. FIN BPRS ;
  658. rxt.'vtp' = vtpt ;
  659. Mvtp = Mvtpt ;
  660. mdns = 'NAVIER_STOKES' ;
  661. $vtpp = 'MODE' Mvtp mdns TBT.'discr' ;
  662. VTotalp = 'SOMT' ('DOMA' $vtpp 'VOLUME') ;
  663. GEO.'Mvtp' = Mvtp ;
  664. GEO.'$vtp' = $vtpp ;
  665. GEO.'eMvtp' = doma $vtpp 'ENVELOPP' ;
  666. GEO.'vtp' = doma $vtpp MAILLAGE ;
  667. GEO.'VTotalp'= VTotalp ;
  668. GEO.'Diagp' = doma $vtpp 'XXDIAGSI' ;
  669. ROCP = ROCP * (inve GEO.'Diagp') ;
  670. LAMB = LAMB * (inve GEO.'Diagp') ;
  671. TPPI = TPPI * (inve GEO.'Diagp') ;
  672. tic.'ROCP' = KCHT GEO.'$vtp' SCAL SOMMET ROCP ;
  673. tic.'LAMBDA' = KCHT GEO.'$vtp' SCAL SOMMET LAMB ;
  674. Si(NON ( EXIST tic 'TPNM')) ;
  675. tic.'TPNM' = KCHT GEO.'$vtp' SCAL SOMMET TPPI ;
  676. Finsi ;
  677.  
  678. 'SI' TBT.'GRAPH' ;
  679. Trace tic.'ROCP' (GEO.'vtp') TITR ' ROCP paroi' ;
  680. Trace tic.'LAMBDA' (GEO.'vtp') TITR ' LAMBDA paroi' ;
  681. Trace tic.'TPNM' (GEO.'vtp')
  682. TITR ' Température d initialisation de la paroi' ;
  683. 'FINSI' ;
  684.  
  685. 'FINSI' ;
  686.  
  687. TBT.'TPAROIF' = FAUX ;
  688.  
  689. 'SI' (TBT.'THERMP' ou TPAROIS) ;
  690. mess ' THERMIQUE PAROIS ' ;
  691.  
  692. 'SI' (NON TPAROIS) ;
  693. mdns = 'NAVIER_STOKES' ;
  694. Mvtp = 'CHAN' rxt.'vtp' 'QUAF' ;
  695. $vtpt = 'MODE' Mvtp mdns TBT.'discr' ;
  696. VTotalp = 'SOMT' ('DOMA' $vtpt 'VOLUME') ;
  697. GEO.'Mvtp' = Mvtp ;
  698. GEO.'$vtp' = $vtpt ;
  699. GEO.'eMvtp' = doma $vtpt 'ENVELOPP' ;
  700. GEO.'vtp' = doma $vtpt MAILLAGE ;
  701. GEO.'VTotalp'= VTotalp ;
  702. GEO.'Diagp' = doma $vtpt 'XXDIAGSI' ;
  703. 'FINSI' ;
  704.  
  705. 'SI' TBT.'GRAPH' ;
  706. 'TRACE' GEO.'vtp' 'TITR' 'Maillage pour la THERMIQUE ' ;
  707. 'FINSI' ;
  708.  
  709. * On recherche l'intersection entre vtf et vtp
  710. * => paroif
  711.  
  712. Elim (GEO.'Mvtp' et GEO.'Mvtf') epsi ;
  713. Mparoif = inte (GEO.'Mmenvf') (GEO.'eMvtp') ;
  714. 'SI' (NON(EGA (nbel Mparoif) 0)) ;
  715. TBT.'TPAROIF' = VRAI ;
  716. $paroif = 'MODE' Mparoif mdns TBT.'discrH' ;
  717. Sparoif = 'SOMT' ('DOMA' $paroif 'VOLUME') ;
  718. GEO.'Mparoif' = Mparoif ;
  719. GEO.'$paroif' = $paroif ;
  720. GEO.'paroif' = doma $paroif MAILLAGE ;
  721. GEO.'Sparoif' = Sparoif ;
  722. GEO.'Diagpf' = 'DOMA' GEO.'$paroif' 'XXDIAGSI' ;
  723. 'SI' TBT.'GRAPH' ;
  724. 'TRACE' GEO.'paroif' 'TITR' 'Surface de contacte FLUIDE/THERM' ;
  725. 'FINSI' ;
  726. 'FINSI' ;
  727.  
  728. 'SI' TBT.'ECHEXT' ;
  729. Mparext=Chan rxt.'parext' QUAF ;
  730. Elim (Mvtp et Mparext) epsi ;
  731. $parext = 'MODE' Mparext mdns TBT.'discrH' ;
  732. GEO.'Mparext' = Mparext ;
  733. GEO.'$parext' = $parext ;
  734. 'FINSI' ;
  735.  
  736. 'FINSI' ;
  737.  
  738. *-----------------------------------------------------------
  739. * Traitement des Flux imposés
  740. * XFIMP 3 : Flux de masse imposés
  741.  
  742. 'SI' TFIMP ;
  743. NBFIMP=dime (rxt.'XFIMP') ;
  744. ifimp=INDEX (rxt.'XFIMP') ;
  745. REPETER BBFIMP NBFIMP ;
  746. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  747. Mmfpi =(Bfimp.'MAILLAGE') CHAN 'QUAF' ;
  748. Elim (GEO.'Mmenvf' et Mmfpi) epsi ;
  749. $mfpi = 'MODE' Mmfpi mdns TBT.'discrH' ;
  750. Bfimp.'Mmfpi' = Mmfpi ;
  751. Bfimp.'$mfpi' = $mfpi ;
  752. Bfimp.'mfpi' = doma $mfpi maillage ;
  753. Bfimp.'Smfpi' = 'SOMT' ( 'DOMA' $mfpi 'VOLUME') ;
  754. Bfimp.'Diagfi' = 'DOMA' Bfimp.'$mfpi' 'XXDIAGSI' ;
  755. *-- Verification de l'inclusion de MFPI dans l'enveloppe
  756. a = 'INTERSECTION' (Bfimp.'mfpi') (GEO.'menvf') ;
  757. 'MESS' '==> On verifie que la surface 1 ' ;
  758. 'MESS' '==> pour le flux imposé' ;
  759. 'MESS' '==> est bien incluse dans l enveloppe ' ;
  760. FIN BBFIMP ;
  761. 'FINSI' ;
  762.  
  763. * XFIMP 3 : Flux de masse imposés
  764. mess 'FIN Flux imposés';
  765. *-----------------------------------------------------------
  766. * Traitement des températures imposées (condenseurs)
  767.  
  768. 'SI' TTIMP ;
  769. NBTIMP=dime (rxt.'TIMP') ;
  770. itimp=INDEX (rxt.'TIMP') ;
  771. REPETER BBTIMP NBTIMP ;
  772. Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ;
  773. Mmtpi =(Btimp.'MAILLAGE') CHAN 'QUAF' ;
  774. Elim (GEO.'Mmenvf' et Mmtpi) epsi ;
  775. $mtpi = 'MODE' Mmtpi mdns TBT.'discrH' ;
  776. Btimp.'Mmtpi' = Mmtpi ;
  777. Btimp.'$mtpi' = $mtpi ;
  778. Btimp.'mtpi' = doma $mtpi maillage ;
  779. Btimp.'Smtpi' = 'SOMT' ( 'DOMA' $mtpi 'VOLUME') ;
  780. Btimp.'Diagif' = 'DOMA' Btimp.'$mtpi' 'XXDIAGSI' ;
  781. *-- Verification de l'inclusion de MTPI dans l'enveloppe
  782. a = 'INTERSECTION' (Btimp.'mtpi') (GEO.'menvf') ;
  783. 'MESS' '==> On verifie que la surface 1 ' ;
  784. 'MESS' '==> pour la temperature imposee' ;
  785. 'MESS' '==> est bien incluse dans l enveloppe ' ;
  786. FIN BBTIMP ;
  787. 'FINSI' ;
  788.  
  789.  
  790. *** vérification de l'inclusion du maillage de la paroi du mur
  791. *** et de l'enveloppe du maillage fluide
  792. 'SI' TBT.'TECHANP' ;
  793. Mmtp0 =(rxt.'ECHANP'.'MAILLAGE') CHAN 'QUAF' ;
  794. Elim (GEO.'Mmenvf' et Mmtp0) epsi ;
  795. $mtp0 = 'MODE' Mmtp0 mdns TBT.'discr' ;
  796. GEO.'Mmtp0' = Mmtp0 ;
  797. GEO.'$mtp0' = $mtp0 ;
  798. GEO.'mtp0' = doma $mtp0 maillage ;
  799. GEO.'Smtp0' = 'SOMT' ( 'DOMA' $mtp0 'VOLUME') ;
  800. GEO.'Diag0f' = 'DOMA' GEO.'$mtp0' 'XXDIAGSI' ;
  801. *-- Verification de l'inclusion de MTPI dans l'enveloppe
  802. a = 'INTERSECTION' (GEO.'mtp0') (GEO.'menvf') ;
  803. 'MESS' '==> On verifie que la surface de ECHANP' ;
  804. 'MESS' '==> pour une temperature définie par l utilisateur';
  805. 'MESS' '==> est bien incluse dans l enveloppe ' ;
  806. 'FINSI' ;
  807.  
  808. mess 'FIN THERMIQUE PAROI';
  809. *-----------------------------------------------------------
  810. 'SI' (TBT.'ASPER') ;
  811. aspinj = rxt.'aspinj' ;
  812. toitf = rxt.'toitf' ;
  813. 'FINSI' ;
  814.  
  815. * -----------------------------------------------------------
  816.  
  817. 'SI' TBT.'ASPER' ;
  818. Maspinj = 'CHAN' aspinj 'QUAF' ;
  819. elim Maspinj epsi ;
  820. Mtoitf = 'CHAN' toitf 'QUAF' ;
  821. elim Mtoitf epsi ;
  822. $aspinj = 'MODE' Maspinj mdns TBT.'discr' ;
  823. $toitf = 'MODE' Mtoitf mdns TBT.'discr' ;
  824. aspinj = 'DOMA' $aspinj 'MAILLAGE' ;
  825. toitf = 'DOMA' $toitf 'MAILLAGE' ;
  826. 'ELIM' (Mvtf 'ET' Maspinj 'ET' Mtoitf) epsi ;
  827. 'FINSI' ;
  828.  
  829. *----------------------------------------------------------
  830. * Definition d'un point interieur sur lequel on impose
  831. * la pression
  832.  
  833. Si(exist rxt 'pi');
  834. lvtf = 'CHAN' 'LINEAIRE' vtf ;
  835. pi0 = lvtf 'POIN' 'PROC' (rxt.'pi') ;
  836. Melti = Mvtf 'ELEM' 'CONTENANT' pi0 ;
  837. $elti = 'MODE' Melti mdns TBT.'discr' ;
  838. Pimp = 'DOMA' $elti TBT.'KPRE' ;
  839. Pimp = Elem (lect 1) Pimp ;
  840. 'ELIM' (Pimp 'ET' ('DOMA' $vtf TBT.'KPRE' )) epsi ;
  841. Finsi ;
  842. GEO.'Pimp' = Pimp ;
  843.  
  844. *-----------------------------------------------------------
  845. * Preparation des conditions initiales pour les differentes grandeurs
  846. *
  847.  
  848. 'SI' TBT.'ASPER' ;
  849. t = rxt.'scenasp'.'t' ;
  850. vzinj = 'IPOL' 0.0 t (rxt.'scenasp'.'vzinj') ;
  851. xdinj = 'IPOL' 0.0 t (rxt.'scenasp'.'xdinj') ;
  852. tdinj = 'IPOL' 0.0 t (rxt.'scenasp'.'tdinj') ;
  853. ddinj = 'IPOL' 0.0 t (rxt.'scenasp'.'ddinj') ;
  854. tic.'Tdma' = prog tdinj ;
  855. tic.'Tdmi' = prog tdinj ;
  856.  
  857. 'FINSI' ;
  858.  
  859. tf0 = rxt.'TF0' ;
  860. Pt0 = rxt.'PT0' ;
  861.  
  862. 'SI'(TBT.'THERMP' et (NON TPAROIS)) ;
  863. tp0 = rxt.'Tp0' ;
  864. * Calcul d'une temperature moyenne de paroi Tpm0
  865. Tpm0 = ('SOMT' ( GEO.'Diagp' '*' tp0 )) '/' ( 'SOMT' GEO.'Diagp' ) ;
  866. 'SINON' ;
  867. Tpm0 = 0. ;
  868. 'FINSI' ;
  869.  
  870. 'SI' TPAROIS ;
  871. NPAR=dime rxt.'PAROIS' ;
  872. ipr=index (rxt.'PAROIS') ;
  873. Tpm0=0. ;
  874. Rocpm0=0. ;
  875. Repeter BPRS NPAR ;
  876. Ctp0 = chai 'Tp0' &BPRS ;
  877. tp0 = tic.CTp0 ;
  878. Crocp = chai 'ROCP' &BPRS ;
  879. rocp = tic.Crocp ;
  880. * Calcul d'une temperature moyenne de paroi Tpm0
  881. Tpm0=Tpm0 + ('SOMT' (GEO.(ipr.&BPRS).'Diagp' '*' tp0 )) ;
  882. Rocpm0=Rocpm0 +
  883. ('SOMT' (GEO.(ipr.&BPRS).'Diagp' '*' tp0 )) ;
  884. FIN BPRS ;
  885. Tpm0 = Tpm0 '/' ( 'SOMT' GEO.'Diagp' ) ;
  886. Rocpm0 = Rocpm0 '/' ( 'SOMT' GEO.'Diagp' ) ;
  887. rxt.'Tp0'=Tpm0 ;
  888. rxt.'ROCP'=Rocpm0 ;
  889. 'SINON' ;
  890. Tpm0 = 0. ;
  891. 'FINSI' ;
  892.  
  893. 'SI' TBT.'VAPEUR' ;
  894. Yvap0 = rxt.'Yvap0' ;
  895. 'SI' (EXIST rxt 'Mliq0') ;
  896. vertytab rxt 'Mliq0' 'FLOTTANT' ;
  897. Mliq0 = rxt.'Mliq0' ;
  898. 'SINON' ;
  899. Mliq0 = 0. ;
  900. 'FINSI' ;
  901. 'SINON' ;
  902. Yvap0 = 0. ;
  903. 'FINSI' ;
  904.  
  905. 'SI' TBT.'THE' ;
  906. Yhe0 = rxt.'Yhe0' ;
  907. 'SINON' ;
  908. Yhe0 = 0. ;
  909. 'FINSI' ;
  910.  
  911. 'SI' TBT.'TH2' ;
  912. Yh20 = rxt.'Yh20' ;
  913. 'SINON' ;
  914. Yh20 = 0. ;
  915. 'FINSI' ;
  916.  
  917. 'SI' TBT.'TO2' ;
  918. Yo20 = rxt.'Yo20' ;
  919. 'SINON' ;
  920. Yo20 = 0. ;
  921. 'FINSI' ;
  922.  
  923. 'SI' TBT.'TN2' ;
  924. Yn20 = rxt.'Yn20' ;
  925. 'SINON' ;
  926. Yn20 = 0. ;
  927. 'FINSI' ;
  928.  
  929. 'SI' TBT.'TCO2' ;
  930. Yco20 = rxt.'Yco20' ;
  931. 'SINON' ;
  932. Yco20 = 0. ;
  933. 'FINSI' ;
  934.  
  935. 'SI' TBT.'TCO' ;
  936. Yco0 = rxt.'Yco0' ;
  937. 'SINON' ;
  938. Yco0 = 0. ;
  939. 'FINSI' ;
  940. *---------------------------------------------------------------
  941. * AIR : on traite l'air comme un composant a part entiere
  942. * il faudra se mefier de ce point lors des calculs de combustion
  943. *
  944. Yair0 = 1.0 - Yvap0 - Yhe0 - Yh20 - Yo20 - Yn20 - Yco20 - Yco0 ;
  945. tic.'YAIR' = 'KCHT' $vtf 'SCAL' 'SOMMET' Yair0 ;
  946.  
  947. *---------------------------------------------------------------
  948. * RGPM = constante des gaz parfaits pour le mélange
  949. Rgh2 = TBT.'Rgh2' ;
  950. Rghe = TBT.'Rghe' ;
  951. Rgo2 = TBT.'Rgo2' ;
  952. Rgn2 = TBT.'Rgn2' ;
  953. Rgco2 = TBT.'Rgco2' ;
  954. Rgco = TBT.'Rgco' ;
  955. Rgvap = TBT.'Rgvap' ;
  956. Rgair = TBT.'Rgair' ;
  957.  
  958. Rgpm = (Rgvap '*' Yvap0) '+' (Rgair '*' Yair0) '+'
  959. (Rghe '*' Yhe0) '+' (Rgh2 '*' Yh20) '+'
  960. (Rgo2 '*' Yo20) '+' (Rgn2 '*' Yn20) '+'
  961. (Rgco '*' Yco0) '+' (Rgco2 '*' Yco20) ;
  962. Rgp = 'KCHT' $vtf 'SCAL' 'SOMMET' Rgpm ;
  963.  
  964. *---------------------------------------------------------------
  965. * Calcul Cp (Tf0) et Cpm pour le mélange de gaz
  966. * CALCP appelé à l'initialisation
  967. *
  968. Tfm=Tf0 ;
  969. Cph2 Cphe Cpo2 Cpn2 Cpco2 Cpco Cpair = CALCP Tfm ;
  970. Cpvap = TBT.'Cpvap' ;
  971. Cpm = (Cpvap '*' Yvap0) '+' (Cpair '*' Yair0) '+' (Cphe '*' Yhe0) '+'
  972. (Cph2 '*' Yh20) '+' (Cpo2 '*' Yo20) '+' (Cpn2 '*' Yn20) '+'
  973. (Cpco '*' Yco0) '+' (Cpco2 '*' Yco20) ;
  974.  
  975. *---------------------------------------------------------------
  976. * Calcul Mu (Tkm) pour le mélange de gaz
  977. *
  978. Tkm=Tfm + 273.15 ;
  979. Muh2 Muhe Muo2 Mun2 Muco2 Muco Muvap Muair = CALMU Tkm ;
  980. Mu = (Muvap '*' Yvap0) '+' (Muair '*' Yair0) '+' (Muhe '*' Yhe0) '+'
  981. (Muh2 '*' Yh20) '+' (Muo2 '*' Yo20) '+' (Mun2 '*' Yn20) '+'
  982. (Muco '*' Yco0) '+' (Muco2 '*' Yco20) ;
  983. Mu='KCHT' $vtf 'SCAL' 'SOMMET' Mu ;
  984. *---------------------------------------------------------------
  985. * Calcul des autres grandeurs initiales
  986. * Cvm = Capacite calorifique a volume constante (J/kg/K)
  987. * Gamm = Gamma du mélange
  988. * Rho0 = Densité initiale (kg/m3)
  989. * Ri0 = Densité de chaque gaz (kg/m3)
  990. *
  991. Cvm = Cpm '-' Rgpm ;
  992. * Gamm = Cpm '/' Cvm ;
  993. Gamm = Cpm '*' (Cvm ** (-1.0)) ;
  994. * Rho0 = pt0 '/' (Rgpm '*' (tf0 '+' 273.15)) ;
  995. Rho0 = pt0 '*' ((Rgpm '*' (tf0 '+' 273.15))**(-1.0));
  996. Rvap0 = Rho0 '*' Yvap0 ;
  997. Rhe0 = Rho0 '*' Yhe0 ;
  998. Rh20 = Rho0 '*' Yh20 ;
  999. Ro20 = Rho0 '*' Yo20 ;
  1000. Rn20 = Rho0 '*' Yn20 ;
  1001. Rco20 = Rho0 '*' Yco20 ;
  1002. Rco0 = Rho0 '*' Yco0 ;
  1003. Rair0 = Rho0 '*' Yair0 ;
  1004.  
  1005. *-----------------------------------------------------------
  1006. * BRECHE : determination du facteur geometrique pour DEBIT
  1007. * en EF
  1008. *
  1009.  
  1010. src=0. ;
  1011. src2=0. ;
  1012.  
  1013. Si TTsortie ;
  1014. NBR=dime rxt.'Sorties' ;
  1015. ibr=index (rxt.'Sorties') ;
  1016.  
  1017. Repeter BBRS NBR ;
  1018. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1019. mess ' Vérification Sortie guj' ' ' (ibr.&BBRS) ;
  1020. diru = Sriches . 'diru' ;
  1021. $sreche=Sriches.'$sreche' ;
  1022. srechec=Sriches.'srechec' ;
  1023. 'SI' DIM3D ;
  1024. Msrechec = 'CHAN' srechec 'QUAF' ;
  1025. elim Msrechec epsi ;
  1026. $srechec = 'MODE' Msrechec mdns TBT.'discr' ;
  1027. Sriches.'$srechec'=$srechec ;
  1028. gjc = 'KCHT' $srechec 'VECT' 'SOMMET' (0.0 0.0 0.0) ;
  1029. gjx = 'KCHT' $sreche 'VECT' 'SOMMET' diru gjc ;
  1030. 'SINON' ;
  1031. gjc = 'MANU' 'CHPO' srechec 2 'UX' 0.0 'UY' 0.0
  1032. 'NATURE' 'DISCRET' ;
  1033. gjx = 'KCHT' $sreche 'VECT' 'SOMMET' diru gjc ;
  1034. 'FINSI' ;
  1035.  
  1036. unvf0 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' gjx ;
  1037. src = 'DBIT' unvf0 GEO.'$menvf' ;
  1038. fgeo = 'ABS' ((Sriches.'Ssreche') '*' (1./src)) ;
  1039. Sriches.'facgeo' = fgeo ;
  1040. FIN BBRS ;
  1041. FINSI ;
  1042.  
  1043. Si TTbreche ;
  1044. NBR=dime rxt.'Breches' ;
  1045. ibr=index (rxt.'Breches') ;
  1046.  
  1047. Repeter BBRS NBR ;
  1048. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1049. mess ' Vérification Breche guj' ' ' (ibr.&BBRS) ;
  1050. diru = Briches . 'diru' ;
  1051. $breche=Briches.'$breche' ;
  1052. brechec=Briches.'brechec' ;
  1053. 'SI' DIM3D ;
  1054. Mbrechec = 'CHAN' brechec 'QUAF' ;
  1055. elim Mbrechec epsi ;
  1056. $brechec = 'MODE' Mbrechec mdns TBT.'discr' ;
  1057. Briches.'$brechec'=$brechec ;
  1058. gjc = 'KCHT' $brechec 'VECT' 'SOMMET' (0.0 0.0 0.0) ;
  1059. gjx = 'KCHT' $breche 'VECT' 'SOMMET' diru gjc ;
  1060. 'SINON' ;
  1061. gjc = 'MANU' 'CHPO' brechec 2 'UX' 0.0 'UY' 0.0
  1062. 'NATURE' 'DISCRET' ;
  1063. gjx = 'KCHT' $breche 'VECT' 'SOMMET' diru gjc ;
  1064. 'FINSI' ;
  1065.  
  1066. unvf0 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' gjx ;
  1067. src = 'DBIT' unvf0 GEO.'$menvf' ;
  1068. fgeo = 'ABS' ((Briches.'Sbreche') '*' (1./src)) ;
  1069. Briches.'facgeo' = fgeo ;
  1070. FIN BBRS ;
  1071. FINSI ;
  1072.  
  1073.  
  1074. *-----------------------------------------------------------
  1075. *----- FIN du TRAITEMENT DE LA BRECHE ----------------------
  1076. *-----------------------------------------------------------
  1077.  
  1078. *----- TRAITEMENT DES RECOMBINEURS
  1079. 'SI' (TBT.'TRECOMB') ;
  1080. NBREC = 'DIME' rxt.'RECOMB' ;
  1081. 'REPETER' BCLREC NBREC ;
  1082. $toto = 'CHAIN' '$REC' 'ent' &BCLREC ;
  1083. $tutu = 'CHAIN' '$REC' 'sor' &BCLREC ;
  1084. NAME = 'CHAIN' 'REC' 'entI' &BCLREC ;
  1085. ENTREEi = GEO.NAME ;
  1086. NAME = 'CHAIN' 'REC' 'entC' &BCLREC ;
  1087. ENTREEc = GEO.NAME ;
  1088. NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ;
  1089. SORTIEi = GEO.NAME ;
  1090. NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ;
  1091. SORTIEc = GEO.NAME ;
  1092. DIRENT = 'CHAIN' 'DREC' 'ent' &BCLREC ;
  1093. direntr = GEO. DIRENT ;
  1094. DIRSOR = 'CHAIN' 'DREC' 'sor' &BCLREC ;
  1095. dirsort = GEO. DIRSOR ;
  1096. 'SI' DIM3D ;
  1097. toto1 = 'MANU' 'CHPO' ('CHAN' ENTREEc 'POI1')
  1098. 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0 'NATURE' 'DISCRET' ;
  1099. toto2 = 'KCHT' GEO.$toto 'VECT' 'SOMMET' direntr
  1100. toto1 ;
  1101. tutu1 = 'MANU' 'CHPO' ('CHAN' SORTIEc 'POI1')
  1102. 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0 'NATURE' 'DISCRET' ;
  1103. tutu2 = 'KCHT' GEO.$tutu 'VECT' 'SOMMET' dirsort
  1104. tutu1 ;
  1105. 'SINON' ;
  1106. toto1 = 'MANU' 'CHPO' ENTREEc
  1107. 2 'UX' 0.0 'UY' 0.0 'NATURE' 'DISCRET' ;
  1108. toto2 = 'KCHT' GEO.$toto 'VECT' 'SOMMET' direntr
  1109. toto1 ;
  1110. tutu1 = 'MANU' 'CHPO' SORTIEc
  1111. 2 'UX' 0.0 'UY' 0.0 'NATURE' 'DISCRET' ;
  1112. tutu2 = 'KCHT' GEO.$tutu 'VECT' 'SOMMET' dirsort
  1113. tutu1 ;
  1114. 'FINSI' ;
  1115. toto3 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' toto2 ;
  1116. toto4 = 'DBIT' toto3 GEO.'$menvf' ;
  1117. tutu3 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' tutu2 ;
  1118. tutu4 = 'DBIT' tutu3 GEO.'$menvf' ;
  1119. S_ENT = 'CHAIN' 'SREC' 'ent' &BCLREC ;
  1120. S_SOR = 'CHAIN' 'SREC' 'sor' &BCLREC ;
  1121. toto5 = 'ABS' ((GEO.S_ENT) '*' (toto4**(-1.0))) ;
  1122. tutu5 = 'ABS' ((GEO.S_SOR) '*' (tutu4**(-1.0))) ;
  1123. FG_ENT = 'CHAIN' 'fgREC' 'ent' &BCLREC ;
  1124. GEO.FG_ENT = toto5 ;
  1125. FG_SOR = 'CHAIN' 'fgREC' 'sor' &BCLREC ;
  1126. GEO.FG_SOR = tutu5 ;
  1127. 'FIN' BCLREC ;
  1128. 'FINSI' ;
  1129.  
  1130. *------------------------------------------------------------
  1131. * TRAITEMENT DES EQUATIONS A RESOUDRE
  1132. *------------------------------------------------------------
  1133. *
  1134. * - Definition de constantes intervenant dans les equations
  1135. * FCPRECI = Frequence de recalcul du préc. dans la methode iterative
  1136. * FCPRECT = Frequence de recalcul du préc. en fn du pas de temps
  1137. * calprec = logique pilotant le preconditionnement
  1138. 'SI' ('EXIS' RXT 'FRPREC') ;
  1139. calprec = VRAI ;
  1140. 'SI' ('EXIS' RXT 'FCPRECT') ;
  1141. FCPRECT = RXT.'FCPRECT' ;
  1142. 'SI' (FCPRECT 'EGA' 1) ;
  1143. 'MESS' 'ATTENTION! FCPRECT = 1!' ;
  1144. 'MESS' 'ON PRECONDITIONNE A CHAQUE ITERATION!' ;
  1145. 'FINSI' ;
  1146. 'SINON' ;
  1147. FCPRECT = 5 ;
  1148. 'FINSI' ;
  1149. 'SI' ('EXIS' RXT 'FCPRECI') ;
  1150. FCPRECI = RXT.'FCPRECI' ;
  1151. 'SI' (FCPRECI 'EGA' 1) ;
  1152. 'MESS' 'ATTENTION! FCPRECI = 1!' ;
  1153. 'MESS' 'ON PRECONDITIONNE A CHAQUE ITERATION!' ;
  1154. 'FINSI' ;
  1155. 'SINON' ;
  1156. FCPRECI = 5 ;
  1157. 'FINSI' ;
  1158. 'SINON' ;
  1159. RXT.'FRPREC' = 1 ;
  1160. calprec = FAUX ;
  1161. FCPRECI = 1 ;
  1162. FCPRECT = 1 ;
  1163. 'FINSI' ;
  1164.  
  1165. * Donnees à la brèche (vitesse et température
  1166. * pour les conditions aux limites
  1167. uj=0. ;
  1168. vj=-0. ;
  1169. wj=-1. ;
  1170. Tj = 0. ;
  1171.  
  1172. *-- Suivant la formulation la ligne de commande change ---------
  1173. * LCTSCA ligne de commande de TSCA
  1174. LCTSCA='TEXT' 1. 'UN' 'NUEFF' 0. ;
  1175. Si (Ega TBT.'FEF' 'EFM1') ;
  1176. LCTSCA='TEXT' 'NUm' 'UN' 0. NUT 0.7 ;
  1177. Finsi ;
  1178.  
  1179. DTX= 'DT' ;
  1180. *Si (EGA TBT.'FEF' 'EFM1') ;
  1181. *DTX= 'DELTAT' ;
  1182. *Finsi ;
  1183.  
  1184. *---------------------------------------------------------------
  1185. *- EQUATIONS DE LA QDM
  1186. * Formulation non conservative
  1187. * Decentrement SUPG
  1188. *
  1189. 'SI'((EGA TBT.'MODTURB' 'KEPSILON') et (EGA TBT.'FEF' 'EFM1'));
  1190. *---- Modèle K-Epsilon EFM1 --------------------------------
  1191. rv= 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  1192. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG'
  1193. 'ZONE' $vtf 'OPER' 'NSKE' 'NUm' 'NUT' 'ROG' 'INCO' 'UN' 'KN' 'EN'
  1194. 'OPTI' 'EFM1' 'CENTREE'
  1195. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'UNM' DTX 'INCO' 'UN'
  1196. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'KNM' DTX 'INCO' 'KN'
  1197. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'ENM' DTX 'INCO' 'EN'
  1198. ;
  1199. *---- Modèle K-Epsilon EFM1 -- FIN -------------------------
  1200. Sinon ;
  1201. rv= 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  1202. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG'
  1203. * 'ZONE' $vtf 'OPER' 'SGE' 'UN' 'NU' 'INCO' 'UN'
  1204. 'ZONE' $vtf 'OPER' 'NS' 1. 'UN' 'NUEFF' 'ROG' 'INCO' 'UN'
  1205. 'OPTI' 'EFM1' 'CENTREE'
  1206. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'UNM' DTX 'INCO' 'UN'
  1207. ;
  1208. Finsi ;
  1209. *
  1210. * - Conditions aux limites sur les parois (vitesse nulle)
  1211. * ou Fonctions de paroi
  1212. *
  1213. Si (TBT.'FPAROI') ;
  1214. 'SI'(EGA TBT.'MODTURB' 'KEPSILON') ;
  1215. rv= 'EQEX' rv
  1216. 'OPTI' TBT.'FEF' TBT.'FIMPL'
  1217. 'ZONE' (GEO.'$menvfU') 'OPER' 'FPU' 'NUm' 'UET' (TBT.'YP')
  1218. 'INCO' 'UN' 'KN' 'EN' ;
  1219. 'SINON' ;
  1220. rv= 'EQEX' rv
  1221. 'OPTI' TBT.'FEF' TBT.'FIMPL'
  1222. 'ZONE' (GEO.'$menvfU') 'OPER' 'FPU' 1. 'UN' 'NUm' 'UET'
  1223. (TBT.'YP') 'INCO' 'UN' ;
  1224. 'FINSI' ;
  1225. Sinon ;
  1226. rv= 'EQEX' rv 'CLIM'
  1227. 'UN' 'UIMP' GEO.'menvfU' 0.
  1228. 'UN' 'VIMP' GEO.'menvfU' 0. ;
  1229. 'SI' DIM3D ;
  1230. rv= 'EQEX' rv 'CLIM'
  1231. 'UN' 'WIMP' GEO.'menvfU' 0. ;
  1232. Finsi ;
  1233. Finsi ;
  1234. *
  1235. * - Conditions aux limites sur la brèche et les sorties
  1236. *
  1237. *!?
  1238. Si TTsortie ;
  1239. NBR=dime rxt.'Sorties' ;
  1240. ibr=index (rxt.'Sorties') ;
  1241.  
  1242. Repeter BBRS NBR ;
  1243. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1244. mess ' Conditions limites sur la sortie' ' '(ibr.&BBRS) ;
  1245. srechei=Sriches.'srechei' ;
  1246. srechec=Sriches.'srechec' ;
  1247. rv= 'EQEX' rv 'CLIM'
  1248. 'UN' 'UIMP' srechei uj
  1249. 'UN' 'VIMP' srechei vj
  1250. 'UN' 'UIMP' srechec 0.
  1251. 'UN' 'VIMP' srechec 0. ;
  1252. FIN BBRS ;
  1253. FINSI ;
  1254.  
  1255. Si TTbreche ;
  1256. NBR=dime rxt.'Breches' ;
  1257. ibr=index (rxt.'Breches') ;
  1258.  
  1259. Repeter BBRS NBR ;
  1260. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1261. mess ' Conditions limites sur la brèche' ' ' (ibr.&BBRS) ;
  1262. brechei=Briches.'brechei' ;
  1263. brechec=Briches.'brechec' ;
  1264. rv= 'EQEX' rv 'CLIM'
  1265. 'UN' 'UIMP' brechei uj
  1266. 'UN' 'VIMP' brechei vj
  1267. 'UN' 'UIMP' brechec 0.
  1268. 'UN' 'VIMP' brechec 0. ;
  1269. FIN BBRS ;
  1270. FINSI ;
  1271.  
  1272.  
  1273. 'SI' (TBT.'TRECOMB') ;
  1274. NBREC = 'DIME' rxt.'RECOMB' ;
  1275. 'REPETER' BCLREC NBREC ;
  1276. NAME = 'CHAIN' 'REC' 'entI' &BCLREC ;
  1277. ENTREEi = GEO.NAME ;
  1278. NAME = 'CHAIN' 'REC' 'entC' &BCLREC ;
  1279. ENTREEc = GEO.NAME ;
  1280. NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ;
  1281. SORTIEi = GEO.NAME ;
  1282. NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ;
  1283. SORTIEc = GEO.NAME ;
  1284. rv= 'EQEX' rv 'CLIM'
  1285. 'UN' 'UIMP' ENTREEi uj
  1286. 'UN' 'VIMP' ENTREEi vj
  1287. 'UN' 'UIMP' ENTREEc 0.
  1288. 'UN' 'VIMP' ENTREEc 0. ;
  1289. rv= 'EQEX' rv 'CLIM'
  1290. 'UN' 'UIMP' SORTIEi uj
  1291. 'UN' 'VIMP' SORTIEi vj
  1292. 'UN' 'UIMP' SORTIEc 0.
  1293. 'UN' 'VIMP' SORTIEc 0. ;
  1294. 'SI' DIM3D ;
  1295. rv= 'EQEX' rv 'CLIM'
  1296. 'UN' 'WIMP' ENTREEi Wj
  1297. 'UN' 'WIMP' ENTREEc 0. ;
  1298. rv= 'EQEX' rv 'CLIM'
  1299. 'UN' 'WIMP' SORTIEi Wj
  1300. 'UN' 'WIMP' SORTIEc 0. ;
  1301. 'FINSI' ;
  1302. 'FIN' BCLREC ;
  1303. 'FINSI' ;
  1304.  
  1305. 'SI' DIM3D ;
  1306. Si TTsortie ;
  1307. NBR=dime rxt.'Sorties' ;
  1308. ibr=index (rxt.'Sorties') ;
  1309. Repeter BBRS NBR ;
  1310. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1311. mess ' Conditions limites sur la sortie' ' ' (ibr.&BBRS) ;
  1312. srechei=Sriches.'srechei' ;
  1313. srechec=Sriches.'srechec' ;
  1314. rv= 'EQEX' rv 'CLIM'
  1315. 'UN' 'WIMP' srechei wj
  1316. 'UN' 'WIMP' srechec 0. ;
  1317. FIN BBRS ;
  1318. FINSI ;
  1319.  
  1320. Si TTbreche ;
  1321. NBR=dime rxt.'Breches' ;
  1322. ibr=index (rxt.'Breches') ;
  1323. Repeter BBRS NBR ;
  1324. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1325. mess ' Conditions limites sur la brèche' ' ' (ibr.&BBRS) ;
  1326. brechei=Briches.'brechei' ;
  1327. brechec=Briches.'brechec' ;
  1328. rv= 'EQEX' rv 'CLIM'
  1329. 'UN' 'WIMP' brechei wj
  1330. 'UN' 'WIMP' brechec 0. ;
  1331. FIN BBRS ;
  1332. FINSI ;
  1333.  
  1334.  
  1335. 'FINSI' ;
  1336. *
  1337. * Imposition de la vitesse normale nulle sur l'axe en MODE AXIS
  1338. * (le MODE PLAN est pris en compte via VNIMP plus loin)
  1339. 'SI' (TBT . 'Taxe' 'ET' ('EGA' ('VALE' 'MODE') 'AXIS')) ;
  1340. rv= 'EQEX' rv 'CLIM'
  1341. 'UN' 'UIMP' (GEO . 'axe') 0.;
  1342. 'FINS' ;
  1343.  
  1344. *---------------------------------------------------------------
  1345. * Definition des inconnues vitesse UN et terme source
  1346. * de flottabilite ROG
  1347. *
  1348. * - Definition de la table des inconnues
  1349. rv.inco= tic ;
  1350.  
  1351. 'SI' DIM3D ;
  1352. uinj matvide= kops 'MATRIK' ;
  1353. Si TTsortie ;
  1354. NBR=dime rxt.'Sorties' ;
  1355. ibr=index (rxt.'Sorties') ;
  1356. Repeter BBRS NBR ;
  1357. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1358. * mess ' Conditions limites unj ??? ' (ibr.&BBRS) ;
  1359. srechei=Sriches.'srechei' ;
  1360. $sreche=Sriches.'$sreche' ;
  1361. uino = 'KCHT' $sreche 'VECT' 'SOMMET' (0. 0. 1.) ;
  1362. uino = 'REDU' srechei uino ;
  1363. uino = 'KCHT' $sreche 'VECT' 'SOMMET' uino ;
  1364. uinj = uinj + uino ;
  1365. FIN BBRS ;
  1366. FINSI ;
  1367. Si TTbreche ;
  1368. mess ' Tient on passe la ';
  1369. NBR=dime rxt.'Breches' ;
  1370. ibr=index (rxt.'Breches') ;
  1371. Repeter BBRS NBR ;
  1372. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1373. * mess ' Conditions limites unj ??? ' (ibr.&BBRS) ;
  1374. brechei=Briches.'brechei' ;
  1375. $breche=Briches.'$breche' ;
  1376. uino = 'KCHT' $breche 'VECT' 'SOMMET' (0. 0. 1.) ;
  1377. uino = 'REDU' brechei uino ;
  1378. uino = 'KCHT' $breche 'VECT' 'SOMMET' uino ;
  1379. uinj = uinj + uino ;
  1380. FIN BBRS ;
  1381. FINSI ;
  1382.  
  1383. Si (exist tic 'UN');
  1384. ma=extr tic.'UN' MAILLAGE ;
  1385. ms=doma $vtf 'SOMMET' ;
  1386. ELIM (ma et ms) epsi ;
  1387. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'UN') ;
  1388. Sinon ;
  1389. 'SI' (TTbreche ou TTsortie);
  1390. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0. 0.) uinj;
  1391. 'SINON';
  1392. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0. 0.);
  1393. 'FINSI';
  1394. Finsi ;
  1395.  
  1396. Si (exist tic 'UNM');
  1397. ma=extr tic.'UNM' MAILLAGE ;
  1398. ms=doma $vtf 'SOMMET' ;
  1399. ELIM (ma et ms) epsi ;
  1400. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'UNM');
  1401. Sinon ;
  1402. 'SI' (TTbreche ou TTsortie);
  1403. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0. 0.) uinj;
  1404. 'SINON';
  1405. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0. 0.);
  1406. 'FINSI';
  1407. Finsi ;
  1408.  
  1409. Si(exist tic 'ROG');
  1410. ma=extr tic.'ROG' MAILLAGE ;
  1411. mc=doma $vtf 'CENTRE' ;
  1412. ELIM (ma et mc) epsi ;
  1413. tic.'ROG' = 'KCHT' $vtf 'VECT' 'CENTRE' (tic.'ROG') ;
  1414. Sinon ;
  1415. tic.'ROG' = 'KCHT' $vtf 'VECT' 'CENTRE' (0. 0. 0.) ;
  1416. Finsi ;
  1417.  
  1418. 'SINON' ;
  1419.  
  1420. uinj matvide= kops 'MATRIK' ;
  1421. Si TTsortie ;
  1422. NBR=dime rxt.'Sorties' ;
  1423. ibr=index (rxt.'Sorties') ;
  1424. Repeter BBRS NBR ;
  1425. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1426. srechei=Sriches.'srechei' ;
  1427. $sreche=Sriches.'$sreche' ;
  1428. uino = 'KCHT' $sreche 'VECT' 'SOMMET' (0. 1.) ;
  1429. uino = 'REDU' srechei uino ;
  1430. uino = 'KCHT' $sreche 'VECT' 'SOMMET' uino ;
  1431. uinj = uinj + uino ;
  1432. FIN BBRS ;
  1433. FINSI ;
  1434. Si TTbreche ;
  1435. NBR=dime rxt.'Breches' ;
  1436. ibr=index (rxt.'Breches') ;
  1437. Repeter BBRS NBR ;
  1438. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1439. brechei=Briches.'brechei' ;
  1440. $breche=Briches.'$breche' ;
  1441. uino = 'KCHT' $breche 'VECT' 'SOMMET' (0. 1.) ;
  1442. uino = 'REDU' brechei uino ;
  1443. uino = 'KCHT' $breche 'VECT' 'SOMMET' uino ;
  1444. uinj = uinj + uino ;
  1445. FIN BBRS ;
  1446. FINSI ;
  1447.  
  1448. Si(exist tic 'UN');
  1449. ma=extr tic.'UN' MAILLAGE ;
  1450. ms=doma $vtf 'SOMMET' ;
  1451. ELIM (ma et ms) epsi ;
  1452. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'UN') ;
  1453. Sinon ;
  1454. 'SI' (TTbreche ou TTsortie);
  1455. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0.) uinj;
  1456. 'SINON';
  1457. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0.);
  1458. 'FINSI';
  1459. Finsi ;
  1460.  
  1461. Si(exist tic 'UNM');
  1462. ma=extr tic.'UNM' MAILLAGE ;
  1463. ms=doma $vtf 'SOMMET' ;
  1464. ELIM (ma et ms) epsi ;
  1465. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'UNM') ;
  1466. Sinon ;
  1467. 'SI' (TTbreche ou TTsortie);
  1468. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0.) uinj;
  1469. 'SINON';
  1470. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0.);
  1471. 'FINSI';
  1472. Finsi ;
  1473.  
  1474. Si(exist tic 'ROG');
  1475. ma=extr tic.'ROG' MAILLAGE ;
  1476. mc=doma $vtf 'CENTRE' ;
  1477. ELIM (ma et mc) epsi ;
  1478. tic.'ROG' = 'KCHT' $vtf 'VECT' 'CENTRE' (tic.'ROG') ;
  1479. Sinon ;
  1480. tic.'ROG' = 'KCHT' $vtf 'VECT' 'CENTRE' (0. 0.) ;
  1481. Finsi ;
  1482.  
  1483. 'FINSI' ;
  1484.  
  1485. 'SI'(EGA TBT.'MODTURB' 'KEPSILON') ;
  1486. Si(exist tic 'KN') ;
  1487. *ma=extr tic.'KN' MAILLAGE ;
  1488. *mc=doma $vtf 'SOMMET' ;
  1489. *ELIM (ma et mc) epsi ;
  1490. tic.'KN' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KN') ;
  1491. Sinon ;
  1492. tic.'KN' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1493. Finsi ;
  1494. Si(exist tic 'EN') ;
  1495. *ma=extr tic.'EN' MAILLAGE ;
  1496. *mc=doma $vtf 'SOMMET' ;
  1497. *ELIM (ma et mc) epsi ;
  1498. tic.'EN' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'EN') ;
  1499. Sinon ;
  1500. tic.'EN' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1501. Finsi ;
  1502. Si(exist tic 'KNM') ;
  1503. *ma=extr tic.'KNM' MAILLAGE ;
  1504. *mc=doma $vtf 'SOMMET' ;
  1505. *ELIM (ma et mc) epsi ;
  1506. tic.'KNM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KNM') ;
  1507. Sinon ;
  1508. tic.'KNM' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1509. Finsi ;
  1510. Si(exist tic 'ENM') ;
  1511. *ma=extr tic.'ENM' MAILLAGE ;
  1512. *mc=doma $vtf 'SOMMET' ;
  1513. *ELIM (ma et mc) epsi ;
  1514. tic.'ENM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'ENM') ;
  1515. Sinon ;
  1516. tic.'ENM' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1517. Finsi ;
  1518. Si(exist tic 'NUT') ;
  1519. *ma=extr tic.'NUT' MAILLAGE ;
  1520. *mc=doma $vtf 'CENTRE' ;
  1521. *ELIM (ma et mc) epsi ;
  1522. tic.'NUT' = 'KCHT' $vtf 'SCAL' 'CENTRE' (tic.'NUT') ;
  1523. Sinon ;
  1524. tic.'NUT' = 'KCHT' $vtf 'SCAL' 'CENTRE' 1.e-10 ;
  1525. Finsi ;
  1526. 'FINSI' ;
  1527. *-----------------------------------------------------------------------
  1528. * Specification pour la resolution du systeme
  1529. * TYPINV = 3 : Gradient Conjugue
  1530. * = 2 : BiCGStab
  1531. * = 1 : Methode Directe
  1532. * PRECOND = 3 Preconditionnement I-LU(0)
  1533. * NITMAX = nombre maximal d'iterations
  1534. * RESID = precision du Residu EPSS
  1535. *
  1536. *-----------------------------------------------------------------------
  1537. * Precision EPSS
  1538. * EPSS = 1.e-5 ;
  1539. * EPSS = 1.e-10 ;
  1540. EPSS = 1.e-20 ;
  1541. * Nombre total d iterations
  1542. * NTIT = 600 ;
  1543. NTIT = 800 ;
  1544.  
  1545. rv.'METHINV'.TYPINV=TBT.'TYPINV' ;
  1546. rv.'METHINV'.TYPRENU=TBT.'RENU' ;
  1547. rv.'METHINV'.IMPINV=TBT.'nimpr' ;
  1548. rv.'METHINV'.NITMAX=NTIT ;
  1549. rv.'METHINV'.PRECOND=3 ;
  1550. rv.'METHINV'.'FCPRECI' = FCPRECI ;
  1551. rv.'METHINV'.'FCPRECT' = FCPRECT ;
  1552. rv.'METHINV'.'CALPREC' = calprec ;
  1553. rv.'METHINV'.RESID = EPSS ;
  1554.  
  1555. *----------------------------------------------------------------------
  1556. * Definition du minimum pour recalcul du preconditionnement
  1557. *
  1558. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1559. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  1560. * rv.'MINPREC' = rv.'METHINV'.NITMAX ;
  1561. * 'FINSI' ;
  1562. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1563. *----------------------------------------------------------------------
  1564. * Traitement de la PRESSION
  1565. *
  1566.  
  1567. 'MESS' '==> Algorithme de Projection' ;
  1568. rvpr= 'EQEX'
  1569. 'OPTI' TBT.'FEF' TBT.'FIMPL' TBT.'KPRE' 'SUPG'
  1570. 'ZONE' $vtf 'OPER' 'KBBT' -1. (TBT.'STAB') 'INCO' 'UN' 'PRES'
  1571. ;
  1572.  
  1573. *Si (NON TBT.'Tsortie') ;
  1574. rvpr= 'EQEX' rvpr
  1575. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'INCOD' TBT.'KPRE'
  1576. 'ZONE' $vtf 'OPER' 'FIMP' 'DSRC' 'INCO' 'PRES' ;
  1577. *Finsi ;
  1578.  
  1579. Si(exist rxt 'pi') ;
  1580.  
  1581. * Si(TBT.'Tsortie') ;
  1582. * Si(EGA TBT.'KPRE' 'MSOMMET') ;
  1583. * sortiep=doma GEO.'$sortie' MSOMMET ;
  1584. * rvpr='EQEX' rvpr
  1585. * 'CLIM' 'PRES' 'TIMP' sortiep 0. ;
  1586. * Finsi ;
  1587. * Sinon ;
  1588. rvpr='EQEX' rvpr
  1589. 'CLIM' 'PRES' 'TIMP' Pimp 0. ;
  1590. * Finsi ;
  1591.  
  1592. Finsi ;
  1593.  
  1594. Si (TBT.'FPAROI') ;
  1595. rvpr= 'EQEX' rvpr
  1596. 'OPTI' TBT.'FEF' TBT.'FIMPL' TBT.'KPRE'
  1597. 'ZONE' (GEO.'$menvfU') 'OPER' 'VNIMP' $vtf 0. 'INCO' 'UN' 'PRES' ;
  1598. Finsi ;
  1599. *
  1600. * Traitement d'un pseudo plan de symétrie en MODE PLAN
  1601. * (le MODE AXIS est pris en compte en imposant UIMP=0)
  1602. 'SI' (TBT . 'Taxe' 'ET' ('NON' ('EGA' ('VALE' 'MODE') 'AXIS'))) ;
  1603. rvpr = 'EQEX' rvpr
  1604. 'OPTI' TBT . 'FEF' TBT . 'FIMPL' TBT . 'KPRE'
  1605. 'ZONE' (GEO . '$axe') 'OPER' 'VNIMP' $vtf 0. 'INCO' 'UN' 'PRES' ;
  1606. 'FINS' ;
  1607.  
  1608.  
  1609. MAXEL=TBT.'MAXELPRE' ;
  1610. mess ' Maximum d éléments pour une résolution directe de la pression'
  1611. ' ' MAXEL;
  1612. 'SI' ((NBEL vtf) '<EG' MAXEL) ;
  1613. rvpr.'METHINV'.TYPINV= 1 ;
  1614. rvpr.'METHINV'.TYPRENU=TBT.'RENU' ;
  1615. rvpr.'METHINV'.IMPINV=TBT.'nimpr' ;
  1616. mess ' Nombre d éléments:' ' ' (NBEL VTF) ' ' '=> Méthode directe';
  1617. 'SINON' ;
  1618. rvpr.'METHINV'.TYPINV=TBT.'TYPINV' ;
  1619. rvpr.'METHINV'.TYPRENU=TBT.'RENU' ;
  1620. rvpr.'METHINV'.IMPINV=TBT.'nimpr' ;
  1621. rvpr.'METHINV'.NITMAX= NTIT ;
  1622. rvpr.'METHINV'.PRECOND=3 ;
  1623. rvpr.'METHINV'.'FCPRECI' = FCPRECI ;
  1624. rvpr.'METHINV'.'FCPRECT' = FCPRECT ;
  1625. rvpr.'METHINV'.'CALPREC' = calprec ;
  1626. rvpr.'METHINV'.RESID =1.e-12 ;
  1627. mess ' Nombre d éléments:' ' ' (NBEL VTF)
  1628. ' ' '=> Méthode itérative, TYPINV='
  1629. TBT.'TYPINV';
  1630. 'FINSI' ;
  1631.  
  1632. rv.'PROJ' = rvpr ;
  1633.  
  1634. *-------------------------------------------------------------
  1635. * Definition de l'inconnue de PRESSION
  1636. *
  1637. Si(exist tic 'PRES');
  1638. ma=extr tic.'PRES' MAILLAGE ;
  1639. ms=doma $vtf TBT.'KPRE';
  1640. ELIM (ma et ms) epsi ;
  1641. tic.'PRES' = 'KCHT' $vtf 'SCAL' TBT.'KPRE' (tic.'PRES') ;
  1642. Sinon ;
  1643. tic.'PRES' = 'KCHT' $vtf 'SCAL' TBT.'KPRE' 1.e-5 ;
  1644. Finsi ;
  1645.  
  1646. *------------------------------------------------------------
  1647. *-- EQUATIONS DU MODèLE K-EPSILON
  1648. Si ( Exist TBT 'MODTURB') ;
  1649.  
  1650.  
  1651. Si ((Ega TBT.'MODTURB' 'KEPSILON') et (NON (Ega TBT.'FEF' 'EFM1'))) ;
  1652.  
  1653. Rrk= 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  1654. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS'
  1655. 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 'Sk' 'INCO' 'KN'
  1656. 'OPTI' 'EFM1' 'CENTREE'
  1657. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'KNM' DTX 'INCO' 'KN'
  1658. ;
  1659.  
  1660. Rre= 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  1661. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS'
  1662. 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 'Se' 'INCO' 'EN'
  1663. 'OPTI' 'EFM1' 'CENTREE'
  1664. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'ENM' DTX 'INCO' 'EN'
  1665. ;
  1666. *
  1667. * - Conditions aux limites sur la brèche
  1668. *
  1669. Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' GEO.'menvf' 0. ;
  1670. Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' GEO.'menvf' 1.e30 ;
  1671. kj=0. ;
  1672. ej=1.e30 ;
  1673. Si TTsortie ;
  1674. NBR=dime rxt.'Sorties' ;
  1675. ibr=index (rxt.'Sorties') ;
  1676. Repeter BBRS NBR ;
  1677. Briches=rxt.'Sorties'.(ibr.&BBRS) ;
  1678. mess ' Conditions limites sur K et Epsilon sortie' ' '
  1679. (ibr.&BBRS) ;
  1680. brechei=Briches.'brechei' ;
  1681. brechec=Briches.'brechec' ;
  1682. Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' brechei kj
  1683. 'KN' 'TIMP' brechec 0. ;
  1684. Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' brechei ej
  1685. 'EN' 'TIMP' brechec 1.e30 ;
  1686. FIN BBRS ;
  1687. FINSI ;
  1688.  
  1689. Si TTbreche ;
  1690. NBR=dime rxt.'Breches' ;
  1691. ibr=index (rxt.'Breches') ;
  1692. Repeter BBRS NBR ;
  1693. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1694. mess ' Conditions limites sur K et Epsilon brèche' ' '
  1695. (ibr.&BBRS) ;
  1696. brechei=Briches.'brechei' ;
  1697. brechec=Briches.'brechec' ;
  1698. Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' brechei kj
  1699. 'KN' 'TIMP' brechec 0. ;
  1700. Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' brechei ej
  1701. 'EN' 'TIMP' brechec 1.e30 ;
  1702. FIN BBRS ;
  1703. FINSI ;
  1704.  
  1705. Rrk .inco = tic ;
  1706. Rrk .'METHINV'.TYPINV=TBT.'TYPINV' ;
  1707. Rrk .'METHINV'.TYPRENU=TBT.'RENU' ;
  1708. Rrk .'METHINV'.IMPINV=TBT.'nimpr' ;
  1709. Rrk .'METHINV'.NITMAX=NTIT ;
  1710. Rrk .'METHINV'.PRECOND=3 ;
  1711. Rrk .'METHINV'.'FCPRECI' = FCPRECI ;
  1712. Rrk .'METHINV'.'FCPRECT' = FCPRECT ;
  1713. Rrk .'METHINV'.'CALPREC' = calprec ;
  1714. Rrk .'METHINV'.RESID = EPSS ;
  1715.  
  1716.  
  1717. Rre .inco = tic ;
  1718. Rre .'METHINV'.TYPINV=TBT.'TYPINV' ;
  1719. Rre .'METHINV'.TYPRENU=TBT.'RENU' ;
  1720. Rre .'METHINV'.IMPINV=TBT.'nimpr' ;
  1721. Rre .'METHINV'.NITMAX=NTIT ;
  1722. Rre .'METHINV'.PRECOND=3 ;
  1723. Rre .'METHINV'.'FCPRECI' = FCPRECI ;
  1724. Rre .'METHINV'.'FCPRECT' = FCPRECT ;
  1725. Rre .'METHINV'.'CALPREC' = calprec ;
  1726. Rre .'METHINV'.RESID = EPSS ;
  1727.  
  1728.  
  1729. *----------------------------------------------------------------------
  1730. * Definition du minimum pour recalcul du preconditionnement
  1731. *
  1732. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1733. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  1734. * Rrk .'MINPREC' = Rrk .'METHINV'.NITMAX ;
  1735. * Rre .'MINPREC' = Rre .'METHINV'.NITMAX ;
  1736. * 'FINSI' ;
  1737. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1738.  
  1739. Si (exist tic 'KN') ;
  1740. ma=extr tic.'KN' MAILLAGE ;
  1741. ms=doma $vtf 'SOMMET' ;
  1742. ELIM (ma et ms) epsi ;
  1743. tic.'KN' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KN') ;
  1744. Sinon ;
  1745. tic.'KN' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0. ;
  1746. Finsi ;
  1747.  
  1748. Si (exist tic 'KNM') ;
  1749. ma=extr tic.'KNM' MAILLAGE ;
  1750. ms=doma $vtf 'SOMMET' ;
  1751. ELIM (ma et ms) epsi ;
  1752. tic.'KNM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KNM') ;
  1753. Sinon ;
  1754. tic.'KNM' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0. ;
  1755. Finsi ;
  1756.  
  1757. Si(exist tic 'Sk') ;
  1758. ma=extr tic.'Sk' MAILLAGE ;
  1759. mc=doma $vtf 'SOMMET' ;
  1760. ELIM (ma et mc) epsi ;
  1761. tic.'Sk' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'Sk') ;
  1762. Sinon ;
  1763. tic.'Sk' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0. ;
  1764. Finsi ;
  1765.  
  1766. Si (exist tic 'EN') ;
  1767. ma=extr tic.'EN' MAILLAGE ;
  1768. ms=doma $vtf 'SOMMET' ;
  1769. ELIM (ma et ms) epsi ;
  1770. tic.'EN' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'EN') ;
  1771. Sinon ;
  1772. tic.'EN' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1773. Finsi ;
  1774. *mess ' EN OK ' ;
  1775. Si (exist tic 'ENM') ;
  1776. ma=extr tic.'ENM' MAILLAGE ;
  1777. ms=doma $vtf 'SOMMET' ;
  1778. ELIM (ma et ms) epsi ;
  1779. tic.'ENM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'ENM') ;
  1780. Sinon ;
  1781. tic.'ENM' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1782. Finsi ;
  1783.  
  1784. Si(exist tic 'Se') ;
  1785. ma=extr tic.'Se' MAILLAGE ;
  1786. mc=doma $vtf 'SOMMET' ;
  1787. ELIM (ma et mc) epsi ;
  1788. tic.'Se' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'Se') ;
  1789. Sinon ;
  1790. tic.'Se' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0. ;
  1791. Finsi ;
  1792.  
  1793. Si (exist tic 'NUEFF') ;
  1794. ma=extr tic.'NUEFF' MAILLAGE ;
  1795. ms=doma $vtf 'SOMMET' ;
  1796. ELIM (ma et ms) epsi ;
  1797. tic.'NUEFF'='KCHT' $vtf 'SCAL' ('CHAI' TBT.'SPGNU') (tic.'NUEFF');
  1798. Sinon ;
  1799. tic.'NUEFF' = 'KCHT' $vtf 'SCAL' ('CHAI' TBT.'SPGNU') 0. ;
  1800. list tic.'NUEFF' ;
  1801. Finsi ;
  1802. *
  1803. *mess ' Fin preparation KEPSILON ' ;
  1804. *
  1805. 'FINSI' ;
  1806. 'FINSI' ;
  1807.  
  1808. *------------------------------------------------------------
  1809. *-- EQUATIONS SUR LA TEMPERATURE FLUIDE TF
  1810. * Formulation non conservative Decentrement SUPG
  1811. * Termes sources : STF correspond a dP/dt
  1812. * 'ECHI' partie convective de l'echange paroi
  1813. * Le modele concerne est PAROIC1
  1814. * ATTENTION : division par RHO.CP
  1815. * Les parois imposees sont aussi traitees par ECHI
  1816. ac='TEXT' 'NUEFF' 'UN' 0.;
  1817.  
  1818. * TRTF=VRAI On range la table 'rtf' dans la table 'rv' pour bénéficier
  1819. * du parallélisme par équation de EXEC
  1820. * TRTF=FAUX On traite séparément 'rtf' donc séquentiellement
  1821.  
  1822. 'SI' (TBT.'TRTF') ;
  1823. rtf = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  1824. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS'
  1825. * 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 0. 'INCO' 'TF'
  1826. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'TF'
  1827. 'OPTI' 'EFM1' 'CENTREE'
  1828. 'ZONE' $vtf 'OPER' 'FIMP' 'STF' 'INCO' 'TF'
  1829. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  1830. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'TFNM' DTX 'INCO' 'TF'
  1831. ;
  1832. 'SINON' ;
  1833.  
  1834. rtf = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  1835. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS'
  1836. * 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 0. 'INCO' 'TF'
  1837. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'TF'
  1838. 'OPTI' 'EFM1' 'CENTREE'
  1839. 'ZONE' $vtf 'OPER' 'FIMP' 'STF' 'INCO' 'TF'
  1840. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  1841. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'TFNM' DTX 'INCO' 'TF'
  1842. ;
  1843. 'FINSI' ;
  1844.  
  1845. rtf.'PASDETPS' = rv.'PASDETPS' ;
  1846.  
  1847. 'SI' TBT.'TPAROIF' ;
  1848. 'SI' TBT.'THERCO' ;
  1849. rtf = 'EQEX' rtf
  1850. 'OPTI' 'EF' 'CENTREE' 'IMPL'
  1851. 'ZONE' (GEO.'$paroif') 'OPER' 'MDIA' 'KHEW' 'INCO' 'TF' ;
  1852. rtf = 'EQEX' rtf
  1853. 'OPTI' 'EF' 'CENTREE' 'IMPL'
  1854. 'ZONE' (GEO.'$paroif') 'OPER' 'MDIA' 'LHEW' 'INCO' 'TP' 'TF';
  1855. 'SINON' ;
  1856. rtf = 'EQEX' rtf
  1857. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  1858. 'ZONE'(GEO.'$paroif') 'OPER' 'ECHI' 'KHEW' 'TBPW' 'INCO' 'TF';
  1859. 'FINSI' ;
  1860. 'FINSI' ;
  1861.  
  1862. * XFIMP 4 Tf ; Flux de Chaleur imposés
  1863. 'SI' TFIMP ;
  1864. NBFIMP=dime (rxt.'XFIMP') ;
  1865. ifimp=INDEX (rxt.'XFIMP') ;
  1866. REPETER BBFIMP NBFIMP ;
  1867. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  1868. $mfpi=Bfimp.'$mfpi' ;
  1869. CKqt =(Bfimp.'Kqt') ;
  1870. rtf = 'EQEX' rtf
  1871. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  1872. 'ZONE' $mfpi 'OPER' 'FIMP' CKqt 'INCO' 'TF' ;
  1873. FIN BBFIMP ;
  1874. 'FINSI' ;
  1875. * XFIMP 4 Tf ; Flux de Chaleur imposés
  1876.  
  1877. 'SI' TTIMP ;
  1878. NBTIMP=dime (rxt.'TIMP') ;
  1879. itimp=INDEX (rxt.'TIMP') ;
  1880. REPETER BBTIMP NBTIMP ;
  1881. Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ;
  1882. $mtpi=Btimp.'$mtpi' ;
  1883. CKHE1 =(Btimp.'KHE1') ;
  1884. CTBP1 =(Btimp.'TBP1') ;
  1885. rtf = 'EQEX' rtf
  1886. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  1887. 'ZONE' $mtpi 'OPER' 'ECHI' CKHE1 CTBP1 'INCO' 'TF' ;
  1888. FIN BBTIMP ;
  1889. 'FINSI' ;
  1890.  
  1891. 'SI' TBT.'TECHANP' ;
  1892. rtf = 'EQEX' rtf
  1893. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  1894. 'ZONE' $mtp0 'OPER' 'ECHI' 'KHE0' 'TBP0' 'INCO' 'TF' ;
  1895. 'FINSI' ;
  1896.  
  1897. * - Initialisation du terme Source STF
  1898. Si (non(exist tic 'STF'));
  1899. tic.'STF' = 0.0 ;
  1900. Finsi ;
  1901.  
  1902. rtf.inco = tic ;
  1903. rtf.'METHINV'.TYPINV=TBT.'TYPINV' ;
  1904. rtf.'METHINV'.TYPRENU=TBT.'RENU' ;
  1905. rtf.'METHINV'.IMPINV=TBT.'nimpr' ;
  1906. rtf.'METHINV'.NITMAX=NTIT ;
  1907. rtf.'METHINV'.PRECOND=3 ;
  1908. rtf.'METHINV'.'FCPRECI' = FCPRECI ;
  1909. rtf.'METHINV'.'FCPRECT' = FCPRECT ;
  1910. rtf.'METHINV'.'CALPREC' = calprec ;
  1911. rtf.'METHINV'.RESID = EPSS ;
  1912.  
  1913.  
  1914. *----------------------------------------------------------------------
  1915. * Definition du minimum pour recalcul du preconditionnement
  1916. *
  1917. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1918. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  1919. * rtf.'MINPREC' = rtf.'METHINV'.NITMAX ;
  1920. * 'FINSI' ;
  1921. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1922.  
  1923. *----------------------------------------------------------
  1924. * ---- EQUATION SUR LA DENSITE DE VAPEUR
  1925. * Formulation conservative - Decentrement SUPG
  1926. * BRECHE : traitee comme CLIM
  1927. * CONDENSATION : traitee par 'ECHI' sur modele PAROIC
  1928. * TRrvap=VRAI On range la table 'Rrrvap' dans la table 'rv' pour bénéficier
  1929. * du parallélisme par équation de EXEC
  1930. * TRrvap=FAUX On traite séparément 'Rrvap' donc séquentiellement
  1931.  
  1932.  
  1933. 'SI' TBT.'VAPEUR' ;
  1934.  
  1935. 'SI' (TBT.'TRrvap') ;
  1936. Rrvap = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  1937. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  1938. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RVP'
  1939. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RVP'
  1940. 'OPTI' 'EFM1' 'CENTREE'
  1941. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'RVPNM' DTX 'INCO' 'RVP' ;
  1942. 'SINON' ;
  1943. Rrvap = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  1944. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  1945. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RVP'
  1946. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RVP'
  1947. 'OPTI' 'EFM1' 'CENTREE'
  1948. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'RVPNM' DTX 'INCO' 'RVP' ;
  1949. 'FINSI' ;
  1950.  
  1951. Rrvap.'PASDETPS' = rv.'PASDETPS' ;
  1952.  
  1953. 'SI' TBT.'TPAROIF' ;
  1954. Rrvap = 'EQEX' Rrvap
  1955. 'OPTI' 'EFM1' 'CENTREE'
  1956. 'ZONE' (GEO.'$paroif') 'OPER' 'ECHI' 'KKCW' 'ROVIW' 'INCO' 'RVP';
  1957. 'FINSI' ;
  1958.  
  1959. 'SI' TTIMP ;
  1960. NBTIMP=dime (rxt.'TIMP') ;
  1961. itimp=INDEX (rxt.'TIMP') ;
  1962. REPETER BBTIMP NBTIMP ;
  1963. Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ;
  1964. $mtpi=Btimp.'$mtpi' ;
  1965. CKKC1 =Btimp.'KKC1' ;
  1966. CROVI1=Btimp.'ROVI1' ;
  1967. Rrvap = 'EQEX' Rrvap
  1968. 'OPTI' 'EFM1' 'CENTREE'
  1969. 'ZONE' $mtpi 'OPER' 'ECHI' CKKC1 CROVI1 'INCO' 'RVP' ;
  1970. FIN BBTIMP ;
  1971. 'FINSI' ;
  1972.  
  1973. 'SI' TBT.'TECHANP' ;
  1974. Rrvap = 'EQEX' Rrvap
  1975. 'OPTI' 'EFM1' 'CENTREE'
  1976. 'ZONE' (GEO.'$mtp0') 'OPER' 'ECHI' 'KKC0' 'ROVI0' 'INCO' 'RVP';
  1977. 'FINSI' ;
  1978.  
  1979. * XFIMP 4 RVP ; Flux de masse vapeur imposés
  1980. 'SI' TFIMP ;
  1981. NBFIMP=dime (rxt.'XFIMP') ;
  1982. ifimp=INDEX (rxt.'XFIMP') ;
  1983. REPETER BBFIMP NBFIMP ;
  1984. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  1985. $mfpi=Bfimp.'$mfpi' ;
  1986. CKqeau =(Bfimp.'Kqeau') ;
  1987. Rrvap = 'EQEX' Rrvap
  1988. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  1989. 'ZONE' $mfpi 'OPER' 'FIMP' CKqeau 'INCO' 'RVP' ;
  1990. FIN BBFIMP ;
  1991. 'FINSI' ;
  1992. * XFIMP 4 RVP ; Flux de masse vapeur imposés
  1993.  
  1994. Rrvap.inco = tic ;
  1995. Rrvap.'METHINV'.TYPINV=TBT.'TYPINV' ;
  1996. Rrvap.'METHINV'.TYPRENU=TBT.'RENU' ;
  1997. Rrvap.'METHINV'.IMPINV=TBT.'nimpr' ;
  1998. Rrvap.'METHINV'.NITMAX=NTIT ;
  1999. Rrvap.'METHINV'.PRECOND=3 ;
  2000. Rrvap.'METHINV'.'FCPRECI' = FCPRECI ;
  2001. Rrvap.'METHINV'.'FCPRECT' = FCPRECT ;
  2002. Rrvap.'METHINV'.'CALPREC' = calprec ;
  2003. Rrvap.'METHINV'.RESID = EPSS ;
  2004.  
  2005. *----------------------------------------------------------------------
  2006. * Definition du minimum pour recalcul du preconditionnement
  2007. *
  2008. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2009. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2010. * Rrvap.'MINPREC' = Rrvap.'METHINV'.NITMAX ;
  2011. * 'FINSI' ;
  2012. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2013. 'FINSI' ;
  2014.  
  2015. *----------------------------------------------------------
  2016. * EQUATIONS SUR LA DENSITE HELIUM
  2017. * Formulation conservative - Decentrement SUPG
  2018. * BRECHE : condition aux limites
  2019. * TRrhe=VRAI On range la table 'Rrhe' dans la table 'rv' pour bénéficier
  2020. * du parallélisme par équation de EXEC
  2021. * TRrhe=FAUX On traite séparément 'Rrhe' donc séquentiellement
  2022.  
  2023.  
  2024. 'SI' TBT.'THE' ;
  2025.  
  2026. 'SI' (TBT.'TRrhe') ;
  2027. Rrhe = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2028. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2029. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RHE'
  2030. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RHE'
  2031. 'OPTI' 'EFM1' 'CENTREE'
  2032. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RHEM' DTX 'INCO' 'RHE' ;
  2033. 'SINON' ;
  2034. Rrhe = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2035. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2036. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RHE'
  2037. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RHE'
  2038. 'OPTI' 'EFM1' 'CENTREE'
  2039. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RHEM' DTX 'INCO' 'RHE' ;
  2040. 'FINSI' ;
  2041.  
  2042. Rrhe.'PASDETPS' = rv.'PASDETPS' ;
  2043.  
  2044. * XFIMP 4 RHE ; Flux de masse Hélium imposé
  2045. 'SI' TFIMP ;
  2046. NBFIMP=dime (rxt.'XFIMP') ;
  2047. ifimp=INDEX (rxt.'XFIMP') ;
  2048. REPETER BBFIMP NBFIMP ;
  2049. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2050. $mfpi=Bfimp.'$mfpi' ;
  2051. CKqhe =(Bfimp.'Kqhe') ;
  2052. Rrhe = 'EQEX' Rrhe
  2053. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2054. 'ZONE' $mfpi 'OPER' 'FIMP' CKqhe 'INCO' 'RHE' ;
  2055. FIN BBFIMP ;
  2056. 'FINSI' ;
  2057. * XFIMP 4 RHE ; Flux de masse Hélium imposé
  2058.  
  2059. Rrhe.inco = tic ;
  2060. Rrhe.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2061. Rrhe.'METHINV'.TYPRENU=TBT.'RENU' ;
  2062. Rrhe.'METHINV'.IMPINV=TBT.'nimpr' ;
  2063. Rrhe.'METHINV'.NITMAX=NTIT ;
  2064. Rrhe.'METHINV'.PRECOND=3 ;
  2065. Rrhe.'METHINV'.'FCPRECI' = FCPRECI ;
  2066. Rrhe.'METHINV'.'FCPRECT' = FCPRECT ;
  2067. Rrhe.'METHINV'.'CALPREC' = calprec ;
  2068. Rrhe.'METHINV'.RESID = EPSS ;
  2069.  
  2070. *----------------------------------------------------------------------
  2071. * Definition du minimum pour recalcul du preconditionnement
  2072. *
  2073. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2074. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2075. * Rrhe.'MINPREC' = Rrhe.'METHINV'.NITMAX ;
  2076. * 'FINSI' ;
  2077. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2078. 'FINSI' ;
  2079.  
  2080. *----------------------------------------------------------
  2081. * EQUATIONS SUR LA DENSITE HYDROGENE
  2082. * Formulation conservative - Decentrement SUPG
  2083. * BRECHE : condition aux limites
  2084. * TRrh2=VRAI On range la table 'Rrh2' dans la table 'rv' pour bénéficier
  2085. * du parallélisme par équation de EXEC
  2086. * TRrh2=FAUX On traite séparément 'Rrh2' donc séquentiellement
  2087.  
  2088.  
  2089. 'SI' TBT.'TH2' ;
  2090.  
  2091. 'SI' (TBT.'TRrh2') ;
  2092. Rrh2 = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2093. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2094. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RH2'
  2095. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RH2'
  2096. 'OPTI' 'EFM1' 'CENTREE'
  2097. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RH2M' DTX 'INCO' 'RH2' ;
  2098. 'SINON' ;
  2099. Rrh2 = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2100. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2101. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RH2'
  2102. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RH2'
  2103. 'OPTI' 'EFM1' 'CENTREE'
  2104. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RH2M' DTX 'INCO' 'RH2' ;
  2105. 'FINSI' ;
  2106.  
  2107. Rrh2.'PASDETPS' = rv.'PASDETPS' ;
  2108.  
  2109. * XFIMP 4 RH2 ; Flux de masse H2 imposé
  2110. 'SI' TFIMP ;
  2111. NBFIMP=dime (rxt.'XFIMP') ;
  2112. ifimp=INDEX (rxt.'XFIMP') ;
  2113. REPETER BBFIMP NBFIMP ;
  2114. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2115. $mfpi=Bfimp.'$mfpi' ;
  2116. CKqh2 =(Bfimp.'Kqh2') ;
  2117. Rrh2 = 'EQEX' Rrh2
  2118. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2119. 'ZONE' $mfpi 'OPER' 'FIMP' CKqh2 'INCO' 'RH2' ;
  2120. FIN BBFIMP ;
  2121. 'FINSI' ;
  2122. * XFIMP 4 RH2 ; Flux de masse H2 imposé
  2123.  
  2124. Rrh2.inco = tic ;
  2125. Rrh2.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2126. Rrh2.'METHINV'.TYPRENU=TBT.'RENU' ;
  2127. Rrh2.'METHINV'.IMPINV=TBT.'nimpr' ;
  2128. Rrh2.'METHINV'.NITMAX=NTIT ;
  2129. Rrh2.'METHINV'.PRECOND=3 ;
  2130. Rrh2.'METHINV'.'FCPRECI' = FCPRECI ;
  2131. Rrh2.'METHINV'.'FCPRECT' = FCPRECT ;
  2132. Rrh2.'METHINV'.'CALPREC' = calprec ;
  2133. Rrh2.'METHINV'.RESID = EPSS ;
  2134.  
  2135. *----------------------------------------------------------------------
  2136. * Definition du minimum pour recalcul du preconditionnement
  2137. *
  2138. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2139. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2140. * Rrh2.'MINPREC' = Rrh2.'METHINV'.NITMAX ;
  2141. * 'FINSI' ;
  2142. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2143. 'FINSI' ;
  2144.  
  2145. *----------------------------------------------------------
  2146. * EQUATIONS SUR LA DENSITE OXYGENE
  2147. * Formulation conservative - Decentrement SUPG
  2148. * BRECHE : condition aux limites
  2149. * TRro2=VRAI On range la table 'Rro2' dans la table 'rv' pour bénéficier
  2150. * du parallélisme par équation de EXEC
  2151. * TRro2=FAUX On traite séparément 'Rro2' donc séquentiellement
  2152.  
  2153.  
  2154. 'SI' TBT.'TO2' ;
  2155.  
  2156. 'SI' (TBT.'TRro2') ;
  2157. Rro2 = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2158. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2159. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RO2'
  2160. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RO2'
  2161. 'OPTI' 'EFM1' 'CENTREE'
  2162. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RO2M' DTX 'INCO' 'RO2' ;
  2163. 'SINON' ;
  2164. Rro2 = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2165. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2166. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RO2'
  2167. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RO2'
  2168. 'OPTI' 'EFM1' 'CENTREE'
  2169. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RO2M' DTX 'INCO' 'RO2' ;
  2170. 'FINSI' ;
  2171.  
  2172. Rro2.'PASDETPS' = rv.'PASDETPS' ;
  2173.  
  2174. * XFIMP 4 RO2 ; Flux de masse O2 imposé
  2175. 'SI' TFIMP ;
  2176. NBFIMP=dime (rxt.'XFIMP') ;
  2177. ifimp=INDEX (rxt.'XFIMP') ;
  2178. REPETER BBFIMP NBFIMP ;
  2179. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2180. $mfpi=Bfimp.'$mfpi' ;
  2181. CKqo2 =(Bfimp.'Kqo2') ;
  2182. Rro2 = 'EQEX' Rro2
  2183. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2184. 'ZONE' $mfpi 'OPER' 'FIMP' CKqo2 'INCO' 'RO2' ;
  2185. FIN BBFIMP ;
  2186. 'FINSI' ;
  2187. * XFIMP 4 RO2 ; Flux de masse O2 imposé
  2188.  
  2189. Rro2.inco = tic ;
  2190. Rro2.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2191. Rro2.'METHINV'.TYPRENU=TBT.'RENU' ;
  2192. Rro2.'METHINV'.IMPINV=TBT.'nimpr' ;
  2193. Rro2.'METHINV'.NITMAX=NTIT ;
  2194. Rro2.'METHINV'.PRECOND=3 ;
  2195. Rro2.'METHINV'.'FCPRECI' = FCPRECI ;
  2196. Rro2.'METHINV'.'FCPRECT' = FCPRECT ;
  2197. Rro2.'METHINV'.'CALPREC' = calprec ;
  2198. Rro2.'METHINV'.RESID = EPSS ;
  2199.  
  2200. *----------------------------------------------------------------------
  2201. * Definition du minimum pour recalcul du preconditionnement
  2202. *
  2203. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2204. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2205. * Rro2.'MINPREC' = Rro2.'METHINV'.NITMAX ;
  2206. * 'FINSI' ;
  2207. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2208. 'FINSI' ;
  2209.  
  2210. *----------------------------------------------------------
  2211. * EQUATIONS SUR LA DENSITE AZOTE
  2212. * Formulation conservative - Decentrement SUPG
  2213. * BRECHE : condition aux limites
  2214. * TRrn2=VRAI On range la table 'Rrn2' dans la table 'rv' pour bénéficier
  2215. * du parallélisme par équation de EXEC
  2216. * TRrn2=FAUX On traite séparément 'Rrn2' donc séquentiellement
  2217.  
  2218.  
  2219. 'SI' TBT.'TN2' ;
  2220.  
  2221. 'SI' (TBT.'TRrn2') ;
  2222. Rrn2 = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2223. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2224. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RN2'
  2225. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RN2'
  2226. 'OPTI' 'EFM1' 'CENTREE'
  2227. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RN2M' DTX 'INCO' 'RN2' ;
  2228. 'SINON' ;
  2229. Rrn2 = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2230. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2231. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RN2'
  2232. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RN2'
  2233. 'OPTI' 'EFM1' 'CENTREE'
  2234. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RN2M' DTX 'INCO' 'RN2' ;
  2235. 'FINSI' ;
  2236.  
  2237. Rrn2.'PASDETPS' = rv.'PASDETPS' ;
  2238.  
  2239.  
  2240. * 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG'
  2241. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUT' 'UN' 0.0 'INCO' 'RN2'
  2242. *mess ' Option NOCONS RN2 pour test branchee AREVOIR ' ;
  2243.  
  2244. * XFIMP 4 RN2 ; Flux de masse N2 imposé
  2245. 'SI' TFIMP ;
  2246. NBFIMP=dime (rxt.'XFIMP') ;
  2247. ifimp=INDEX (rxt.'XFIMP') ;
  2248. REPETER BBFIMP NBFIMP ;
  2249. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2250. $mfpi=Bfimp.'$mfpi' ;
  2251. CKqn2 =(Bfimp.'Kqn2') ;
  2252. Rrn2 = 'EQEX' Rrn2
  2253. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2254. 'ZONE' $mfpi 'OPER' 'FIMP' CKqn2 'INCO' 'RN2' ;
  2255. FIN BBFIMP ;
  2256. 'FINSI' ;
  2257. * XFIMP 4 RN2 ; Flux de masse N2 imposé
  2258.  
  2259. Rrn2.inco = tic ;
  2260. Rrn2.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2261. Rrn2.'METHINV'.TYPRENU=TBT.'RENU' ;
  2262. Rrn2.'METHINV'.IMPINV=TBT.'nimpr' ;
  2263. Rrn2.'METHINV'.NITMAX=NTIT ;
  2264. Rrn2.'METHINV'.PRECOND=3 ;
  2265. Rrn2.'METHINV'.'FCPRECI' = FCPRECI ;
  2266. Rrn2.'METHINV'.'FCPRECT' = FCPRECT ;
  2267. Rrn2.'METHINV'.'CALPREC' = calprec ;
  2268. Rrn2.'METHINV'.RESID = EPSS ;
  2269.  
  2270.  
  2271. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2272. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2273. * Rrn2.'MINPREC' = Rrn2.'METHINV'.NITMAX ;
  2274. * 'FINSI' ;
  2275. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2276. 'FINSI' ;
  2277.  
  2278. *----------------------------------------------------------
  2279. * EQUATIONS SUR LA DENSITE DIOXYDE DE CARBONE
  2280. * Formulation conservative - Decentrement SUPG
  2281. * BRECHE : condition aux limites
  2282. * TRrco2=VRAI On range la table 'Rrco2' dans la table 'rv' pour bénéficier
  2283. * du parallélisme par équation de EXEC
  2284. * TRrco2=FAUX On traite séparément 'Rrco2' donc séquentiellement
  2285.  
  2286.  
  2287. 'SI' TBT.'TCO2' ;
  2288.  
  2289. 'SI' (TBT.'TRrco2') ;
  2290. Rrco2 = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2291. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2292. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RCO2'
  2293. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RCO2'
  2294. 'OPTI' 'EFM1' 'CENTREE'
  2295. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RCO2M' DTX 'INCO' 'RCO2' ;
  2296. 'SINON' ;
  2297. Rrco2 = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2298. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2299. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RCO2'
  2300. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RCO2'
  2301. 'OPTI' 'EFM1' 'CENTREE'
  2302. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RCO2M' DTX 'INCO' 'RCO2' ;
  2303. 'FINSI' ;
  2304.  
  2305. Rrco2.'PASDETPS' = rv.'PASDETPS' ;
  2306.  
  2307. * XFIMP 4 RCO2 ; Flux de masse CO2 imposé
  2308. 'SI' TFIMP ;
  2309. NBFIMP=dime (rxt.'XFIMP') ;
  2310. ifimp=INDEX (rxt.'XFIMP') ;
  2311. REPETER BBFIMP NBFIMP ;
  2312. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2313. $mfpi=Bfimp.'$mfpi' ;
  2314. CKqco2 =(Bfimp.'Kqco2') ;
  2315. Rrco2 = 'EQEX' Rrco2
  2316. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2317. 'ZONE' $mfpi 'OPER' 'FIMP' CKqco2 'INCO' 'RCO2';
  2318. FIN BBFIMP ;
  2319. 'FINSI' ;
  2320. * XFIMP 4 RCO2 ; Flux de masse CO2 imposé
  2321.  
  2322. Rrco2.inco = tic ;
  2323. Rrco2.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2324. Rrco2.'METHINV'.TYPRENU=TBT.'RENU' ;
  2325. Rrco2.'METHINV'.IMPINV=TBT.'nimpr' ;
  2326. Rrco2.'METHINV'.NITMAX=NTIT ;
  2327. Rrco2.'METHINV'.PRECOND=3 ;
  2328. Rrco2.'METHINV'.'FCPRECI' = FCPRECI ;
  2329. Rrco2.'METHINV'.'FCPRECT' = FCPRECT ;
  2330. Rrco2.'METHINV'.'CALPREC' = calprec ;
  2331. Rrco2.'METHINV'.RESID = EPSS ;
  2332.  
  2333.  
  2334. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2335. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2336. * Rrco2.'MINPREC' = Rrco2.'METHINV'.NITMAX ;
  2337. * 'FINSI' ;
  2338. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2339. 'FINSI' ;
  2340.  
  2341. *----------------------------------------------------------
  2342. * EQUATIONS SUR LA DENSITE DE l'AIR (Nième équation) TCO2AIR
  2343. * Formulation conservative - Decentrement SUPG
  2344. * BRECHE : condition aux limites
  2345. * TRrair=VRAI On range la table 'Rrair' dans la table 'rv' pour bénéficier
  2346. * du parallélisme par équation de EXEC
  2347. * TRrair=FAUX On traite séparément 'Rrair' donc séquentiellement
  2348.  
  2349.  
  2350. 'SI' TBT.'TAIR' ;
  2351.  
  2352. 'SI' (TBT.'TRrair') ;
  2353. Rrair = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2354. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2355. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RAIR'
  2356. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RAIR'
  2357. 'OPTI' 'EFM1' 'CENTREE'
  2358. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RAIRM' DTX 'INCO' 'RAIR' ;
  2359. 'SINON' ;
  2360. Rrair = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2361. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2362. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RAIR'
  2363. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RAIR'
  2364. 'OPTI' 'EFM1' 'CENTREE'
  2365. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RAIRM' DTX 'INCO' 'RAIR' ;
  2366. 'FINSI' ;
  2367.  
  2368. Rrair.'PASDETPS' = rv.'PASDETPS' ;
  2369.  
  2370. * XFIMP 4 RAIR ; Flux de masse Air imposé
  2371. 'SI' TFIMP ;
  2372. NBFIMP=dime (rxt.'XFIMP') ;
  2373. ifimp=INDEX (rxt.'XFIMP') ;
  2374. REPETER BBFIMP NBFIMP ;
  2375. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2376. $mfpi=Bfimp.'$mfpi' ;
  2377. CKqair =(Bfimp.'Kqair') ;
  2378. Rrair = 'EQEX' Rrair
  2379. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2380. 'ZONE' $mfpi 'OPER' 'FIMP' CKqair 'INCO' 'RAIR';
  2381. FIN BBFIMP ;
  2382. 'FINSI' ;
  2383. * XFIMP 4 RCO2 ; Flux de masse CO2 imposé
  2384.  
  2385. Rrair.inco = tic ;
  2386. Rrair.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2387. Rrair.'METHINV'.TYPRENU=TBT.'RENU' ;
  2388. Rrair.'METHINV'.IMPINV=TBT.'nimpr' ;
  2389. Rrair.'METHINV'.NITMAX=NTIT ;
  2390. Rrair.'METHINV'.PRECOND=3 ;
  2391. Rrair.'METHINV'.'FCPRECI' = FCPRECI ;
  2392. Rrair.'METHINV'.'FCPRECT' = FCPRECT ;
  2393. Rrair.'METHINV'.'CALPREC' = calprec ;
  2394. Rrair.'METHINV'.RESID = EPSS ;
  2395.  
  2396.  
  2397. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2398. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2399. * Rrair.'MINPREC' = Rrair.'METHINV'.NITMAX ;
  2400. * 'FINSI' ;
  2401. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2402. 'FINSI' ;
  2403.  
  2404. *----------------------------------------------------------
  2405. * EQUATIONS SUR LA DENSITE MONOXYDE DE CARBONE
  2406. * Formulation conservative - Decentrement SUPG
  2407. * BRECHE : condition aux limites
  2408. * TRrco=VRAI On range la table 'Rrco' dans la table 'rv' pour bénéficier
  2409. * du parallélisme par équation de EXEC
  2410. * TRrco=FAUX On traite séparément 'Rrco' donc séquentiellement
  2411.  
  2412.  
  2413. 'SI' TBT.'TCO' ;
  2414.  
  2415. 'SI' (TBT.'TRrco') ;
  2416. Rrco = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2417. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2418. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RCO'
  2419. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RCO'
  2420. 'OPTI' 'EFM1' 'CENTREE'
  2421. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RCOM' DTX 'INCO' 'RCO' ;
  2422. 'SINON' ;
  2423. Rrco = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2424. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2425. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RCO'
  2426. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RCO'
  2427. 'OPTI' 'EFM1' 'CENTREE'
  2428. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RCOM' DTX 'INCO' 'RCO' ;
  2429. 'FINSI' ;
  2430.  
  2431. Rrco.'PASDETPS' = rv.'PASDETPS' ;
  2432.  
  2433. * XFIMP 4 RCO ; Flux de masse CO imposé
  2434. 'SI' TFIMP ;
  2435. NBFIMP=dime (rxt.'XFIMP') ;
  2436. ifimp=INDEX (rxt.'XFIMP') ;
  2437. REPETER BBFIMP NBFIMP ;
  2438. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2439. $mfpi=Bfimp.'$mfpi' ;
  2440. CKqco =(Bfimp.'Kqco') ;
  2441. Rrco = 'EQEX' Rrco
  2442. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2443. 'ZONE' $mfpi 'OPER' 'FIMP' CKqco 'INCO' 'RCO' ;
  2444. FIN BBFIMP ;
  2445. 'FINSI' ;
  2446. * XFIMP 4 RCO ; Flux de masse CO imposé
  2447.  
  2448. Rrco.inco = tic ;
  2449. Rrco.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2450. Rrco.'METHINV'.TYPRENU=TBT.'RENU' ;
  2451. Rrco.'METHINV'.IMPINV=TBT.'nimpr' ;
  2452. Rrco.'METHINV'.NITMAX=NTIT ;
  2453. Rrco.'METHINV'.PRECOND=3 ;
  2454. Rrco.'METHINV'.'FCPRECI' = FCPRECI ;
  2455. Rrco.'METHINV'.'FCPRECT' = FCPRECT ;
  2456. Rrco.'METHINV'.'CALPREC' = calprec ;
  2457. Rrco.'METHINV'.RESID = EPSS ;
  2458.  
  2459.  
  2460. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2461. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2462. * Rrco.'MINPREC' = Rrco.'METHINV'.NITMAX ;
  2463. * 'FINSI' ;
  2464. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2465. 'FINSI' ;
  2466.  
  2467. *----------------------------------------------------------
  2468. * EQUATION DE LA CHALEUR POUR LA THERMIQUE PAROI TP
  2469. * CONDENSATION ET CONVECTION : densite de flux imposee FIMP
  2470. * sur modele PAROIC1
  2471. *
  2472. 'SI' TBT.'THERMP' ;
  2473.  
  2474. 'SI' TBT.'THERCO' ;
  2475. rtp = rtf ;
  2476. 'SINON' ;
  2477. rtp= 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0 ;
  2478. rtp.'METHINV'.TYPINV=2 ;
  2479. rtp.'METHINV'.TYPRENU=TBT.'RENU' ;
  2480. rtp.'METHINV'.IMPINV=TBT.'nimpr' ;
  2481. rtp.'METHINV'.NITMAX=NTIT ;
  2482. rtp.'METHINV'.PRECOND=3 ;
  2483. rtp.'METHINV'.'FCPRECI' = FCPRECI ;
  2484. rtp.'METHINV'.'FCPRECT' = FCPRECT ;
  2485. rtp.'METHINV'.'CALPREC' = calprec ;
  2486. rtp.'METHINV'.RESID = EPSS ;
  2487. 'FINSI' ;
  2488.  
  2489. 'SI' (NON TPAROIS) ;
  2490. $vtp=GEO.'$vtp' ;
  2491. rtp= 'EQEX' rtp
  2492. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'CENTREE'
  2493. 'ZONE' $vtp 'OPER' 'LAPN' 'LAMBDA' 'INCO' 'TP'
  2494. 'OPTI' 'EFM1' 'CENTREE'
  2495. 'ZONE' $vtp 'OPER' 'DFDT' 'ROCP' 'TPNM' DTX 'INCO' 'TP';
  2496. 'SINON' ;
  2497. NPAR=dime rxt.'PAROIS' ;
  2498. ipr=index (rxt.'PAROIS') ;
  2499. Repeter BPRS NPAR ;
  2500. Parois=rxt.'PAROIS'.(ipr.&BPRS) ;
  2501. $vtpi=GEO.(ipr.&BPRS).'$vtp' ;
  2502. CLAMBDA=chai 'LAMBDA' &BPRS ;
  2503. CROCP =chai 'ROCP' &BPRS ;
  2504. rtp= 'EQEX' rtp
  2505. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'CENTREE'
  2506. 'ZONE' $vtpi 'OPER' 'LAPN' CLAMBDA 'INCO' 'TP'
  2507. 'OPTI' 'EFM1' 'CENTREE'
  2508. 'ZONE' $vtpi 'OPER' 'DFDT' CROCP 'TPNM' DTX 'INCO' 'TP';
  2509. FIN BPRS ;
  2510. 'FINSI' ;
  2511.  
  2512. 'SI' TBT.'ECHEXT' ;
  2513.  
  2514. hxtc=tic.'HEXT' ;
  2515. txtc=tic.'TPEXT' ;
  2516. thx=type hxtc ;
  2517. ttx=type txtc; ;
  2518.  
  2519. Si(EGA thx 'CHPOINT') ;
  2520. hxtc='NOEL' (GEO.'$parext') hxtc ;
  2521. Finsi ;
  2522. ;
  2523. Si(EGA ttx 'CHPOINT') ;
  2524. txtc='NOEL' (GEO.'$parext') txtc ;
  2525. Finsi ;
  2526.  
  2527. tic.'HEXTc'=hxtc ;
  2528. tic.'TPEXTc'=txtc ;
  2529.  
  2530. rtp= 'EQEX' rtp
  2531. 'OPTI' 'EFM1' 'CENTREE'
  2532. 'ZONE' (GEO.'$parext') 'OPER' 'ECHI' 'HEXTc' 'TPEXTc' 'INCO' 'TP' ;
  2533. 'FINSI' ;
  2534.  
  2535. 'SI' TBT . 'TPAROIF' ;
  2536. 'SI' TBT . 'THERCO' ;
  2537. rtp = 'EQEX' rtp
  2538. 'OPTI' 'EF' 'CENTREE' 'IMPL'
  2539. 'ZONE' (GEO.'$paroif') 'OPER' 'MDIA' 'KHW' 'INCO' 'TP' ;
  2540. rtp = 'EQEX' rtp
  2541. 'OPTI' 'EF' 'CENTREE' 'IMPL'
  2542. 'ZONE' (GEO.'$paroif') 'OPER' 'MDIA' 'LHW' 'INCO' 'TF' 'TP' ;
  2543. 'SINO' ;
  2544. 'SI' (TBT . 'VAPEUR') ;
  2545. rtp = 'EQEX' rtp
  2546. 'OPTI' 'EFM1' 'CENTREE'
  2547. 'ZONE' (GEO.'$paroif') 'OPER' 'FIMP' 'FHPW' 'INCO' 'TP' ;
  2548. 'SINO' ;
  2549. rtp = 'EQEX' rtp
  2550. 'OPTI' 'EFM1' 'CENTREE'
  2551. 'ZONE' (GEO.'$paroif') 'OPER' 'ECHI' 'KHW' 'TBFW' 'INCO' 'TP';
  2552. 'FINSI' ;
  2553. 'FINSI' ;
  2554. 'FINSI' ;
  2555.  
  2556. rtp.'PASDETPS' = rv.'PASDETPS' ;
  2557. rtp.inco = tic ;
  2558.  
  2559. 'SI' TBT.'THERCO'; rtf = rtp ; 'FINSI' ;
  2560.  
  2561. 'FINSI' ;
  2562.  
  2563. *-----------------------------------------------------------------------
  2564. * TRAITEMENT DE LA CONDENSATION EN MASSE
  2565. * Modif FP 18/05/00.
  2566.  
  2567. 'SI' (TBT.'VERSION' '>EG' 1) ;
  2568. * Variables :
  2569. * -----------
  2570. * rrliq : table de résolution.
  2571. * Les variables ci-dessous sont dans la bable des inconnues tic.
  2572. * RLIQ : masse volumique de liquide en suspension à l'instant N.
  2573. * RLIQM : masse volumique de liquide drainé à l'instant N - 1.
  2574. * RBRO : masse volumique de liquide en suspension à l'instant N.
  2575. * SLIQ : terme source lié à la formation de liquide en suspension.
  2576. * SRVL : terme source dans l'équation sur la masse volumique de
  2577. * vapeur (SRVL = -SLIQ).
  2578. * STL : terme source dans l'équation de la température
  2579. * (STL = Lv*SLIQ/Rho/Cp).
  2580.  
  2581. 'SI' ('EXISTE' tic 'RLIQ');
  2582. ma = 'EXTR' tic.'RLIQ' MAILLAGE ;
  2583. ms = 'DOMA' $vtf 'SOMMET' ;
  2584. 'ELIMINER' (ma et ms) epsi ;
  2585. tic.'RLIQ' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'RLIQ');
  2586. 'SINON';
  2587. tic.'RLIQ' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0.;
  2588. 'FINSI';
  2589. 'SI' ('EXISTE' tic 'RBRO');
  2590. ma = 'EXTR' tic.'RBRO' MAILLAGE ;
  2591. ms = 'DOMA' $vtf 'SOMMET' ;
  2592. 'ELIMINER' (ma et ms) epsi ;
  2593. tic.'RBRO' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'RBRO');
  2594. 'SINON';
  2595. tic.'RBRO' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0.;
  2596. 'FINSI';
  2597. 'FINSI';
  2598.  
  2599. *-----------------------------------------------------------------------
  2600. * TRAITEMENT DE L'ASPERSION C. CAROLI
  2601. *
  2602. 'SI' TBT.'ASPER' ;
  2603.  
  2604. ********************** EQEX VN + UN ***********************
  2605. * nup = 1.00e-20 ;
  2606. nup = 1.00e-10 ;
  2607. rod = rxt.'rod' ;
  2608. gdrz = (-9.81 '*' (rod-Rho0) '/' rod) ;
  2609.  
  2610. rvn = 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  2611. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG'
  2612. 'ZONE' $vtf 'OPER' 'NS' 1. 'VN' nup 'GDR' 'INCO' 'VN'
  2613. 'OPTI' 'EFM1' 'CENTREE'
  2614. * 'ZONE' $vtf 'OPER' 'DFDT' 'KDIS' 'UNM' 1.0 'INCO' 'VN'
  2615. * 'ZONE' $vtf 'OPER' 'PENCECHI' 'KDIS' 'UNM' 1.0 'INCO' 'VN'
  2616. 'ZONE' $vtf 'OPER' 'PENCECHI' 'KDIS' 'UN' 1.0 'INCO' 'VN'
  2617. 'OPTI' 'EFM1' 'CENTREE'
  2618. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'VNM' DTX 'INCO' 'VN';
  2619. * Utilisé par PENCECHI
  2620. rvn . 'TBT' = tbt ;
  2621. 'SI' DIM3D ;
  2622. rvn = 'EQEX' rvn 'CLIM'
  2623. 'VN' 'UIMP' toitf 0.0
  2624. 'VN' 'VIMP' toitf 0.0
  2625. 'VN' 'WIMP' toitf 0.0
  2626. 'VN' 'UIMP' aspinj 0.0
  2627. 'VN' 'VIMP' aspinj 0.0
  2628. 'VN' 'WIMP' aspinj vzinj ;
  2629. 'SINON' ;
  2630. rvn = 'EQEX' rvn 'CLIM'
  2631. 'VN' 'UIMP' toitf 0.0
  2632. 'VN' 'VIMP' toitf 0.0
  2633. 'VN' 'UIMP' aspinj 0.0
  2634. 'VN' 'VIMP' aspinj vzinj ;
  2635. 'FINSI' ;
  2636.  
  2637. rv = 'EQEX' rv
  2638. 'OPTI' 'EFM1' 'CENTREE'
  2639. 'ZONE' $vtf 'OPER' 'PENCECHI' 'KGAS' 'VN' 1.0 'INCO' 'UN' ;
  2640. * 'ZONE' $vtf 'OPER' 'PENCECHI' 'KGAS' 'VNM' 1.0 'INCO' 'UN' ;
  2641. * 'ZONE' $vtf 'OPER' 'DFDT' 'KGAS' 'VNM' 1.0 'INCO' 'UN' ;
  2642. * Utilisé par PENCECHI
  2643. rv . 'TBT' = tbt ;
  2644.  
  2645. Si(exist tic 'VN');
  2646. ma=extr tic.'VN' MAILLAGE ;
  2647. ms=doma $vtf 'SOMMET';
  2648. ELIM (ma et ms) epsi ;
  2649. tic.'VN' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'VN') ;
  2650. Sinon;
  2651. 'SI' DIM3D ;
  2652. tic.'VN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0.0 0.0 0.0) ;
  2653. 'SINON' ;
  2654. tic.'VN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0.0 0.0) ;
  2655. 'FINSI' ;
  2656. Finsi ;
  2657.  
  2658. Si(exist tic 'VNM');
  2659. tic.'VNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'VNM') ;
  2660. Sinon;
  2661. 'SI' DIM3D ;
  2662. tic.'VNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0.0 0.0 0.0) ;
  2663. 'SINON' ;
  2664. tic.'VNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0.0 0.0) ;
  2665. 'FINSI' ;
  2666. Finsi;
  2667.  
  2668. Si(exist tic 'GDR');
  2669. tic.'GDR' = 'KCHT' $vtf 'VECT' 'CENTRE' (tic.'GDR') ;
  2670. Sinon;
  2671. 'SI' DIM3D ;
  2672. tic.'GDR' = 'KCHT' $vtf 'VECT' 'SOMMET' (0.0 0.0 gdrz) ;
  2673. 'SINON' ;
  2674. tic.'GDR' = 'KCHT' $vtf 'VECT' 'SOMMET' (0.0 gdrz) ;
  2675. 'FINSI' ;
  2676. Finsi;
  2677.  
  2678. Si(exist tic 'KDIS');
  2679. tic.'KDIS' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KDIS') ;
  2680. Sinon;
  2681. tic.'KDIS' = 'KCHT' $vtf 'SCAL' 'SOMMET' (1.0) ;
  2682. Finsi;
  2683.  
  2684. Si(exist tic 'KGAS');
  2685. tic.'KGAS' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KGAS') ;
  2686. Sinon;
  2687. tic.'KGAS' = 'KCHT' $vtf 'SCAL' 'SOMMET' (1.0) ;
  2688. Finsi;
  2689.  
  2690. rvn.'PASDETPS' = rv.'PASDETPS' ;
  2691. rvn.inco = tic ;
  2692. rvn.'METHINV'.TYPINV = TBT.'TYPINV' ;
  2693. rvn.'METHINV'.TYPRENU=TBT.'RENU' ;
  2694. rvn.'METHINV'.IMPINV = TBT.'nimpr' ;
  2695. rvn.'METHINV'.NITMAX = NTIT ;
  2696. rvn.'METHINV'.PRECOND = 3 ;
  2697. rvn.'METHINV'.'FCPRECI' = FCPRECI ;
  2698. rvn.'METHINV'.'FCPRECT' = FCPRECT ;
  2699. rvn.'METHINV'.'CALPREC' = calprec ;
  2700. rvn.'METHINV'.RESID = 1.0e-10 ;
  2701.  
  2702. TBT.'RVN' = rvn ;
  2703.  
  2704.  
  2705.  
  2706.  
  2707. ********************** EQEX XD ****************************
  2708.  
  2709. rxd = 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  2710. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS'
  2711. 'ZONE' $vtf 'OPER' 'KONV' 1.0 'VN' 0.0 'INCO' 'XD'
  2712. 'OPTI' 'EFM1' 'CENTREE'
  2713. 'ZONE' $vtf 'OPER' 'FIMP' 'SXD' 'INCO' 'XD'
  2714. 'OPTI' 'EFM1' 'CENTREE'
  2715. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'XDM' DTX 'INCO' 'XD'
  2716. ;
  2717. rxd = 'EQEX' rxd 'CLIM'
  2718. 'XD' 'TIMP' toitf 0.0
  2719. 'XD' 'TIMP' aspinj xdinj ;
  2720.  
  2721. Si(exist tic 'XD');
  2722. tic.'XD' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'XD') ;
  2723. Sinon ;
  2724. tic.'XD' = 'KCHT' $vtf 'SCAL' 'SOMMET' (0.0) ;
  2725. Finsi ;
  2726.  
  2727. Si(exist tic 'XDM');
  2728. tic.'XDM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'XDM') ;
  2729. Sinon ;
  2730. tic.'XDM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (0.0) ;
  2731. Finsi ;
  2732.  
  2733. Si(exist tic 'SXD');
  2734. tic.'SXD' = 'KCHT' $vtf 'SCAL' 'CENTRE' (tic.'SXD') ;
  2735. Sinon ;
  2736. tic.'SXD' = 'KCHT' $vtf 'SCAL' 'CENTRE' (0.0) ;
  2737. Finsi ;
  2738.  
  2739. rxd.'PASDETPS' = rv.'PASDETPS' ;
  2740. rxd.inco = tic ;
  2741. rxd.'METHINV'.TYPINV = TBT.'TYPINV' ;
  2742. rxd.'METHINV'.TYPRENU=TBT.'RENU' ;
  2743. rxd.'METHINV'.IMPINV = TBT.'nimpr' ;
  2744. rxd.'METHINV'.NITMAX = NTIT ;
  2745. rxd.'METHINV'.PRECOND = 3 ;
  2746. rxd.'METHINV'.'FCPRECI' = FCPRECI ;
  2747. rxd.'METHINV'.'FCPRECT' = FCPRECT ;
  2748. rxd.'METHINV'.'CALPREC' = calprec ;
  2749. rxd.'METHINV'.RESID = 1.0e-10 ;
  2750.  
  2751. TBT.'RXD' = rxd ;
  2752.  
  2753. ********************** EQEX DD ****************************
  2754.  
  2755. rdd = 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  2756. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG'
  2757. 'ZONE' $vtf 'OPER' 'KONV' 1.0 'VN' 0.0 'INCO' 'DD'
  2758. 'OPTI' 'EFM1' 'CENTREE'
  2759. 'ZONE' $vtf 'OPER' 'FIMP' 'SDIA' 'INCO' 'DD'
  2760. 'OPTI' 'EFM1' 'CENTREE'
  2761. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'DDM' DTX 'INCO' 'DD' ;
  2762. ;
  2763. rdd = 'EQEX' rdd 'CLIM'
  2764. 'DD' 'TIMP' toitf ddinj ;
  2765.  
  2766. Si(exist tic 'DD');
  2767. tic.'DD' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'DD') ;
  2768. Sinon;
  2769. tic.'DD' = 'KCHT' $vtf 'SCAL' 'SOMMET' (ddinj) ;
  2770. Finsi;
  2771.  
  2772. Si(exist tic 'DDM');
  2773. tic.'DDM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'DDM') ;
  2774. Sinon;
  2775. tic.'DDM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (ddinj) ;
  2776. Finsi;
  2777.  
  2778. Si(exist tic 'SDIA');
  2779. ma=extr tic.'SDIA' MAILLAGE ;
  2780. ms=doma $vtf 'CENTRE';
  2781. ELIM (ma et ms) epsi ;
  2782. tic.'SDIA' = 'KCHT' $vtf 'SCAL' 'CENTRE' (tic.'SDIA') ;
  2783. Sinon;
  2784. tic.'SDIA' = 'KCHT' $vtf 'SCAL' 'CENTRE' (0.0 ) ;
  2785. Finsi;
  2786.  
  2787. rdd.'PASDETPS' = rv.'PASDETPS' ;
  2788. rdd.inco = tic ;
  2789. rdd.'METHINV'.TYPINV = TBT.'TYPINV' ;
  2790. rdd.'METHINV'.TYPRENU=TBT.'RENU' ;
  2791. rdd.'METHINV'.IMPINV = TBT.'nimpr' ;
  2792. rdd.'METHINV'.NITMAX = NTIT ;
  2793. rdd.'METHINV'.PRECOND = 3 ;
  2794. rdd.'METHINV'.'FCPRECI' = FCPRECI ;
  2795. rdd.'METHINV'.'FCPRECT' = FCPRECT ;
  2796. rdd.'METHINV'.'CALPREC' = calprec ;
  2797. rdd.'METHINV'.RESID = 1.0e-10 ;
  2798.  
  2799. TBT.'RDD' = rdd ;
  2800.  
  2801. ********************** EQEX TD + TF ***********************
  2802.  
  2803. rtd = 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  2804. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG'
  2805. 'ZONE' $vtf 'OPER' 'TSCA' 1. 'VN' nup 0.0 'INCO' 'TD'
  2806. 'OPTI' 'EFM1' 'CENTREE'
  2807. * 'ZONE' $vtf 'OPER' 'DFDT' 'HDIS' 'TFNM' 1.0 'INCO' 'TD'
  2808. * 'ZONE' $vtf 'OPER' 'PENCECHI' 'HDIS' 'TFNM' 1.0 'INCO' 'TD'
  2809. 'ZONE' $vtf 'OPER' 'PENCECHI' 'HDIS' 'TF' 1.0 'INCO' 'TD'
  2810. 'OPTI' 'EFM1' 'CENTREE'
  2811. 'ZONE' $vtf 'OPER' 'FIMP' 'STD' 'INCO' 'TD'
  2812. 'OPTI' 'EFM1' 'CENTREE'
  2813. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'TDM' DTX 'INCO' 'TD' ;
  2814. rtd = 'EQEX' rtd CLIM
  2815. TD TIMP aspinj tdinj ;
  2816. * Utilisation de tbt par PENCECHI
  2817. rtd . 'TBT' = tbt ;
  2818.  
  2819. rtf = 'EQEX' rtf
  2820. 'OPTI' 'EFM1' 'CENTREE'
  2821. 'ZONE' $vtf 'OPER' 'PENCECHI' 'HGAS' 'TD' 1.0 'INCO' 'TF' ;
  2822. * 'ZONE' $vtf 'OPER' 'PENCECHI' 'HGAS' 'TDM' 1.0 'INCO' 'TF' ;
  2823. * 'ZONE' $vtf 'OPER' 'DFDT' 'HGAS' 'TDM' 1.0 'INCO' 'TF' ;
  2824. * Utilisé par PENCECHI
  2825. rtf . 'TBT' = tbt ;
  2826.  
  2827. Si(exist tic 'TD');
  2828. tic.'TD' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'TD') ;
  2829. Sinon;
  2830. tic.'TD' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tdinj) ;
  2831. Finsi;
  2832.  
  2833. Si(exist tic 'TDM');
  2834. tic.'TDM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'TDM') ;
  2835. Sinon;
  2836. tic.'TDM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tdinj) ;
  2837. Finsi;
  2838.  
  2839. Si(exist tic 'HDIS');
  2840. tic.'HDIS' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'HDIS') ;
  2841. Sinon;
  2842. tic.'HDIS' = 'KCHT' $vtf 'SCAL' 'SOMMET' (0.0) ;
  2843. Finsi;
  2844.  
  2845. Si(exist tic 'HGAS');
  2846. tic.'HGAS' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'HGAS') ;
  2847. Sinon;
  2848. tic.'HGAS' = 'KCHT' $vtf 'SCAL' 'SOMMET' (0.0) ;
  2849. Finsi;
  2850.  
  2851. Si(exist tic 'STD');
  2852. tic.'STD' = 'KCHT' $vtf 'SCAL' 'CENTRE' (tic.'STD') ;
  2853. Sinon;
  2854. tic.'STD' = 'KCHT' $vtf 'SCAL' 'CENTRE' (0.0) ;
  2855. Finsi;
  2856.  
  2857.  
  2858. rtd.'PASDETPS' = rv.'PASDETPS' ;
  2859. rtd.inco = tic ;
  2860. rtd.'METHINV'.TYPINV = TBT.'TYPINV' ;
  2861. rtd.'METHINV'.TYPRENU=TBT.'RENU' ;
  2862. rtd.'METHINV'.IMPINV = TBT.'nimpr' ;
  2863. rtd.'METHINV'.NITMAX = NTIT ;
  2864. rtd.'METHINV'.PRECOND = 3 ;
  2865. rtd.'METHINV'.'FCPRECI' = FCPRECI ;
  2866. rtd.'METHINV'.'FCPRECT' = FCPRECT ;
  2867. rtd.'METHINV'.'CALPREC' = calprec ;
  2868. rtd.'METHINV'.RESID = 1.0e-10 ;
  2869.  
  2870. TBT.'RTD' = rtd ;
  2871.  
  2872. ********************** EQEX RVP + RHO *********************
  2873.  
  2874. Rrvap = 'EQEX' Rrvap
  2875. 'OPTI' 'EFM1' 'CENTREE'
  2876. 'ZONE' $vtf 'OPER' 'FIMP' 'SRVP' 'INCO' 'RVP' ;
  2877.  
  2878.  
  2879. Si(exist tic 'SRVP');
  2880. tic.'SRVP' = 'KCHT' $vtf 'SCAL' 'CENTRE' (tic.'SRVP') ;
  2881. Sinon;
  2882. tic.'SRVP' = 'KCHT' $vtf 'SCAL' 'CENTRE' (0.0) ;