Télécharger carre_therper_scalpass.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : carre_therper_scalpass.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ******************************************************************
  5. * CALCUL DU QUARRE A CHOC *
  6. * Modele: gaz mono-espece "thermally perfect" *
  7. * Gaz mono-espece "thermally perfect" *
  8. * Splitting de scalaire passifs *
  9. * Controle de la symetrie *
  10. * *
  11. * A. BECCANTINI, DRN/DMT/SEMT/LTMF, FEVRIER 2000 *
  12. *Modif, 10/07/01, syntaxe de PENT changée *
  13. *Modif, 25/09/02, syntaxe de KONV changée *
  14. ******************************************************************
  15.  
  16. 'OPTION' 'DIME' 2 'ELEM' 'QUA4' 'ISOV' 'SULI' 'ECHO' 1
  17. 'TRAC' 'X';
  18.  
  19. GRAPH = FAUX ;
  20. * GRAPH = VRAI ;
  21.  
  22. *
  23. *** Methodes possibles :
  24. *
  25. * 'VLH', 'SS'
  26. *
  27.  
  28. METO = 'VLH' ;
  29. * SAFFAC = safety facton on the CFL
  30. SAFFAC = 1.0 ;
  31. * LOGSO = second order reconstruction
  32. LOGSO = VRAI ;
  33. TFINAL = 10. ;
  34. NITER = 40 ;
  35. ZERO = 1.0D-12 ;
  36.  
  37. ************
  38. * MAILLAGE *
  39. ************
  40.  
  41. PCEN = 0.5 0.5 ;
  42. A1 = 0.75 0.5 ;
  43. A2 = 1.0 0.5 ;
  44. A3 = 1.0 0.75 ;
  45. A4 = 1.0 1.0 ;
  46. A5 = 0.75 1.0 ;
  47. A6 = 0.5 1.0 ;
  48. A7 = 0.5 0.75 ;
  49.  
  50. MAIL1 = MANU 'QUA4' A1 A3 A5 A7 ;
  51. MAIL1 = MAIL1 ET (MANU 'TRI3' PCEN A1 A7 );
  52. MAIL1 = MAIL1 ET (MANU 'TRI3' A1 A2 A3 );
  53. MAIL1 = MAIL1 ET (MANU 'TRI3' A3 A4 A5 );
  54. MAIL1 = MAIL1 ET (MANU 'TRI3' A5 A6 A7 );
  55.  
  56. MAIL2 = MAIL1;
  57.  
  58. REPE BL1 3 ;
  59. MAIL2 = MAIL2 TOUR 90 PCEN ;
  60. MAIL1 = MAIL1 ET MAIL2 ;
  61. FIN BL1 ;
  62.  
  63. ELIM MAIL1 0.001 ;
  64.  
  65. VECX = 1.0 0.0 ;
  66. VECY = 0.0 1.0 ;
  67.  
  68. NELEM = 1 ;
  69. NELEMTOT = (2 * NELEM) + 1 ;
  70.  
  71. MAILTOT = MAIL1 'COUL' 'BLEU' ;
  72.  
  73. IX = (-1 * NELEM) - 1 ;
  74. 'REPE' BL1 NELEMTOT ;
  75. IX = IX + 1;
  76. IY = (-1 * NELEM) - 1 ;
  77. 'REPE' BL2 NELEMTOT ;
  78. IY = IY + 1;
  79. DVECX = IX '*' VECX ;
  80. DVECY = IY '*' VECY ;
  81. DVEC = 'PLUS' DVECX DVECY ;
  82. SI ((IX NEG 0) OU (IY NEG 0)) ;
  83. MAIL2 = MAIL1 PLUS DVEC ;
  84. MAILTOT = MAILTOT 'ET' MAIL2 ;
  85. FINSI ;
  86. 'FIN' BL2 ;
  87. 'FIN' BL1 ;
  88.  
  89. 'ELIM' MAILTOT 0.01 ;
  90. 'ELIM' 0.01 MAIL1 MAILTOT ;
  91.  
  92. MDNS = 'EULER' ;
  93. $DOMTOT = 'MODE' MAILTOT MDNS ;
  94. $DOM1 = 'MODE' MAIL1 MDNS ;
  95. TAB1 = 'DOMA' $DOMTOT 'VF' ;
  96. TAB2 = 'DOMA' $DOM1 'VF' ;
  97. MDOMTOT = TAB1 . 'QUAF' ;
  98. MDOM1 = TAB2 . 'QUAF' ;
  99. 'ELIM' (MDOMTOT 'ET' MDOM1) 1.E-5 ;
  100.  
  101. 'SI' GRAPH ;
  102. 'TRACER' ('DOMA' $DOMTOT 'MAILLAGE') 'TITRE' ('CHAINE' 'Maillage ');
  103. 'FINSI' ;
  104.  
  105.  
  106. ***********************
  107. **** LA TABLE PGAZ ****
  108. ***********************
  109.  
  110. PGAZ = 'TABLE' ;
  111.  
  112. *
  113. **** Ordre des polynoms
  114. *
  115.  
  116. PGAZ . 'NORD' = 4 ;
  117.  
  118. *
  119. **** Especes qui sont dans les equations d'Euler
  120. *
  121.  
  122. PGAZ . 'ESPEULE' = 'MOTS' 'H2 ' 'O2 ' 'H2O ' ;
  123.  
  124. *
  125. **** Espece qui n'y est pas
  126. *
  127.  
  128.  
  129. PGAZ . 'ESPNEULE' = 'N2 ';
  130.  
  131. *
  132.  
  133. PGAZ . 'H2 ' = 'TABLE' ;
  134. PGAZ . 'H2O ' = 'TABLE' ;
  135. PGAZ . 'N2 ' = 'TABLE' ;
  136. PGAZ . 'O2 ' = 'TABLE' ;
  137.  
  138. *
  139. **** R (J/Kg/K)
  140. *
  141.  
  142. PGAZ . 'H2 ' . 'R' = 4130.0 ;
  143. PGAZ . 'H2O ' . 'R' = 461.4 ;
  144. PGAZ . 'N2 ' . 'R' = 296.8 ;
  145. PGAZ . 'O2 ' . 'R' = 259.8 ;
  146.  
  147.  
  148. *
  149. **** Regressions polynomials
  150. *
  151.  
  152. PGAZ . 'H2 ' . 'A' = 'PROG' 9834.91866 0.54273926 0.000862203836
  153. -2.37281455E-07 1.84701105E-11 ;
  154. PGAZ . 'H2O ' . 'A' = 'PROG' 1155.95625 0.768331151 -5.73129958E-05
  155. -1.82753232E-08 2.44485692E-12 ;
  156. PGAZ . 'N2 ' . 'A' = 'PROG' 652.940766 0.288239099 -7.80442298E-05
  157. 8.78233606E-09 -3.05514485E-13 ;
  158. PGAZ . 'O2 ' . 'A' = 'PROG' 575.012333 0.350522002 -0.000128294865
  159. 2.33636971E-08 -1.53304905E-12;
  160.  
  161. *
  162. **** "Enthalpies" (ou energies) de formations a OK (J/Kg)
  163. *
  164.  
  165. PGAZ . 'H2 ' . 'H0K' = -4.195D6 ;
  166. PGAZ . 'H2O ' . 'H0K' = -1.395D7 ;
  167. PGAZ . 'N2 ' . 'H0K' = -2.953D5 ;
  168. PGAZ . 'O2 ' . 'H0K' = -2.634D5 ;
  169.  
  170. * Scalaires passives
  171.  
  172. PGAZ . 'SCALPASS' = 'MOTS' 'TAU ' 'EPS ' ;
  173.  
  174. *
  175. *** Fin PGAZ
  176. *
  177. *
  178. **** ETAT CENTRE
  179. *
  180.  
  181. rog = 1.0 ;
  182. ung = 0.0 ;
  183. utg = 0.0 ;
  184. retg = .4291145555695540D+04 ;
  185. yh2g = 0.01 ;
  186. yo2g = 0.2 ;
  187. yh2og = 0.3 ;
  188. taug = 1.0 ;
  189. epsg = 2.0 ;
  190.  
  191.  
  192. rouxg = ung '*' rog ;
  193. rouyg = utg '*' rog ;
  194.  
  195.  
  196. ROC1 = KCHT $DOM1 'SCAL' 'CENTRE' rog ;
  197. ROVC1 = KCHT $DOM1 'VECT' 'CENTRE' (rouxg rouyg );
  198. RETC1 = KCHT $DOM1 'SCAL' 'CENTRE' retg ;
  199. RYH2C1 = KCHT $DOM1 'SCAL' 'CENTRE' 'COMP' 'H2 ' (rog*yh2g) ;
  200. RYO2C1 = KCHT $DOM1 'SCAL' 'CENTRE' 'COMP' 'O2 ' (rog*yo2g) ;
  201. RYH2OC1 = KCHT $DOM1 'SCAL' 'CENTRE' 'COMP' 'H2O ' (rog*yh2og) ;
  202. RSCAC1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' ('MOTS' 'TAU' 'EPS')
  203. ((rog*taug) (rog*epsg)) ;
  204.  
  205.  
  206. *
  207. *** Le reste
  208. *
  209.  
  210. rod = 1.250D-1 ;
  211. und = 0.0D0 ;
  212. utd = 0.0D0 ;
  213. retd = .3598345082089522D+01 ;
  214. yh2d = 0.2 ;
  215. yo2d = 0.4 ;
  216. yh2od = 0.1 ;
  217. taud = 11.0 ;
  218. epsd = 21.01 ;
  219.  
  220. rouxd = und '*' rod ;
  221. rouyd = utd '*' rod ;
  222.  
  223. ROC2 = KCHT $DOMTOT 'SCAL' 'CENTRE' rod ;
  224. ROVC2 = KCHT $DOMTOT 'VECT' 'CENTRE' (rouxd rouyd );
  225. RETC2 = KCHT $DOMTOT 'SCAL' 'CENTRE' retd ;
  226. RYH2C2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'H2 ' (rod * yh2d) ;
  227. RYO2C2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'O2 ' (rod * yo2d) ;
  228. RYH2OC2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'H2O ' (rod * yh2od) ;
  229. RSCAC2 = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' ('MOTS' 'TAU' 'EPS')
  230. ((rod*taud) (rod*epsd)) ;
  231.  
  232. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' ROC2 ROC1 ;
  233. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' ROVC2 ROVC1 ;
  234. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETC2 RETC1 ;
  235. RSCAN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' ('MOTS' 'TAU' 'EPS')
  236. RSCAC2 RSCAC1 ;
  237.  
  238. RYH2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'H2 ' RYH2C2 RYH2C1 ;
  239. RYO2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'O2 ' RYO2C2 RYO2C1 ;
  240. RYH2O = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'H2O ' RYH2OC2 RYH2OC1 ;
  241.  
  242. RYN = RYH2 'ET' RYO2 'ET' RYH2O ;
  243.  
  244. ********************************************************
  245. *** CREATION DE 'MODE' POUR GRAPHIQUER LE CHAMELEM ***
  246. ********************************************************
  247.  
  248. MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
  249.  
  250.  
  251. *
  252. *** GRAPHIQUE DES C.I.
  253. *
  254.  
  255. 'SI' GRAPH ;
  256. * 'SI' FAUX ;
  257. *
  258. *** CREATION DE CHAMELEM
  259. *
  260.  
  261. CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN ;
  262. CHM_GN = 'KCHA' $DOMTOT 'CHAM' GN ;
  263. CHM_RETN = 'KCHA' $DOMTOT 'CHAM' RETN ;
  264. CHM_RYN = 'KCHA' $DOMTOT 'CHAM' RYN ;
  265. CHM_RSN = 'KCHA' $DOMTOT 'CHAM' RSCAN ;
  266. TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RN at t=' 0.0);
  267. TRAC CHM_GN MOD1 'TITR' ('CHAINE' 'GN at t=' 0.0);
  268. TRAC CHM_RETN MOD1 'TITR' ('CHAINE' 'ROET at t=' 0.0);
  269. TRAC CHM_RYN MOD1 'TITR' ('CHAINE' 'RYN at t=' 0.0);
  270. TRAC CHM_RSN MOD1 'TITR' ('CHAINE' 'RSCAN at t=' 0.0);
  271.  
  272.  
  273. 'FINSI' ;
  274.  
  275. RN0 = 'COPIER' RN ;
  276. GN0 = 'COPIER' GN ;
  277. RETN0 = 'COPIER' RETN ;
  278. RYN0 = 'COPIER' RYN ;
  279. RSCAN0 = 'COPIER' RSCAN ;
  280.  
  281. *
  282. **** Parameter for the time loop
  283. *
  284.  
  285. * Names of the residuum components
  286.  
  287. LISTINCO = 'MOTS' 'RN' 'RUX' 'RUY' 'RETN' 'H2' 'O2' 'H2O' 'TAU' 'EPS' ;
  288. NOMRN = 'MOTS' 'SCAL' ;
  289. NOMVN = 'MOTS' 'UX' 'UY' ;
  290. NOMY = 'MOTS' 'H2' 'O2' 'H2O' ;
  291. NOMT = 'MOTS' 'TAU' 'EPS' ;
  292. *
  293. **** Geometrical coefficient to compute gradients
  294. *
  295.  
  296. GRADR CACCA COEFSCAL = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'NOLIMITE'
  297. NOMRN RN ;
  298.  
  299. GRADV CACCA COEFVECT = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'NOLIMITE'
  300. NOMVN GN ;
  301.  
  302. TPS = 0.0 ;
  303.  
  304.  
  305. *
  306. **** Temporal loop
  307. *
  308.  
  309. 'MESSAGE' ;
  310. 'MESSAGE' ('CHAINE' 'Methode = ' METO) ;
  311. 'MESSAGE' ('CHAINE' 'SAFFAC = ' SAFFAC) ;
  312. 'MESSAGE' ;
  313.  
  314. VN PN TN YN SN GAMMAN = 'PRIM' 'PERFTEMP' PGAZ RN GN RETN RYN RSCAN ;
  315.  
  316. TNM1 = 'COPIER' TN ;
  317.  
  318. 'TEMPS' 'ZERO' ;
  319. 'REPETER' BL1 NITER ;
  320.  
  321. *
  322. **** Primitive variables
  323. *
  324.  
  325. VN PN TN YN SN GAMMAN = 'PRIM' 'PERFTEMP' PGAZ RN GN RETN RYN RSCAN
  326. TNM1 ;
  327.  
  328. TNM1 = 'COPIER' TN ;
  329.  
  330. 'SI' LOGSO ;
  331.  
  332. GRADR ALR = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  333. NOMRN RN 'GRADGEO' COEFSCAL ;
  334.  
  335. GRADP ALP = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  336. NOMRN PN 'GRADGEO' COEFSCAL ;
  337.  
  338. GRADV ALV = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'LIMITEUR'
  339. NOMVN VN 'GRADGEO' COEFVECT ;
  340.  
  341. GRADY ALY = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  342. NOMY YN 'GRADGEO' COEFSCAL ;
  343.  
  344. GRADS ALS = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  345. NOMT SN 'GRADGEO' COEFSCAL ;
  346.  
  347. ROF VITF PF YF SF = 'PRET' 'PERFTEMP' 2 1
  348. $DOMTOT PGAZ
  349. RN GRADR ALR
  350. VN GRADV ALV
  351. PN GRADP ALP
  352. YN GRADY ALY
  353. SN GRADS ALS
  354. ;
  355.  
  356. 'SINON' ;
  357.  
  358. ROF VITF PF YF SF = 'PRET' 'PERFTEMP' 1 1
  359. $DOMTOT PGAZ
  360. RN
  361. VN
  362. PN
  363. YN
  364. SN ;
  365.  
  366. 'FINSI' ;
  367.  
  368. RESIDU DELTAT = 'KONV' 'VF' 'PERFTEMP' 'RESI' METO
  369. $DOMTOT PGAZ LISTINCO ROF VITF PF YF SF ;
  370.  
  371. DT_CON = SAFFAC '*' DELTAT ;
  372. *
  373. **** The time step linked to tps
  374. *
  375.  
  376. DTTPS = (TFINAL '-' TPS) * (1. '+' ZERO) ;
  377.  
  378. *
  379. **** Total time step
  380. *
  381.  
  382. DTMIN = 'MINIMUM' ('PROG' DT_CON DTTPS) ;
  383.  
  384. *
  385. **** Increment of the variables (convection)
  386. *
  387.  
  388. RESIDU = DTMIN '*' RESIDU ;
  389.  
  390. DRN = 'EXCO' 'RN' RESIDU 'SCAL' ;
  391. DGN = 'EXCO' ('MOTS' 'RUX' 'RUY') RESIDU ('MOTS' 'UX' 'UY') ;
  392. DRETN = 'EXCO' 'RETN' RESIDU 'SCAL' ;
  393. DRYN = 'EXCO' ('MOTS' 'H2' 'O2' 'H2O') RESIDU
  394. ('MOTS' 'H2' 'O2' 'H2O') ;
  395. DRSN = 'EXCO' ('MOTS' 'TAU' 'EPS') RESIDU
  396. ('MOTS' 'TAU' 'EPS') ;
  397.  
  398. TPS = TPS '+' DTMIN ;
  399. RN = RN '+' DRN ;
  400. GN = GN '+' DGN ;
  401. RETN = RETN '+' DRETN ;
  402. RYN = RYN '+' DRYN ;
  403. RSCAN = RSCAN '+' DRSN ;
  404.  
  405. 'SI' (((&BL1 '/' 20) '*' 20) 'EGA' &BL1) ;
  406. 'MESSAGE' ('CHAINE' 'ITER =' &BL1 ' TPS =' TPS) ;
  407. 'FINSI' ;
  408.  
  409. 'SI' (TPS > TFINAL) ;
  410. 'QUITTER' BL1 ;
  411. 'FINSI' ;
  412.  
  413. 'FIN' BL1 ;
  414. 'TEMPS' ;
  415.  
  416. *
  417. **** Les variables primitives
  418. *
  419.  
  420. VN PN TN YN SN GAMN = 'PRIM' 'PERFTEMP' PGAZ
  421. RN GN RETN RYN RSCAN ;
  422.  
  423. CN = (GAMN * (PN / RN)) '**' 0.5 ;
  424.  
  425. *
  426. *** GRAPHIQUE DES SOLUTIONS
  427. *
  428.  
  429. 'SI' GRAPH ;
  430. *
  431. *** CREATION DE CHAMELEM
  432. *
  433. CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN ;
  434. CHM_GN = 'KCHA' $DOMTOT 'CHAM' GN ;
  435. CHM_RETN = 'KCHA' $DOMTOT 'CHAM' RETN ;
  436. CHM_RYN = 'KCHA' $DOMTOT 'CHAM' RYN ;
  437. TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RO at t=' TFIN);
  438. TRAC CHM_GN MOD1 'TITR' ('CHAINE' 'GN at t=' TFIN);
  439. TRAC CHM_RETN MOD1 'TITR' ('CHAINE' 'ROET at t=' TFIN);
  440. TRAC CHM_RYN MOD1 'TITR' ('CHAINE' 'RYN at t=' TFIN);
  441. 'FINSI' ;
  442.  
  443. * Tests: invariance par rotation
  444.  
  445. RN1 = COPIER RN ;
  446. GN1 = COPI GN ;
  447. RETN1 = COPIER RETN ;
  448. RYN1 = COPIER RYN ;
  449. RSCAN1 = 'COPIER' RSCAN ;
  450.  
  451. MAIL0 = EXTR RN 'MAILLAGE' ;
  452.  
  453. REPETER BL1 3 ;
  454.  
  455. RN1 = RN1 TOUR 90 PCEN ;
  456. GN1 = GN1 TOUR 90 PCEN ;
  457. RETN1 = RETN1 TOUR 90 PCEN ;
  458. RYN1 = RYN1 TOUR 90 PCEN ;
  459. RSCAN1 = RSCAN1 TOUR 90 PCEN ;
  460.  
  461. MAIL1 = EXTR RN1 'MAILLAGE' ;
  462. ELIM 0.001 MAIL0 MAIL1 ;
  463. ERR1 = MAXI ((RN1 - RN) / RN) 'ABS' ;
  464. SI (ERR1 > 1.0D-10);
  465. ERRE 5;
  466. FINSI ;
  467.  
  468. MAIL1 = EXTR GN1 'MAILLAGE' ;
  469. ELIM 0.001 MAIL0 MAIL1 ;
  470. ERR1 = MAXI ((GN1 - GN) / (RN * CN)) 'ABS' ;
  471. SI (ERR1 > 1.0D-10);
  472. ERRE 5;
  473. FINSI ;
  474.  
  475. MAIL1 = EXTR RETN1 'MAILLAGE' ;
  476. ELIM 0.001 MAIL0 MAIL1 ;
  477. ERR1 = MAXI ((RETN1 - RETN) / RETN) 'ABS' ;
  478. SI (ERR1 > 1.0D-10);
  479. ERRE 5;
  480. FINSI ;
  481.  
  482. MAIL1 = EXTR RYN1 'MAILLAGE' ;
  483. ELIM 0.001 MAIL0 MAIL1 ;
  484. ERR1 = MAXI ((RYN1 - RYN) / RN) 'ABS' ;
  485. SI (ERR1 > 1.0D-10);
  486. ERRE 5;
  487. FINSI ;
  488.  
  489. MAIL1 = EXTR RSCAN1 'MAILLAGE' ;
  490. ELIM 0.001 MAIL0 MAIL1 ;
  491. ERR1 = MAXI ((RSCAN1 - RSCAN) / RN) 'ABS' ;
  492. SI (ERR1 > 1.0D-10);
  493. ERRE 5;
  494. FINSI ;
  495.  
  496. FIN BL1 ;
  497.  
  498. * Symetrie
  499.  
  500. MAIL1 RN1 = MAIL0 RN SYME 'DROI' (0 0.5) (1.0 0.5) ;
  501. ELIM 0.001 MAIL0 MAIL1 ;
  502. ERR1 = MAXI ((RN1 - RN) / RN) 'ABS' ;
  503. SI (ERR1 > 1.0D-10);
  504. ERRE 5;
  505. FINSI ;
  506.  
  507. FIN ;
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  

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