Télécharger prepaenc.procedur

Retour à la liste

Numérotation des lignes :

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