Télécharger prepaenc.procedur

Retour ŕ la liste

Numérotation des lignes :

  1. * PREPAENC PROCEDUR MAGN 18/06/08 21:15:10 9840
  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. Ctp0 = chai 'Tp0' &BPRS ;
  1213. tp0 = tic.CTp0 ;
  1214. Crocp = chai 'ROCP' &BPRS ;
  1215. rocp = tic.Crocp ;
  1216. * Calcul d'une temperature moyenne de paroi Tpm0
  1217. Tpm0=Tpm0 + ('SOMT' (GEO.(ipr.&BPRS).'Diagp' '*' tp0 )) ;
  1218. Rocpm0=Rocpm0 +
  1219. ('SOMT' (GEO.(ipr.&BPRS).'Diagp' '*' tp0 )) ;
  1220. FIN BPRS ;
  1221. Tpm0 = Tpm0 '/' ( 'SOMT' GEO.'Diagp' ) ;
  1222. Rocpm0 = Rocpm0 '/' ( 'SOMT' GEO.'Diagp' ) ;
  1223. rxt.'Tp0'=Tpm0 ;
  1224. rxt.'ROCP'=Rocpm0 ;
  1225. 'SINON' ;
  1226. Tpm0 = 0. ;
  1227. 'FINSI' ;
  1228.  
  1229. 'SI' TBT.'VAPEUR' ;
  1230. Yvap0 = rxt.'Yvap0' ;
  1231. 'SI' (EXIST rxt 'Mliq0') ;
  1232. vertytab rxt 'Mliq0' 'FLOTTANT' ;
  1233. Mliq0 = rxt.'Mliq0' ;
  1234. 'SINON' ;
  1235. Mliq0 = 0. ;
  1236. 'FINSI' ;
  1237. 'SINON' ;
  1238. Yvap0 = 0. ;
  1239. 'FINSI' ;
  1240.  
  1241. 'SI' TBT.'THE' ;
  1242. Yhe0 = rxt.'Yhe0' ;
  1243. 'SINON' ;
  1244. Yhe0 = 0. ;
  1245. 'FINSI' ;
  1246.  
  1247. 'SI' TBT.'TH2' ;
  1248. Yh20 = rxt.'Yh20' ;
  1249. 'SINON' ;
  1250. Yh20 = 0. ;
  1251. 'FINSI' ;
  1252.  
  1253. 'SI' TBT.'TO2' ;
  1254. Yo20 = rxt.'Yo20' ;
  1255. 'SINON' ;
  1256. Yo20 = 0. ;
  1257. 'FINSI' ;
  1258.  
  1259. 'SI' TBT.'TN2' ;
  1260. Yn20 = rxt.'Yn20' ;
  1261. 'SINON' ;
  1262. Yn20 = 0. ;
  1263. 'FINSI' ;
  1264.  
  1265. 'SI' TBT.'TCO2' ;
  1266. Yco20 = rxt.'Yco20' ;
  1267. 'SINON' ;
  1268. Yco20 = 0. ;
  1269. 'FINSI' ;
  1270.  
  1271. 'SI' TBT.'TCO' ;
  1272. Yco0 = rxt.'Yco0' ;
  1273. 'SINON' ;
  1274. Yco0 = 0. ;
  1275. 'FINSI' ;
  1276. *---------------------------------------------------------------
  1277. * AIR : on traite l'air comme un composant a part entiere
  1278. * il faudra se mefier de ce point lors des calculs de combustion
  1279. *
  1280. Yair0 = 1.0 - Yvap0 - Yhe0 - Yh20 - Yo20 - Yn20 - Yco20 - Yco0 ;
  1281. tic.'YAIR' = 'KCHT' $vtf 'SCAL' 'SOMMET' Yair0 ;
  1282.  
  1283. *---------------------------------------------------------------
  1284. * RGPM = constante des gaz parfaits pour le mélange
  1285. Rgh2 = TBT.'Rgh2' ;
  1286. Rghe = TBT.'Rghe' ;
  1287. Rgo2 = TBT.'Rgo2' ;
  1288. Rgn2 = TBT.'Rgn2' ;
  1289. Rgco2 = TBT.'Rgco2' ;
  1290. Rgco = TBT.'Rgco' ;
  1291. Rgvap = TBT.'Rgvap' ;
  1292. Rgair = TBT.'Rgair' ;
  1293.  
  1294. Rgpm = (Rgvap '*' Yvap0) '+' (Rgair '*' Yair0) '+'
  1295. (Rghe '*' Yhe0) '+' (Rgh2 '*' Yh20) '+'
  1296. (Rgo2 '*' Yo20) '+' (Rgn2 '*' Yn20) '+'
  1297. (Rgco '*' Yco0) '+' (Rgco2 '*' Yco20) ;
  1298. Rgp = 'KCHT' $vtf 'SCAL' 'SOMMET' Rgpm ;
  1299.  
  1300. *---------------------------------------------------------------
  1301. * Calcul Cp (Tf0) et Cpm pour le mélange de gaz
  1302. * CALCP appelé ŕ l'initialisation
  1303. *
  1304. Tfm=Tf0 ;
  1305. Cph2 Cphe Cpo2 Cpn2 Cpco2 Cpco Cpair = CALCP Tfm ;
  1306. Cpvap = TBT.'Cpvap' ;
  1307. Cpm = (Cpvap '*' Yvap0) '+' (Cpair '*' Yair0) '+' (Cphe '*' Yhe0) '+'
  1308. (Cph2 '*' Yh20) '+' (Cpo2 '*' Yo20) '+' (Cpn2 '*' Yn20) '+'
  1309. (Cpco '*' Yco0) '+' (Cpco2 '*' Yco20) ;
  1310.  
  1311. *---------------------------------------------------------------
  1312. * Calcul Mu (Tkm) pour le mélange de gaz
  1313. *
  1314. Tkm=Tfm + 273.15 ;
  1315. Muh2 Muhe Muo2 Mun2 Muco2 Muco Muvap Muair = CALMU Tkm ;
  1316. Mu = (Muvap '*' Yvap0) '+' (Muair '*' Yair0) '+' (Muhe '*' Yhe0) '+'
  1317. (Muh2 '*' Yh20) '+' (Muo2 '*' Yo20) '+' (Mun2 '*' Yn20) '+'
  1318. (Muco '*' Yco0) '+' (Muco2 '*' Yco20) ;
  1319. Mu='KCHT' $vtf 'SCAL' 'SOMMET' Mu ;
  1320. *---------------------------------------------------------------
  1321. * Calcul des autres grandeurs initiales
  1322. * Cvm = Capacite calorifique a volume constante (J/kg/K)
  1323. * Gamm = Gamma du mélange
  1324. * Rho0 = Densité initiale (kg/m3)
  1325. * Ri0 = Densité de chaque gaz (kg/m3)
  1326. *
  1327. Cvm = Cpm '-' Rgpm ;
  1328. * Gamm = Cpm '/' Cvm ;
  1329. Gamm = Cpm '*' (Cvm ** (-1.0)) ;
  1330. * Rho0 = pt0 '/' (Rgpm '*' (tf0 '+' 273.15)) ;
  1331. Rho0 = pt0 '*' ((Rgpm '*' (tf0 '+' 273.15))**(-1.0));
  1332. Rvap0 = Rho0 '*' Yvap0 ;
  1333. Rhe0 = Rho0 '*' Yhe0 ;
  1334. Rh20 = Rho0 '*' Yh20 ;
  1335. Ro20 = Rho0 '*' Yo20 ;
  1336. Rn20 = Rho0 '*' Yn20 ;
  1337. Rco20 = Rho0 '*' Yco20 ;
  1338. Rco0 = Rho0 '*' Yco0 ;
  1339. Rair0 = Rho0 '*' Yair0 ;
  1340.  
  1341. *-----------------------------------------------------------
  1342. * BRECHE : determination du facteur geometrique pour DEBIT
  1343. * en EF
  1344. *
  1345.  
  1346. src=0. ;
  1347. src2=0. ;
  1348.  
  1349. Si TTsortie ;
  1350. NBR=dime rxt.'Sorties' ;
  1351. ibr=index (rxt.'Sorties') ;
  1352.  
  1353. Repeter BBRS NBR ;
  1354. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1355. mess ' Vérification Sortie guj ' (ibr.&BBRS) ;
  1356. diru=(Sriches.'diru')/(norm Sriches.'diru') ;
  1357. $sreche=Sriches.'$sreche' ;
  1358. srechec=Sriches.'srechec' ;
  1359. 'SI' DIM3D ;
  1360. Msrechec = 'CHAN' srechec 'QUAF' ;
  1361. elim Msrechec rxt.'epsi' ;
  1362. $srechec = 'MODE' Msrechec mdns TBT.'discr' ;
  1363. Sriches.'$srechec'=$srechec ;
  1364. gjc = 'KCHT' $srechec 'VECT' 'SOMMET' (0.0 0.0 0.0) ;
  1365. gjx = 'KCHT' $sreche 'VECT' 'SOMMET' diru gjc ;
  1366. 'SINON' ;
  1367. gjc = 'MANU' 'CHPO' srechec 2 'UX' 0.0 'UY' 0.0
  1368. 'NATURE' 'DISCRET' ;
  1369. gjx = 'KCHT' $sreche 'VECT' 'SOMMET' diru gjc ;
  1370. 'FINSI' ;
  1371.  
  1372. unvf0 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' gjx ;
  1373. src = 'DBIT' unvf0 GEO.'$menvf' ;
  1374. fgeo = 'ABS' ((Sriches.'Ssreche') '*' (1./src)) ;
  1375. Sriches.'facgeo' = fgeo ;
  1376. FIN BBRS ;
  1377. FINSI ;
  1378.  
  1379. Si TTbreche ;
  1380. NBR=dime rxt.'Breches' ;
  1381. ibr=index (rxt.'Breches') ;
  1382.  
  1383. Repeter BBRS NBR ;
  1384. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1385. mess ' Vérification Breche guj ' (ibr.&BBRS) ;
  1386. diru=(Briches.'diru')/(norm Briches.'diru') ;
  1387. $breche=Briches.'$breche' ;
  1388. brechec=Briches.'brechec' ;
  1389. 'SI' DIM3D ;
  1390. Mbrechec = 'CHAN' brechec 'QUAF' ;
  1391. elim Mbrechec rxt.'epsi' ;
  1392. $brechec = 'MODE' Mbrechec mdns TBT.'discr' ;
  1393. Briches.'$brechec'=$brechec ;
  1394. gjc = 'KCHT' $brechec 'VECT' 'SOMMET' (0.0 0.0 0.0) ;
  1395. gjx = 'KCHT' $breche 'VECT' 'SOMMET' diru gjc ;
  1396. 'SINON' ;
  1397. gjc = 'MANU' 'CHPO' brechec 2 'UX' 0.0 'UY' 0.0
  1398. 'NATURE' 'DISCRET' ;
  1399. gjx = 'KCHT' $breche 'VECT' 'SOMMET' diru gjc ;
  1400. 'FINSI' ;
  1401.  
  1402. unvf0 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' gjx ;
  1403. src = 'DBIT' unvf0 GEO.'$menvf' ;
  1404. fgeo = 'ABS' ((Briches.'Sbreche') '*' (1./src)) ;
  1405. Briches.'facgeo' = fgeo ;
  1406. FIN BBRS ;
  1407. FINSI ;
  1408.  
  1409. Si(TBT.'Tbreche') ;
  1410. diru1=(TBT.'diru1')/(norm TBT.'diru1') ;
  1411. 'SI' DIM3D ;
  1412. Mbrechec = 'CHAN' brechec 'QUAF' ;
  1413. elim Mbrechec rxt.'epsi' ;
  1414. $brechec = 'MODE' Mbrechec mdns TBT.'discr' ;
  1415. GEO.'$brechec'=$brechec ;
  1416. gjc = 'KCHT' $brechec 'VECT' 'SOMMET' (0.0 0.0 0.0) ;
  1417. gjx = 'KCHT' $breche 'VECT' 'SOMMET' diru1
  1418. gjc ;
  1419. 'SINON' ;
  1420. gjc = 'MANU' 'CHPO' brechec 2 'UX' 0.0 'UY' 0.0
  1421. 'NATURE' 'DISCRET' ;
  1422. gjx = 'KCHT' $breche 'VECT' 'SOMMET' diru1 gjc ;
  1423. 'FINSI' ;
  1424.  
  1425. unvf0 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' gjx ;
  1426. src = 'DBIT' unvf0 GEO.'$menvf' ;
  1427. fgeo = 'ABS' ((GEO.'Sbreche') '*' (1./src)) ;
  1428. GEO.'facgeo' = fgeo ;
  1429. Finsi ;
  1430.  
  1431. Si (TBT.'Tbreche2');
  1432. diru2=(TBT.'diru2')/(norm TBT.'diru2') ;
  1433. 'SI' DIM3D ;
  1434. Mbrechc2 = 'CHAN' brech2c 'QUAF' ;
  1435. elim Mbrechc2 rxt.'epsi' ;
  1436. $brech2c = 'MODE' Mbrechc2 mdns TBT.'discr' ;
  1437. GEO.'$brech2c'=$brech2c ;
  1438. gjc2 = 'KCHT' $brech2c 'VECT' 'SOMMET' (0.0 0.0 0.0) ;
  1439. gjx2 = 'KCHT' GEO.'$breche2' 'VECT' 'SOMMET' diru2 gjc2;
  1440. 'SINON' ;
  1441. gjc2 = 'MANU' 'CHPO' brech2c 2 'UX' 0.0 'UY' 0.0
  1442. 'NATURE' 'DISCRET' ;
  1443. gjx2 = 'KCHT' $breche2 'VECT' 'SOMMET' diru2 gjc2 ;
  1444. 'FINSI' ;
  1445.  
  1446. unvf0 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' gjx2 ;
  1447. src2 = 'DBIT' unvf0 GEO.'$menvf' ;
  1448. fgeo2 = 'ABS' ((GEO.'Sbreche2') '*' (1./src2)) ;
  1449. GEO.'facgeo2' = fgeo2 ;
  1450. Finsi ;
  1451.  
  1452. Si (TBT.'Tbreche3');
  1453. diru3=(TBT.'diru3')/(norm TBT.'diru3') ;
  1454. 'SI' DIM3D ;
  1455. Mbrechc3 = 'CHAN' brech3c 'QUAF' ;
  1456. elim Mbrechc3 rxt.'epsi' ;
  1457. $brech3c = 'MODE' Mbrechc3 mdns TBT.'discr' ;
  1458. GEO.'$brech3c'=$brech3c ;
  1459. gjc3 = 'KCHT' $brech3c 'VECT' 'SOMMET' (0.0 0.0 0.0) ;
  1460. gjx3 = 'KCHT' GEO.'$breche3' 'VECT' 'SOMMET' diru3 gjc3;
  1461. 'SINON' ;
  1462. gjc3 = 'MANU' 'CHPO' brech3c 2 'UX' 0.0 'UY' 0.0
  1463. 'NATURE' 'DISCRET' ;
  1464. gjx3 = 'KCHT' $breche3 'VECT' 'SOMMET' diru3 gjc3 ;
  1465. 'FINSI' ;
  1466.  
  1467. unvf0 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' gjx3 ;
  1468. src3 = 'DBIT' unvf0 GEO.'$menvf' ;
  1469. fgeo3 = 'ABS' ((GEO.'Sbreche3') '*' (1./src3)) ;
  1470. GEO.'facgeo3' = fgeo3 ;
  1471. Finsi ;
  1472.  
  1473. *-----------------------------------------------------------
  1474. *----- FIN du TRAITEMENT DE LA BRECHE ----------------------
  1475. *-----------------------------------------------------------
  1476.  
  1477. *----- TRAITEMENT DES RECOMBINEURS
  1478. 'SI' (TBT.'TRECOMB') ;
  1479. NBREC = 'DIME' rxt.'RECOMB' ;
  1480. 'REPETER' BCLREC NBREC ;
  1481. $toto = 'CHAIN' '$REC' 'ent' &BCLREC ;
  1482. $tutu = 'CHAIN' '$REC' 'sor' &BCLREC ;
  1483. NAME = 'CHAIN' 'REC' 'entI' &BCLREC ;
  1484. ENTREEi = GEO.NAME ;
  1485. NAME = 'CHAIN' 'REC' 'entC' &BCLREC ;
  1486. ENTREEc = GEO.NAME ;
  1487. NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ;
  1488. SORTIEi = GEO.NAME ;
  1489. NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ;
  1490. SORTIEc = GEO.NAME ;
  1491. DIRENT = 'CHAIN' 'DREC' 'ent' &BCLREC ;
  1492. direntr = GEO. DIRENT ;
  1493. DIRSOR = 'CHAIN' 'DREC' 'sor' &BCLREC ;
  1494. dirsort = GEO. DIRSOR ;
  1495. 'SI' DIM3D ;
  1496. toto1 = 'MANU' 'CHPO' ('CHAN' ENTREEc 'POI1')
  1497. 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0 'NATURE' 'DISCRET' ;
  1498. toto2 = 'KCHT' GEO.$toto 'VECT' 'SOMMET' direntr
  1499. toto1 ;
  1500. tutu1 = 'MANU' 'CHPO' ('CHAN' SORTIEc 'POI1')
  1501. 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0 'NATURE' 'DISCRET' ;
  1502. tutu2 = 'KCHT' GEO.$tutu 'VECT' 'SOMMET' dirsort
  1503. tutu1 ;
  1504. 'SINON' ;
  1505. toto1 = 'MANU' 'CHPO' ENTREEc
  1506. 2 'UX' 0.0 'UY' 0.0 'NATURE' 'DISCRET' ;
  1507. toto2 = 'KCHT' GEO.$toto 'VECT' 'SOMMET' direntr
  1508. toto1 ;
  1509. tutu1 = 'MANU' 'CHPO' SORTIEc
  1510. 2 'UX' 0.0 'UY' 0.0 'NATURE' 'DISCRET' ;
  1511. tutu2 = 'KCHT' GEO.$tutu 'VECT' 'SOMMET' dirsort
  1512. tutu1 ;
  1513. 'FINSI' ;
  1514. toto3 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' toto2 ;
  1515. toto4 = 'DBIT' toto3 GEO.'$menvf' ;
  1516. tutu3 = 'KCHT' GEO.'$menvf' 'VECT' 'SOMMET' tutu2 ;
  1517. tutu4 = 'DBIT' tutu3 GEO.'$menvf' ;
  1518. S_ENT = 'CHAIN' 'SREC' 'ent' &BCLREC ;
  1519. S_SOR = 'CHAIN' 'SREC' 'sor' &BCLREC ;
  1520. toto5 = 'ABS' ((GEO.S_ENT) '*' (toto4**(-1.0))) ;
  1521. tutu5 = 'ABS' ((GEO.S_SOR) '*' (tutu4**(-1.0))) ;
  1522. FG_ENT = 'CHAIN' 'fgREC' 'ent' &BCLREC ;
  1523. GEO.FG_ENT = toto5 ;
  1524. FG_SOR = 'CHAIN' 'fgREC' 'sor' &BCLREC ;
  1525. GEO.FG_SOR = tutu5 ;
  1526. 'FIN' BCLREC ;
  1527. 'FINSI' ;
  1528.  
  1529. *------------------------------------------------------------
  1530. * TRAITEMENT DES EQUATIONS A RESOUDRE
  1531. *------------------------------------------------------------
  1532. *
  1533. * - Definition de constantes intervenant dans les equations
  1534. * FCPRECI = Frequence de recalcul du préc. dans la methode iterative
  1535. * FCPRECT = Frequence de recalcul du préc. en fn du pas de temps
  1536. * calprec = logique pilotant le preconditionnement
  1537. 'SI' ('EXIS' RXT 'FRPREC') ;
  1538. calprec = VRAI ;
  1539. 'SI' ('EXIS' RXT 'FCPRECT') ;
  1540. FCPRECT = RXT.'FCPRECT' ;
  1541. 'SI' (FCPRECT 'EGA' 1) ;
  1542. 'MESS' 'ATTENTION! FCPRECT = 1!' ;
  1543. 'MESS' 'ON PRECONDITIONNE A CHAQUE ITERATION!' ;
  1544. 'FINSI' ;
  1545. 'SINON' ;
  1546. FCPRECT = 5 ;
  1547. 'FINSI' ;
  1548. 'SI' ('EXIS' RXT 'FCPRECI') ;
  1549. FCPRECI = RXT.'FCPRECI' ;
  1550. 'SI' (FCPRECI 'EGA' 1) ;
  1551. 'MESS' 'ATTENTION! FCPRECI = 1!' ;
  1552. 'MESS' 'ON PRECONDITIONNE A CHAQUE ITERATION!' ;
  1553. 'FINSI' ;
  1554. 'SINON' ;
  1555. FCPRECI = 5 ;
  1556. 'FINSI' ;
  1557. 'SINON' ;
  1558. RXT.'FRPREC' = 1 ;
  1559. calprec = FAUX ;
  1560. FCPRECI = 1 ;
  1561. FCPRECT = 1 ;
  1562. 'FINSI' ;
  1563.  
  1564. * Donnees ŕ la brčche (vitesse et température
  1565. * pour les conditions aux limites
  1566. uj=0. ;
  1567. vj=-0. ;
  1568. wj=-1. ;
  1569. Tj = 0. ;
  1570.  
  1571. *-- Suivant la formulation la ligne de commande change ---------
  1572. * LCTSCA ligne de commande de TSCA
  1573. LCTSCA='TEXT' 1. 'UN' 'NUEFF' 0. ;
  1574. Si (Ega TBT.'FEF' 'EFM1') ;
  1575. LCTSCA='TEXT' 'NUm' 'UN' 0. NUT 0.7 ;
  1576. Finsi ;
  1577.  
  1578. DTX= 'DT' ;
  1579. *Si (EGA TBT.'FEF' 'EFM1') ;
  1580. *DTX= 'DELTAT' ;
  1581. *Finsi ;
  1582.  
  1583. *---------------------------------------------------------------
  1584. *- EQUATIONS DE LA QDM
  1585. * Formulation non conservative
  1586. * Decentrement SUPG
  1587. *
  1588. 'SI'((EGA TBT.'MODTURB' 'KEPSILON') et (EGA TBT.'FEF' 'EFM1'));
  1589. *---- Modčle K-Epsilon EFM1 --------------------------------
  1590. rv= 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  1591. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG'
  1592. 'ZONE' $vtf 'OPER' 'NSKE' 'NUm' 'NUT' 'ROG' 'INCO' 'UN' 'KN' 'EN'
  1593. 'OPTI' 'EFM1' 'CENTREE'
  1594. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'UNM' DTX 'INCO' 'UN'
  1595. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'KNM' DTX 'INCO' 'KN'
  1596. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'ENM' DTX 'INCO' 'EN'
  1597. ;
  1598. *---- Modčle K-Epsilon EFM1 -- FIN -------------------------
  1599. Sinon ;
  1600. rv= 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  1601. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG'
  1602. * 'ZONE' $vtf 'OPER' 'SGE' 'UN' 'NU' 'INCO' 'UN'
  1603. 'ZONE' $vtf 'OPER' 'NS' 1. 'UN' 'NUEFF' 'ROG' 'INCO' 'UN'
  1604. 'OPTI' 'EFM1' 'CENTREE'
  1605. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'UNM' DTX 'INCO' 'UN'
  1606. ;
  1607. Finsi ;
  1608. *
  1609. * - Conditions aux limites sur les parois (vitesse nulle)
  1610. * ou Fonctions de paroi
  1611. *
  1612. Si (TBT.'FPAROI') ;
  1613. 'SI'(EGA TBT.'MODTURB' 'KEPSILON') ;
  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. 'SINON' ;
  1619. rv= 'EQEX' rv
  1620. 'OPTI' TBT.'FEF' TBT.'FIMPL'
  1621. 'ZONE' (GEO.'$menvfU') 'OPER' 'FPU' 1. 'UN' 'NUm' 'UET'
  1622. (TBT.'YP') 'INCO' 'UN' ;
  1623. 'FINSI' ;
  1624. Sinon ;
  1625. rv= 'EQEX' rv 'CLIM'
  1626. 'UN' 'UIMP' GEO.'menvfU' 0.
  1627. 'UN' 'VIMP' GEO.'menvfU' 0. ;
  1628. 'SI' DIM3D ;
  1629. rv= 'EQEX' rv 'CLIM'
  1630. 'UN' 'WIMP' GEO.'menvfU' 0. ;
  1631. Finsi ;
  1632. Finsi ;
  1633. *
  1634. * - Conditions aux limites sur la brčche et les sorties
  1635. *
  1636. *!?
  1637. Si TTsortie ;
  1638. NBR=dime rxt.'Sorties' ;
  1639. ibr=index (rxt.'Sorties') ;
  1640.  
  1641. Repeter BBRS NBR ;
  1642. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1643. mess ' Conditions limites sur la sortie ' (ibr.&BBRS) ;
  1644. srechei=Sriches.'srechei' ;
  1645. srechec=Sriches.'srechec' ;
  1646. rv= 'EQEX' rv 'CLIM'
  1647. 'UN' 'UIMP' srechei uj
  1648. 'UN' 'VIMP' srechei vj
  1649. 'UN' 'UIMP' srechec 0.
  1650. 'UN' 'VIMP' srechec 0. ;
  1651. FIN BBRS ;
  1652. FINSI ;
  1653.  
  1654. Si TTbreche ;
  1655. NBR=dime rxt.'Breches' ;
  1656. ibr=index (rxt.'Breches') ;
  1657.  
  1658. Repeter BBRS NBR ;
  1659. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1660. mess ' Conditions limites sur la brčche ' (ibr.&BBRS) ;
  1661. brechei=Briches.'brechei' ;
  1662. brechec=Briches.'brechec' ;
  1663. rv= 'EQEX' rv 'CLIM'
  1664. 'UN' 'UIMP' brechei uj
  1665. 'UN' 'VIMP' brechei vj
  1666. 'UN' 'UIMP' brechec 0.
  1667. 'UN' 'VIMP' brechec 0. ;
  1668. FIN BBRS ;
  1669. FINSI ;
  1670.  
  1671. Si (TBT.'Tbreche') ;
  1672. rv= 'EQEX' rv 'CLIM'
  1673. 'UN' 'UIMP' brechei uj
  1674. 'UN' 'VIMP' brechei vj
  1675. 'UN' 'UIMP' brechec 0.
  1676. 'UN' 'VIMP' brechec 0. ;
  1677. Finsi ;
  1678.  
  1679. Si (TBT.'Tbreche2') ;
  1680. rv= 'EQEX' rv 'CLIM'
  1681. 'UN' 'UIMP' brech2i uj
  1682. 'UN' 'VIMP' brech2i vj
  1683. 'UN' 'UIMP' brech2c 0.
  1684. 'UN' 'VIMP' brech2c 0. ;
  1685. Finsi ;
  1686.  
  1687. Si (TBT.'Tbreche3') ;
  1688. rv= 'EQEX' rv 'CLIM'
  1689. 'UN' 'UIMP' brech3i uj
  1690. 'UN' 'VIMP' brech3i vj
  1691. 'UN' 'UIMP' brech3c 0.
  1692. 'UN' 'VIMP' brech3c 0. ;
  1693. Finsi ;
  1694.  
  1695. 'SI' (TBT.'TRECOMB') ;
  1696. NBREC = 'DIME' rxt.'RECOMB' ;
  1697. 'REPETER' BCLREC NBREC ;
  1698. NAME = 'CHAIN' 'REC' 'entI' &BCLREC ;
  1699. ENTREEi = GEO.NAME ;
  1700. NAME = 'CHAIN' 'REC' 'entC' &BCLREC ;
  1701. ENTREEc = GEO.NAME ;
  1702. NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ;
  1703. SORTIEi = GEO.NAME ;
  1704. NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ;
  1705. SORTIEc = GEO.NAME ;
  1706. rv= 'EQEX' rv 'CLIM'
  1707. 'UN' 'UIMP' ENTREEi uj
  1708. 'UN' 'VIMP' ENTREEi vj
  1709. 'UN' 'UIMP' ENTREEc 0.
  1710. 'UN' 'VIMP' ENTREEc 0. ;
  1711. rv= 'EQEX' rv 'CLIM'
  1712. 'UN' 'UIMP' SORTIEi uj
  1713. 'UN' 'VIMP' SORTIEi vj
  1714. 'UN' 'UIMP' SORTIEc 0.
  1715. 'UN' 'VIMP' SORTIEc 0. ;
  1716. 'SI' DIM3D ;
  1717. rv= 'EQEX' rv 'CLIM'
  1718. 'UN' 'WIMP' ENTREEi Wj
  1719. 'UN' 'WIMP' ENTREEc 0. ;
  1720. rv= 'EQEX' rv 'CLIM'
  1721. 'UN' 'WIMP' SORTIEi Wj
  1722. 'UN' 'WIMP' SORTIEc 0. ;
  1723. 'FINSI' ;
  1724. 'FIN' BCLREC ;
  1725. 'FINSI' ;
  1726.  
  1727. 'SI' DIM3D ;
  1728. Si TTsortie ;
  1729. NBR=dime rxt.'Sorties' ;
  1730. ibr=index (rxt.'Sorties') ;
  1731. Repeter BBRS NBR ;
  1732. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1733. mess ' Conditions limites sur la sortie ' (ibr.&BBRS) ;
  1734. srechei=Sriches.'srechei' ;
  1735. srechec=Sriches.'srechec' ;
  1736. rv= 'EQEX' rv 'CLIM'
  1737. 'UN' 'WIMP' srechei wj
  1738. 'UN' 'WIMP' srechec 0. ;
  1739. FIN BBRS ;
  1740. FINSI ;
  1741.  
  1742. Si TTbreche ;
  1743. NBR=dime rxt.'Breches' ;
  1744. ibr=index (rxt.'Breches') ;
  1745. Repeter BBRS NBR ;
  1746. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1747. mess ' Conditions limites sur la brčche ' (ibr.&BBRS) ;
  1748. brechei=Briches.'brechei' ;
  1749. brechec=Briches.'brechec' ;
  1750. rv= 'EQEX' rv 'CLIM'
  1751. 'UN' 'WIMP' brechei wj
  1752. 'UN' 'WIMP' brechec 0. ;
  1753. FIN BBRS ;
  1754. FINSI ;
  1755.  
  1756. Si (TBT.'Tbreche') ;
  1757. rv= 'EQEX' rv 'CLIM'
  1758. 'UN' 'WIMP' brechei wj
  1759. 'UN' 'WIMP' brechec 0. ;
  1760. Finsi ;
  1761.  
  1762. Si (TBT.'Tbreche2') ;
  1763. rv= 'EQEX' rv 'CLIM'
  1764. 'UN' 'WIMP' brech2i wj
  1765. 'UN' 'WIMP' brech2c 0. ;
  1766. Finsi ;
  1767.  
  1768. Si (TBT.'Tbreche3') ;
  1769. rv= 'EQEX' rv 'CLIM'
  1770. 'UN' 'WIMP' brech3i wj
  1771. 'UN' 'WIMP' brech3c 0. ;
  1772. Finsi ;
  1773.  
  1774. 'FINSI' ;
  1775.  
  1776. 'SI' (TBT.'Taxe' et (EGA (VALE MODE) 'AXIS')) ;
  1777. axe = GEO.'axe' ;
  1778. rv= 'EQEX' rv 'CLIM'
  1779. 'UN' 'UIMP' axe 0. ;
  1780. 'FINSI' ;
  1781.  
  1782. *---------------------------------------------------------------
  1783. * Definition des inconnues vitesse UN et terme source
  1784. * de flottabilite ROG
  1785. *
  1786. * - Definition de la table des inconnues
  1787. rv.inco= tic ;
  1788.  
  1789. 'SI' DIM3D ;
  1790. uinj matvide= kops 'MATRIK' ;
  1791. Si TTsortie ;
  1792. NBR=dime rxt.'Sorties' ;
  1793. ibr=index (rxt.'Sorties') ;
  1794. Repeter BBRS NBR ;
  1795. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1796. * mess ' Conditions limites unj ??? ' (ibr.&BBRS) ;
  1797. srechei=Sriches.'srechei' ;
  1798. $sreche=Sriches.'$sreche' ;
  1799. uino = 'KCHT' $sreche 'VECT' 'SOMMET' (0. 0. 1.) ;
  1800. uino = 'REDU' srechei uino ;
  1801. uino = 'KCHT' $sreche 'VECT' 'SOMMET' uino ;
  1802. uinj = uinj + uino ;
  1803. FIN BBRS ;
  1804. FINSI ;
  1805. Si TTbreche ;
  1806. mess ' Tient on passe la ';
  1807. NBR=dime rxt.'Breches' ;
  1808. ibr=index (rxt.'Breches') ;
  1809. Repeter BBRS NBR ;
  1810. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1811. * mess ' Conditions limites unj ??? ' (ibr.&BBRS) ;
  1812. brechei=Briches.'brechei' ;
  1813. $breche=Briches.'$breche' ;
  1814. uino = 'KCHT' $breche 'VECT' 'SOMMET' (0. 0. 1.) ;
  1815. uino = 'REDU' brechei uino ;
  1816. uino = 'KCHT' $breche 'VECT' 'SOMMET' uino ;
  1817. uinj = uinj + uino ;
  1818. FIN BBRS ;
  1819. FINSI ;
  1820. 'SI' (TBT.'Tbreche');
  1821. mess ' Il y a une breche ';
  1822. doma $breche impr;
  1823. uin1 = 'KCHT' $breche 'VECT' 'SOMMET' (0. 0. 1.);
  1824. uin1 = 'REDU' brechei uin1;
  1825. uin1 = 'KCHT' $breche 'VECT' 'SOMMET' uin1;
  1826. uinj = uinj + uin1;
  1827. 'FINSI';
  1828. 'SI' (TBT.'Tbreche2');
  1829. uin2 = 'KCHT' GEO.'$breche2' 'VECT' 'SOMMET' (0. 0. (-1.));
  1830. uin2 = 'REDU' brech2i uin2;
  1831. uin2 = 'KCHT' GEO.'$breche2' 'VECT' 'SOMMET' uin2;
  1832. uinj = uinj + uin2;
  1833. 'FINSI';
  1834. 'SI' (TBT.'Tbreche3');
  1835. uin3 = 'KCHT' GEO.'$breche3' 'VECT' 'SOMMET' (0. 0. (-1.));
  1836. uin3 = 'REDU' brech3i uin3;
  1837. uin3 = 'KCHT' GEO.'$breche3' 'VECT' 'SOMMET' uin3;
  1838. uinj = uinj + uin3;
  1839. 'FINSI';
  1840.  
  1841. Si (exist tic 'UN');
  1842. ma=extr tic.'UN' MAILLAGE ;
  1843. ms=doma $vtf 'SOMMET' ;
  1844. ELIM (ma et ms) epsi ;
  1845. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'UN') ;
  1846. Sinon ;
  1847. 'SI' ((TBT.'Tbreche') ou (TBT.'Tbreche2') ou (TBT.'Tbreche3')
  1848. ou TTbreche ou TTsortie);
  1849. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0. 0.) uinj;
  1850. 'SINON';
  1851. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0. 0.);
  1852. 'FINSI';
  1853. Finsi ;
  1854.  
  1855. Si (exist tic 'UNM');
  1856. ma=extr tic.'UNM' MAILLAGE ;
  1857. ms=doma $vtf 'SOMMET' ;
  1858. ELIM (ma et ms) epsi ;
  1859. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'UNM');
  1860. Sinon ;
  1861. 'SI' ((TBT.'Tbreche') ou (TBT.'Tbreche2') ou (TBT.'Tbreche3')
  1862. ou TTbreche ou TTsortie);
  1863. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0. 0.) uinj;
  1864. 'SINON';
  1865. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0. 0.);
  1866. 'FINSI';
  1867. Finsi ;
  1868.  
  1869. Si(exist tic 'ROG');
  1870. ma=extr tic.'ROG' MAILLAGE ;
  1871. mc=doma $vtf 'CENTRE' ;
  1872. ELIM (ma et mc) epsi ;
  1873. tic.'ROG' = 'KCHT' $vtf 'VECT' 'CENTRE' (tic.'ROG') ;
  1874. Sinon ;
  1875. tic.'ROG' = 'KCHT' $vtf 'VECT' 'CENTRE' (0. 0. 0.) ;
  1876. Finsi ;
  1877.  
  1878. 'SINON' ;
  1879.  
  1880. uinj matvide= kops 'MATRIK' ;
  1881. Si TTsortie ;
  1882. NBR=dime rxt.'Sorties' ;
  1883. ibr=index (rxt.'Sorties') ;
  1884. Repeter BBRS NBR ;
  1885. Sriches=rxt.'Sorties'.(ibr.&BBRS) ;
  1886. srechei=Sriches.'srechei' ;
  1887. $sreche=Sriches.'$sreche' ;
  1888. uino = 'KCHT' $sreche 'VECT' 'SOMMET' (0. 1.) ;
  1889. uino = 'REDU' srechei uino ;
  1890. uino = 'KCHT' $sreche 'VECT' 'SOMMET' uino ;
  1891. uinj = uinj + uino ;
  1892. FIN BBRS ;
  1893. FINSI ;
  1894. Si TTbreche ;
  1895. NBR=dime rxt.'Breches' ;
  1896. ibr=index (rxt.'Breches') ;
  1897. Repeter BBRS NBR ;
  1898. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  1899. brechei=Briches.'brechei' ;
  1900. $breche=Briches.'$breche' ;
  1901. uino = 'KCHT' $breche 'VECT' 'SOMMET' (0. 1.) ;
  1902. uino = 'REDU' brechei uino ;
  1903. uino = 'KCHT' $breche 'VECT' 'SOMMET' uino ;
  1904. uinj = uinj + uino ;
  1905. FIN BBRS ;
  1906. FINSI ;
  1907. 'SI' (TBT.'Tbreche');
  1908. uin1 = 'KCHT' $breche 'VECT' 'SOMMET' (0. 1.);
  1909. uin1 = 'REDU' brechei uin1;
  1910. uin1 = 'KCHT' $breche 'VECT' 'SOMMET' uin1;
  1911. uinj = uinj + uin1 ;
  1912. 'FINSI';
  1913. 'SI' (TBT.'Tbreche2');
  1914. uin2 = 'KCHT' GEO.'$breche2' 'VECT' 'SOMMET' (0. (-1.));
  1915. uin2 = 'REDU' brech2i uin2;
  1916. uin2 = 'KCHT' GEO.'$breche2' 'VECT' 'SOMMET' uin2;
  1917. uinj = uinj + uin2;
  1918. 'FINSI';
  1919. 'SI' (TBT.'Tbreche3');
  1920. uin3 = 'KCHT' GEO.'$breche3' 'VECT' 'SOMMET' (0. (-1.));
  1921. uin3 = 'REDU' brech3i uin3;
  1922. uin3 = 'KCHT' GEO.'$breche3' 'VECT' 'SOMMET' uin3;
  1923. uinj = uinj + uin3;
  1924. 'FINSI';
  1925.  
  1926.  
  1927. Si(exist tic 'UN');
  1928. ma=extr tic.'UN' MAILLAGE ;
  1929. ms=doma $vtf 'SOMMET' ;
  1930. ELIM (ma et ms) epsi ;
  1931. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'UN') ;
  1932. Sinon ;
  1933. 'SI' ((TBT.'Tbreche') ou (TBT.'Tbreche2') ou (TBT.'Tbreche3')
  1934. ou TTbreche ou TTsortie);
  1935. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0.) uinj;
  1936. 'SINON';
  1937. tic.'UN' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0.);
  1938. 'FINSI';
  1939. Finsi ;
  1940.  
  1941. Si(exist tic 'UNM');
  1942. ma=extr tic.'UNM' MAILLAGE ;
  1943. ms=doma $vtf 'SOMMET' ;
  1944. ELIM (ma et ms) epsi ;
  1945. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (tic.'UNM') ;
  1946. Sinon ;
  1947. 'SI' ((TBT.'Tbreche') ou (TBT.'Tbreche2') ou (TBT.'Tbreche3')
  1948. ou TTbreche ou TTsortie);
  1949. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0.) uinj;
  1950. 'SINON';
  1951. tic.'UNM' = 'KCHT' $vtf 'VECT' 'SOMMET' (0. 0.);
  1952. 'FINSI';
  1953. Finsi ;
  1954.  
  1955. Si(exist tic 'ROG');
  1956. ma=extr tic.'ROG' MAILLAGE ;
  1957. mc=doma $vtf 'CENTRE' ;
  1958. ELIM (ma et mc) epsi ;
  1959. tic.'ROG' = 'KCHT' $vtf 'VECT' 'CENTRE' (tic.'ROG') ;
  1960. Sinon ;
  1961. tic.'ROG' = 'KCHT' $vtf 'VECT' 'CENTRE' (0. 0.) ;
  1962. Finsi ;
  1963.  
  1964. 'FINSI' ;
  1965.  
  1966. 'SI'(EGA TBT.'MODTURB' 'KEPSILON') ;
  1967. Si(exist tic 'KN') ;
  1968. *ma=extr tic.'KN' MAILLAGE ;
  1969. *mc=doma $vtf 'SOMMET' ;
  1970. *ELIM (ma et mc) epsi ;
  1971. tic.'KN' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KN') ;
  1972. Sinon ;
  1973. tic.'KN' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1974. Finsi ;
  1975. Si(exist tic 'EN') ;
  1976. *ma=extr tic.'EN' MAILLAGE ;
  1977. *mc=doma $vtf 'SOMMET' ;
  1978. *ELIM (ma et mc) epsi ;
  1979. tic.'EN' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'EN') ;
  1980. Sinon ;
  1981. tic.'EN' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1982. Finsi ;
  1983. Si(exist tic 'KNM') ;
  1984. *ma=extr tic.'KNM' MAILLAGE ;
  1985. *mc=doma $vtf 'SOMMET' ;
  1986. *ELIM (ma et mc) epsi ;
  1987. tic.'KNM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KNM') ;
  1988. Sinon ;
  1989. tic.'KNM' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1990. Finsi ;
  1991. Si(exist tic 'ENM') ;
  1992. *ma=extr tic.'ENM' MAILLAGE ;
  1993. *mc=doma $vtf 'SOMMET' ;
  1994. *ELIM (ma et mc) epsi ;
  1995. tic.'ENM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'ENM') ;
  1996. Sinon ;
  1997. tic.'ENM' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  1998. Finsi ;
  1999. Si(exist tic 'NUT') ;
  2000. *ma=extr tic.'NUT' MAILLAGE ;
  2001. *mc=doma $vtf 'CENTRE' ;
  2002. *ELIM (ma et mc) epsi ;
  2003. tic.'NUT' = 'KCHT' $vtf 'SCAL' 'CENTRE' (tic.'NUT') ;
  2004. Sinon ;
  2005. tic.'NUT' = 'KCHT' $vtf 'SCAL' 'CENTRE' 1.e-10 ;
  2006. Finsi ;
  2007. 'FINSI' ;
  2008. *-----------------------------------------------------------------------
  2009. * Specification pour la resolution du systeme
  2010. * TYPINV = 3 : Gradient Conjugue
  2011. * = 2 : BiCGStab
  2012. * = 1 : Methode Directe
  2013. * PRECOND = 3 Preconditionnement I-LU(0)
  2014. * NITMAX = nombre maximal d'iterations
  2015. * RESID = precision du Residu EPSS
  2016. *
  2017. *-----------------------------------------------------------------------
  2018. * Precision EPSS
  2019. * EPSS = 1.e-5 ;
  2020. * EPSS = 1.e-10 ;
  2021. EPSS = 1.e-20 ;
  2022. * Nombre total d iterations
  2023. * NTIT = 600 ;
  2024. NTIT = 800 ;
  2025.  
  2026. rv.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2027. rv.'METHINV'.TYPRENU=TBT.'RENU' ;
  2028. rv.'METHINV'.IMPINV=TBT.'nimpr' ;
  2029. rv.'METHINV'.NITMAX=NTIT ;
  2030. rv.'METHINV'.PRECOND=3 ;
  2031. rv.'METHINV'.'FCPRECI' = FCPRECI ;
  2032. rv.'METHINV'.'FCPRECT' = FCPRECT ;
  2033. rv.'METHINV'.'CALPREC' = calprec ;
  2034. rv.'METHINV'.RESID = EPSS ;
  2035.  
  2036. *----------------------------------------------------------------------
  2037. * Definition du minimum pour recalcul du preconditionnement
  2038. *
  2039. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2040. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2041. * rv.'MINPREC' = rv.'METHINV'.NITMAX ;
  2042. * 'FINSI' ;
  2043. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2044. *----------------------------------------------------------------------
  2045. * Traitement de la PRESSION
  2046. *
  2047.  
  2048. 'MESS' '==> Algorithme de Projection' ;
  2049. rvpr= 'EQEX'
  2050. 'OPTI' TBT.'FEF' TBT.'FIMPL' TBT.'KPRE' 'SUPG'
  2051. 'ZONE' $vtf 'OPER' 'KBBT' -1. (TBT.'STAB') 'INCO' 'UN' 'PRES'
  2052. ;
  2053.  
  2054. Si (NON TBT.'Tsortie') ;
  2055. rvpr= 'EQEX' rvpr
  2056. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'INCOD' TBT.'KPRE'
  2057. 'ZONE' $vtf 'OPER' 'FIMP' 'DSRC' 'INCO' 'PRES' ;
  2058. Finsi ;
  2059.  
  2060. Si(exist rxt 'pi') ;
  2061.  
  2062. Si(TBT.'Tsortie') ;
  2063. Si(EGA TBT.'KPRE' 'MSOMMET') ;
  2064. sortiep=doma GEO.'$sortie' MSOMMET ;
  2065. rvpr='EQEX' rvpr
  2066. 'CLIM' 'PRES' 'TIMP' sortiep 0. ;
  2067. Finsi ;
  2068. Sinon ;
  2069. rvpr='EQEX' rvpr
  2070. 'CLIM' 'PRES' 'TIMP' Pimp 0. ;
  2071. Finsi ;
  2072.  
  2073. Finsi ;
  2074.  
  2075. Si (TBT.'FPAROI') ;
  2076. rvpr= 'EQEX' rvpr
  2077. 'OPTI' TBT.'FEF' TBT.'FIMPL' TBT.'KPRE'
  2078. 'ZONE' (GEO.'$menvfU') 'OPER' 'VNIMP' $vtf 0. 'INCO' 'UN' 'PRES' ;
  2079. Finsi ;
  2080.  
  2081. 'SI' (TBT.'Taxe') ;
  2082. rvpr= 'EQEX' rvpr
  2083. 'OPTI' TBT.'FEF' TBT.'FIMPL' TBT.'KPRE'
  2084. 'ZONE' (GEO.'$axe') 'OPER' 'VNIMP' $vtf 0. 'INCO' 'UN' 'PRES' ;
  2085. 'FINSI' ;
  2086.  
  2087.  
  2088. MAXEL=TBT.'MAXELPRE' ;
  2089. mess ' Maximum d éléments pour une résolution directe de la pression '
  2090. MAXEL;
  2091. 'SI' ((NBEL vtf) '<EG' MAXEL) ;
  2092. rvpr.'METHINV'.TYPINV= 1 ;
  2093. rvpr.'METHINV'.TYPRENU=TBT.'RENU' ;
  2094. rvpr.'METHINV'.IMPINV=TBT.'nimpr' ;
  2095. mess ' Nombre d éléments: ' (NBEL VTF) ' => Méthode directe';
  2096. 'SINON' ;
  2097. rvpr.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2098. rvpr.'METHINV'.TYPRENU=TBT.'RENU' ;
  2099. rvpr.'METHINV'.IMPINV=TBT.'nimpr' ;
  2100. rvpr.'METHINV'.NITMAX= NTIT ;
  2101. rvpr.'METHINV'.PRECOND=3 ;
  2102. rvpr.'METHINV'.'FCPRECI' = FCPRECI ;
  2103. rvpr.'METHINV'.'FCPRECT' = FCPRECT ;
  2104. rvpr.'METHINV'.'CALPREC' = calprec ;
  2105. rvpr.'METHINV'.RESID =1.e-12 ;
  2106. mess ' Nombre d éléments: ' (NBEL VTF) ' => Méthode itérative, TYPINV='
  2107. TBT.'TYPINV';
  2108. 'FINSI' ;
  2109.  
  2110. rv.'PROJ' = rvpr ;
  2111.  
  2112. *-------------------------------------------------------------
  2113. * Definition de l'inconnue de PRESSION
  2114. *
  2115. Si(exist tic 'PRES');
  2116. ma=extr tic.'PRES' MAILLAGE ;
  2117. ms=doma $vtf TBT.'KPRE';
  2118. ELIM (ma et ms) epsi ;
  2119. tic.'PRES' = 'KCHT' $vtf 'SCAL' TBT.'KPRE' (tic.'PRES') ;
  2120. Sinon ;
  2121. tic.'PRES' = 'KCHT' $vtf 'SCAL' TBT.'KPRE' 1.e-5 ;
  2122. Finsi ;
  2123.  
  2124. *------------------------------------------------------------
  2125. *-- EQUATIONS DU MODčLE K-EPSILON
  2126. Si ( Exist TBT 'MODTURB') ;
  2127.  
  2128.  
  2129. Si ((Ega TBT.'MODTURB' 'KEPSILON') et (NON (Ega TBT.'FEF' 'EFM1'))) ;
  2130.  
  2131. Rrk= 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  2132. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS'
  2133. 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 'Sk' 'INCO' 'KN'
  2134. 'OPTI' 'EFM1' 'CENTREE'
  2135. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'KNM' DTX 'INCO' 'KN'
  2136. ;
  2137.  
  2138. Rre= 'EQEX' 'NITER' 1 'OMEGA' 1.0 'ITMA' 0
  2139. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS'
  2140. 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 'Se' 'INCO' 'EN'
  2141. 'OPTI' 'EFM1' 'CENTREE'
  2142. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'ENM' DTX 'INCO' 'EN'
  2143. ;
  2144. *
  2145. * - Conditions aux limites sur la brčche
  2146. *
  2147. Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' GEO.'menvf' 0. ;
  2148. Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' GEO.'menvf' 1.e30 ;
  2149. kj=0. ;
  2150. ej=1.e30 ;
  2151. Si TTsortie ;
  2152. NBR=dime rxt.'Sorties' ;
  2153. ibr=index (rxt.'Sorties') ;
  2154. Repeter BBRS NBR ;
  2155. Briches=rxt.'Sorties'.(ibr.&BBRS) ;
  2156. mess ' Conditions limites sur K et Epsilon sortie '
  2157. (ibr.&BBRS) ;
  2158. brechei=Briches.'brechei' ;
  2159. brechec=Briches.'brechec' ;
  2160. Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' brechei kj
  2161. 'KN' 'TIMP' brechec 0. ;
  2162. Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' brechei ej
  2163. 'EN' 'TIMP' brechec 1.e30 ;
  2164. FIN BBRS ;
  2165. FINSI ;
  2166.  
  2167. Si TTbreche ;
  2168. NBR=dime rxt.'Breches' ;
  2169. ibr=index (rxt.'Breches') ;
  2170. Repeter BBRS NBR ;
  2171. Briches=rxt.'Breches'.(ibr.&BBRS) ;
  2172. mess ' Conditions limites sur K et Epsilon brčche '
  2173. (ibr.&BBRS) ;
  2174. brechei=Briches.'brechei' ;
  2175. brechec=Briches.'brechec' ;
  2176. Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' brechei kj
  2177. 'KN' 'TIMP' brechec 0. ;
  2178. Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' brechei ej
  2179. 'EN' 'TIMP' brechec 1.e30 ;
  2180. FIN BBRS ;
  2181. FINSI ;
  2182.  
  2183. Si (TBT.'Tbreche') ;
  2184. Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' brechei kj
  2185. 'KN' 'TIMP' brechec 0. ;
  2186. Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' brechei ej
  2187. 'EN' 'TIMP' brechec 1.e30 ;
  2188. Finsi ;
  2189.  
  2190. Si (TBT.'Tbreche2') ;
  2191. Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' brech2i kj
  2192. 'KN' 'TIMP' brech2c 0. ;
  2193. Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' brech2i ej
  2194. 'EN' 'TIMP' brech2c 1.e30 ;
  2195. Finsi ;
  2196.  
  2197. Si (TBT.'Tbreche3') ;
  2198. Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' brech3i kj
  2199. 'KN' 'TIMP' brech3c 0. ;
  2200. Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' brech3i ej
  2201. 'EN' 'TIMP' brech3c 1.e30 ;
  2202. Finsi ;
  2203.  
  2204. Rrk .inco = tic ;
  2205. Rrk .'METHINV'.TYPINV=TBT.'TYPINV' ;
  2206. Rrk .'METHINV'.TYPRENU=TBT.'RENU' ;
  2207. Rrk .'METHINV'.IMPINV=TBT.'nimpr' ;
  2208. Rrk .'METHINV'.NITMAX=NTIT ;
  2209. Rrk .'METHINV'.PRECOND=3 ;
  2210. Rrk .'METHINV'.'FCPRECI' = FCPRECI ;
  2211. Rrk .'METHINV'.'FCPRECT' = FCPRECT ;
  2212. Rrk .'METHINV'.'CALPREC' = calprec ;
  2213. Rrk .'METHINV'.RESID = EPSS ;
  2214.  
  2215.  
  2216. Rre .inco = tic ;
  2217. Rre .'METHINV'.TYPINV=TBT.'TYPINV' ;
  2218. Rre .'METHINV'.TYPRENU=TBT.'RENU' ;
  2219. Rre .'METHINV'.IMPINV=TBT.'nimpr' ;
  2220. Rre .'METHINV'.NITMAX=NTIT ;
  2221. Rre .'METHINV'.PRECOND=3 ;
  2222. Rre .'METHINV'.'FCPRECI' = FCPRECI ;
  2223. Rre .'METHINV'.'FCPRECT' = FCPRECT ;
  2224. Rre .'METHINV'.'CALPREC' = calprec ;
  2225. Rre .'METHINV'.RESID = EPSS ;
  2226.  
  2227.  
  2228. *----------------------------------------------------------------------
  2229. * Definition du minimum pour recalcul du preconditionnement
  2230. *
  2231. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2232. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2233. * Rrk .'MINPREC' = Rrk .'METHINV'.NITMAX ;
  2234. * Rre .'MINPREC' = Rre .'METHINV'.NITMAX ;
  2235. * 'FINSI' ;
  2236. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2237.  
  2238. Si (exist tic 'KN') ;
  2239. ma=extr tic.'KN' MAILLAGE ;
  2240. ms=doma $vtf 'SOMMET' ;
  2241. ELIM (ma et ms) epsi ;
  2242. tic.'KN' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KN') ;
  2243. Sinon ;
  2244. tic.'KN' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0. ;
  2245. Finsi ;
  2246.  
  2247. Si (exist tic 'KNM') ;
  2248. ma=extr tic.'KNM' MAILLAGE ;
  2249. ms=doma $vtf 'SOMMET' ;
  2250. ELIM (ma et ms) epsi ;
  2251. tic.'KNM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'KNM') ;
  2252. Sinon ;
  2253. tic.'KNM' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0. ;
  2254. Finsi ;
  2255.  
  2256. Si(exist tic 'Sk') ;
  2257. ma=extr tic.'Sk' MAILLAGE ;
  2258. mc=doma $vtf 'SOMMET' ;
  2259. ELIM (ma et mc) epsi ;
  2260. tic.'Sk' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'Sk') ;
  2261. Sinon ;
  2262. tic.'Sk' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0. ;
  2263. Finsi ;
  2264.  
  2265. Si (exist tic 'EN') ;
  2266. ma=extr tic.'EN' MAILLAGE ;
  2267. ms=doma $vtf 'SOMMET' ;
  2268. ELIM (ma et ms) epsi ;
  2269. tic.'EN' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'EN') ;
  2270. Sinon ;
  2271. tic.'EN' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  2272. Finsi ;
  2273. *mess ' EN OK ' ;
  2274. Si (exist tic 'ENM') ;
  2275. ma=extr tic.'ENM' MAILLAGE ;
  2276. ms=doma $vtf 'SOMMET' ;
  2277. ELIM (ma et ms) epsi ;
  2278. tic.'ENM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'ENM') ;
  2279. Sinon ;
  2280. tic.'ENM' = 'KCHT' $vtf 'SCAL' 'SOMMET' 1.e-5 ;
  2281. Finsi ;
  2282.  
  2283. Si(exist tic 'Se') ;
  2284. ma=extr tic.'Se' MAILLAGE ;
  2285. mc=doma $vtf 'SOMMET' ;
  2286. ELIM (ma et mc) epsi ;
  2287. tic.'Se' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'Se') ;
  2288. Sinon ;
  2289. tic.'Se' = 'KCHT' $vtf 'SCAL' 'SOMMET' 0. ;
  2290. Finsi ;
  2291.  
  2292. Si (exist tic 'NUEFF') ;
  2293. ma=extr tic.'NUEFF' MAILLAGE ;
  2294. ms=doma $vtf 'SOMMET' ;
  2295. ELIM (ma et ms) epsi ;
  2296. tic.'NUEFF'='KCHT' $vtf 'SCAL' ('CHAI' TBT.'SPGNU') (tic.'NUEFF');
  2297. Sinon ;
  2298. tic.'NUEFF' = 'KCHT' $vtf 'SCAL' ('CHAI' TBT.'SPGNU') 0. ;
  2299. list tic.'NUEFF' ;
  2300. Finsi ;
  2301. *
  2302. *mess ' Fin preparation KEPSILON ' ;
  2303. *
  2304. 'FINSI' ;
  2305. 'FINSI' ;
  2306.  
  2307. *------------------------------------------------------------
  2308. *-- EQUATIONS SUR LA TEMPERATURE FLUIDE TF
  2309. * Formulation non conservative Decentrement SUPG
  2310. * Termes sources : STF correspond a dP/dt
  2311. * 'ECHI' partie convective de l'echange paroi
  2312. * Le modele concerne est PAROIC1
  2313. * ATTENTION : division par RHO.CP
  2314. * Les parois imposees sont aussi traitees par ECHI
  2315. ac='TEXT' 'NUEFF' 'UN' 0.;
  2316.  
  2317. * TRTF=VRAI On range la table 'rtf' dans la table 'rv' pour bénéficier
  2318. * du parallélisme par équation de EXEC
  2319. * TRTF=FAUX On traite séparément 'rtf' donc séquentiellement
  2320.  
  2321. 'SI' (TBT.'TRTF') ;
  2322. rtf = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2323. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS'
  2324. * 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 0. 'INCO' 'TF'
  2325. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'TF'
  2326. 'OPTI' 'EFM1' 'CENTREE'
  2327. 'ZONE' $vtf 'OPER' 'FIMP' 'STF' 'INCO' 'TF'
  2328. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2329. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'TFNM' DTX 'INCO' 'TF'
  2330. ;
  2331. 'SINON' ;
  2332.  
  2333. rtf = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2334. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS'
  2335. * 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 0. 'INCO' 'TF'
  2336. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'TF'
  2337. 'OPTI' 'EFM1' 'CENTREE'
  2338. 'ZONE' $vtf 'OPER' 'FIMP' 'STF' 'INCO' 'TF'
  2339. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2340. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'TFNM' DTX 'INCO' 'TF'
  2341. ;
  2342. 'FINSI' ;
  2343.  
  2344. rtf.'PASDETPS' = rv.'PASDETPS' ;
  2345.  
  2346. 'SI' TBT.'TPAROIF' ;
  2347. 'SI' TBT.'THERCO' ;
  2348. rtf = 'EQEX' rtf
  2349. 'OPTI' 'EF' 'CENTREE' 'IMPL'
  2350. 'ZONE' (GEO.'$paroif') 'OPER' 'MDIA' 'KHEW' 'INCO' 'TF' ;
  2351. rtf = 'EQEX' rtf
  2352. 'OPTI' 'EF' 'CENTREE' 'IMPL'
  2353. 'ZONE' (GEO.'$paroif') 'OPER' 'MDIA' 'LHEW' 'INCO' 'TP' 'TF';
  2354. 'SINON' ;
  2355. rtf = 'EQEX' rtf
  2356. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2357. 'ZONE'(GEO.'$paroif') 'OPER' 'ECHI' 'KHEW' 'TBPW' 'INCO' 'TF';
  2358. 'FINSI' ;
  2359. 'FINSI' ;
  2360.  
  2361. * XFIMP 4 Tf ; Flux de Chaleur imposés
  2362. 'SI' TFIMP ;
  2363. NBFIMP=dime (rxt.'XFIMP') ;
  2364. ifimp=INDEX (rxt.'XFIMP') ;
  2365. REPETER BBFIMP NBFIMP ;
  2366. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2367. $mfpi=Bfimp.'$mfpi' ;
  2368. CKqt =(Bfimp.'Kqt') ;
  2369. rtf = 'EQEX' rtf
  2370. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2371. 'ZONE' $mfpi 'OPER' 'FIMP' CKqt 'INCO' 'TF' ;
  2372. FIN BBFIMP ;
  2373. 'FINSI' ;
  2374. * XFIMP 4 Tf ; Flux de Chaleur imposés
  2375.  
  2376. 'SI' TTIMP ;
  2377. NBTIMP=dime (rxt.'TIMP') ;
  2378. itimp=INDEX (rxt.'TIMP') ;
  2379. REPETER BBTIMP NBTIMP ;
  2380. Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ;
  2381. $mtpi=Btimp.'$mtpi' ;
  2382. CKHE1 =(Btimp.'KHE1') ;
  2383. CTBP1 =(Btimp.'TBP1') ;
  2384. rtf = 'EQEX' rtf
  2385. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2386. 'ZONE' $mtpi 'OPER' 'ECHI' CKHE1 CTBP1 'INCO' 'TF' ;
  2387. FIN BBTIMP ;
  2388. 'FINSI' ;
  2389.  
  2390. 'SI' TBT.'TTIMP1' ;
  2391. rtf = 'EQEX' rtf
  2392. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2393. 'ZONE' $mtp1 'OPER' 'ECHI' 'KHE1' 'TBP1' 'INCO' 'TF' ;
  2394. 'FINSI' ;
  2395.  
  2396. 'SI' TBT.'TTIMP2' ;
  2397. rtf = 'EQEX' rtf
  2398. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2399. 'ZONE' $mtp2 'OPER' 'ECHI' 'KHE2' 'TBP2' 'INCO' 'TF' ;
  2400. 'FINSI' ;
  2401.  
  2402. 'SI' TBT.'TTIMP3' ;
  2403. rtf = 'EQEX' rtf
  2404. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2405. 'ZONE' $mtp3 'OPER' 'ECHI' 'KHE3' 'TBP3' 'INCO' 'TF' ;
  2406. 'FINSI' ;
  2407.  
  2408. 'SI' TBT.'TECHANP' ;
  2409. rtf = 'EQEX' rtf
  2410. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2411. 'ZONE' $mtp0 'OPER' 'ECHI' 'KHE0' 'TBP0' 'INCO' 'TF' ;
  2412. 'FINSI' ;
  2413.  
  2414. * - Initialisation du terme Source STF
  2415. Si (non(exist tic 'STF'));
  2416. tic.'STF' = 0.0 ;
  2417. Finsi ;
  2418.  
  2419. rtf.inco = tic ;
  2420. rtf.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2421. rtf.'METHINV'.TYPRENU=TBT.'RENU' ;
  2422. rtf.'METHINV'.IMPINV=TBT.'nimpr' ;
  2423. rtf.'METHINV'.NITMAX=NTIT ;
  2424. rtf.'METHINV'.PRECOND=3 ;
  2425. rtf.'METHINV'.'FCPRECI' = FCPRECI ;
  2426. rtf.'METHINV'.'FCPRECT' = FCPRECT ;
  2427. rtf.'METHINV'.'CALPREC' = calprec ;
  2428. rtf.'METHINV'.RESID = EPSS ;
  2429.  
  2430.  
  2431. *----------------------------------------------------------------------
  2432. * Definition du minimum pour recalcul du preconditionnement
  2433. *
  2434. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2435. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2436. * rtf.'MINPREC' = rtf.'METHINV'.NITMAX ;
  2437. * 'FINSI' ;
  2438. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2439.  
  2440. *----------------------------------------------------------
  2441. * ---- EQUATION SUR LA DENSITE DE VAPEUR
  2442. * Formulation conservative - Decentrement SUPG
  2443. * BRECHE : traitee comme CLIM
  2444. * CONDENSATION : traitee par 'ECHI' sur modele PAROIC
  2445. * TRrvap=VRAI On range la table 'Rrrvap' dans la table 'rv' pour bénéficier
  2446. * du parallélisme par équation de EXEC
  2447. * TRrvap=FAUX On traite séparément 'Rrvap' donc séquentiellement
  2448.  
  2449.  
  2450. 'SI' TBT.'VAPEUR' ;
  2451.  
  2452. 'SI' (TBT.'TRrvap') ;
  2453. Rrvap = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2454. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2455. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RVP'
  2456. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RVP'
  2457. 'OPTI' 'EFM1' 'CENTREE'
  2458. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'RVPNM' DTX 'INCO' 'RVP' ;
  2459. 'SINON' ;
  2460. Rrvap = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2461. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2462. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RVP'
  2463. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RVP'
  2464. 'OPTI' 'EFM1' 'CENTREE'
  2465. 'ZONE' $vtf 'OPER' 'DFDT' 1. 'RVPNM' DTX 'INCO' 'RVP' ;
  2466. 'FINSI' ;
  2467.  
  2468. Rrvap.'PASDETPS' = rv.'PASDETPS' ;
  2469.  
  2470. 'SI' TBT.'TPAROIF' ;
  2471. Rrvap = 'EQEX' Rrvap
  2472. 'OPTI' 'EFM1' 'CENTREE'
  2473. 'ZONE' (GEO.'$paroif') 'OPER' 'ECHI' 'KKCW' 'ROVIW' 'INCO' 'RVP';
  2474. 'FINSI' ;
  2475.  
  2476. 'SI' TTIMP ;
  2477. NBTIMP=dime (rxt.'TIMP') ;
  2478. itimp=INDEX (rxt.'TIMP') ;
  2479. REPETER BBTIMP NBTIMP ;
  2480. Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ;
  2481. $mtpi=Btimp.'$mtpi' ;
  2482. CKKC1 =Btimp.'KKC1' ;
  2483. CROVI1=Btimp.'ROVI1' ;
  2484. Rrvap = 'EQEX' Rrvap
  2485. 'OPTI' 'EFM1' 'CENTREE'
  2486. 'ZONE' $mtpi 'OPER' 'ECHI' CKKC1 CROVI1 'INCO' 'RVP' ;
  2487. FIN BBTIMP ;
  2488. 'FINSI' ;
  2489.  
  2490. 'SI' TBT.'TTIMP1' ;
  2491. CKKC1 ='KKC1' ;
  2492. CROVI1='ROVI1' ;
  2493. Rrvap = 'EQEX' Rrvap
  2494. 'OPTI' 'EFM1' 'CENTREE'
  2495. 'ZONE' (GEO.'$mtp1') 'OPER' 'ECHI' CKKC1 CROVI1 'INCO' 'RVP' ;
  2496. 'FINSI' ;
  2497.  
  2498. 'SI' TBT.'TTIMP2' ;
  2499. Rrvap = 'EQEX' Rrvap
  2500. 'OPTI' 'EFM1' 'CENTREE'
  2501. 'ZONE' (GEO.'$mtp2') 'OPER' 'ECHI' 'KKC2' 'ROVI2' 'INCO' 'RVP';
  2502. 'FINSI' ;
  2503.  
  2504. 'SI' TBT.'TTIMP3' ;
  2505. Rrvap = 'EQEX' Rrvap
  2506. 'OPTI' 'EFM1' 'CENTREE'
  2507. 'ZONE' (GEO.'$mtp3') 'OPER' 'ECHI' 'KKC3' 'ROVI3' 'INCO' 'RVP';
  2508. 'FINSI' ;
  2509.  
  2510. 'SI' TBT.'TECHANP' ;
  2511. Rrvap = 'EQEX' Rrvap
  2512. 'OPTI' 'EFM1' 'CENTREE'
  2513. 'ZONE' (GEO.'$mtp0') 'OPER' 'ECHI' 'KKC0' 'ROVI0' 'INCO' 'RVP';
  2514. 'FINSI' ;
  2515.  
  2516. * XFIMP 4 RVP ; Flux de masse vapeur imposés
  2517. 'SI' TFIMP ;
  2518. NBFIMP=dime (rxt.'XFIMP') ;
  2519. ifimp=INDEX (rxt.'XFIMP') ;
  2520. REPETER BBFIMP NBFIMP ;
  2521. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2522. $mfpi=Bfimp.'$mfpi' ;
  2523. CKqeau =(Bfimp.'Kqeau') ;
  2524. Rrvap = 'EQEX' Rrvap
  2525. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2526. 'ZONE' $mfpi 'OPER' 'FIMP' CKqeau 'INCO' 'RVP' ;
  2527. FIN BBFIMP ;
  2528. 'FINSI' ;
  2529. * XFIMP 4 RVP ; Flux de masse vapeur imposés
  2530.  
  2531. Rrvap.inco = tic ;
  2532. Rrvap.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2533. Rrvap.'METHINV'.TYPRENU=TBT.'RENU' ;
  2534. Rrvap.'METHINV'.IMPINV=TBT.'nimpr' ;
  2535. Rrvap.'METHINV'.NITMAX=NTIT ;
  2536. Rrvap.'METHINV'.PRECOND=3 ;
  2537. Rrvap.'METHINV'.'FCPRECI' = FCPRECI ;
  2538. Rrvap.'METHINV'.'FCPRECT' = FCPRECT ;
  2539. Rrvap.'METHINV'.'CALPREC' = calprec ;
  2540. Rrvap.'METHINV'.RESID = EPSS ;
  2541.  
  2542. *----------------------------------------------------------------------
  2543. * Definition du minimum pour recalcul du preconditionnement
  2544. *
  2545. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2546. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2547. * Rrvap.'MINPREC' = Rrvap.'METHINV'.NITMAX ;
  2548. * 'FINSI' ;
  2549. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2550. 'FINSI' ;
  2551.  
  2552. *----------------------------------------------------------
  2553. * EQUATIONS SUR LA DENSITE HELIUM
  2554. * Formulation conservative - Decentrement SUPG
  2555. * BRECHE : condition aux limites
  2556. * TRrhe=VRAI On range la table 'Rrhe' dans la table 'rv' pour bénéficier
  2557. * du parallélisme par équation de EXEC
  2558. * TRrhe=FAUX On traite séparément 'Rrhe' donc séquentiellement
  2559.  
  2560.  
  2561. 'SI' TBT.'THE' ;
  2562.  
  2563. 'SI' (TBT.'TRrhe') ;
  2564. Rrhe = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2565. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2566. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RHE'
  2567. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RHE'
  2568. 'OPTI' 'EFM1' 'CENTREE'
  2569. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RHEM' DTX 'INCO' 'RHE' ;
  2570. 'SINON' ;
  2571. Rrhe = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2572. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2573. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RHE'
  2574. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RHE'
  2575. 'OPTI' 'EFM1' 'CENTREE'
  2576. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RHEM' DTX 'INCO' 'RHE' ;
  2577. 'FINSI' ;
  2578.  
  2579. Rrhe.'PASDETPS' = rv.'PASDETPS' ;
  2580.  
  2581. * XFIMP 4 RHE ; Flux de masse Hélium imposé
  2582. 'SI' TFIMP ;
  2583. NBFIMP=dime (rxt.'XFIMP') ;
  2584. ifimp=INDEX (rxt.'XFIMP') ;
  2585. REPETER BBFIMP NBFIMP ;
  2586. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2587. $mfpi=Bfimp.'$mfpi' ;
  2588. CKqhe =(Bfimp.'Kqhe') ;
  2589. Rrhe = 'EQEX' Rrhe
  2590. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2591. 'ZONE' $mfpi 'OPER' 'FIMP' CKqhe 'INCO' 'RHE' ;
  2592. FIN BBFIMP ;
  2593. 'FINSI' ;
  2594. * XFIMP 4 RHE ; Flux de masse Hélium imposé
  2595.  
  2596. Rrhe.inco = tic ;
  2597. Rrhe.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2598. Rrhe.'METHINV'.TYPRENU=TBT.'RENU' ;
  2599. Rrhe.'METHINV'.IMPINV=TBT.'nimpr' ;
  2600. Rrhe.'METHINV'.NITMAX=NTIT ;
  2601. Rrhe.'METHINV'.PRECOND=3 ;
  2602. Rrhe.'METHINV'.'FCPRECI' = FCPRECI ;
  2603. Rrhe.'METHINV'.'FCPRECT' = FCPRECT ;
  2604. Rrhe.'METHINV'.'CALPREC' = calprec ;
  2605. Rrhe.'METHINV'.RESID = EPSS ;
  2606.  
  2607. *----------------------------------------------------------------------
  2608. * Definition du minimum pour recalcul du preconditionnement
  2609. *
  2610. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2611. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2612. * Rrhe.'MINPREC' = Rrhe.'METHINV'.NITMAX ;
  2613. * 'FINSI' ;
  2614. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2615. 'FINSI' ;
  2616.  
  2617. *----------------------------------------------------------
  2618. * EQUATIONS SUR LA DENSITE HYDROGENE
  2619. * Formulation conservative - Decentrement SUPG
  2620. * BRECHE : condition aux limites
  2621. * TRrh2=VRAI On range la table 'Rrh2' dans la table 'rv' pour bénéficier
  2622. * du parallélisme par équation de EXEC
  2623. * TRrh2=FAUX On traite séparément 'Rrh2' donc séquentiellement
  2624.  
  2625.  
  2626. 'SI' TBT.'TH2' ;
  2627.  
  2628. 'SI' (TBT.'TRrh2') ;
  2629. Rrh2 = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2630. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2631. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RH2'
  2632. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RH2'
  2633. 'OPTI' 'EFM1' 'CENTREE'
  2634. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RH2M' DTX 'INCO' 'RH2' ;
  2635. 'SINON' ;
  2636. Rrh2 = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2637. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2638. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RH2'
  2639. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RH2'
  2640. 'OPTI' 'EFM1' 'CENTREE'
  2641. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RH2M' DTX 'INCO' 'RH2' ;
  2642. 'FINSI' ;
  2643.  
  2644. Rrh2.'PASDETPS' = rv.'PASDETPS' ;
  2645.  
  2646. * XFIMP 4 RH2 ; Flux de masse H2 imposé
  2647. 'SI' TFIMP ;
  2648. NBFIMP=dime (rxt.'XFIMP') ;
  2649. ifimp=INDEX (rxt.'XFIMP') ;
  2650. REPETER BBFIMP NBFIMP ;
  2651. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2652. $mfpi=Bfimp.'$mfpi' ;
  2653. CKqh2 =(Bfimp.'Kqh2') ;
  2654. Rrh2 = 'EQEX' Rrh2
  2655. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2656. 'ZONE' $mfpi 'OPER' 'FIMP' CKqh2 'INCO' 'RH2' ;
  2657. FIN BBFIMP ;
  2658. 'FINSI' ;
  2659. * XFIMP 4 RH2 ; Flux de masse H2 imposé
  2660.  
  2661. Rrh2.inco = tic ;
  2662. Rrh2.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2663. Rrh2.'METHINV'.TYPRENU=TBT.'RENU' ;
  2664. Rrh2.'METHINV'.IMPINV=TBT.'nimpr' ;
  2665. Rrh2.'METHINV'.NITMAX=NTIT ;
  2666. Rrh2.'METHINV'.PRECOND=3 ;
  2667. Rrh2.'METHINV'.'FCPRECI' = FCPRECI ;
  2668. Rrh2.'METHINV'.'FCPRECT' = FCPRECT ;
  2669. Rrh2.'METHINV'.'CALPREC' = calprec ;
  2670. Rrh2.'METHINV'.RESID = EPSS ;
  2671.  
  2672. *----------------------------------------------------------------------
  2673. * Definition du minimum pour recalcul du preconditionnement
  2674. *
  2675. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2676. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2677. * Rrh2.'MINPREC' = Rrh2.'METHINV'.NITMAX ;
  2678. * 'FINSI' ;
  2679. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2680. 'FINSI' ;
  2681.  
  2682. *----------------------------------------------------------
  2683. * EQUATIONS SUR LA DENSITE OXYGENE
  2684. * Formulation conservative - Decentrement SUPG
  2685. * BRECHE : condition aux limites
  2686. * TRro2=VRAI On range la table 'Rro2' dans la table 'rv' pour bénéficier
  2687. * du parallélisme par équation de EXEC
  2688. * TRro2=FAUX On traite séparément 'Rro2' donc séquentiellement
  2689.  
  2690.  
  2691. 'SI' TBT.'TO2' ;
  2692.  
  2693. 'SI' (TBT.'TRro2') ;
  2694. Rro2 = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2695. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2696. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RO2'
  2697. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RO2'
  2698. 'OPTI' 'EFM1' 'CENTREE'
  2699. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RO2M' DTX 'INCO' 'RO2' ;
  2700. 'SINON' ;
  2701. Rro2 = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2702. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2703. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RO2'
  2704. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RO2'
  2705. 'OPTI' 'EFM1' 'CENTREE'
  2706. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RO2M' DTX 'INCO' 'RO2' ;
  2707. 'FINSI' ;
  2708.  
  2709. Rro2.'PASDETPS' = rv.'PASDETPS' ;
  2710.  
  2711. * XFIMP 4 RO2 ; Flux de masse O2 imposé
  2712. 'SI' TFIMP ;
  2713. NBFIMP=dime (rxt.'XFIMP') ;
  2714. ifimp=INDEX (rxt.'XFIMP') ;
  2715. REPETER BBFIMP NBFIMP ;
  2716. Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ;
  2717. $mfpi=Bfimp.'$mfpi' ;
  2718. CKqo2 =(Bfimp.'Kqo2') ;
  2719. Rro2 = 'EQEX' Rro2
  2720. 'OPTI' 'EFM1' 'CENTREE' 'IMPL'
  2721. 'ZONE' $mfpi 'OPER' 'FIMP' CKqo2 'INCO' 'RO2' ;
  2722. FIN BBFIMP ;
  2723. 'FINSI' ;
  2724. * XFIMP 4 RO2 ; Flux de masse O2 imposé
  2725.  
  2726. Rro2.inco = tic ;
  2727. Rro2.'METHINV'.TYPINV=TBT.'TYPINV' ;
  2728. Rro2.'METHINV'.TYPRENU=TBT.'RENU' ;
  2729. Rro2.'METHINV'.IMPINV=TBT.'nimpr' ;
  2730. Rro2.'METHINV'.NITMAX=NTIT ;
  2731. Rro2.'METHINV'.PRECOND=3 ;
  2732. Rro2.'METHINV'.'FCPRECI' = FCPRECI ;
  2733. Rro2.'METHINV'.'FCPRECT' = FCPRECT ;
  2734. Rro2.'METHINV'.'CALPREC' = calprec ;
  2735. Rro2.'METHINV'.RESID = EPSS ;
  2736.  
  2737. *----------------------------------------------------------------------
  2738. * Definition du minimum pour recalcul du preconditionnement
  2739. *
  2740. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2741. * 'SI' ( 'NON' tbt.'UTILPREC' ) ;
  2742. * Rro2.'MINPREC' = Rro2.'METHINV'.NITMAX ;
  2743. * 'FINSI' ;
  2744. *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2745. 'FINSI' ;
  2746.  
  2747. *----------------------------------------------------------
  2748. * EQUATIONS SUR LA DENSITE AZOTE
  2749. * Formulation conservative - Decentrement SUPG
  2750. * BRECHE : condition aux limites
  2751. * TRrn2=VRAI On range la table 'Rrn2' dans la table 'rv' pour bénéficier
  2752. * du parallélisme par équation de EXEC
  2753. * TRrn2=FAUX On traite séparément 'Rrn2' donc séquentiellement
  2754.  
  2755.  
  2756. 'SI' TBT.'TN2' ;
  2757.  
  2758. 'SI' (TBT.'TRrn2') ;
  2759. Rrn2 = 'EQEX' rv 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2760. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2761. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RN2'
  2762. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RN2'
  2763. 'OPTI' 'EFM1' 'CENTREE'
  2764. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RN2M' DTX 'INCO' 'RN2' ;
  2765. 'SINON' ;
  2766. Rrn2 = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 0
  2767. 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS'
  2768. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RN2'
  2769. 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RN2'
  2770. 'OPTI' 'EFM1' 'CENTREE'
  2771. 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'RN2M' DTX 'INCO' 'RN2' ;
  2772. 'FINSI' ;
  2773.  
  2774. Rrn2.'PASDETPS' = rv.'PASDETPS' ;
  2775.  
  2776.  
  2777. * 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG'
  2778. * 'ZONE' $vtf 'OPER' 'TSCA' 'NUT' 'UN' 0.0 'INCO' 'RN2'
  2779. *mess ' Option NOCONS RN2 pour test branchee AREVOIR ' ;
  2780.  
  2781. * XFIMP 4 RN2 ; Flux de masse N2 imposé
  2782. 'SI' TFIMP ;
  2783. NBFIMP=dime (rxt.'XFIMP') ;
  2784. ifimp=INDEX (rxt.'XFIMP') ;
  2785. REPETER BBFIMP NBFIMP ;
  2786. Bfimp=rxt.'XFIMP'.(