Télécharger flamcat.dgibi

Retour à la liste

Numérotation des lignes :

  1. *****************************************************
  2. ************************************************************************
  3. ************************************************************************
  4. * fichier : flamcat.dgibi *
  5. ** modifie le 15/06/2014 passage EQPR -> EQEX *
  6. *****************************************************
  7. *****************************************
  8. * COMBUSTION CATALYTIQUE DE L'HYDROGENE *
  9. * on teste l'operateur FLAM *
  10. * H.PAILLERE/TTMF 97 *
  11. *****************************************
  12. DISCR = 'MACRO' ;
  13. KPRESS = 'CENTRE' ;
  14. BETAP = 1. ;
  15.  
  16. DEBP FILTREKE ;
  17. ARGU RX*TABLE ;
  18. rv=rx.'EQEX' ;
  19. rvp=rv.'PROJ' ;
  20.  
  21. * Filtre sur K et Epsilon
  22. * K > 0 Epsilon tel que l'echelle de longueur reste inférieure
  23. * à L0 diamètre enceinte
  24.  
  25. rv=rx.'EQEX' ;
  26. iarg=rx.'IARG' ;
  27. si( non ( ega iarg 3)) ;
  28. mess 'Procedure FILTREKE : nombre d arguments incorrect ' iarg ;
  29. quitter FILTREKE ;
  30. finsi ;
  31. si ( ega ('TYPE' rx.'ARG1') 'MOT ') ;
  32. U1=rv.'INCO'.(rx.'ARG1') ;
  33. sinon ;
  34. si ( ega ('TYPE' (rx.'ARG1')) 'CHPOINT') ;
  35. U1=rx.'ARG1' ;
  36. sinon ;
  37. mess 'Procedure FILTREKE : type argument 1 invalide ' ;
  38. quitter FILTREKE ;
  39. finsi ;
  40. finsi ;
  41.  
  42. si ( ega ('TYPE' rx.'ARG2') 'MOT ') ;
  43. L0=rv.'INCO'.(rx.'ARG2') ;
  44. sinon ;
  45. si ( ega ('TYPE' (rx.'ARG2')) 'FLOTTANT') ;
  46. L0=rx.'ARG2' ;
  47. sinon ;
  48. mess 'Procedure FILTREKE : type argument 2 invalide ' ;
  49. quitter FILTREKE ;
  50. finsi ;
  51. finsi ;
  52.  
  53. si ( ega ('TYPE' rx.'ARG3') 'MOT ') ;
  54. NU=rv.'INCO'.(rx.'ARG3') ;
  55. sinon ;
  56. si ( ega ('TYPE' (rx.'ARG3')) 'FLOTTANT') ;
  57. NU=rx.'ARG3' ;
  58. sinon ;
  59. mess 'Procedure FILTREKE : type argument 3 invalide ' ;
  60. quitter FILTREKE ;
  61. finsi ;
  62. finsi ;
  63.  
  64. nic=dime (rx.'LISTINCO') ;
  65. si( non ( ega nic 2)) ;
  66. mess 'Procedure FILTREKE : nombre d inconnues incorrect ' nic ;
  67. quitter FILTREKE ;
  68. finsi ;
  69. nomi1=extr 1 (rx.'LISTINCO');
  70. nomi2=extr 2 (rx.'LISTINCO');
  71. nom1= mot (text (chai nomi1)) ;
  72. nom2= mot (text (chai nomi2)) ;
  73.  
  74. en=rv.'INCO'.nom2 ;
  75. kn=rv.'INCO'.nom1 ;
  76. Rec=100.;
  77. k0 = 1.e-10 ;
  78.  
  79. lcu1=extr u1 'COMP' ;
  80. mdu=u1 lcu1 'PSCA' u1 lcu1;
  81. mdu=mdu ** 0.5 ;
  82. Re=kops (kops (kops mdu '*' L0) '/' nu) '+' (Rec / 10.) ;
  83. a= exp (kops Rec '/' Re ) ;
  84. kn=kops kn '|<' k0 ;
  85. E0= kops (kops kn '**' 1.5) '*' (a / L0) ;
  86. en=kops en '|<' E0 ;
  87.  
  88. rv.'INCO'.'EN'=en ;
  89. rv.'INCO'.'KN'=kn ;
  90.  
  91. as2 ama1 = 'KOPS' 'MATRIK' ;
  92. FINPROC as2 ama1;
  93.  
  94.  
  95. *********************************************************************
  96. * PROCEDURE RECOMBINEUR
  97. *********************************************************************
  98.  
  99. DEBPROC RECOMB ;
  100. ARGU RVX*'TABLE' ;
  101.  
  102. RV = RVX.'EQEX' ;
  103.  
  104. Dt = RV.PASDETPS.'DELTAT' ;
  105. Dt = Dt * RV.'ALFA' ;
  106.  
  107. YH2e = KCHT $ENTREE SCAL SOMMET RV.INCO.'YH2' ;
  108. YO2e = KCHT $ENTREE SCAL SOMMET RV.INCO.'YO2' ;
  109. YN2e = KCHT $ENTREE SCAL SOMMET RV.INCO.'YN2' ;
  110. YH2Oe = KCHT $ENTREE SCAL SOMMET RV.INCO.'YH2O' ;
  111.  
  112. SENTR1 = 'SOMT' ('DOMA' $ENTREE 'XXDIAGSI') ;
  113. YH2e = 'SOMT' (YH2e * ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
  114. YO2e = 'SOMT' (YO2e * ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
  115. YN2e = 'SOMT' (YN2e * ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
  116. YH2Oe = 'SOMT' (YH2Oe* ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
  117. YHEe = 0.D0 ;
  118. YCO2e = 0.D0 ;
  119. YCOe = 0.D0 ;
  120. Te = KCHT $ENTREE SCAL SOMMET RV.INCO.'TN' ;
  121. Te = 'SOMT' (Te* ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
  122.  
  123. Pe = RV.INCO.'PM' ;
  124.  
  125. Tp = RV.INCO.'TPLAQUE' ;
  126.  
  127. AA1 = RV . 'INCO' . 'A' ;
  128. BB1 = RV . 'INCO' . 'B' ;
  129. XH2ON = RV . 'INCO' . 'XH2ON' ;
  130. XH2OFF = RV . 'INCO' . 'XH2OFF' ;
  131. BETAI = RV . 'INCO' . 'BETA' ;
  132. *IKALP = 1 ;
  133. YH2s YO2s YN2s YH2Os YHEs YCO2s YCOs Ts TP DEB EFF XH2ONF
  134. = 'FLAM' 'RECOMBIN'
  135. YH2e YO2e YN2e YH2Oe YHEe YCO2e YCOe
  136. Te TP Pe Dt 1 'SIEMENS' AA1 BB1 XH2ON XH2OFF BETAI ;
  137. * Te TP Pe Dt IKALP 'SIEMENS' AA1 BB1 XH2ON XH2OFF BETAI ;
  138. *YH2s YO2s YN2s YH2Os TS TP DEB EFF XH2ONF
  139. *= 'FLAM' 'RECOMBIN'
  140. *YH2e YO2e YN2e YH2Oe Te TP Pe Dt 1
  141. *'SIEMENS' AA1 BB1 XH2ON XH2OFF BETAI ;
  142.  
  143. RV . 'INCO' . 'XH2ON' = XH2ONF ;
  144.  
  145. DD = RV.PASDETPS.'NUPASDT' ;
  146. NN = DD/20 ;
  147. LO = (DD-(20*NN)) EGA 0 ;
  148. SI ( LO ) ;
  149. P_TP = PROG TP ;
  150. RV.INCO.'TP' = RV.INCO.'TP' ET P_TP ;
  151. P_DEB = PROG DEB ;
  152. RV.INCO.'DEBIT' = RV.INCO.'DEBIT' ET P_DEB ;
  153. P_EFF = PROG EFF ;
  154. RV.INCO.'EFFIC' = RV.INCO.'EFFIC' ET P_EFF ;
  155. P_TS = PROG TS ;
  156. RV.INCO.'TS' = RV.INCO.'TS' ET P_TS ;
  157. P_PM = PROG Pe ;
  158. RV.INCO.'PRESSIO' = RV.INCO.'PRESSIO' ET P_PM ;
  159. MAST = SOMT (KOPS RV.INCO.'RHOM' '*' VOL) ;
  160. P_MAST = PROG MAST ;
  161. RV.INCO.'MASSETOT' = RV.INCO.'MASSETOT' ET P_MAST ;
  162.  
  163. FINSI ;
  164.  
  165.  
  166. R = (YH2s*RH2)+(YO2s*RO2)+(YN2s*RN2)+(YH2Os*RH2O);
  167. PSIs = R*TS ;
  168.  
  169. RV.INCO.'TPLAQUE' = TP ;
  170.  
  171. DD = RV.PASDETPS.'NUPASDT' ;
  172. NN = DD/20 ;
  173. LO = (DD-(20*NN)) EGA 0 ;
  174. SI ( LO ) ;
  175. MESSAGE 'TEMPERATURE PLAQUE EN K = ' TP ;
  176. MESSAGE 'TEMPERATURE GAZ SORTIE EN K = ' TS ;
  177. MESSAGE 'EFFICACITE RECOMBINEUR EN % = ' EFF ;
  178. MESSAGE 'DEBIT EN KG/S = ' DEB ;
  179. FINSI ;
  180.  
  181. * MODIFICATION DES CONDITIONS LIMITES
  182.  
  183. cl_YH2 = 'EXCO' 'YH2' RV.'CLIM' 'YH2' ;
  184. cl_YO2 = 'EXCO' 'YO2' RV.'CLIM' 'YO2' ;
  185. cl_YH2O= 'EXCO' 'YH2O' RV.'CLIM' 'YH2O' ;
  186. cl_GNX = 'EXCO' '1GN' RV.'CLIM' '1GN' ;
  187. cl_GNY = 'EXCO' '2GN' RV.'CLIM' '2GN' ;
  188. cl_KN = 'EXCO' 'KN' RV.'CLIM' 'KN' ;
  189. cl_EN = 'EXCO' 'EN' RV.'CLIM' 'EN' ;
  190. cl_PSI = 'EXCO' 'PSIN' RV.'CLIM' 'PSIN' ;
  191.  
  192. cl_YH2 = 0.D0 * cl_YH2 + YH2s ;
  193. cl_YO2 = 0.D0 * cl_YO2 + YO2s ;
  194. cl_YH2O = 0.D0 * cl_YH2O + YH2Os ;
  195. cl_PSI = 0.D0 * cl_PSI + PSIs ;
  196.  
  197. cl_GNYm = MANU 'CHPO' (MUR_HOR) 1 '2GN' 0. ;
  198. cl_GNXm = MANU 'CHPO' (MUR_VER) 1 '1GN' 0. ;
  199. cl_GNYe = MANU 'CHPO' (ENTREE) 1 '2GN' (DEB*length) ;
  200. cl_GNXs = MANU 'CHPO' (SORTIE) 1 '1GN' (DEB*length*SIGN) ;
  201.  
  202. cl_GNX = 0.D0 * cl_GNX + cl_GNXm + cl_GNXs ;
  203. cl_GNY = 0.D0 * cl_GNY + cl_GNYm + cl_GNYe ;
  204.  
  205. RV.'CLIM' = cl_YH2 + cl_YO2 + cl_YH2O + cl_GNX + cl_GNY +
  206. cl_KN + cl_EN + cl_PSI ;
  207.  
  208. detr cl_YH2 ;
  209. detr cl_YO2 ;
  210. detr cl_YH2O ;
  211. detr cl_GNX ;
  212. detr cl_GNY ;
  213. detr cl_KN ;
  214. detr cl_EN ;
  215. detr cl_PSI ;
  216. detr cl_GNYm ;
  217. detr cl_GNXm ;
  218. detr cl_GNYe ;
  219. detr cl_GNXs ;
  220.  
  221. as2 ama1 = 'KOPS' 'MATRIK' ;
  222. FINPROC as2 ama1;
  223.  
  224.  
  225. *********************************************************************
  226. * PROCEDURE CALCUL1
  227. *********************************************************************
  228. DEBPROC CALCUL1 ;
  229. ARGU RVX*'TABLE' ;
  230.  
  231. RV = RVX.'EQEX' ;
  232. RVP = RV.'PROJ' ;
  233.  
  234. RV.PASDETPS.'DELTAT' = 0.5 ;
  235.  
  236. * filtres sur fractions massiques et calcul de la fraction massique d'azote
  237.  
  238. YH2 = RV.INCO.'YH2' ;
  239. YO2 = RV.INCO.'YO2' ;
  240. YH2O = RV.INCO.'YH2O' ;
  241. YH2 = KOPS YH2 '|<' 0. ;
  242. YO2 = KOPS YO2 '|<' 0. ;
  243. YH2O = KOPS YH2O '|<' 0. ;
  244.  
  245. RV.INCO.'YH2' = YH2 ;
  246. RV.INCO.'YO2' = YO2 ;
  247. RV.INCO.'YH2O' = YH2O ;
  248. RV.INCO.'YN2' = KOPS 1.0 '-' RV.INCO.'YH2O' ;
  249. RV.INCO.'YN2' = KOPS RV.INCO.'YN2' '-' RV.INCO.'YH2' ;
  250. RV.INCO.'YN2' = KOPS RV.INCO.'YN2' '-' RV.INCO.'YO2' ;
  251.  
  252. * calcul de la constante des gaz et de la temperature
  253.  
  254. R = KOPS (KOPS YH2 '*' RH2) '+' (KOPS YO2 '*' RO2) ;
  255. R = KOPS R '+' (KOPS RV.INCO.'YN2' '*' RN2) ;
  256. R = KOPS R '+' (KOPS YH2O '*' RH2O) ;
  257. RV.INCO.'R' = KCHT $MT 'SCAL' 'SOMMET' R ;
  258. T = KOPS RV.INCO.'PSIN' '/' R ;
  259. RV.INCO.'TN' = KCHT $MT 'SCAL' 'SOMMET' T ;
  260.  
  261. * calcul des concentrations max et min d'hydrogène
  262.  
  263. DD = RV.PASDETPS.'NUPASDT' ;
  264. NN = DD/20 ;
  265. LO = (DD-(20*NN)) EGA 0 ;
  266. SI ( LO ) ;
  267. M = KOPS Rg '/' RV.INCO.'R' ;
  268. XH2 = KOPS RV.INCO.'YH2' '*' M ;
  269. XH2 = XH2/MH2 ;
  270. XH2 = XH2*100. ;
  271. XH2MAX = MAXI XH2 ;
  272. XH2MIN = MINI XH2 ;
  273. P_XH2MAX = PROG XH2MAX ;
  274. P_XH2MIN = PROG XH2MIN ;
  275. RV.INCO.'XH2MAX' = RV.INCO.'XH2MAX' ET P_XH2MAX ;
  276. RV.INCO.'XH2MIN' = RV.INCO.'XH2MIN' ET P_XH2MIN ;
  277. FINSI ;
  278.  
  279. * calcul de rho à partir de la loi d'état des gaz parfaits
  280.  
  281. RV.INCO.'RHO' = KOPS (RV.INCO.'PM') '/' (RV.INCO.'PSIN') ;
  282. RV.INCO.'RHOC' = NOEL $MT RV.INCO.'RHO' ;
  283. RV.INCO.'RHOC' = KCHT $MT 'SCAL' 'CENTRE' (RV.INCO.'RHOC') ;
  284. RHOM = (SOMT (KOPS RV.INCO.'RHOC' '*' VOL))/VOLT ;
  285. RV.INCO.'RHOM' = RHOM ;
  286.  
  287. * calcul du terme (rho-rhom)*g de la QDM
  288.  
  289. DRHO = KOPS (RV.INCO.'RHOC') '-' (RV.INCO.'RHOM') ;
  290. rogx = KCHT $MT SCAL CENTRE 0. ;
  291. rogy = KCHT $MT SCAL CENTRE (-9.81*DRHO) ;
  292. rogx = nomc 'UX' rogx 'NATU' 'DISCRET' ;
  293. rogy = nomc 'UY' rogy 'NATU' 'DISCRET' ;
  294. RV.INCO.'ROG' = KCHT $MT VECT CENTRE (rogx ET rogy) ;
  295.  
  296. * calcul la vitesse à partir de la qdm
  297.  
  298. GN = RV.INCO.'GN' ;
  299. gnx= kcht $MT scal sommet (exco 'UX' gn) ;
  300. gny= kcht $MT scal sommet (exco 'UY' gn) ;
  301. unx = kops gnx '/' RV.INCO.'RHO' ;
  302. uny = kops gny '/' RV.INCO.'RHO' ;
  303. unx = nomc 'UX' unx 'NATU' 'DISCRET' ;
  304. uny = nomc 'UY' uny 'NATU' 'DISCRET' ;
  305. un = kcht $MT vect sommet (unx et uny) ;
  306. RV.INCO.'UN' = un ;
  307.  
  308. * calcul de nut à partir de mut et de rho
  309.  
  310. RV.INCO.'NUT' = KOPS (RV.INCO.'MUT') '/' (RV.INCO.'RHOC') ;
  311.  
  312. as2 ama1 = 'KOPS' 'MATRIK' ;
  313. FINPROC as2 ama1;
  314.  
  315. *********************************************************************
  316. * PROCEDURE CALCUL2
  317. *********************************************************************
  318. DEBPROC CALCUL2 ;
  319. ARGU RVX*'TABLE' ;
  320.  
  321. RV = RVX.'EQEX' ;
  322. RVP = RV.'PROJ' ;
  323.  
  324. * on récupère le pas de temps
  325.  
  326. Dt = RV.PASDETPS.'DELTAT' ;
  327. Dt = Dt * RV.'ALFA' ;
  328.  
  329. DD = RV.PASDETPS.'NUPASDT' ;
  330. NN = DD/20 ;
  331. LO = (DD-(20*NN)) EGA 0 ;
  332. SI ( LO ) ;
  333. P_TEMPS = PROG RV.PASDETPS.'TPS' ;
  334. RV.INCO.'TEMPS' = RV.INCO.'TEMPS' ET P_TEMPS ;
  335. FINSI ;
  336.  
  337. * calcul l'intégrale se trouvant dans le terme Dp/Dt.
  338.  
  339. ZT = KOPS (RV.INCO.'PSIN') '-' (RV.INCO.'PSI1') ;
  340. ZT = KOPS ZT '/' Dt ;
  341. ZT = KOPS ZT '/' (RV.INCO.'PSIN') ;
  342.  
  343. ZZ = KOPS ZT '*' RV.INCO.'RHO' ;
  344. ZZ = NOEL $MT ZZ ;
  345. ZZ = KCHT $MT 'SCAL' 'CENTRE' ZZ ;
  346. ZZT = SOMT ( KOPS ZZ '*' VOL ) ;
  347.  
  348. RV.INCO.'PSI1' = KCHT $MT 'SCAL' 'SOMMET' (RV.INCO.'PSIN') ;
  349.  
  350. * calcul de dPdt
  351.  
  352. q0 = 'DBIT' RV.INCO.'GN' $SORTIE ;
  353. q1 = 'DBIT' RV.INCO.'GN' $ENTREE ;
  354. q0 = q0+q1 ;
  355. dPdt = ZZT + q0 ;
  356. dPdt = dPdt*(RV.INCO.'PM')/VOLT/RV.INCO.'RHOM' ;
  357.  
  358. * terme source de l'équation d'énergie
  359.  
  360. zuzu = (gamma-1.)/gamma ;
  361.  
  362. QC = NOEL $MT RV.INCO.'Q' ;
  363. QC = KCHT $MT 'SCAL' 'CENTRE' QC ;
  364. TOTO = KOPS QC '+' dPdt ;
  365. TOTO = KOPS TOTO '/' RV.INCO.'RHOC' ;
  366. TOTO = KOPS TOTO '*' zuzu ;
  367. RV.INCO.'S' = KCHT $MT 'SCAL' 'CENTRE' TOTO ;
  368.  
  369. * terme source équation de Poisson
  370.  
  371. Z1 = dPdt/RV.INCO.'PM' ;
  372. ZP = KOPS RV.INCO.'RHOC' '*' Z1 ;
  373. ZS = KOPS ZP '-' ZZ ;
  374. ZZS = KOPS ZS '*' VOL ;
  375. ZZS = ZZS * (-1.0) ;
  376. RV.INCO.'ZS' = KCHT $MT 'SCAL' 'CENTRE' ZZS ;
  377.  
  378. * calcul de l'évolution de la pression
  379.  
  380. RV.INCO.'PM' = RV.INCO.'PM' + (dPdt*dt) ;
  381.  
  382. * affichage informations toutes les 20 iterations
  383.  
  384. DD = RV.PASDETPS.'NUPASDT' ;
  385. NN = DD/20 ;
  386. LO = (DD-(20*NN)) EGA 0 ;
  387. SI ( LO ) ;
  388. MESSAGE '==========================================================' ;
  389. MESSAGE 'TEMPS = ' RV.PASDETPS.'TPS' ' PRESSION = ' RV.INCO.'PM' ;
  390. FINSI ;
  391.  
  392. as2 ama1 = 'KOPS' 'MATRIK' ;
  393. FINPROC as2 ama1;
  394.  
  395. ***************************************************************
  396. * JEU DE DONNEES NURETH-8 : CALCUL DE DISTRIBUTION/COMBUSTION *
  397. * ALGORITHME 'COMPRESSIBLE FAIBLE MACH' SEMI-IMPLICITE *
  398. * === DISTRIBUTION === *
  399. ***************************************************************
  400.  
  401. opti elem qua8 ;
  402.  
  403. *========================================================*
  404. * GENERATION DU MAILLAGE *
  405. *========================================================*
  406.  
  407. L = 1. ;
  408. H = 2. ;
  409. height= 1. ;
  410. depth = 0.3 ;
  411. length= 0.2 ;
  412.  
  413. * position du recombineur
  414. XR = 0.2 ;
  415. YR = 0.2 ;
  416. epsi = 0.01 ;
  417. SREC = 'D' ;
  418. DINJ = depth ;
  419.  
  420. A1 = 0.0 0.0 ;
  421. A2 = L 0.0 ;
  422. A3 = L H ;
  423. A4 = 0.0 H ;
  424.  
  425. R1 = XR YR ;
  426. R2 = (XR+depth) YR ;
  427. R3 = (XR+depth) (YR+height-depth) ;
  428. R4 = (XR+depth) (YR+height) ;
  429. R5 = XR (YR+height) ;
  430. R6 = XR (YR+height-depth) ;
  431.  
  432. C1 = XR 0.0 ;
  433. C2 = (XR+depth) 0.0 ;
  434. C3 = L YR ;
  435. C4 = L (YR+height-depth) ;
  436. C5 = L (YR+height) ;
  437. C6 = (XR+depth) H ;
  438. C7 = XR H ;
  439. C8 = 0.0 (YR+height) ;
  440. C9 = 0.0 (YR+height-depth) ;
  441. C10 = 0.0 YR ;
  442.  
  443. DE1 = 1.2 ;
  444. DE2 = 0.8 ;
  445. DE3 = 0.2 ;
  446.  
  447. SI (EGA SREC 'G') ;
  448. DE4 = DE3 ;
  449. DE5 = DE3 ;
  450. SINON ;
  451. DE4 = DE3 ;
  452. DE5 = DE3 ;
  453. FINSI ;
  454.  
  455. A1C1 = 'DROI' A1 C1 'DINI' DE1 'DFIN' DE4 ;
  456. C1R1 = 'DROI' C1 R1 'DINI' DE2 'DFIN' DE3 ;
  457. R1C10 = 'DROI' R1 C10 'DINI' DE4 'DFIN' DE1 ;
  458. C10A1 = 'DROI' C10 A1 'DINI' DE3 'DFIN' DE2 ;
  459.  
  460. C1C2 = 'DROI' C1 C2 'DINI' DE3 'DFIN' DE3 ;
  461. C2R2 = 'DROI' C2 R2 'DINI' DE2 'DFIN' DE3 ;
  462. R2R1 = 'DROI' R2 R1 'DINI' DE3 'DFIN' DE3 ;
  463. R1C1 = 'DROI' R1 C1 'DINI' DE3 'DFIN' DE2 ;
  464.  
  465. C2A2 = 'DROI' C2 A2 'DINI' DE5 'DFIN' DE1 ;
  466. A2C3 = 'DROI' A2 C3 'DINI' DE2 'DFIN' DE3 ;
  467. C3R2 = 'DROI' C3 R2 'DINI' DE1 'DFIN' DE5 ;
  468. R2C2 = 'DROI' R2 C2 'DINI' DE3 'DFIN' DE2 ;
  469.  
  470. R2C3 = 'DROI' R2 C3 'DINI' DE5 'DFIN' DE1 ;
  471. C3C4 = 'DROI' C3 C4 'DINI' DE3 'DFIN' DE3 ;
  472. C4R3 = 'DROI' C4 R3 'DINI' DE1 'DFIN' DE5 ;
  473. R3R2 = 'DROI' R3 R2 'DINI' DE3 'DFIN' DE3 ;
  474.  
  475. R3C4 = 'DROI' R3 C4 'DINI' DE5 'DFIN' DE1 ;
  476. C4C5 = 'DROI' C4 C5 'DINI' DE3 'DFIN' DE3 ;
  477. C5R4 = 'DROI' C5 R4 'DINI' DE1 'DFIN' DE5 ;
  478. R4R3 = 'DROI' R4 R3 'DINI' DE3 'DFIN' DE3 ;
  479.  
  480. R4C5 = 'DROI' R4 C5 'DINI' DE5 'DFIN' DE1 ;
  481. C5A3 = 'DROI' C5 A3 'DINI' DE3 'DFIN' DE1 ;
  482. A3C6 = 'DROI' A3 C6 'DINI' DE1 'DFIN' DE5 ;
  483. C6R4 = 'DROI' C6 R4 'DINI' DE1 'DFIN' DE3 ;
  484.  
  485. R5R4 = 'DROI' R5 R4 'DINI' DE3 'DFIN' DE3 ;
  486. R4C6 = 'DROI' R4 C6 'DINI' DE3 'DFIN' DE1 ;
  487. C6C7 = 'DROI' C6 C7 'DINI' DE3 'DFIN' DE3 ;
  488. C7R5 = 'DROI' C7 R5 'DINI' DE1 'DFIN' DE3 ;
  489.  
  490. C8R5 = 'DROI' C8 R5 'DINI' DE1 'DFIN' DE4 ;
  491. R5C7 = 'DROI' R5 C7 'DINI' DE3 'DFIN' DE1 ;
  492. C7A4 = 'DROI' C7 A4 'DINI' DE4 'DFIN' DE1 ;
  493. A4C8 = 'DROI' A4 C8 'DINI' DE1 'DFIN' DE3 ;
  494.  
  495. C9R6 = 'DROI' C9 R6 'DINI' DE1 'DFIN' DE4 ;
  496. R6R5 = 'DROI' R6 R5 'DINI' DE3 'DFIN' DE3 ;
  497. R5C8 = 'DROI' R5 C8 'DINI' DE4 'DFIN' DE1 ;
  498. C8C9 = 'DROI' C8 C9 'DINI' DE3 'DFIN' DE3 ;
  499.  
  500. C10R1 = 'DROI' C10 R1 'DINI' DE1 'DFIN' DE4 ;
  501. R1R6 = 'DROI' R1 R6 'DINI' DE3 'DFIN' DE3 ;
  502. R6C9 = 'DROI' R6 C9 'DINI' DE4 'DFIN' DE1 ;
  503. C9C10 = 'DROI' C9 C10 'DINI' DE3 'DFIN' DE3 ;
  504.  
  505.  
  506. COMPA = 'DALLER' A1C1 C1R1 R1C10 C10A1 'PLAN' ;
  507. COMPB = 'DALLER' C1C2 C2R2 R2R1 R1C1 'PLAN' ;
  508. COMPC = 'DALLER' C2A2 A2C3 C3R2 R2C2 'PLAN' ;
  509. COMPD = 'DALLER' R2C3 C3C4 C4R3 R3R2 'PLAN' ;
  510. COMPE = 'DALLER' R3C4 C4C5 C5R4 R4R3 'PLAN' ;
  511. COMPF = 'DALLER' R4C5 C5A3 A3C6 C6R4 'PLAN' ;
  512. COMPG = 'DALLER' R5R4 R4C6 C6C7 C7R5 'PLAN' ;
  513. COMPH = 'DALLER' C8R5 R5C7 C7A4 A4C8 'PLAN' ;
  514. COMPI = 'DALLER' C9R6 R6R5 R5C8 C8C9 'PLAN' ;
  515. COMPJ = 'DALLER' C10R1 R1R6 R6C9 C9C10 'PLAN' ;
  516.  
  517. COMPA = 'COUL' COMPA 'ROUG' ;
  518. COMPB = 'COUL' COMPB 'BLEU' ;
  519. COMPC = 'COUL' COMPC 'JAUN' ;
  520. COMPD = 'COUL' COMPD 'TURQ' ;
  521. COMPE = 'COUL' COMPE 'BLAN' ;
  522. COMPF = 'COUL' COMPF 'ROUG' ;
  523. COMPG = 'COUL' COMPG 'VERT' ;
  524. COMPH = 'COUL' COMPH 'BLAN' ;
  525. COMPI = 'COUL' COMPI 'ROUG' ;
  526. COMPJ = 'COUL' COMPJ 'BLEU' ;
  527.  
  528. MT = COMPA ET COMPB ET COMPC ET
  529. COMPD ET COMPE ET COMPF ET COMPG ET COMPH ET COMPI ET COMPJ ;
  530. MMT = Chan MT 'QUAF';
  531. 'ELIM' epsi MT ;
  532. WALL = A1C1 ET C1C2 ET C2A2 ET A2C3 ET C3C4 ET C4C5 ET C5A3 ET
  533. A3C6 ET C6C7 ET C7A4 ET A4C8 ET C8C9 ET C9C10 ET C10A1 ;
  534.  
  535. $MT = 'MODE' MMT 'NAVIER_STOKES' DISCR ;
  536. MT = 'DOMA' $MT 'MAILLAGE' ;
  537. CNT = CONT MT ;
  538.  
  539.  
  540. ENTREE = R2R1 ;
  541. Mentree= 'CHAN' entree 'QUAF';
  542. $ENTREE = 'MODE' MENTREE 'NAVIER_STOKES' DISCR ;
  543. entree = 'DOMA' $entree 'MAILLAGE';
  544. SI (EGA SREC 'G') ;
  545. SORTIE = R6R5 ;
  546. BOUCHEE = R4R3 ;
  547. SIGN = -1.0 ;
  548. SINON ;
  549. SORTIE = R4R3 ;
  550. BOUCHEE = R6R5 ;
  551. SIGN = 1.0 ;
  552. FINSI ;
  553. Msortie = 'CHAN' sortie 'QUAF';
  554. $SORTIE = 'MODE' MSORTIE 'NAVIER_STOKES' DISCR ;
  555. sortie = 'DOMA' $sortie 'MAILLAGE';
  556.  
  557. Mwall = 'CHAN' wall 'QUAF';
  558. $WALL = 'MODE' MWALL 'NAVIER_STOKES' DISCR ;
  559. wall = 'DOMA' $wall 'MAILLAGE';
  560.  
  561. VOL = 'DOMA' $MT 'VOLUME' ;
  562. VOLT = 'SOMT' VOL ;
  563. VOL = KCHT $MT 'SCAL' 'CENTRE' VOL ;
  564.  
  565. ELIM (Mmt et Mentree et Msortie et Mwall) epsi;
  566.  
  567. 'MESSAGE' 'VOLUME TOTAL = ' VOLT ;
  568.  
  569. ******************************************
  570. * FRONTIERES POUR CONDITIONS AUX LIMITES *
  571. ******************************************
  572.  
  573. MUR_HOR = A1C1 ET C1C2 ET C2A2 ET A3C6 ET C6C7 ET C7A4 ET R5R4 ;
  574. MUR_VER = A2C3 ET C3C4 ET C4C5 ET C5A3 ET A4C8 ET C8C9
  575. ET C9C10 ET C10A1 ET R3R2 ET R1R6 ET BOUCHEE ;
  576.  
  577. *========================================================*
  578. * DONNEES DU CALCUL DE DISTRIBUTION *
  579. *========================================================*
  580.  
  581. *--------------------------------------
  582. * temperature et pression de saturation
  583. *--------------------------------------
  584. T = 373.0 ;
  585. ZZ = 7000.*(-1.)/T ;
  586. PSAT = 1.055E21/(T ** 5.)* (EXP ZZ) ;
  587. PSAT = PSAT*101325.0 ;
  588.  
  589. *--------------------------------------
  590. * masses molaires et constantes des gaz
  591. *--------------------------------------
  592. MH2 = 2.0E-3 ;
  593. MO2 = 32.0E-3 ;
  594. MN2 = 28.0E-3 ;
  595. MH2O = 18.0E-3 ;
  596.  
  597. Rg = 8.313 ;
  598.  
  599. RH2 = Rg/MH2 ;
  600. RO2 = Rg/MO2 ;
  601. RN2 = Rg/MN2 ;
  602. RH2O = Rg/MH2O ;
  603.  
  604. *-------------------
  605. * conditions air sec
  606. *-------------------
  607. P1 = 1.E5 ;
  608. T1 = 273.0 ;
  609. XH2_SEC = 0.1 ;
  610. XAIR_SEC = 1.0 - XH2_SEC ;
  611.  
  612. *-----------------------------
  613. * pressions partielles des gaz
  614. * fractions volumiques
  615. *-----------------------------
  616.  
  617. PVAP = PSAT ;
  618. PAIR = (XAIR_SEC*P1)*(T/T1) ;
  619. PH2 = (XH2_SEC*P1)*(T/T1) ;
  620. P = PVAP + PAIR + PH2 ;
  621.  
  622. XH2 = PH2/P ;
  623. XAIR = PAIR/P ;
  624. XH2O = PVAP/P ;
  625. XO2 = 0.21*XAIR ;
  626. XN2 = 1.0 - XH2 -XH2O - XO2 ;
  627.  
  628. *---------------------------------------------
  629. * masse molaire du melange et constante du gaz
  630. *---------------------------------------------
  631. M = (XH2*MH2) + (XO2*MO2) + (XN2*MN2) + (XH2O*MH2O) ;
  632. R = Rg/M ;
  633.  
  634. *------------------------------------------------------------
  635. * densite du melange (loi d'etat GP)
  636. *------------------------------------------------------------
  637. PSI = R*T ;
  638. RHO = P/PSI ;
  639.  
  640. *------------------------
  641. * Caractéristiques du jet
  642. *------------------------
  643.  
  644. XH2Jet = 0.0 ;
  645. XH2OJet = 0.0 ;
  646. XO2Jet = 0.21*( 1.0 - XH2Jet - XH2OJet ) ;
  647. XN2Jet = 1.0 - XH2Jet - XH2OJet - XO2Jet ;
  648. MJet = (XH2Jet*MH2) + (XH2OJet*MH2O) + (XO2Jet*MO2) +
  649. (XN2Jet*MN2) ;
  650. RJet = Rg/MJet ;
  651. TJet = 650.0 ;
  652. PSIJet = Rjet*Tjet ;
  653. RhoJet = P/PSIJet ;
  654. GJet = 2.5 ;
  655. GJetabs= GJet ;
  656. UJet = GJet/RhoJet ;
  657. KJet = 0.05*UJet*UJet ;
  658. EJet = 0.02*(UJet**3.)/DINJ ;
  659. Gjet = Gjet*SIGN ;
  660.  
  661. *------------------------------------------------
  662. * fractions massiques des differents constituants
  663. *------------------------------------------------
  664. YH2 = XH2*MH2/M ;
  665. YO2 = XO2*MO2/M ;
  666. YN2 = XN2*MN2/M ;
  667. YH2O = XH2O*MH2O/M ;
  668. YH2Jet = XH2Jet*MH2/MJet ;
  669. YH2OJet =XH2OJet*MH2O/MJet ;
  670. YO2Jet = XO2Jet*MO2/MJet ;
  671. YN2Jet =XN2Jet*MN2/MJet ;
  672.  
  673. *------------------------------------------------------------------
  674. * Cp des différents constituants et du mélange (supposés constants)
  675. *------------------------------------------------------------------
  676. CPH2 = 13514.04 + (1.684537*T) ;
  677. CPH2O = 1715.632 + (0.552805*T) ;
  678. CPN2 = 1006.15 + (0.1387166*T) ;
  679. CPO2 = 907.580 + (0.1420522*T) ;
  680.  
  681. CP = (YH2*CPH2) + (YH2O*CPH2O) + (YO2*CPO2) + (YN2*CPN2) ;
  682.  
  683. gamma = CP/(CP-R) ;
  684.  
  685. *----------------------------------------------------
  686. * calcul d'une vitesse de référence (pour les tracés)
  687. *----------------------------------------------------
  688.  
  689. uref = gamma*R*T ;
  690. uref = uref**0.5 ;
  691. uref = 0.01*uref ;
  692. ampl = 1./uref ;
  693.  
  694. *------------------------------------------------------------------------
  695. * Prandtl, Schmidt, viscosité (loi de Sutherland), conductivité thermique
  696. * coefficients de diffusion moléculaire
  697. *------------------------------------------------------------------------
  698. Pr = 0.7 ;
  699. Prt = 1.0 ;
  700. Sct = 1.0 ;
  701.  
  702. Mu = 1.716E-5*((T/273.0)**1.5)*(273.0+110.5)/(T+110.5) ;
  703. Nu = Mu/RHO ;
  704. Lambda = Mu*CP/Pr ;
  705.  
  706. alpha = Lambda/RHO/CP ;
  707.  
  708. DH2O = 2.55E-5 ;
  709. DH2 = 7.12E-5 ;
  710. DO2 = 2.06E-5 ;
  711.  
  712. PSIWALL = T*R ;
  713. h = 10. ;
  714.  
  715. U0 = 1.0D0 ;
  716. L0 = 1.0D0 ;
  717.  
  718. *==============================================================
  719. * TABLE EQEX CONTENANT LES EQUATIONS A RESOUDRE :
  720. * 0) FILTRE K-E
  721. * 1) QUANTITE DE MOUVEMENT --- OPERATEUR NSKE
  722. * 2) EQUATION DE L'ENERGIE --- OPERATEUR TSCAL
  723. * 3) TRANSPORT DES ESPECES --- OPERATEUR TSCAL
  724. * AINSI QUE 2 PROCEDURES (CALCUL1 ET CALCUL2) POUR L'ALGORITHME
  725. * 'FAIBLE MACH'
  726. * 4) CONDITIONS AUX LIMITES
  727. *==============================================================
  728.  
  729. RV = 'EQEX' $MT 'ITMA' 100 'TFINAL' 10. 'ALFA' 0.8
  730. 'ZONE' $MT 'OPER' 'CALCUL1'
  731. 'ZONE' $MT 'OPER' 'FILTREKE' 'UN' L0 NU 'INCO' 'KN' 'EN'
  732. 'OPTI' 'CONS'
  733. 'ZONE' $MT 'OPER' 'NSKE' 'RHOC' MU 'MUT' 'UN' 'ROG'
  734. 'INCO' 'GN' 'KN' 'EN'
  735. 'OPTI' 'NOCONS'
  736. 'ZONE' $MT 'OPER' 'TSCAL' alpha 'UN' 'S' 'NUT' Prt
  737. 'INCO' 'PSIN'
  738. 'OPTI' 'EFM1' 'EXPL'
  739. 'ZONE' $WALL 'OPER' 'ECHI' h PSIWALL 'INCO' 'PSIN' ;
  740.  
  741. RV = 'EQEX' RV
  742. 'ZONE' $MT 'OPER' 'TSCAL' DH2 'UN' 0.0 'NUT' SCT
  743. 'INCO' 'YH2'
  744. 'ZONE' $MT 'OPER' 'TSCAL' DO2 'UN' 0.0 'NUT' SCT
  745. 'INCO' 'YO2'
  746. 'ZONE' $MT 'OPER' 'TSCAL' DH2O 'UN' 0.0 'NUT' SCT
  747. 'INCO' 'YH2O'
  748. 'ZONE' $MT 'OPER' 'CALCUL2'
  749. 'ZONE' $MT 'OPER' 'RECOMB' ;
  750.  
  751. RV=EQEX RV OPTI EFM1 'CENTREE'
  752. 'ZONE' $MT 'OPER' 'DFDT' 1. 'GN' 'DELTAT' 'INCO' 'GN'
  753. 'ZONE' $MT 'OPER' 'DFDT' 1. 'PSIN' 'DELTAT' 'INCO' 'PSIN'
  754. 'ZONE' $MT 'OPER' 'DFDT' 1. 'YH2' 'DELTAT' 'INCO' 'YH2'
  755. 'ZONE' $MT 'OPER' 'DFDT' 1. 'YO2' 'DELTAT' 'INCO' 'YO2'
  756. ;
  757. RV=EQEX RV OPTI EFM1 'CENTREE'
  758. 'ZONE' $MT 'OPER' 'DFDT' 1. 'YH2O' 'DELTAT' 'INCO' 'YH2O'
  759. 'ZONE' $MT 'OPER' 'DFDT' 1. 'KN' 'DELTAT' 'INCO' 'KN'
  760. 'ZONE' $MT 'OPER' 'DFDT' 1. 'EN' 'DELTAT' 'INCO' 'EN'
  761. ;
  762. RV = 'EQEX' RV
  763. 'CLIM' 'GN' 'UIMP' MUR_VER 0.0
  764. 'GN' 'VIMP' MUR_HOR 0.0
  765. 'GN' 'UIMP' SORTIE GJet
  766. 'GN' 'VIMP' SORTIE 0.0
  767. 'GN' 'UIMP' ENTREE 0.0
  768. 'GN' 'VIMP' ENTREE GJetabs ;
  769. RV = 'EQEX' RV
  770. 'CLIM' 'PSIN' 'TIMP' SORTIE PSIJet
  771. 'YH2' 'TIMP' SORTIE YH2Jet
  772. 'YO2' 'TIMP' SORTIE YO2Jet
  773. 'YH2O' 'TIMP' SORTIE YH2OJet
  774. 'KN' 'TIMP' SORTIE KJet
  775. 'EN' 'TIMP' SORTIE EJet ;
  776.  
  777. *===========================================================
  778. * TABLE EQEX POUR L'EQUATION DE POISSON (SOLVEUR ELLIPTIQUE)
  779.  
  780. RVP = EQEX 'OPTI' 'EF' KPRESS
  781. 'ZONE' $MT OPER KBBT -1. betap INCO 'GN' 'PRES'
  782. 'OPTI' 'EF' 'CENTREE' 'INCOD' KPRESS
  783. 'ZONE' $MT OPER FIMP 'ZS' INCO 'PRES'
  784. ;
  785.  
  786. rvp.'METHINV'.TYPINV=1 ;
  787. rvp.'METHINV'.IMPINV=0 ;
  788. rvp.'METHINV'.NITMAX=300;
  789. rvp.'METHINV'.PRECOND=3 ;
  790. rvp.'METHINV'.RESID =1.e-8 ;
  791. rvp.'METHINV' . 'FCPRECT'=100 ;
  792. rvp.'METHINV' . 'FCPRECI'=100 ;
  793.  
  794. RV.'PROJ' =RVP ;
  795.  
  796. *===========================================================
  797.  
  798. *==========================================================
  799. * TABLE INCO CONTENANT LES INCONNUES ET DONNEES DU PROBLEME
  800. *==========================================================
  801.  
  802. RV.'NOMVI' = 'GN' ;
  803.  
  804. RV.'INCO' = 'TABLE' 'INCO' ;
  805. RVP.'INCO' = RV.'INCO' ;
  806.  
  807. * vitesse et quantité de mouvement
  808. RV.INCO.'UN' = kcht $MT VECT SOMMET (0. 0.);
  809. RV.INCO.'GN' = kcht $MT VECT SOMMET (0. 0.);
  810. * pression
  811. RV.INCO.'PRES' = kcht $MT SCAL KPRESS 0.;
  812. * température
  813. RV.INCO.'PSIN' = kcht $MT SCAL SOMMET PSI ;
  814. RV.INCO.'PSI1' = kcht $MT SCAL SOMMET PSI ;
  815. RV.INCO.'TN' = kcht $MT SCAL SOMMET T ;
  816. RV.INCO.'TPLAQUE' = T ;
  817. * variables modèle de turbulence
  818. RV.INCO.'EN' = kcht $MT SCAL SOMMET 1.E-5 ;
  819. RV.INCO.'KN' = kcht $MT SCAL SOMMET 1.E-5 ;
  820. RV.INCO.'MUT' = kcht $MT SCAL CENTRE Mu ;
  821. RV.INCO.'NUT' = kcht $MT SCAL CENTRE Nu ;
  822. * masse volumique
  823. RV.INCO.'RHO' = kcht $MT SCAL SOMMET RHO ;
  824. RV.INCO.'RHOC'= kcht $MT SCAL CENTRE RHO ;
  825. RV.INCO.'RHOM'= RHO ;
  826. * fractions massiques
  827. RV.INCO.'YH2' = kcht $MT SCAL SOMMET YH2 ;
  828. RV.INCO.'YO2' = kcht $MT SCAL SOMMET YO2 ;
  829. RV.INCO.'YN2' = kcht $MT SCAL SOMMET YN2 ;
  830. RV.INCO.'YH2O'= kcht $MT SCAL SOMMET YH2O ;
  831. * termes sources (Poisson/énergie/QDM)
  832. RV.INCO.'S'=kcht $MT SCAL CENTRE 0. ;
  833. RV.INCO.'Q'=kcht $MT SCAL SOMMET 0. ;
  834. RV.INCO.'ROG'=kcht $MT VECT CENTRE (0. 0.) ;
  835. RV.INCO.'ZS' = KCHT $MT SCAL CENTRE 0.0 ;
  836. * pression
  837. RV.INCO.'PM' = P ;
  838.  
  839. * progressions
  840. RV.INCO.'TEMPS' = PROG 0. ;
  841. RV.INCO.'XH2MAX' = PROG XH2 ;
  842. RV.INCO.'XH2MIN' = PROG XH2 ;
  843. RV.INCO.'TP' = PROG RV.INCO.'TPLAQUE' ;
  844. RV.INCO.'DEBIT' = PROG 0. ;
  845. RV.INCO.'EFFIC' = PROG 0. ;
  846. RV.INCO.'TS' = PROG T ;
  847.  
  848. MASINI = KOPS RV.INCO.'RHOC' '*' VOL ;
  849. MASINI = SOMT MASINI ;
  850.  
  851. RV.INCO.'PRESSIO' = PROG P ;
  852. RV.INCO.'MASSETOT' = PROG MASINI ;
  853.  
  854. RV . 'INCO' . 'A' = 0.48D-8 ;
  855. RV . 'INCO' . 'B' = 0.58D-3 ;
  856. RV . 'INCO' . 'XH2ON' = 0.005 ;
  857. RV . 'INCO' . 'XH2OFF' = 0.005 ;
  858. RV . 'INCO' . 'BETA' = 0.2 ;
  859.  
  860. exec rv ;
  861.  
  862. SI (RV.PASDETPS.'TPS' < 8.0) ;
  863. ERREUR 5 ;
  864. FINSI ;
  865. SI (MAXI(RV.INCO.'DEBIT') < 4.9D-2);
  866. ERREUR 5 ;
  867. FINSI ;
  868. SI (MAXI(RV.INCO.'TP') < 690.D0);
  869. ERREUR 5 ;
  870. FINSI ;
  871. SI (MAXI(RV.INCO.'TN') < 550.D0);
  872. ERREUR 5 ;
  873. FINSI ;
  874.  
  875. FIN ;
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  

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