Télécharger rut_tg_1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : rut_tg_1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ************************************************************************
  5. **************** CAS-TEST RUT *************************************
  6. ************************************************************************
  7. * Date de creation : 16 decembre 2002
  8. * Auteur : Alexandre Bleyer
  9. * Commentaire : ce cas-test est de coupe en plusieurs
  10. * parties : procedures, definition du maillage, de la table PGAZ
  11. * et definition des conditons initiales
  12. ************************************************************************
  13. * Liste des procedures : CONS, DETO, EXEX, PERSO, PREPADET, VALP
  14. ************************************************************************
  15. 'OPTI' 'ECHO' 0;
  16.  
  17. *$$$$ CONS
  18. ***************************************************************
  19. ***** PROCEDURE POUR CALCULER LES VARIABLES CONSERVATIVES *****
  20. ***************************************************************
  21. 'DEBPROC' CONS RN*'CHPOINT' VN*'CHPOINT' PN*'CHPOINT'
  22. YN*'CHPOINT' $DM*'MMODEL' PGAZ*'TABLE' ;
  23.  
  24. *
  25.  
  26. A0 = 'KCHT' $DM 'SCAL' 'CENTRE' 0.0 ;
  27. A1 = 'KCHT' $DM 'SCAL' 'CENTRE' 0.0 ;
  28. A2 = 'KCHT' $DM 'SCAL' 'CENTRE' 0.0 ;
  29. A3 = 'KCHT' $DM 'SCAL' 'CENTRE' 0.0 ;
  30. A4 = 'KCHT' $DM 'SCAL' 'CENTRE' 0.0 ;
  31. RTOT = 'KCHT' $DM 'SCAL' 'CENTRE' 0.0 ;
  32. YTOT = 'KCHT' $DM 'SCAL' 'CENTRE' 0.0 ;
  33.  
  34. 'REPETER' BL1 ('DIME' (PGAZ . 'ESPEULE')) ;
  35. NOMCOM = 'EXTRAIRE' &BL1 (PGAZ . 'ESPEULE');
  36. YCEL = 'EXCO' NOMCOM YN ;
  37. RYCEL = 'NOMC' (YCEL * RN) NOMCOM 'NATU' 'DISCRET' ;
  38. YTOT = YTOT '+' YCEL ;
  39. RTOT = RTOT '+' ((PGAZ . NOMCOM . 'R') * YCEL) ;
  40. A0 = A0 '+' (('EXTRAIRE' 1 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  41. A1 = A1 '+' (('EXTRAIRE' 2 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  42. A2 = A2 '+' (('EXTRAIRE' 3 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  43. A3 = A3 '+' (('EXTRAIRE' 4 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  44. A4 = A4 '+' (('EXTRAIRE' 5 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  45. 'SI' ('EGA' &BL1 1) ;
  46. RYN = 'KCHT' $DM 'SCAL' 'CENTRE' 'COMP' NOMCOM RYCEL ;
  47. 'SINON' ;
  48. RYN = RYN 'ET'
  49. ('KCHT' $DM 'SCAL' 'CENTRE' 'COMP' NOMCOM RYCEL) ;
  50. 'FINSI' ;
  51. 'FIN' BL1 ;
  52.  
  53. YCEL = ('KCHT' $DM 'SCAL' 'CENTRE' 1.0) '-' YTOT ;
  54. NOMCOM = PGAZ . 'ESPNEULE' ;
  55. A0 = A0 '+' (('EXTRAIRE' 1 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  56. A1 = A1 '+' (('EXTRAIRE' 2 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  57. A2 = A2 '+' (('EXTRAIRE' 3 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  58. A3 = A3 '+' (('EXTRAIRE' 4 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  59. A4 = A4 '+' (('EXTRAIRE' 5 (PGAZ . NOMCOM . 'A')) '*' YCEL) ;
  60. RTOT = RTOT '+' ((PGAZ . NOMCOM . 'R') '*' YCEL);
  61.  
  62. TN = PN '/' (RN '*' RTOT) ;
  63. T2 = TN '*' TN ;
  64. T3 = T2 '*' TN ;
  65. T4 = T3 '*' TN ;
  66. T5 = T4 '*' TN ;
  67.  
  68. ETHER = (A0 * TN) '+' ((A1 '/' 2.0) * T2) '+'
  69. ((A2 '/' 3.0) * T3) '+' ((A3 '/' 4.0) * T4) '+'
  70. ((A4 '/' 5.0) * T5) ;
  71.  
  72. GN = RN '*' VN ('MOTS' 'SCAL' 'SCAL') ('MOTS' 'UX ' 'UY ')
  73. ('MOTS' 'UX ' 'UY ') ;
  74.  
  75. GN = 'KCHT' $DM 'VECT' 'CENTRE' GN ;
  76.  
  77. ECIN = 0.5D0 '*' ('PSCAL' GN VN ('MOTS' 'UX ' 'UY ')
  78. ('MOTS' 'UX ' 'UY ')) ;
  79.  
  80. REN = (RN '*' ETHER) '+' ECIN ;
  81.  
  82. REN = 'KCHT' $DM 'SCAL' 'CENTRE' REN ;
  83.  
  84. 'FINPROC' GN REN RYN ;
  85.  
  86. *$$$$ DETO
  87. 'DEBPROC' DETO ;
  88. 'ARGUMENT' PGAZ*'TABLE' TN*'CHPOINT' RYN*'CHPOINT' DTI*'FLOTTANT' ;
  89.  
  90. ************************
  91. **** PROCEDURE DETO ****
  92. ************************
  93. *
  94. * dRYO2/dT = MO2 * A * (T ** -B) EXP( - TA / T)
  95. * (RYH2 ** C) * (RYO2)
  96. *
  97. **** Les parametres physiques
  98. *
  99. * Ts = temperature de seuil
  100. *
  101.  
  102. TS = 'MANUEL' 'CHPO' ('EXTRAIRE' TN 'MAILLAGE') 1 'SCAL' 600. ;
  103. TA = 8310.;
  104. A = 1.1725D14;
  105. B = 0.91;
  106. CON = 2;
  107.  
  108. H0H2 = PGAZ . 'H2 ' . 'H0K' ;
  109. H0O2 = PGAZ . 'O2 ' . 'H0K' ;
  110. H0H2O = PGAZ . 'H2O ' . 'H0K' ;
  111.  
  112. RYH2 = 'EXCO' 'H2' RYN 'H2' 'NATU' 'DISCRET' ;
  113.  
  114. RYO2 = 'EXCO' 'O2' RYN 'O2' 'NATU' 'DISCRET' ;
  115.  
  116. RYH2O = 'EXCO' 'H2O' RYN 'H2O' 'NATU' 'DISCRET' ;
  117.  
  118. RYH2 RYO2 RYH2O DELTAE = 'FLAM' 'ARRHENIU' TS A B CON TA
  119. H0H2 H0O2 H0H2O DTI RYH2 RYO2 RYH2O
  120. TN ;
  121.  
  122. RY = RYH2 'ET' RYO2 'ET' RYH2O ;
  123.  
  124. 'FINPROC' RY DELTAE ;
  125.  
  126. ****************************
  127. **** FIN PROCEDURE DETO ****
  128. ****************************
  129.  
  130. *$$$$ EXEX
  131. 'DEBPROC' EXEX RV*'TABLE' ;
  132.  
  133. ****************************************************************
  134. ****************************************************************
  135. ***** Parameters for the computations ******
  136. ****************************************************************
  137. ****************************************************************
  138.  
  139. * Upwind scheme
  140. METO = RV.'CI'.'METO' ;
  141.  
  142. * Iterations
  143. * Final time
  144. * Safety Factor for the time step
  145. * Second order reconstruction?
  146.  
  147. TPS = RV . 'PASDETPS' . 'TINI' ;
  148. NTPS = 'DIME' RV.'PASDETPS'.'LTPS' ;
  149. 'SI' (NTPS '>' 1) ;
  150. TPS = 'EXTR' (RV.'PASDETPS'.'LTPS') NTPS ;
  151. 'FINSI';
  152.  
  153. NITER = RV . 'PASDETPS' . 'NITMA' ;
  154. TFINAL = RV . 'PASDETPS' . 'TFINA' ;
  155. SAFFAC = RV . 'PASDETPS' . 'SAFFAC' ;
  156. LOGSO = 'EGA' (RV.'ORDREESP') 2 ;
  157. GEO = RV . 'GEO' ;
  158. INCO = RV . 'INCO' ;
  159. PGAZ = RV . 'PGAZ' ;
  160. $DOMTOT= GEO . 'MODTOT' ;
  161.  
  162. ZERO = 1.0d-9 ;
  163. *
  164. **** Chemical time step
  165. *
  166. * We compute d(RHY2)/dT at the von Neumann state
  167. *
  168. * Molar reaction rate
  169. *
  170.  
  171. TVN = 2000 ;
  172. TA = 8310.;
  173. A = 1.1725D14;
  174. B = 0.91;
  175. CON = 2;
  176.  
  177. H0H2 = PGAZ . 'H2 ' . 'H0K' ;
  178. H0O2 = PGAZ . 'O2 ' . 'H0K' ;
  179. H0H2O = PGAZ . 'H2O ' . 'H0K' ;
  180.  
  181. RYN = INCO . 'RYN' ;
  182. GN = INCO . 'GN' ;
  183. RN = INCO . 'RN' ;
  184. RETN = INCO . 'RETN' ;
  185.  
  186.  
  187. IGNI1 = 2 ;
  188. MOD_I = 'CHAIN' 'MOD' IGNI1;
  189. $DOM2 = GEO . MOD_I;
  190.  
  191. RYNRED = 'REDU' RYN ('DOMA' $DOM2 'CENTRE') ;
  192. RYH2 = 'MAXIMUM' ('EXCO' 'H2' RYNRED 'SCAL') ;
  193. RYO2 = 'MAXIMUM' ('EXCO' 'O2' RYNRED 'SCAL') ;
  194.  
  195. OMEGA = A '*' (RYH2 '**' CON) '*' RYO2 '*' (TVN '**' (-1.0 '*' B))
  196. '*' ('EXP' (-1.0 '*' TA '*' (TVN '**' -1))) ;
  197.  
  198. * OMEGA in (mol/m3/s)
  199. * OMEGAH2 in (kg/m3/s)
  200.  
  201. OMEGAH2 = OMEGA '*' 2 '*' 2E-3 ;
  202. DELTATC = RYH2 '/' OMEGAH2 ;
  203.  
  204. * NB DELTATC << DELTAT_CON
  205.  
  206. *
  207. **** Zone d activation = etat AICC
  208. *
  209. IGNI1 = RV . 'MODETO' .'IGNIREG' ;
  210. MOD_I = 'CHAIN' 'MOD' IGNI1;
  211. $DOM1 = GEO . MOD_I;
  212. VN PN TN YN GAMN = 'PRIM' 'PERFTEMP' PGAZ RN GN RETN RYN ;
  213. RYH2 = ('EXCO' 'H2' RYN 'H2' 'NATU' 'DISCRET') ;
  214. RYO2 = ('EXCO' 'O2' RYN 'O2' 'NATU' 'DISCRET') ;
  215. RYH2O = ('EXCO' 'H2O' RYN 'H2O' 'NATU' 'DISCRET') ;
  216. TN = TN '-' ('REDU' TN ('DOMA' $DOM1 'CENTRE')) '+'
  217. ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 1 'SCAL' TVN) ;
  218. TS = 'MANUEL' 'CHPO' ('EXTRAIRE' TN 'MAILLAGE') 1 'SCAL' (0.9 '*' TVN)
  219. ;
  220.  
  221. RYH2 RYO2 RYH2O DELTARE = 'FLAM' 'ARRHENIU' TS A B CON TA
  222. H0H2 H0O2 H0H2O (1.0D5 '*' DELTATC)
  223. RYH2 RYO2 RYH2O TN ;
  224.  
  225. RYN = RYH2 'ET' RYO2 'ET' RYH2O ;
  226. RETN = RETN '+' DELTARE ;
  227.  
  228. RN0 = 'COPIER' RN ;
  229. GN0 = 'COPIER' GN ;
  230. RETN0 = 'COPIER' RETN ;
  231. RYN0 = 'COPIER' RYN ;
  232.  
  233. *
  234. **** Parameter for the time loop
  235. *
  236.  
  237. * Names of the residuum components
  238.  
  239. LISTINCO = 'MOTS' 'RN' 'RUX' 'RUY' 'RETN' 'H2' 'O2' 'H2O' ;
  240.  
  241. *
  242. **** Geometrical coefficient to compute gradients
  243. *
  244.  
  245. GRADR CACCA COEFSCAL = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'NOLIMITE'
  246. ('MOTS' 'SCAL') RN ;
  247.  
  248. GRADV CACCA COEFVECT = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'NOLIMITE'
  249. ('MOTS' 'UX' 'UY') GN ;
  250.  
  251. *
  252. **** The chemistry time step is too little
  253. * We take DT_CHEM > DELTATC
  254. *
  255. *
  256.  
  257. DT_CHEM = 50 '*' DELTATC ;
  258.  
  259. *
  260. **** Temporal loop
  261. *
  262.  
  263. 'MESSAGE' ;
  264. 'MESSAGE' ('CHAINE' 'Methode = ' METO) ;
  265. 'MESSAGE' ('CHAINE' 'SAFFAC = ' SAFFAC) ;
  266. 'MESSAGE' ;
  267.  
  268. VN PN TN YN SN GAMMAN = 'PRIM' 'PERFTEMP' PGAZ RN GN RETN RYN RSN ;
  269.  
  270. TNM1 = 'COPIER' TN ;
  271.  
  272. 'TEMPS' 'ZERO' ;
  273. 'REPETER' BL1 NITER ;
  274.  
  275. *
  276. **** Primitive variables
  277. *
  278.  
  279. VN PN TN YN GAMMAN = 'PRIM' 'PERFTEMP' PGAZ RN GN RETN RYN
  280. TNM1 ;
  281.  
  282. TNM1 = 'COPIER' TN ;
  283.  
  284. 'SI' LOGSO ;
  285.  
  286. GRADR ALR = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  287. ('MOTS' 'SCAL') RN 'GRADGEO' COEFSCAL ;
  288.  
  289. GRADP ALP = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  290. ('MOTS' 'SCAL') PN 'GRADGEO' COEFSCAL ;
  291.  
  292. GRADV ALV = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'LIMITEUR'
  293. ('MOTS' 'UX' 'UY') VN 'GRADGEO' COEFVECT ;
  294.  
  295. GRADY ALY = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  296. ('MOTS' 'H2' 'O2' 'H2O') YN 'GRADGEO' COEFSCAL ;
  297.  
  298. ROF VITF PF YF = 'PRET' 'PERFTEMP' 2 1
  299. $DOMTOT PGAZ
  300. RN GRADR ALR
  301. VN GRADV ALV
  302. PN GRADP ALP
  303. YN GRADY ALY ;
  304.  
  305. 'SINON' ;
  306.  
  307. ROF VITF PF YF = 'PRET' 'PERFTEMP' 1 1
  308. $DOMTOT PGAZ
  309. RN
  310. VN
  311. PN
  312. YN ;
  313.  
  314. 'FINSI' ;
  315.  
  316. RESIDU DELTAT = 'KONV' 'VF' 'PERFTEMP' 'RESI' METO
  317. $DOMTOT PGAZ LISTINCO ROF VITF PF YF ;
  318.  
  319. DT_CON = SAFFAC '*' DELTAT ;
  320. *
  321. **** The time step linked to tps
  322. *
  323.  
  324. DTTPS = (TFINAL '-' TPS) * (1. '+' ZERO) ;
  325.  
  326. *
  327. **** Total time step
  328. *
  329. DTIMP = RV.'PASDETPS'.'DTIMP';
  330. DTMIN = 'MINIMUM' ('PROG' DT_CON DTTPS DT_CHEM DTIMP) ;
  331. RV.'PASDETPS'.'DT' = RV.'PASDETPS'.'DT' 'ET' ('PROG' DTMIN) ;
  332. *
  333. **** Increment of the variables (convection)
  334. *
  335.  
  336. RESIDU = DTMIN '*' RESIDU ;
  337.  
  338. DRN = 'EXCO' 'RN' RESIDU 'SCAL' ;
  339. DGN = 'EXCO' ('MOTS' 'RUX' 'RUY') RESIDU ('MOTS' 'UX' 'UY') ;
  340. DRETN = 'EXCO' 'RETN' RESIDU 'SCAL' ;
  341. DRYN = 'EXCO' ('MOTS' 'H2' 'O2' 'H2O') RESIDU
  342. ('MOTS' 'H2' 'O2' 'H2O') ;
  343.  
  344.  
  345. TPS = TPS '+' DTMIN ;
  346. RV.'PASDETPS'.'LTPS' = RV.'PASDETPS'.'LTPS' 'ET'
  347. ('PROG' TPS) ;
  348. RV.'PASDETPS'.'TPS' = TPS ;
  349.  
  350. RN = RN '+' DRN ;
  351. GN = GN '+' DGN ;
  352. RETN = RETN '+' DRETN ;
  353. RYN = RYN '+' DRYN ;
  354.  
  355. *
  356. **** Increment of the variables (chemical source)
  357. *
  358.  
  359. VN PN TN YN GAMMAN = 'PRIM' 'PERFTEMP' PGAZ RN GN RETN RYN
  360. TNM1 ;
  361.  
  362. RYN DRETN = DETO PGAZ TN RYN DTMIN ;
  363. RETN = RETN '+' DRETN ;
  364.  
  365.  
  366. RV.'INCO'.'PN' = PN ;
  367. RV.'INCO'.'TN' = TN ;
  368. RV.'INCO'.'RN' = RN ;
  369. RV.'INCO'.'VN' = VN ;
  370. RV.'INCO'.'YN' = YN ;
  371. RV.'INCO'.'GAMMAN' = GAMMAN ;
  372. RV.'INCO'.'GN' = GN ;
  373. RV.'INCO'.'RETN' = RETN ;
  374. RV.'INCO'.'RYN' = RYN ;
  375.  
  376. 'SI' ('EXISTE' RV 'TABC' );
  377. TABC = VALP RV ;
  378. RV . 'TABC' = TABC ;
  379. 'FINSI' ;
  380.  
  381. 'SI' ('EXISTE' RV 'PRCPERSO' );
  382. FREQ0 = RV.'PRCPERSO'.'ARG3' ;
  383. 'SI' (((&BL1 '/' FREQ0) '*' FREQ0) 'EGA' &BL1) ;
  384. ('TEXT' (RV.'PRCPERSO'.'NOMPROC')) RV (RV.'PRCPERSO'.'ARG1')
  385. (RV.'PRCPERSO'.'ARG2') ;
  386. 'FINSI' ;
  387. 'FINSI' ;
  388.  
  389. 'SI' (((&BL1 '/' 20) '*' 20) 'EGA' &BL1) ;
  390. 'MESSAGE' ('CHAINE' 'ITER =' &BL1 ' TPS =' TPS) ;
  391. 'FINSI' ;
  392.  
  393. 'SI' (TPS '>EG' TFINAL) ;
  394. 'QUITTER' BL1 ;
  395. 'FINSI' ;
  396.  
  397. 'FIN' BL1 ;
  398. 'TEMPS' ;
  399.  
  400. RV.'PASDETPS'.'TINI' = TPS ;
  401.  
  402.  
  403.  
  404. 'FINPROC' RV;
  405.  
  406. *$$$$ PERSO
  407. 'DEBP' PERSO RV*'TABLE' $DOMTRA*'MMODEL' TRACE*'ENTIER';
  408. INCO = RV . 'INCO' ;
  409. GEO = RV . 'GEO' ;
  410. TPS = RV . 'PASDETPS' . 'TPS' ;
  411. *
  412. DOMT1 = 'DOMA' $DOMTRA 'MAILLAGE' ;
  413.  
  414. X0 Y0 = 'COORD' DOMT1 ;
  415. Xmin = 'MINI' X0 ;
  416. Xmax = 'MAXI' X0 ;
  417. Ymin = 'MINI' Y0 ;
  418. Ymax = 'MAXI' Y0 ;
  419.  
  420. DTX = (Xmax - Xmin)/5. ;
  421. DTY = (Ymax - Ymin)/3. ;
  422. Pt1 = (Xmin - DTX) (Ymin - DTY) ;
  423. Pt2 = (Xmax + DTX) (Ymin - DTY) ;
  424. Pt3 = (Xmax + DTX) (Ymax + DTY) ;
  425. Pt4 = (Xmin - DTX) (Ymax + DTY) ;
  426.  
  427. CONT1 = CONT DOMT1 ;
  428.  
  429. TRACHA = FAUX ;
  430. TRACAP = FAUX ;
  431. 'SI' (TRACE 'EGA' 1);
  432. TRACHA = VRAI ;
  433. 'FINSI';
  434. 'SI' (TRACE 'EGA' 2);
  435. TRACAP = VRAI ;
  436. 'FINSI';
  437. 'SI' (TRACE 'EGA' 3);
  438. TRACHA = VRAI ;
  439. TRACAP = VRAI ;
  440. 'FINSI';
  441.  
  442. 'SI' TRACHA ;
  443. AB = KCHA $DOMTRA INCO.'PN' 'CHAM' ;
  444. TIT1 = 'CHAIN' 'PRESSION' TPS ;
  445. LIST1= 'PROG' 1.E5 'PAS' 0.4E5 13.E5 ;
  446. TRAC AB $DOMTRA CONT1 LIST1 'TITR' TIT1 ;
  447. *
  448. AB = KCHA $DOMTRA INCO.'TN' 'CHAM' ;
  449. TIT1 = 'CHAIN' 'TEMPERATURE' TPS ;
  450. LIST1= 'PROG' 363. 'PAS' 50. 3000. ;
  451. TRAC AB $DOMTRA CONT1 LIST1 'TITR' TIT1 ;
  452. *
  453. *AB = KCHA $DOMT1 INCO.'RN' 'CHAM' ;
  454. *TIT1 = 'CHAIN' 'DENSITE' TPS ;
  455. *TRAC AB $DOMT1 cont1 'TITR' TIT1 ;
  456. *
  457. *YN = INCO.'YN' ;
  458. *AA = 'EXCO' 'H2 ' YN ;
  459. *AB = KCHA $DOMT1 AA 'CHAM' ;
  460. *TIT1 = 'CHAIN' 'YH2' TPS ;
  461. *TRAC AB $DOMT1 cont1 'TITR' TIT1 ;
  462. *
  463. *AA = 'EXCO' 'O2 ' YN ;
  464. *AB = KCHA $DOMT1 AA 'CHAM' ;
  465. *TIT1 = 'CHAIN' 'YO2' TPS ;
  466. *TRAC AB $DOMT1 cont1 'TITR' TIT1 ;
  467. *
  468. *AA = 'EXCO' 'H2O ' YN ;
  469. *AB = KCHA $DOMT1 AA 'CHAM' ;
  470. *TIT1 = 'CHAIN' 'YH2O' TPS ;
  471. *TRAC AB $DOMT1 cont1 'TITR' TIT1 ;
  472. *
  473. V2 = KCHT $DOMTRA VECT CENTRE INCO.'VN' ;
  474. V1 = VECT V2 0.003 ;
  475. TIT1 = 'CHAIN' 'VITESSE' TPS ;
  476. TRAC V1 (CONT1 'ET' Pt1 'ET' Pt2 'ET' Pt3 'ET' Pt4) 'TITR' TIT1 ;
  477. *
  478. 'FINSI';
  479.  
  480.  
  481.  
  482. 'SI' TRACAP ;
  483.  
  484. TABC = RV . 'TABC' ;
  485.  
  486. NBEVOL = 'NBEL' TABC.'LPOINTS';
  487. NBCOMP = 'DIME' TABC.'COMP' ;
  488. LOG1 = 'EXISTE' TABC 'NOMC' ;
  489. *
  490. *- Initialisations
  491. *
  492. MARQLIST = 'MOTS' 'CARR' 'LOSA' 'TRIA' 'TRIB' 'CROI' 'PLUS' 'ETOI' ;
  493. COULLIST = 'MOTS' 'TURQ' 'BLEU' 'ROUG' 'VERT' ;
  494. LEGEND = 'TABLE' ;
  495. TEVOL = 'TABLE' ;
  496.  
  497. 'REPETER' BLO10 NBCOMP ;
  498. LCOMP1 = 'EXTR' (TABC.'COMP') &BLO10 ;
  499. IPOS2 = 1 ;
  500. IPOS0 = 0 ;
  501. I100 = 0 ;
  502.  
  503. 'REPETER' BLO100 NBEVOL ;
  504. I100 = I100 + 1 ;
  505. 'SI' (LOG1 'ET' (('DIME' (TABC.'NOMC')) 'EGA' NBEVOL )) ;
  506. SUPP1 = 'EXTR' (TABC.'NOMC') I100;
  507. 'SINON' ;
  508. SUPP1 = 'CHAINE' 'CAPT' I100;
  509. 'FINSI';
  510. IPOS1 = I100 - (7 * (I100 / 7)) ;
  511. 'SI' (IPOS1 EGA 0) ;
  512. IPOS0 = 1 ;
  513. IPOS1 = 7 ;
  514. 'FINSI' ;
  515. IPOS3 = (IPOS1 + 1) - (2 * ((IPOS1 + 1) / 2)) ;
  516. 'SI' (IPOS3 EGA 0) ;
  517. IPOS2 = IPOS2 + 1 ;
  518. 'SI' (IPOS2 EGA 5) ;
  519. IPOS2 = 1 ;
  520. IPOS3 = IPOS1 ;
  521. 'FINSI' ;
  522. 'FINSI' ;
  523. IMARQ1 = 'EXTR' MARQLIST IPOS1 ;
  524. ICOUL1 = 'EXTR' COULLIST IPOS2 ;
  525. LEGEN1 = 'CHAIN' 'MARQ ' IMARQ1 ;
  526. LEGEN2 = 'CHAIN' SUPP1 ;
  527. *
  528. EVOL1 = EVOL ICOUL1 'MANU' 'TIME' TABC.'LTPS' TABC.SUPP1.LCOMP1 ;
  529.  
  530. 'SI' (IPOS1 EGA 1) ;
  531. TEVOL . LCOMP1 = EVOL1 ;
  532. LEGEND . LCOMP1 = TABLE ;
  533. LEGEND . LCOMP1 . 'TITRE' = TABLE ;
  534. LEGEND . LCOMP1 . 1 = 'MOT' LEGEN1 ;
  535. LEGEND . LCOMP1 . 'TITRE' . 1 = 'MOT' LEGEN2 ;
  536. 'SINON' ;
  537. TEVOL . LCOMP1 = (TEVOL . LCOMP1) ET EVOL1 ;
  538. NDIML1 = 'DIME' (LEGEND . LCOMP1 . 'TITRE') ;
  539. LEGEND . LCOMP1 . (NDIML1 + 1) = 'MOT' LEGEN1 ;
  540. LEGEND . LCOMP1 . 'TITRE' . (NDIML1 + 1) = 'MOT' LEGEN2 ;
  541. 'FINSI' ;
  542.  
  543. 'SI' ((IPOS0 EGA 1) 'OU' (I100 'EGA' NBEVOL)) ;
  544. IPOS0 = 0 ;
  545. 'DESS' (TEVOL . LCOMP1) 'LEGE' 'MIMA' 'GRIL' (LEGEND .LCOMP1)
  546. 'TITR' ('CHAIN' 'Tracé de ' LCOMP1) 'DATE' ;
  547. 'FINSI' ;
  548. *
  549. 'FIN' BLO100 ;
  550.  
  551. 'FIN' BLO10 ;
  552.  
  553. 'FINSI' ;
  554.  
  555. *
  556. FINP ;
  557. *** Debut proc perso
  558. *$$$$ PREPADET
  559. 'DEBPROC' PREPADET CONDINI*'TABLE' PGAZ*'TABLE' TABC/'TABLE';
  560.  
  561.  
  562. ERROR = 0 ;
  563.  
  564. *** DEFINITION DU PARAMETRE EPSI POUR ELIM DU MAILLAGE
  565. 'SI' ('EXISTE' CONDINI 'EPSI');
  566. EPSI = CONDINI . 'EPSI' ;
  567. 'SINON';
  568. EPSI = 0.01 ;
  569. 'FINSI';
  570. *** DEFINITION DU PARAMETRE EPSI POUR ELIM DU MAILLAGE
  571. 'SI' ('NON' ('EXISTE' CONDINI 'GRAPH'));
  572. CONDINI . 'GRAPH' = FAUX ;
  573. 'FINSI';
  574.  
  575. *** INITILISATION DE TABLES TEMPORAIRES OU NON
  576. INI = 'TABLE' ;
  577. INCO = 'TABLE' 'INCO' ;
  578. GEO = 'TABLE' 'GEO';
  579. FRACY = 'TABLE' ;
  580.  
  581. *** CREATION DES OBJETS MODELES
  582. *** ils sont sauvegardes dans la table GEO de RV
  583. MAILTOT = CONDINI . 'MAILTOT' ;
  584. $MAILTOT = 'MODE' MAILTOT 'EULER' ;
  585. MMAILTOT = 'DOMA' $MAILTOT 'QUAF' ;
  586. 'ELIM' MMAILTOT EPSI ;
  587. *** Parametres verifiant si l utilisateur a defini
  588. *** - soit des fractions massiques
  589. *** - soit des fractions volumiques
  590.  
  591. *** Pour le calcul on n utilise uniquement des fractions
  592. *** massiques.
  593. *** Si l utilisateur a defini des fractions volumiques
  594. *** il faut se ramener a des fractions massiques (pre-calculs)
  595. LOGX = FAUX ;
  596. LOGY = FAUX ;
  597.  
  598. 'REPETER' BCL1 CONDINI . 'NBDOM';
  599. MODE_I = 'CHAIN' 'MOD' &BCL1;
  600. MQUA_I = 'CHAIN' 'MQUA' &BCL1;
  601. DOM_I = 'CHAIN' 'DOM' &BCL1;
  602. M_I = 'CHAIN' 'MAIL' &BCL1;
  603. MAIL_I = CONDINI.DOM_I.'MAIL' ;
  604. $MAIL_I = 'MODE' MAIL_I 'EULER' ;
  605. MMAIL_I = 'DOMA' $MAIL_I 'QUAF' ;
  606. 'ELIM' (MMAILTOT 'ET' MMAIL_I) EPSI ;
  607.  
  608. GEO.MODE_I = $MAIL_I ;
  609. GEO.MQUA_I = MMAIL_I ;
  610. GEO.M_I = 'DOMA' $MAIL_I 'MAILLAGE';
  611.  
  612. 'SI' (&BCL1 'EGA' 1);
  613. LOGX = 'EXISTE' CONDINI.DOM_I 'XH2' ;
  614. LOGX = LOGX 'ET' ('EXISTE' CONDINI.DOM_I 'XO2') ;
  615. LOGX = LOGX 'ET' ('EXISTE' CONDINI.DOM_I 'XN2') ;
  616. LOGX = LOGX 'ET' ('EXISTE' CONDINI.DOM_I 'XH2O');
  617. LOGY = 'EXISTE' CONDINI.DOM_I 'YH2' ;
  618. LOGY = LOGY 'ET' ('EXISTE' CONDINI.DOM_I 'YO2') ;
  619. LOGY = LOGY 'ET' ('EXISTE' CONDINI.DOM_I 'YN2') ;
  620. LOGY = LOGY 'ET' ('EXISTE' CONDINI.DOM_I 'YH2O');
  621. 'SINON' ;
  622. LOGX = LOGX 'ET' ('EXISTE' CONDINI.DOM_I 'XH2') ;
  623. LOGX = LOGX 'ET' ('EXISTE' CONDINI.DOM_I 'XO2') ;
  624. LOGX = LOGX 'ET' ('EXISTE' CONDINI.DOM_I 'XN2') ;
  625. LOGX = LOGX 'ET' ('EXISTE' CONDINI.DOM_I 'XH2O');
  626. LOGY = LOGY 'ET' ('EXISTE' CONDINI.DOM_I 'YH2') ;
  627. LOGY = LOGY 'ET' ('EXISTE' CONDINI.DOM_I 'YO2') ;
  628. LOGY = LOGY 'ET' ('EXISTE' CONDINI.DOM_I 'YN2') ;
  629. LOGY = LOGY 'ET' ('EXISTE' CONDINI.DOM_I 'YH2O');
  630. 'FINSI';
  631.  
  632. 'FIN' BCL1;
  633.  
  634. GEO.'MODTOT' = $MAILTOT ;
  635. GEO.'MQUATOT' = MMAILTOT ;
  636. GEO.'MAILTOT' = 'DOMA' $MAILTOT 'MAILLAGE';
  637. GEO.'EPSI' = EPSI ;
  638.  
  639.  
  640. *** Verification du bon remplissage de la table de donnees
  641. 'SI' (LOGX 'ET' ('NON' LOGY));
  642. 'MESS' 'C est bien ! Vous n avez defini que des fractions volumiques';
  643. 'SINON';
  644. 'SI' (LOGY 'ET' ('NON' LOGX));
  645. 'MESS' 'C est bien ! Vous n avez defini que des fractions massiques';
  646. 'SINON';
  647. 'MESS' 'Vous ne devez definir uniquement des fractions massiques';
  648. 'MESS' 'ou uniquement des fractions volumiques !!!';
  649. 'MESS' 'En aucun cas, un melange des deux !!!';
  650. ERROR = ERROR + 1 ;
  651. 'FINSI';
  652. 'FINSI';
  653.  
  654. 'SI' LOGX ;
  655. FRACY.'MH2' = 2. '*' 1.00797E-3 ;
  656. FRACY.'MO2' = 2. '*' 15.9994E-3 ;
  657. FRACY.'MH2O' = (FRACY.'MH2') '+' (0.5 '*' (FRACY.'MO2')) ;
  658. FRACY.'MN2' = 2. '*' 14.0067E-3 ;
  659. 'FINSI';
  660.  
  661. 'REPETER' BCL1 CONDINI . 'NBDOM';
  662. DOM_I = 'CHAIN' 'DOM' &BCL1;
  663. FRACY.DOM_I = 'TABLE';
  664. 'SI' LOGX;
  665. 'SI' ('NON' ('EXISTE' CONDINI.DOM_I 'T'));
  666. 'MESS' 'Comme vous avez defini les fractions volumiques,';
  667. 'MESS' 'vous devez definir la temperature !';
  668. ERROR = ERROR + 1 ;
  669. 'FINSI';
  670. *** CALCUL DES MASSES TOTALES!!!
  671. FRACY.DOM_I.'MTOT' = ((CONDINI.DOM_I.'XH2') '*' (FRACY.'MH2')) '+'
  672. ((CONDINI.DOM_I.'XO2') '*' (FRACY.'MO2')) '+'
  673. ((CONDINI.DOM_I.'XH2O') '*' (FRACY.'MH2O')) '+'
  674. ((CONDINI.DOM_I.'XN2') '*' (FRACY.'MN2')) ;
  675. *** FIN CALCUL DES MASSES TOTALES
  676. 'FINSI';
  677. *****************
  678. 'SI' LOGY;
  679. 'SI' ('NON' ('EXISTE' CONDINI.DOM_I 'RHO'));
  680. 'MESS' 'Comme vous avez defini les fractions massiques,';
  681. 'MESS' 'vous devez definir la densite du melange !';
  682. ERROR = ERROR + 1 ;
  683. 'FINSI';
  684. 'FINSI';
  685. *****************
  686. 'SI' ('NON' ('EXISTE' CONDINI.DOM_I 'P'));
  687. 'MESS' 'Il manque l initialisation de la pression';
  688. 'MESS' 'dans le domaine' DOM_I;
  689. ERROR = ERROR + 1 ;
  690. 'FINSI';
  691. *****************
  692. 'SI' ('NON' ('EXISTE' CONDINI.DOM_I 'V'));
  693. 'MESS' 'Il manque l initialisation de la vitesse';
  694. 'MESS' 'dans le domaine' DOM_I;
  695. ERROR = ERROR + 1 ;
  696. 'FINSI';
  697. 'FIN' BCL1;
  698.  
  699. *****************
  700. 'SI' (ERROR 'NEG' 0);
  701. 'MESS' 'Il y a des problèmes d initialisation !';
  702. 'ERRE' 5;
  703. 'FINSI';
  704.  
  705. ****** TRANSFORMATION DES FRACTIONS VOLUMIQUES EN MASSIQUES
  706. 'SI' LOGX ;
  707. 'REPETER' BCL1 CONDINI . 'NBDOM';
  708. DOM_I = 'CHAIN' 'DOM' &BCL1;
  709. FRACY.DOM_I.'YH2' = ((CONDINI.DOM_I.'XH2') '*' (FRACY.'MH2')) '/'
  710. (FRACY.DOM_I.'MTOT') ;
  711. FRACY.DOM_I.'YO2' = ((CONDINI.DOM_I.'XO2') '*' FRACY.'MO2') '/'
  712. (FRACY.DOM_I.'MTOT') ;
  713. FRACY.DOM_I.'YH2O'= ((CONDINI.DOM_I.'XH2O') '*' FRACY.'MH2O') '/'
  714. (FRACY.DOM_I.'MTOT') ;
  715. FRACY.DOM_I.'YN2' = ((CONDINI.DOM_I.'XN2') '*' FRACY.'MN2') '/'
  716. (FRACY.DOM_I.'MTOT') ;
  717. FRACY.DOM_I.'RTOT'= ((FRACY.DOM_I.'YH2') '*' (PGAZ.'H2'.'R')) '+'
  718. ((FRACY.DOM_I.'YO2') '*' (PGAZ.'O2'.'R')) '+'
  719. ((FRACY.DOM_I.'YH2O') '*' (PGAZ.'H2O'.'R')) '+'
  720. ((FRACY.DOM_I.'YN2') '*' (PGAZ.'N2'.'R')) ;
  721. FRACY.DOM_I.'RHO' = (CONDINI.DOM_I.'P') '/'
  722. ((FRACY.DOM_I.'RTOT') '*' (CONDINI.DOM_I.'T'));
  723. 'FIN' BCL1;
  724. 'FINSI';
  725.  
  726.  
  727.  
  728.  
  729. **** INITIALISATION DES CHAMPOINTS POUR LE CALCUL
  730. 'REPETER' BCL1 CONDINI . 'NBDOM';
  731. MODE_I = 'CHAIN' 'MOD' &BCL1;
  732. DOM_I = 'CHAIN' 'DOM' &BCL1;
  733. RHO_I = 'CHAIN' 'RHO' &BCL1;
  734. P_I = 'CHAIN' 'P' &BCL1;
  735. V_I = 'CHAIN' 'V' &BCL1;
  736. YH2_I = 'CHAIN' 'YH2' &BCL1;
  737. YO2_I = 'CHAIN' 'YO2' &BCL1;
  738. YH2O_I = 'CHAIN' 'YH2O' &BCL1;
  739. INI . P_I = 'KCHT' GEO.MODE_I 'SCAL' 'CENTRE'
  740. CONDINI.DOM_I.'P';
  741. INI . V_I = 'KCHT' GEO.MODE_I 'VECT' 'CENTRE'
  742. CONDINI.DOM_I.'V';
  743. 'SI' LOGY;
  744. INI . RHO_I = 'KCHT' GEO.MODE_I 'SCAL' 'CENTRE'
  745. CONDINI.DOM_I.'RHO';
  746. INI . YH2_I = 'KCHT' GEO.MODE_I 'SCAL' 'CENTRE'
  747. 'COMP' 'H2 ' CONDINI.DOM_I.'YH2';
  748. INI . YO2_I = 'KCHT' GEO.MODE_I 'SCAL' 'CENTRE'
  749. 'COMP' 'O2 ' CONDINI.DOM_I.'YO2';
  750. INI . YH2O_I = 'KCHT' GEO.MODE_I 'SCAL' 'CENTRE'
  751. 'COMP' 'H2O ' CONDINI.DOM_I.'YH2O';
  752. 'SINON';
  753. 'SI' LOGX;
  754. INI . RHO_I = 'KCHT' GEO.MODE_I 'SCAL' 'CENTRE'
  755. FRACY.DOM_I.'RHO';
  756. INI . YH2_I = 'KCHT' GEO.MODE_I 'SCAL' 'CENTRE'
  757. 'COMP' 'H2 ' FRACY.DOM_I.'YH2';
  758. INI . YO2_I = 'KCHT' GEO.MODE_I 'SCAL' 'CENTRE'
  759. 'COMP' 'O2 ' FRACY.DOM_I.'YO2';
  760. INI . YH2O_I = 'KCHT' GEO.MODE_I 'SCAL' 'CENTRE'
  761. 'COMP' 'H2O ' FRACY.DOM_I.'YH2O';
  762. 'FINSI';
  763. 'FINSI';
  764. 'SI' (&BCL1 'EGA' 1);
  765. RN = 'KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE' INI . RHO_I ;
  766. PN = 'KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE' INI . P_I ;
  767. VN = 'KCHT' GEO.'MODTOT' 'VECT' 'CENTRE' INI . V_I ;
  768. YH2= 'KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE'
  769. 'COMP' 'H2 ' INI . YH2_I ;
  770. YO2= 'KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE'
  771. 'COMP' 'O2 ' INI . YO2_I ;
  772. YH2O= 'KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE'
  773. 'COMP' 'H2O ' INI . YH2O_I ;
  774. 'SINON';
  775. RN = RN 'ET' ('KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE' INI . RHO_I);
  776. PN = PN 'ET' ('KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE' INI . P_I );
  777. VN = VN 'ET' ('KCHT' GEO.'MODTOT' 'VECT' 'CENTRE' INI . V_I );
  778. YH2=YH2 'ET' ('KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE'
  779. 'COMP' 'H2 ' INI . YH2_I );
  780. YO2=YO2 'ET' ('KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE'
  781. 'COMP' 'O2 ' INI . YO2_I );
  782. YH2O=YH2O 'ET' ('KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE'
  783. 'COMP' 'H2O ' INI . YH2O_I );
  784. 'FINSI';
  785. 'FIN' BCL1;
  786.  
  787. *** On supprime les tables qui ne nous sont plus necessaires
  788. 'OUBLIER' INI ;
  789. 'OUBLIER' FRACY ;
  790. ***
  791.  
  792. INCO . 'RN' = 'KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE' RN ;
  793. INCO . 'PN' = 'KCHT' GEO.'MODTOT' 'SCAL' 'CENTRE' PN ;
  794. INCO . 'VN' = 'KCHT' GEO.'MODTOT' 'VECT' 'CENTRE' VN ;
  795.  
  796. YN = YH2 'ET' YO2 'ET' YH2O ;
  797. INCO . 'YN' = YN ;
  798.  
  799. 'SI' CONDINI.'GRAPH';
  800. 'SI' (('VALE' DIME) 'EGA' 2);
  801. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' RN 'CHAM')
  802. ('CONT' GEO.'MAILTOT') 'CACH' 'TITR' 'RO' ;
  803. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' YH2 'CHAM')
  804. ('CONT' GEO.'MAILTOT') 'CACH' 'TITR' 'YH2' ;
  805. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' YO2 'CHAM')
  806. ('CONT' GEO.'MAILTOT') 'CACH' 'TITR' 'YO2' ;
  807. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' YH2O 'CHAM')
  808. ('CONT' GEO.'MAILTOT') 'CACH' 'TITR' 'YH2O';
  809. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' PN 'CHAM')
  810. ('CONT' GEO.'MAILTOT') 'CACH' 'TITR' 'P' ;
  811. 'SINON';
  812. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' RN 'CHAM')
  813. 'CACH' 'TITR' 'RO' ;
  814. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' YH2 'CHAM')
  815. 'CACH' 'TITR' 'YH2' ;
  816. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' YO2 'CHAM')
  817. 'CACH' 'TITR' 'YO2' ;
  818. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' YH2O 'CHAM')
  819. 'CACH' 'TITR' 'YH2O';
  820. 'TRAC' GEO.'MODTOT' (KCHA GEO.'MODTOT' PN 'CHAM')
  821. 'CACH' 'TITR' 'P' ;
  822. 'FINSI';
  823. 'FINSI';
  824.  
  825.  
  826.  
  827. GN REN RYN = CONS RN VN PN YN GEO.'MODTOT' PGAZ ;
  828.  
  829. ***************************
  830. **** La table PASDETPS ****
  831. ***************************
  832.  
  833. PASDETPS = 'TABLE' 'PASDETPS' ;
  834.  
  835. 'SI' ('EXISTE' CONDINI 'CFL');
  836. PASDETPS.'CFL' = CONDINI . 'CFL' ;
  837. 'SINON';
  838. PASDETPS.'CFL' = 1.0D0 ;
  839. 'MESS' 'On prend CFL par défaut = ' CFL ;
  840. 'FINSI';
  841.  
  842. 'SI' ('EXISTE' CONDINI 'NITMA');
  843. PASDETPS.'NITMA' = CONDINI . 'NITMA' ;
  844. 'SINON';
  845. PASDETPS.'NITMA' = 10000 ;
  846. 'MESS' 'On prend ITMA par défaut = ' NITMA ;
  847. 'FINSI';
  848.  
  849. 'SI' ('EXISTE' CONDINI 'TINI');
  850. PASDETPS.'TINI' = CONDINI . 'TINI' ;
  851. 'SINON';
  852. PASDETPS.'TINI' = 0.0 ;
  853. 'MESS' 'Temps initial = ' PASDETPS.'TINI';
  854. 'FINSI';
  855. PASDETPS.'LTPS' = 'PROG' PASDETPS.'TINI' ;
  856. PASDETPS.'TPS' = PASDETPS.'TINI' ;
  857.  
  858. 'SI' ('EXISTE' CONDINI 'TFINA');
  859. PASDETPS.'TFINA' = CONDINI . 'TFINA' ;
  860. 'SINON';
  861. 'MESS' 'Vous devez entrer un temps final';
  862. ERROR = ERROR + 1 ;
  863. 'FINSI';
  864.  
  865. 'SI' ('EXISTE' CONDINI 'DTIMP');
  866. PASDETPS.'DTIMP' = CONDINI . 'DTIMP' ;
  867. 'SINON';
  868. 'MESS' 'Vous devez entrer un pas de temps';
  869. ERROR = ERROR + 1 ;
  870. 'FINSI';
  871. PASDETPS.'DT' = 'PROG' ;
  872. *
  873. ****
  874. *
  875. 'SI' ('EXISTE' CONDINI 'SAFFAC');
  876. SAFFAC = CONDINI . 'SAFFAC' ;
  877. 'SINON';
  878. SAFFAC = 0.7 ;
  879. 'MESS' 'On prend le facteur de securite pour le pas de temps';
  880. 'MESS' ' par défaut = ' SAFFAC ;
  881. 'FINSI';
  882. PASDETPS.'SAFFAC' = SAFFAC ;
  883.  
  884. 'SI' ('EXISTE' CONDINI 'METO');
  885. METO = CONDINI . 'METO' ;
  886. 'SINON';
  887. METO = 'VLH ';
  888. 'MESS' 'Methode VLH par defaut !!!';
  889. 'FINSI';
  890. CONDINI.'METO' = METO ;
  891.  
  892.  
  893. RV = 'TABLE' ;
  894. RV . 'INCO' = INCO ;
  895. 'SI' ('EXISTE' 'TABC');
  896. RV . 'TABC' = TABC ;
  897. 'FINSI';
  898. RV . 'CI' = CONDINI ;
  899. RV . 'GEO' = GEO ;
  900. RV . 'PASDETPS'= PASDETPS ;
  901.  
  902. RV . 'INCO' . 'RN' = 'COPIER' RN ;
  903. RV . 'INCO' . 'GN' = 'COPIER' GN ;
  904. RV . 'INCO' . 'RETN' = 'COPIER' REN ;
  905. RV . 'INCO' . 'RYN' = 'COPIER' RYN ;
  906. *
  907. *** Le gaz
  908. *
  909. RV . 'PGAZ' = PGAZ ;
  910. *
  911. **** Ordre en espace
  912. *
  913. 'SI' ('EXISTE' CONDINI 'ORDREESP');
  914. IE = CONDINI . 'ORDREESP' ;
  915. 'SINON';
  916. IE = 1 ;
  917. 'MESS' 'On prend ORDREESP par défaut = ' IE ;
  918. 'FINSI';
  919. RV . 'ORDREESP' = IE ;
  920. *
  921. **** Ordre en temps
  922. *
  923. 'SI' ('EXISTE' CONDINI 'ORDRETPS');
  924. IT = CONDINI . 'ORDRETPS' ;
  925. 'SINON';
  926. IT = 1 ;
  927. 'MESS' 'On prend ORDRETPS par défaut = ' IT ;
  928. 'FINSI';
  929. RV . 'ORDRETPS' = IT ;
  930. *
  931. **** Definition du modele de combustion/detonation
  932. *
  933. 'SI' ('EXISTE' CONDINI 'MODETO');
  934. MODETO = CONDINI . 'MODETO' ;
  935. 'SINON';
  936. MODETO = 'ARRHENIU' ;
  937. 'MESS' 'On prend comme modele de combustion/deto ';
  938. 'MESS' ' par défaut = ' MODETO ;
  939. 'FINSI';
  940. RV . 'MODETO' = 'TABLE' 'DETO' ;
  941. RV . 'MODETO' .'NOM' = MODETO ;
  942. **** Si le modele de combustion est CREBCOM :
  943. 'SI' ('EGA' MODETO 'CREBCOM');
  944. * numero du domaine d'ignition
  945. 'SI' ('EXISTE' CONDINI 'IGNIREG');
  946. RV . 'MODETO' .'IGNIREG' = CONDINI . 'IGNIREG' ;
  947. 'SINON';
  948. RV . 'MODETO' .'IGNIREG' = 1 ;
  949. 'MESS' 'On prend le 1er domaine comme domaine d ignition';
  950. 'FINSI';
  951. * critere Crebcom (chimie)
  952. 'SI' ('EXISTE' CONDINI 'EPS_CC');
  953. RV . 'MODETO' .'EPS_CC' = CONDINI . 'EPS_CC' ;
  954. 'SINON';
  955. RV . 'MODETO' .'EPS_CC' = 0.7 ;
  956. 'MESS' 'On prend par défaut EPS_CC = ' RV . 'MODETO' .'EPS_CC';
  957. 'FINSI';
  958. * critere Crebcom (vitesse)
  959. 'SI' ('EXISTE' CONDINI 'K0');
  960. RV . 'MODETO' .'K0' = CONDINI . 'K0' ;
  961. 'SINON';
  962. RV . 'MODETO' .'K0' = 500.0 ;
  963. 'MESS' 'On prend par défaut EPS_CC = ' RV . 'MODETO' .'K0';
  964. 'FINSI';
  965. 'FINSI';
  966. **** Si le modele de combustion est ARRHENIUS :
  967. 'SI' ('EGA' MODETO 'ARRHENIU');
  968. * numero du domaine d'ignition
  969. 'SI' ('EXISTE' CONDINI 'IGNIREG');
  970. RV . 'MODETO' .'IGNIREG' = CONDINI . 'IGNIREG' ;
  971. 'SINON';
  972. RV . 'MODETO' .'IGNIREG' = 1 ;
  973. 'MESS' 'On prend le 1er domaine comme domaine d ignition';
  974. 'FINSI';
  975. 'FINSI';
  976.  
  977.  
  978.  
  979. *
  980. ****
  981. *
  982. 'SI' (ERROR 'NEG' 0);
  983. 'MESS' 'Il y a des problèmes d initialisation !';
  984. 'ERRE' 5;
  985. 'FINSI';
  986.  
  987.  
  988. 'FINPROC' RV;
  989. *$$$$ VALP
  990. *****************************************************
  991. *****************************************************
  992. ** PROCEDURE VALP POUR CALCULER LES VALEURS DE **
  993. ** PRESSION EN DES POINTS DONNES ET A DES TEMPS **
  994. ** DONNES **
  995. *****************************************************
  996. *****************************************************
  997. 'DEBPROC' VALP RV*'TABLE' ;
  998.  
  999. TABC = RV . 'TABC' ;
  1000.  
  1001. MODTOT = RV . 'GEO' . 'MODTOT' ;
  1002. CENTOT = 'DOMA' MODTOT 'CENTRE';
  1003. PTS = TABC . 'LPOINTS' ;
  1004. M1 = 'NBEL' PTS ;
  1005.  
  1006. LTPS = TABC . 'LTPS' ;
  1007. NTPS = DIME LTPS ;
  1008.  
  1009. L1 = TABC . 'COMP' ;
  1010. N1 = 'DIME' L1 ;
  1011. * On etudie uniquement la pression
  1012. * peut evoluer par la suite !!!
  1013. LOG1 = 'EXISTE' TABC 'NOMC' ;
  1014.  
  1015.  
  1016. * Initialisation des tables
  1017. 'SI' (NTPS EGA 0 );
  1018. 'REPETER' BOU1 M1;
  1019. PT1 = PTS 'POIN' &BOU1;
  1020. 'SI' (LOG1 'ET' (('DIME' (TABC.'NOMC')) 'EGA' M1 )) ;
  1021. CAPI = 'EXTR' (TABC.'NOMC') &BOU1;
  1022. 'SINON' ;
  1023. CAPI = 'CHAINE' 'CAPT' &BOU1;
  1024. 'FINSI';
  1025. PT2 = CENTOT 'POIN' 'PROCHE' PT1;
  1026. 'SI' (&BOU1 'EGA' 1);
  1027. TABC.'RPOINTS' = PT2 ;
  1028. 'SINON';
  1029. TABC.'RPOINTS' = RV.'TABC'.'RPOINTS' 'ET' PT2;
  1030. 'FINSI';
  1031. TABC . CAPI = 'TABLE';
  1032. 'REPETER' BOU2 N1;
  1033. MOI = EXTR L1 &BOU2 ;
  1034. TABC . CAPI . MOI = 'PROG';
  1035. 'FIN' BOU2;
  1036. 'FIN' BOU1;
  1037. 'SI' RV.'CI'.'GRAPH' ;
  1038. 'SI' (('VALE' DIME) 'EGA' 2) ;
  1039. CONT1 = 'CONT' RV.'GEO'.'MAILTOT' ;
  1040. TRACE (('COUL' TABC.'RPOINTS' 'ROUGE') 'ET' CONT1 ) ;
  1041. 'SINON';
  1042. ENV1 = 'ENVE' RV.'GEO'.'MAILTOT' ;
  1043. TRACE (('COUL' TABC.'RPOINTS' 'ROUGE') 'ET' ENV1 ) ;
  1044. 'FINSI';
  1045. 'FINSI';
  1046. 'FINSI';
  1047.  
  1048. 'REPETER' BOU1 M1;
  1049. PT1 = TABC.'RPOINTS' 'POIN' &BOU1;
  1050. 'SI' (LOG1 'ET' (('DIME' (TABC.'NOMC')) 'EGA' M1 )) ;
  1051. CAPI = 'EXTR' (TABC.'NOMC') &BOU1;
  1052. 'SINON' ;
  1053. CAPI = 'CHAINE' 'CAPT' &BOU1;
  1054. 'FINSI';
  1055.  
  1056. 'REPETER' BOU2 N1;
  1057.  
  1058. MOI = EXTR L1 &BOU2 ;
  1059.  
  1060. *** captage de la pression
  1061. 'SI' ('EGA' MOI 'PN');
  1062. X1 = 'EXTR' (RV . 'INCO' . 'PN') 'SCAL' PT1 ;
  1063. TABC . CAPI . MOI = TABC . CAPI . MOI 'ET' ('PROG' X1);
  1064. 'FINSI';
  1065. *** captage de temperature
  1066. 'SI' ('EGA' MOI 'TN');
  1067. X1 = 'EXTR' (RV . 'INCO' . 'TN') 'SCAL' PT1 ;
  1068. TABC . CAPI . MOI = TABC . CAPI . MOI 'ET' ('PROG' X1);
  1069. 'FINSI';
  1070.  
  1071. 'FIN' BOU2;
  1072.  
  1073. 'FIN' BOU1;
  1074.  
  1075. TABC . 'LTPS' = TABC . 'LTPS' 'ET' ('PROG' RV . 'PASDETPS' . 'TPS');
  1076.  
  1077.  
  1078. 'FINPROC' TABC;
  1079.  
  1080. ************************************************************************
  1081. ***************** FIN DEFINTION DES PROCEDURES *************************
  1082. ************************************************************************
  1083.  
  1084. ***************** REMPLISSAGE DE LA TABLE PGAZ *************************
  1085. *
  1086. ***** Gas properties
  1087. *
  1088.  
  1089. PGAZ = 'TABLE' ;
  1090.  
  1091. * Polynomial degree of specific heats
  1092.  
  1093. PGAZ . 'NORD' = 4 ;
  1094.  
  1095. * Species explicitly treated in the Euler Equations
  1096.  
  1097. PGAZ . 'ESPEULE' = 'MOTS' 'H2 ' 'O2 ' 'H2O ' ;
  1098.  
  1099. * Species non explicitly treated
  1100.  
  1101. PGAZ . 'ESPNEULE' = 'N2 ';
  1102.  
  1103. * Single gases properties
  1104.  
  1105. PGAZ . 'H2 ' = 'TABLE' ;
  1106. PGAZ . 'H2O ' = 'TABLE' ;
  1107. PGAZ . 'N2 ' = 'TABLE' ;
  1108. PGAZ . 'O2 ' = 'TABLE' ;
  1109.  
  1110. * R (J/Kg/K)
  1111.  
  1112. mH2 = 2. '*' 1.00797E-3 ;
  1113. mo2 = 2. '*' 15.9994E-3 ;
  1114. mH2O = mh2 '+' (0.5 '*' mo2) ;
  1115. mN2 = 2 '*' 14.0067E-3 ;
  1116. RGAS = 8.31441 ;
  1117.  
  1118. PGAZ . 'H2 ' . 'R' = RGAS '/' mh2 ;
  1119. PGAZ . 'H2O ' . 'R' = RGAS '/' mh2o ;
  1120. PGAZ . 'N2 ' . 'R' = RGAS '/' mn2 ;
  1121. PGAZ . 'O2 ' . 'R' = RGAS '/' mo2 ;
  1122.  
  1123. * Polynomials regressions coefficients
  1124.  
  1125. PGAZ . 'H2 ' . 'A' = 'PROG' 9834.91866 0.54273926 0.000862203836
  1126. -2.37281455E-07 1.84701105E-11 ;
  1127. PGAZ . 'H2O ' . 'A' = 'PROG' 1155.95625 0.768331151 -5.73129958E-05
  1128. -1.82753232E-08 2.44485692E-12 ;
  1129. PGAZ . 'N2 ' . 'A' = 'PROG' 652.940766 0.288239099 -7.80442298E-05
  1130. 8.78233606E-09 -3.05514485E-13 ;
  1131. PGAZ . 'O2 ' . 'A' = 'PROG' 575.012333 0.350522002 -0.000128294865
  1132. 2.33636971E-08 -1.53304905E-12;
  1133.  
  1134. * Formation enthalpies at 0K (J/Kg))
  1135. *
  1136. * h_i(0K) = h_i(T0) '-' \int_0^{T0} cp_i(x) dx
  1137. * = h_i(T0) '-' (\int_0^{T0} cv_i(x) dx '+' R_i * T0)
  1138. *
  1139.  
  1140. PGAZ . 'H2 ' . 'H0K' = -4.195D6 ;
  1141. PGAZ . 'H2O ' . 'H0K' = -1.395D7 ;
  1142. PGAZ . 'N2 ' . 'H0K' = -2.953D5 ;
  1143. PGAZ . 'O2 ' . 'H0K' = -2.634D5 ;
  1144.  
  1145.  
  1146. *'OPTION' 'SAUVER' 'FORMAT' 'pgaz.sauv' ;
  1147. *'SAUVER' 'FORMAT' PGAZ ;
  1148. *'FIN';
  1149.  
  1150.  
  1151. *** ------------------------------------------------- ***
  1152. *** Fichier correspondant a la definition du maillage ***
  1153. *** ------------------------------------------------- ***
  1154.  
  1155.  
  1156. ************
  1157. * MAILLAGE *
  1158. ************
  1159.  
  1160. raf = 1 ;
  1161. 'OPTI' 'DIME' 2 'ELEM' 'QUA4' ;
  1162. *
  1163. *
  1164. * Maillage du canal RUT sans obstacles
  1165. *
  1166. *
  1167. *NX1 = 10 ; NX2 = 20 ; NX3 = 106 ; NX4 = 180 ;
  1168. *DINI1 = 0.1 ; DFIN1 = 1. ;
  1169. *NY1 = 15 ; NY2 = 25 ; NY3 = 10 ; NY4 = 13 ;
  1170.  
  1171. X0 = 31.6 ;
  1172. X1 = X0 ;
  1173. Y0 = 0.0 ;
  1174. Y1 = Y0 ;
  1175. IGNI1 = 1. ;
  1176. LC1 = 3. ;
  1177. LK1 = 10.6 ;
  1178. LC2 = 18. ;
  1179. LC3 = 54. ;
  1180. HK1 = 4.;
  1181. HC = 2.3 ;
  1182. *YJH = Y1 + 1. - ((HC - 1.)/(2. * NY4 - 1.));repositionnement
  1183. *YJB = 1.5 - HK1 + ((1.5 - Y1) / ( 2. * NY1 - 1.)) ;repositionnement
  1184. YJH = Y1 + 1. ;
  1185. YJB = 1.5 - HK1 ;
  1186. *---------------------------------------> Points du contour
  1187. P1 = X1 Y1 ;
  1188. P2 = (X1 + LC1) Y1 ;
  1189. P3 = (X1 + LC1) (Y1 - HK1) ;
  1190. P4 = (X1 + LC1 + LK1) (Y1 - HK1) ;
  1191. P5 = (X1 + LC1 + LK1) Y1 ;
  1192. PF1 = (X1 + LC1 + LK1 + LC2) Y1 ;
  1193. PF2 = (X1 + LC1 + LK1 + LC2) (Y1 + HC) ;
  1194. P6 = (X1 + LC1 + LK1 + LC2 + LC3) Y1 ;
  1195. P7 = (X1 + LC1 + LK1 + LC2 + LC3) (Y1 + HC) ;
  1196. P8 = (X1 + LC1 + LK1) (Y1 + HC) ;
  1197. P9 = (X1 + LC1) (Y1 + HC) ;
  1198. P10 = X1 (Y1 + HC) ;
  1199. *---------------------------------------> Points pour les jauges
  1200. J1 = X1 YJH ;
  1201. J2 = (X1 + IGNI1) YJH ;
  1202. J2B = (X1 + IGNI1) Y1 ;
  1203. J2H = (X1 + IGNI1) (Y1 + HC) ;
  1204. J3 = (X1 + LC1) YJH ;
  1205. J4 = (X1 + LC1 + LK1) YJH ;
  1206. J5 = (X1 + LC1 + LK1 + LC2) YJH ;
  1207. J6 = (X1 + LC1 + LK1 + LC2 + LC3) YJH ;
  1208. J7 = (X1 + LC1) YJB ;
  1209. J8 = (X1 + LC1 + LK1) YJB ;
  1210. *
  1211. *- Lignes pour les sous-domaines
  1212. *
  1213. * MAILLAGE FIN
  1214. *NX1 = 10 ; NX2 = 20 ; NX3 = 106 ; NX4 = 180 ;
  1215. *DINI1 = 0.1 ; DFIN1 = 1. ;
  1216. *NY1 = 15 ; NY2 = 25 ; NY3 = 10 ; NY4 = 13 ;
  1217.  
  1218. * MAILLAGE TRES FIN
  1219. *NX1 = 15 ; NX2 = 30 ; NX3 = 150 ; NX4 = 270 ;
  1220. *DINI1 = 0.1 ; DFIN1 = 1. ;
  1221. *NY1 = 22 ; NY2 = 37 ; NY3 = 15 ; NY4 = 19 ;
  1222.  
  1223. * MAILLAGE TRES GROSSIER
  1224. 'MESS' 'Maillage tres grossier !' ;
  1225. NX1 = 2 ; NX2 = 4 ; NX3 = 25 ; NX4 = 36 ;
  1226. DINI1 = 0.5 ; DFIN1 = 5. ;
  1227. NY1 = 3 ; NY2 = 5 ; NY3 = 2 ; NY4 = 3 ;
  1228.  
  1229. * MAILLAGE GROSSIER
  1230. *NX1 = 4 ; NX2 = 8 ; NX3 = 50 ; NX4 = 72 ;
  1231. *DINI1 = 0.25 ; DFIN1 = 2.5 ;
  1232. *NY1 = 6 ; NY2 = 10 ; NY3 = 4 ; NY4 = 6 ;
  1233. *---------------------------------------> Contour externe
  1234. P1J2B = P1 'DROI' NX1 J2B ;
  1235. J2BP2 = J2B 'DROI' NX2 P2 ;
  1236. P2J7 = P2 'DROI' NY2 J7 ;
  1237. J7P3 = J7 'DROI' NY1 P3 ;
  1238. P3P4 = P3 'DROI' NX3 P4 ;
  1239. P4J8 = P4 'DROI' NY1 J8 ;
  1240. J8P5 = J8 'DROI' NY2 P5 ;
  1241. P5PF1 = P5 'DROI' NX4 PF1 ;
  1242. PF1P6 = PF1 'DROI' P6 'DINI' DINI1 'DFIN' DFIN1 ;
  1243. P6J6 = P6 'DROI' NY3 J6 ;
  1244. J6P7 = J6 'DROI' NY4 P7 ;
  1245. P7PF2 = P7 'DROI' PF2 'DINI' DFIN1 'DFIN' DINI1 ;
  1246. PF2P8 = PF2 'DROI' NX4 P8 ;
  1247. P8P9 = P8 'DROI' NX3 P9 ;
  1248. P9J2H = P9 'DROI' NX2 J2H ;
  1249. J2HP10 = J2H 'DROI' NX1 P10 ;
  1250. P10J1 = P10 'DROI' NY4 J1 ;
  1251. J1P1 = J1 'DROI' NY3 P1 ;
  1252. *----------------------------------------> Jauges
  1253. J1J2 = J1 'DROI' NX1 J2 ;
  1254. J2J3 = J2 'DROI' NX2 J3 ;
  1255. J3J4 = J3 'DROI' NX3 J4 ;
  1256. J4J5 = J4 'DROI' NX4 J5 ;
  1257. J5J6 = J5 'DROI' J6 'DINI' DINI1 'DFIN' DFIN1 ;
  1258. J7J8 = J7 'DROI' NX3 J8 ;
  1259. *----------------------------------------> Autres lignes internes
  1260. J2BJ2 = J2B 'DROI' NY3 J2 ;
  1261. J2J2H = J2 'DROI' NY4 J2H ;
  1262. P2J3 = P2 'DROI' NY3 J3 ;
  1263. J3P9 = J3 'DROI' NY4 P9 ;
  1264. P5J4 = P5 'DROI' NY3 J4 ;
  1265. J4P8 = J4 'DROI' NY4 P8 ;
  1266. PF1J5 = PF1 'DROI' NY3 J5 ;
  1267. J5PF2 = J5 'DROI' NY4 PF2 ;
  1268. P2P5 = P2 'DROI' NX3 P5 ;
  1269. J7J8 = J7 'DROI' NX3 J8 ;
  1270. *
  1271. *- Pavage de chacune de zones identifiées
  1272. *
  1273. *---------------------------------------> Premier canal
  1274. DC1 = 'DALL' P1J2B J2BJ2 ('INVE' J1J2) J1P1 ;
  1275. DC2 = 'DALL' J1J2 J2J2H J2HP10 P10J1 ;
  1276. DOM1 = DC1 ET DC2 ;
  1277. DC3 = 'DALL' J2BP2 P2J3 ('INVE' J2J3) ('INVE' J2BJ2) ;
  1278. DC4 = 'DALL' J2J3 J3P9 P9J2H ('INVE' J2J2H) ;
  1279. DOM2 = DC3 ET DC4 ;
  1280. DOMC1 = DOM1 ET DOM2 ;
  1281. *---------------------------------------> Deuxieme canal
  1282. DC5 = 'DALL' P5PF1 PF1J5 ('INVE' J4J5) ('INVE' P5J4) ;
  1283. DC6 = 'DALL' J4J5 J5PF2 PF2P8 ('INVE' J4P8) ;
  1284. DOM3 = DC5 ET DC6 ;
  1285. DC7 = 'DALL' PF1P6 P6J6 ('INVE' J5J6) ('INVE' PF1J5) ;
  1286. DC8 = 'DALL' J5J6 J6P7 P7PF2 ('INVE' J5PF2) ;
  1287. DOM4 = DC7 ET DC8 ;
  1288. DOMC2 = DOM3 ET DOM4 ;
  1289. *---------------------------------------> Canyon
  1290. DK1 = 'DALL' P3P4 P4J8 ('INVE' J7J8) J7P3 ;
  1291. DK2 = 'DALL' J7J8 J8P5 ('INVE' P2P5) P2J7 ;
  1292. DK3 = 'DALL' P2P5 P5J4 ('INVE' J3J4) ('INVE' P2J3) ;
  1293. DK4 = 'DALL' J3J4 J4P8 P8P9 ('INVE' J3P9) ;
  1294. DOMK1 = DK1 ET DK2 ET DK3 ET DK4 ;
  1295. *---------------------------------------> Maillage global
  1296. DOMTOT = DOMC1 ET DOMC2 ET DOMK1 ;
  1297. DDOM1 = DOM1 ;
  1298. DDOM2 = DOM2 ET DOMC2 ET DOMK1 ;
  1299.  
  1300. *
  1301. *** PCEN1 Pour determiner PRES(PCEN,t)
  1302. *
  1303. XINIT0 = 0.33 ;
  1304. *repositionnement
  1305. *XINIT0 = 1.41 ;
  1306. YINIT0 = 0.79 ;
  1307.  
  1308. PCEL2 = (XINIT0 + 34.78) YJB ;
  1309. PCEL4 = (XINIT0 + 41.29) YJB ;
  1310. PCEL5 = (XINIT0 + 42.97) YJB ;
  1311. PCEL6 = (XINIT0 + 44.84) YJB ;
  1312. PCEL7 = (XINIT0 + 34.54) YJH ;
  1313. PCEL8 = (XINIT0 + 36.79) YJH ;
  1314. PCEL9 = (XINIT0 + 39.04) YJH ;
  1315. PCEL10= (XINIT0 + 41.74) YJH ;
  1316. PCEL11= (XINIT0 + 45.04) YJH ;
  1317. PCEL12= (XINIT0 + 50.02) YJH ;
  1318. PCEL13= (XINIT0 + 55.04) YJH ;
  1319. PCEL14= (XINIT0 + 64.00) YJH ;
  1320. *
  1321. *PCEL2 = 35.11 YJB ;
  1322. *PCEL4 = 41.62 YJB ;
  1323. *PCEL5 = 43.30 YJB ;
  1324. *PCEL6 = 45.17 YJB ;
  1325. *PCEL7 = 34.87 YJH ;
  1326. *PCEL8 = 37.12 YJH ;
  1327. *PCEL9 = 39.37 YJH ;
  1328. *PCEL10= 42.07 YJH ;
  1329. *PCEL11= 45.37 YJH ;
  1330. *PCEL12= 50.35 YJH ;
  1331. *PCEL13= 55.37 YJH ;
  1332. *PCEL14= 64.33 YJH ;
  1333.  
  1334. LPOINTS = PCEL2 'ET' PCEL4 'ET' PCEL5 'ET' PCEL6
  1335. 'ET' PCEL7 'ET' PCEL8 'ET' PCEL9 'ET' PCEL10 'ET' PCEL11
  1336. 'ET' PCEL12 'ET' PCEL13 'ET' PCEL14 ;
  1337.  
  1338. *'OPTI' 'SAUV' 'FORMAT' 'maillage_rut_fin.save';
  1339. *'OPTI' 'SAUV' 'FORMAT' 'maillage_rut_gros.save';
  1340. *'SAUV' 'FORMAT' ;
  1341. *'FIN';
  1342.  
  1343. ******* FICHIER MAITRE *************************************
  1344.  
  1345. *** RECUPERATION DES OBJETS MODELES + POINTS DES CAPTEURS ***
  1346. *'OPTI' 'REST' 'FORMAT' 'maillage_rut_gros.save';
  1347. *'OPTI' 'REST' 'FORMAT' 'maillage_rut_fin.save';
  1348. *'REST' 'FORMAT' ;
  1349. *
  1350. TABC = 'TABLE' 'CAPTEUR' ;
  1351. TABC . 'LPOINTS' = PCEL2 'ET' PCEL4 'ET' PCEL5 'ET' PCEL6
  1352. 'ET' PCEL7 'ET' PCEL8 'ET' PCEL9 'ET' PCEL10 'ET' PCEL11
  1353. 'ET' PCEL12 'ET' PCEL13 'ET' PCEL14 ;
  1354. TABC . 'LTPS' = 'PROG';
  1355. TABC . 'NOMC' = 'MOTS' 'C2' 'C4' 'C5' 'C6' 'C7'
  1356. 'C8' 'C9' 'C10' 'C11' 'C12'
  1357. 'C13' 'C14' ;
  1358. TABC . 'COMP' = 'MOTS' 'PN' 'TN';
  1359. TABC . 'FREQ' = 1 ;
  1360.  
  1361. *** DEFINITION DES GAZ EN PRESENCE + LEURS PROPRIETES ********
  1362. ***********************
  1363. **** LA TABLE PGAZ ****
  1364. ***********************
  1365. *'OPTI' 'REST' 'FORMAT' 'pgaz.sauv';
  1366. *'REST' 'FORMAT' ;
  1367.  
  1368. *
  1369. *** Fin PGAZ
  1370. *
  1371. *** DEFINITION DES CONDITIONS INITIALES *************************
  1372.  
  1373. CONDINI = 'TABLE' ;
  1374. CONDINI . 'NBDOM' = 2 ;
  1375. * 1.1) DOM1 = gauche
  1376. * 1.2) DOM2 = droit
  1377. CONDINI . 'DOM1' = 'TABLE' ;
  1378. CONDINI . 'DOM2' = 'TABLE' ;
  1379.  
  1380. * ZONE GAUCHE
  1381. tg = 3000.0 ;
  1382. pg =20.00D5 ;
  1383. xh2sec = 0.250 ;
  1384. xh2o = 0.250 ;
  1385. xh2 = xh2sec * (1.D0 - xh2o) ;
  1386. xo2 = 0.21 * (1.D0 - xh2 - xh2o) ;
  1387. xn2 = 1.0D0 - (xh2 + xo2 + xh2O) ;
  1388.  
  1389. uxg = 0.0 ;
  1390. uyg = 0.0 ;
  1391. CONDINI . 'DOM1' .'MAIL' = DDOM1;
  1392. CONDINI . 'DOM1' .'T' = tg ;
  1393. CONDINI . 'DOM1' .'P' = pg ;
  1394. CONDINI . 'DOM1' .'V' = (uxg uyg) ;
  1395. CONDINI . 'DOM1' .'XH2' = xh2 ;
  1396. CONDINI . 'DOM1' .'XO2' = xo2 ;
  1397. CONDINI . 'DOM1' .'XN2' = xn2 ;
  1398. CONDINI . 'DOM1' .'XH2O' = xh2o ;
  1399. * ZONE DROITE
  1400. td = 363. ;
  1401. und = 0.0D0 ;
  1402. utd = 0.0D0 ;
  1403. pd = 1.0D5 ;
  1404.  
  1405. CONDINI . 'DOM2' .'MAIL' = DDOM2;
  1406. CONDINI . 'DOM2' .'T' = td ;
  1407. CONDINI . 'DOM2' .'P' = pd ;
  1408. CONDINI . 'DOM2' .'V' = (und utd) ;
  1409. CONDINI . 'DOM2' .'XH2' = xh2 ;
  1410. CONDINI . 'DOM2' .'XO2' = xo2 ;
  1411. CONDINI . 'DOM2' .'XN2' = xn2 ;
  1412. CONDINI . 'DOM2' .'XH2O' = xh2o ;
  1413.  
  1414. *** Methodes possibles :
  1415. *
  1416. * 'VLH '
  1417.  
  1418. CONDINI . 'METO' = 'VLH ' ;
  1419. CONDINI . 'MAILTOT' = DOMTOT ;
  1420.  
  1421. CONDINI . 'TINI' = 0.0 ;
  1422. CONDINI . 'TFINA' = 8.D-3 ;
  1423. CONDINI . 'ORDREESP' = 1 ;
  1424. * Maillage fin
  1425. **CONDINI . 'DTIMP' = 1.D-5 ;
  1426. * Maillage tres grossier
  1427. CONDINI . 'DTIMP' = 3.D-5 ;
  1428. *CONDINI . 'GRAPH' = VRAI ;
  1429. CONDINI . 'GRAPH' = FAUX ;
  1430.  
  1431. 'OPTI' 'TRACE' 'PSC' ;
  1432. *** FIN remplissage de la table definissant les conditions initiales
  1433.  
  1434. *** preparation des equations et initialisation des champoints
  1435. *** recuperation de la table de calculs
  1436. RV = PREPADET CONDINI PGAZ TABC ;
  1437.  
  1438. MDOMT = RV.'GEO'.'MQUATOT' ;
  1439. DOMT1 = RV.'GEO'.'MAILTOT';
  1440. X1 = 'COORD' 1 DOMT1;
  1441. X2 = 'CHAN' 'CHAM' X1 DOMT1;
  1442. X3 = 'ELEM' X2 'INFERIEUR' 48. ;
  1443. $DOMT1 = 'MODE' X3 'EULER' ;
  1444. X4 = 'DOMA' $DOMT1 'QUAF' ;
  1445. 'ELIM' (X4 ET MDOMT) RV.'GEO'.'EPSI';
  1446.  
  1447. * Table perso pour le trace de courbes au cours du temps
  1448. *RV.'PRCPERSO' = 'TABLE' 'PERSO' ;
  1449. *RV.'PRCPERSO'.'NOMPROC' = 'MOT' PERSO ;
  1450. *RV.'PRCPERSO'.'ARG1' = $DOMT1 ;
  1451. *RV.'PRCPERSO'.'ARG2' = 1 ;
  1452. * Maillage fin
  1453. **RV.'PRCPERSO'.'ARG3' = 15 ;
  1454. * Maillage grossier
  1455. *RV.'PRCPERSO'.'ARG3' = 5 ;
  1456.  
  1457. *** execution du calcul
  1458. EXEX RV ;
  1459. *** relancement d un calcul
  1460. *RV . 'PASDETPS' . 'TFINA' = 6.D-3 ;
  1461. * EXEX RV ;
  1462.  
  1463. * Maillage fin
  1464. **'OPTION' 'SAUV' 'main_rut_fin.sauv' ;
  1465. * Maillage grossier
  1466. *'OPTION' 'SAUV' 'main_rut_gros.sauv' ;
  1467. *'SAUV' ;
  1468.  
  1469.  
  1470. *************** TESTS de non-regression ********************************
  1471.  
  1472. TPS = RV.'TABC'.'LTPS';
  1473. CA = 'TABLE' ;
  1474. CA . 1 = RV.'TABC'.'C7'.'PN';
  1475. CA . 2 = RV.'TABC'.'C8'.'PN';
  1476. CA . 3 = RV.'TABC'.'C9'.'PN';
  1477. CA . 4 = RV.'TABC'.'C10'.'PN';
  1478. N1 = 'DIME' TPS;
  1479.  
  1480. TREF = 'PROG' 1.86E-3 3.03E-3 4.68E-3 6.45E-3 ;
  1481. PREF = 'PROG' 9.25090E5 8.31398E5 7.65406E5 7.30826E5 ;
  1482. PCAL = 'PROG' ;
  1483.  
  1484. TOL1 = 1.E-6 ;
  1485. NN1 = 1 ;
  1486. 'REPETER' BLO1 N1 ;
  1487. T1 = EXTR TPS &BLO1 ;
  1488. T2 = EXTR TREF NN1 ;
  1489.  
  1490. 'SI' (T1 'EGA' T2 TOL1);
  1491. P1 = 'EXTR' (CA . NN1) &BLO1 ;
  1492. PCAL= PCAL 'ET' ('PROG' P1) ;
  1493. NN1 = NN1 + 1 ;
  1494. 'MESS' 'Tps/pression : ' T1 P1 ;
  1495. 'FINSI';
  1496. 'SI' (NN1 '>' ('DIME' PREF));
  1497. 'QUITTER' BLO1 ;
  1498. 'FINSI';
  1499. 'FIN' BLO1 ;
  1500.  
  1501. 'MESS' 'Pression de reference' ;
  1502. 'LIST' PREF;
  1503. 'MESS' 'Pression calculee' ;
  1504. 'LIST' PCAL;
  1505.  
  1506. DIFF1 = 'MAXI' (PREF - PCAL) 'ABS' ;
  1507. * AB: Je definis PREFS pour calculer une erreur relative.
  1508. PREFS = 'MINIMUM' PREF ;
  1509. EPS_P = 1.E-5 ;
  1510. ERROR = 0 ;
  1511.  
  1512. **** TEST sur la pression
  1513. 'MESS' 'Max difference : ' (DIFF1 '/' PREFS) ;
  1514. 'SI' ((DIFF1 '/' PREFS) '>' EPS_P) ;
  1515. 'MESS' 'Probleme sur la pression ' ;
  1516. ERROR = ERROR + 1 ;
  1517. 'FINSI';
  1518.  
  1519. **** Calcul de la vitesse de flamme
  1520. X1 Y1 = COORD (RV.'TABC'.'RPOINTS');
  1521. P0 = EXTR X1 MAILLAGE;
  1522. P7 = POINT P0 5;
  1523. P8 = POINT P0 6;
  1524. P9 = POINT P0 7;
  1525. P10 = POINT P0 8;
  1526.  
  1527. X7 = EXTR X1 'SCAL' P7 ;
  1528. X8 = EXTR X1 'SCAL' P8 ;
  1529. X9 = EXTR X1 'SCAL' P9 ;
  1530. X10 = EXTR X1 'SCAL' P10 ;
  1531.  
  1532. DX8 = X8 - X7 ;
  1533. DX9 = X9 - X8 ;
  1534. DX10 = X10 - X9 ;
  1535.  
  1536. T2 = 'ENLE' TREF 1 ;
  1537. T1 = 'ENLE' TREF ('DIME' TREF) ;
  1538. DT1 = T2 - T1 ;
  1539. DX1 = 'PROG' DX8 DX9 DX10 ;
  1540.  
  1541. US1 = DX1 / DT1 ;
  1542.  
  1543. 'MESS' 'Vitesse de flamme : '; 'LIST' US1 ;
  1544.  
  1545.  
  1546.  
  1547. 'SI' (ERROR '>' 0) ;
  1548. 'MESS' 'Il y a ' ERROR ' probleme(s) ' ;
  1549. 'ERRE' 5 ;
  1550. 'FINSI';
  1551.  
  1552.  
  1553. 'FIN';
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  

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