Télécharger prepaenc.procedur

Retour ŕ la liste

Numérotation des lignes :

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