Télécharger stationary_discontinuity.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : stationary_discontinuity.dgibi
  2. ***********************************************************************
  3. ***********************************************************************
  4. ***********************************************************************
  5. ***** CALCUL DU TUBE A CHOC; CAS MULTIESPECE *****
  6. ***** GAZ multi-especes "THERMALLY PERFECT" *****
  7. ***** *****
  8. ***** FORMULATION VF COMPRESSIBLE EXPLICITE *****
  9. ***** Colella-Glaz, discontinuité de contact stationnaire *****
  10. ***** *****
  11. ***** A. BECCANTINI DRN/DMT/SEMT/LTMF FEVRIER 2000 *****
  12. ***********************************************************************
  13. ***********************************************************************
  14. ***********************************************************************
  15.  
  16. 'MESSAGE' 'A mettre a jours' ;
  17. 'FIN' ;
  18.  
  19. 'OPTION' 'DIME' 2 ;
  20. 'OPTION' 'ELEM' 'QUA4' ;
  21. 'OPTION' 'ISOV' 'SULI' ;
  22. 'OPTION' 'ECHO' 0 ;
  23. 'OPTION' 'TRAC' 'X';
  24.  
  25. GRAPH = FAUX ;
  26. * GRAPH = VRAI ;
  27.  
  28.  
  29. *
  30. *** Methodes possibles :
  31. *
  32. * 'VLH'
  33. * 'CG'
  34.  
  35. METO = 'CG' ;
  36.  
  37. *******************************************************
  38. ***** PROCEDURE POUR TESTER CONVERGENCE *****
  39. *******************************************************
  40.  
  41. 'DEBPROC' CALCUL ;
  42. 'ARGUMENT' RVX*'TABLE' ;
  43.  
  44. RV = RVX . 'EQEX' ;
  45.  
  46. *KDOMA = RV . 'DOMAINE' ;
  47. KDOMA = RV . 'MODTOT' ;
  48.  
  49. RNi = RV . 'INCO' . 'RNI' ;
  50. RN0 = RV . 'INCO' . 'RN0' ;
  51.  
  52. *
  53. *** RN0 = solution à t = tn_M1;
  54. *
  55.  
  56. DD = RV . 'PASDETPS' . 'NUPASDT' ;
  57. NINTE = 20 ;
  58. NN = DD/NINTE ;
  59. LO = (DD-(NINTE*NN)) EGA 0 ;
  60.  
  61. 'SI' ( LO ) ;
  62.  
  63.  
  64. ELI = 'MAXIMUM' (RNi '-' RN0) 'ABS' ;
  65.  
  66. ELI = ('LOG' (ELI + 1.0E-20))/('LOG' 10.) ;
  67. 'MESSAGE' ('CHAINE'
  68. 'ITER ' DD ' ERREUR LINF ' ELI );
  69. IT = 'PROG' DD ;
  70. ER = 'PROG' ELI ;
  71. RV . 'INCO' . 'IT' = (RV . 'INCO' . 'IT') 'ET' IT ;
  72. RV . 'INCO' . 'ER' = (RV . 'INCO' . 'ER') 'ET' ER ;
  73. 'FINSI' ;
  74.  
  75. RV . 'INCO' . 'RN0' = 'COPIER' RNi;
  76.  
  77. 'FINPROC' ;
  78.  
  79. *****************************************************
  80. *****************************************************
  81. ** PROCEDURE EXEX POUR FORMULATION VF COMPRESSIBLE **
  82. ** CAS MULTIESPECES "THERMALLY PERFECT" **
  83. *****************************************************
  84. *****************************************************
  85.  
  86. 'DEBPROC' EXEX ;
  87. 'ARGUMENT' RV*TABLE ;
  88.  
  89. *******************************************
  90. **** Recherche de RV . *KONV . IDEUL ****
  91. *******************************************
  92.  
  93. *
  94. **** Nom de la table RV . *'KONV' -> NOMT
  95. *
  96.  
  97. NBOP = 'DIME' (RV . 'LISTOPER' ) ;
  98.  
  99. 'REPETER' BL1 NBOP;
  100. MCEL = 'EXTRAIRE' &BL1 RV . 'LISTOPER';
  101. 'SI' ( 'EGA' MCEL 'KONV ');
  102. NOMT = 'MOT' ('TEXTE' ('CHAINE' &BL1 MCEL));
  103. 'QUITTER' BL1;
  104. 'FINSI' ;
  105. 'FIN' BL1;
  106.  
  107. IEUL = RV . NOMT . 'KOPT' . 'IDEUL';
  108. 'SI' ('NON' (IEUL 'EGA' 3));
  109. 'MESSAGE' 'EULERMST ???';
  110. 'ERREUR' 21;
  111. 'FINSI' ;
  112.  
  113. * Mono-espece ou multi-especes
  114.  
  115. 'SI' ('EXISTE' (RV . NOMT) 'ARG5') ;
  116. LOGMUL = VRAI ;
  117. 'SINON' ;
  118. LOGMUL = FAUX ;
  119. 'FINSI' ;
  120.  
  121. *
  122. **** CL
  123. *
  124.  
  125.  
  126. LOGLIM = RV . 'INCO' . 'CLIM' ;
  127.  
  128.  
  129. ******************************************
  130. **** Ordre en espace, ordre en temps ****
  131. ******************************************
  132.  
  133. ORD_ESP = RV . 'ORDREESP' ;
  134. ORD_TPS = RV . 'ORDRETPS' ;
  135.  
  136. 'MESSAGE' '--------------------------';
  137. 'MESSAGE' 'Ordre en Espace :' ord_esp;
  138. 'MESSAGE' 'Ordre en Temps :' ord_tps;
  139. 'MESSAGE' '--------------------------';
  140.  
  141. 'SI' ((ORD_ESP 'EGA' 1) 'ET' (ORD_TPS 'EGA' 2));
  142. 'MESSAGE' ;
  143. 'MESSAGE' (CHAINE 'Ordre en Espace doit etre 2');
  144. 'MESSAGE' (CHAINE 'On impose ça.');
  145. 'MESSAGE' ;
  146. RV . 'ORDREESP' = 2 ;
  147. 'MESSAGE' ;
  148. 'MESSAGE' '--------------------------';
  149. 'MESSAGE' 'Ordre en Espace :' ord_esp;
  150. 'MESSAGE' 'Ordre en Temps :' ord_tps;
  151. 'MESSAGE' '--------------------------';
  152. 'FINSI' ;
  153.  
  154.  
  155. ******************************
  156. **** La table 'PASDETPS' ****
  157. ******************************
  158.  
  159. TPSI = RV . 'TPSI' ;
  160. TFIN = RV . 'TFINAL';
  161. RV . 'PASDETPS' . 'TPS' = TPSI;
  162.  
  163. *
  164. **** DELTAT-1 est un argument de PRET (prediction)
  165. * Donc on doit l'initialiser.
  166. *
  167.  
  168. RV . 'PASDETPS' . 'DELTAT-1' = 0.0D0;
  169. CFL = rv.'ALFA' ;
  170.  
  171.  
  172. *********************
  173. **** Les TABLES *****
  174. *********************
  175.  
  176. *
  177. **** RV . 'INCO'
  178. * RV . 'DOMAINE'
  179. * RV . 'KIZD'
  180. * RV . 'KIZG'
  181.  
  182.  
  183. *
  184. **** RV . 'INCO' -> KINCO
  185. *
  186.  
  187. KINCO = (RV . 'INCO') ;
  188.  
  189.  
  190. *
  191. **** RV . 'DOMAINE' -> KDOMA
  192. *
  193.  
  194. *KDOMA = (RV . 'DOMAINE') ;
  195. KDOMA = (RV . 'MODTOT') ;
  196. KDOMA2 = (RV . 'DOMAINE') ;
  197.  
  198. *
  199. **** RV . 'KIZD' contient les volumes des ELTs
  200. *
  201.  
  202. 'SI' ('NON' ('EXISTE' RV 'KIZD')) ;
  203. 'KDIA' RV ;
  204. 'FINSI' ;
  205.  
  206. *
  207. ***** RV . 'KIZG' contient les flux aux interfaces.
  208. *
  209.  
  210. 'SI' ('NON' ('EXISTE' RV 'KIZG')) ;
  211. RV . 'KIZG' = 'TABLE' 'KIZG' ;
  212. 'FINSI' ;
  213.  
  214. 'SI' LOGMUL ;
  215.  
  216. *********************************************************
  217. **** Multi-especes, boucle Sur les Pas de Temps ****
  218. *********************************************************
  219. *
  220. **** Evaluation de coeff pour le calcule des pentes
  221. *
  222.  
  223. KINCO . 'V' KINCO . 'P' KINCO . 'T' KINCO . 'Y'
  224. KINCO . 'GAMMA' = 'PRIM' 'PERFTEMP' (KINCO . 'IPGAZ')
  225. (KINCO . 'RNI') (KINCO . 'GNI') (KINCO . 'ENI')
  226. (KINCO. 'RYNI');
  227.  
  228. GRADR ALR COEFR = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  229. (KINCO . 'RNI');
  230.  
  231. GRADP ALP COEFP = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  232. (KINCO . 'P');
  233.  
  234. GRADV ALV COEFV = 'PENT' KDOMA 'CENTRE' 'EULEVECT' 'LIMITEUR'
  235. (KINCO . 'V');
  236.  
  237. GRADY ALY COEFY = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  238. (KINCO . 'Y');
  239.  
  240.  
  241.  
  242. I = 0 ;
  243.  
  244. 'REPETER' BLOC1 (RV . 'ITMA') ;
  245.  
  246. I = I + 1 ;
  247.  
  248. *
  249. ***** Les variables primitives
  250. *
  251. KINCO . 'V' KINCO . 'P' KINCO . 'T' KINCO . 'Y'
  252. KINCO . 'GAMMA' = 'PRIM' 'PERFTEMP' (KINCO . 'IPGAZ')
  253. (KINCO . 'RNI') (KINCO . 'GNI') (KINCO . 'ENI')
  254. (KINCO. 'RYNI');
  255.  
  256. 'SI' (ORD_ESP 'EGA' 1) ;
  257.  
  258. ROF VITF PF YF = 'PRET' 'PERFTEMP'
  259. ORD_ESP ORD_TPS KDOMA (KINCO . 'IPGAZ') (KINCO . 'RNI')
  260. (KINCO . 'V') (KINCO . 'P') (KINCO . 'Y') ;
  261.  
  262. 'SINON';
  263.  
  264. *
  265. ***** Ordre 2 en espace => calcul des pentes
  266. *
  267.  
  268. GRADR ALR = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  269. (KINCO . 'RNI') 'GRADGEO' COEFR ;
  270.  
  271. GRADP ALP = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  272. (KINCO . 'P') 'GRADGEO' COEFP ;
  273.  
  274. GRADV ALV = 'PENT' KDOMA 'CENTRE' 'EULEVECT' 'LIMITEUR'
  275. (KINCO . 'V') 'GRADGEO' COEFV ;
  276.  
  277. GRADY ALY = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  278. (KINCO . 'Y') 'GRADGEO' COEFY ;
  279.  
  280.  
  281. 'SI' (ORD_TPS 'EGA' 1);
  282.  
  283. ROF VITF PF YF = 'PRET' 'PERFTEMP' ORD_ESP ORD_TPS
  284. KDOMA (KINCO . 'IPGAZ')
  285. (KINCO . 'RNI') GRADR ALR
  286. (KINCO . 'V') GRADV ALV
  287. (KINCO . 'P') GRADP ALP
  288. (KINCO . 'Y') GRADY ALY ;
  289.  
  290.  
  291. 'SINON' ;
  292. *
  293. ********* Ordre 2 en temps
  294. *
  295. ROF VITF PF YF = 'PRET' 'PERFTEMP' ORD_ESP ORD_TPS
  296. KDOMA (KINCO . 'IPGAZ')
  297. (KINCO . 'RNI') GRADR ALR
  298. (KINCO . 'V') GRADV ALV
  299. (KINCO . 'P') GRADP ALP
  300. (KINCO . 'Y') GRADY ALY
  301. (KINCO . 'GAMMA')
  302. ((RV . 'PASDETPS' . 'DELTAT-1')/2.0);
  303. 'FINSI' ;
  304.  
  305. 'FINSI' ;
  306.  
  307. *
  308. *********** Creation de MCHAML de type 'FACEL' pour les
  309. * calcul de flux aux interfaces
  310.  
  311.  
  312.  
  313. KINCO . 'RNF' = ROF ;
  314. KINCO . 'VITNF' = VITF ;
  315. KINCO . 'PNF' = PF ;
  316. KINCO . 'YF' = YF ;
  317.  
  318.  
  319. *
  320. ********* Boucle sur les operateurs
  321. *
  322.  
  323. 'REPETER' BLOC2 NBOP ;
  324. NOMPER = 'EXTRAIRE' &BLOC2 (RV . 'LISTOPER');
  325. NOTABLE = 'MOT' ('TEXTE' ('CHAINE' &BLOC2 NOMPER) ) ;
  326. ('TEXTE' NOMPER) (RV . NOTABLE) ;
  327. 'FIN' BLOC2 ;
  328.  
  329. *
  330. ********* Mise a jour de la table RV . 'PASDETPS'
  331. *
  332.  
  333. 'SI' ('EXISTE' RV 'DTI');
  334. DTI = 'MINIMUM'
  335. ('PROG' ((RV . 'DTI') '/' CFL)
  336. (RV . 'PASDETPS' . 'DTCONV') );
  337. 'SINON';
  338. DTI = (RV . 'PASDETPS' . 'DTCONV');
  339. 'FINSI';
  340.  
  341. RV . 'PASDETPS' . 'DELTAT' = DTI ;
  342.  
  343. TMPS = RV . 'PASDETPS' . 'TPS';
  344. DTI0 = TFIN '-' TMPS;
  345. DTI0 = DTI0 '/' CFL;
  346.  
  347. 'SI' (DTI0 '<EG' DTI);
  348. DTI = DTI0;
  349. RV . 'PASDETPS' . 'DELTAT' = DTI ;
  350. LOGQUIT = VRAI;
  351. 'SINON' ;
  352. LOGQUIT = FAUX ;
  353. 'FINSI' ;
  354.  
  355.  
  356. *
  357. ******** On avance au pas de temps suivant
  358. *
  359. * N.B. Tn+1 = Tn + (CFL * RV . 'PASDETPS' . 'DELTAT');
  360. *
  361.  
  362. 'AVCT' RV CFL 'IMPR' (RV.'FIDT') ;
  363.  
  364. *
  365. ******** On detrui les choses qui ne servent plus
  366. *
  367. *
  368. * Les variables primitives
  369. *
  370. 'DETR' ( KINCO . 'V');
  371. 'DETR' ( KINCO . 'P');
  372. 'DETR' ( KINCO . 'T');
  373. 'DETR' ( KINCO . 'Y');
  374. 'DETR' ( KINCO . 'GAMMA');
  375. 'OUBL' KINCO 'V';
  376. 'OUBL' KINCO 'P';
  377. 'OUBL' KINCO 'T';
  378. 'OUBL' KINCO 'Y';
  379. 'OUBL' KINCO 'GAMMA';
  380. *
  381. * Les MCHAML faces
  382. *
  383. 'DETR' ROF ;
  384. 'DETR' VITF ;
  385. 'DETR' PF ;
  386. 'DETR' YF;
  387. 'OUBL' KINCO 'RNF';
  388. 'OUBL' KINCO 'VITNF';
  389. 'OUBL' KINCO 'PNF';
  390. 'OUBL' KINCO 'YF';
  391.  
  392. *
  393. * Les pentes 'ET' les limiteurs
  394. *
  395. 'SI' (ORD_ESP 'EGA' 2);
  396. 'DETR' GRADR;
  397. 'DETR' GRADP;
  398. 'DETR' GRADV;
  399. 'DETR' GRADY;
  400. 'DETR' ALR;
  401. 'DETR' ALP;
  402. 'DETR' ALV;
  403. 'DETR' ALY;
  404. 'FINSI' ;
  405.  
  406.  
  407. *
  408. ******** On impose le CL
  409. *
  410. *
  411. 'SI' LOGLIM;
  412. PROLIM RV ;
  413. 'FINSI' ;
  414.  
  415.  
  416. 'SI' LOGQUIT;
  417. 'QUITTER' BLOC1;
  418. 'FINSI';
  419.  
  420.  
  421. 'MENAGE' ;
  422.  
  423. 'FIN' BLOC1 ;
  424.  
  425. ********************************************
  426. **** FIN de Boucle Sur les Pas de Temps ***
  427. ********************************************
  428.  
  429. 'SINON' ;
  430.  
  431.  
  432. *********************************************************
  433. **** Mono-espece, boucle sur les pas de temps ****
  434. *********************************************************
  435.  
  436.  
  437. KINCO . 'V' KINCO . 'P' KINCO . 'T'
  438. KINCO . 'GAMMA' = 'PRIM' 'PERFTEMP' (KINCO . 'IPGAZ')
  439. (KINCO . 'RNI') (KINCO . 'GNI') (KINCO . 'ENI') ;
  440.  
  441.  
  442. GRADR ALR COEFR = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  443. (KINCO . 'RNI');
  444.  
  445. GRADP ALP COEFP = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  446. (KINCO . 'P');
  447.  
  448. GRADV ALV COEFV = 'PENT' KDOMA 'CENTRE' 'EULEVECT' 'LIMITEUR'
  449. (KINCO . 'V');
  450.  
  451.  
  452. I = 0 ;
  453.  
  454. 'REPETER' BLOC1 (RV . 'ITMA') ;
  455.  
  456. I = I + 1 ;
  457.  
  458. *
  459. ***** Les variables primitives
  460. *
  461. KINCO . 'V' KINCO . 'P' KINCO . 'T'
  462. KINCO . 'GAMMA' = 'PRIM' 'PERFTEMP' (KINCO . 'IPGAZ')
  463. (KINCO . 'RNI') (KINCO . 'GNI') (KINCO . 'ENI') ;
  464.  
  465. 'SI' (ORD_ESP 'EGA' 1) ;
  466.  
  467. ROF VITF PF = 'PRET' 'PERFTEMP'
  468. ORD_ESP ORD_TPS KDOMA (KINCO . 'IPGAZ') (KINCO . 'RNI')
  469. (KINCO . 'V') (KINCO . 'P') ;
  470.  
  471. 'SINON';
  472.  
  473. *
  474. ***** Ordre 2 en espace => calcul des pentes
  475. *
  476.  
  477.  
  478. GRADR ALR = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  479. (KINCO . 'RNI') 'GRADGEO' COEFR ;
  480.  
  481. GRADP ALP = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'LIMITEUR'
  482. (KINCO . 'P') 'GRADGEO' COEFP ;
  483.  
  484. GRADV ALV = 'PENT' KDOMA 'CENTRE' 'EULEVECT' 'LIMITEUR'
  485. (KINCO . 'V') 'GRADGEO' COEFV ;
  486.  
  487.  
  488. 'SI' (ORD_TPS 'EGA' 1);
  489.  
  490. ROF VITF PF = 'PRET' 'PERFTEMP' ORD_ESP ORD_TPS
  491. KDOMA (KINCO . 'IPGAZ')
  492. (KINCO . 'RNI') GRADR ALR
  493. (KINCO . 'V') GRADV ALV
  494. (KINCO . 'P') GRADP ALP ;
  495.  
  496. 'SINON' ;
  497. *
  498. ********* Ordre 2 en temps
  499. *
  500. ROF VITF PF = 'PRET' 'PERFTEMP' ORD_ESP ORD_TPS
  501. KDOMA (KINCO . 'IPGAZ')
  502. (KINCO . 'RNI') GRADR ALR
  503. (KINCO . 'V') GRADV ALV
  504. (KINCO . 'P') GRADP ALP
  505. (KINCO . 'GAMMA')
  506. ((RV . 'PASDETPS' . 'DELTAT-1')/2.0);
  507. 'FINSI' ;
  508.  
  509. 'FINSI' ;
  510.  
  511. *
  512. *********** Creation de MCHAML de type 'FACEL' pour les
  513. * calcul de flux aux interfaces
  514.  
  515.  
  516.  
  517. KINCO . 'RNF' = ROF ;
  518. KINCO . 'VITNF' = VITF ;
  519. KINCO . 'PNF' = PF ;
  520.  
  521. *
  522. ********* Boucle sur les operateurs
  523. *
  524.  
  525. 'REPETER' BLOC2 NBOP ;
  526. NOMPER = 'EXTRAIRE' &BLOC2 (RV . 'LISTOPER');
  527. NOTABLE = 'MOT' ('TEXTE' ('CHAINE' &BLOC2 NOMPER) ) ;
  528. ('TEXTE' NOMPER) (RV . NOTABLE) ;
  529. 'FIN' BLOC2 ;
  530.  
  531. *
  532. ********* Mise a jour de la table RV . 'PASDETPS'
  533. *
  534.  
  535. 'SI' ('EXISTE' RV 'DTI');
  536. DTI = 'MINIMUM'
  537. ('PROG' ((RV . 'DTI') '/' CFL)
  538. (RV . 'PASDETPS' . 'DTCONV') );
  539. 'SINON';
  540. DTI = (RV . 'PASDETPS' . 'DTCONV');
  541. 'FINSI';
  542.  
  543. RV . 'PASDETPS' . 'DELTAT' = DTI ;
  544.  
  545. TMPS = RV . 'PASDETPS' . 'TPS';
  546. DTI0 = TFIN '-' TMPS;
  547. DTI0 = DTI0 '/' CFL;
  548.  
  549. 'SI' (DTI0 '<EG' DTI);
  550. DTI = DTI0;
  551. RV . 'PASDETPS' . 'DELTAT' = DTI ;
  552. LOGQUIT = VRAI;
  553. 'SINON' ;
  554. LOGQUIT = FAUX ;
  555. 'FINSI' ;
  556.  
  557.  
  558. *
  559. ******** On avance au pas de temps suivant
  560. *
  561. * N.B. Tn+1 = Tn + (CFL * RV . 'PASDETPS' . 'DELTAT');
  562. *
  563.  
  564. 'AVCT' RV CFL 'IMPR' (RV.'FIDT') ;
  565.  
  566. *
  567. ******** On detrui les choses qui ne servent plus
  568. *
  569. *
  570. * Les variables primitives
  571. *
  572. 'DETR' ( KINCO . 'V');
  573. 'DETR' ( KINCO . 'P');
  574. 'DETR' ( KINCO . 'T');
  575. 'DETR' ( KINCO . 'GAMMA');
  576. 'OUBL' KINCO 'V';
  577. 'OUBL' KINCO 'P';
  578. 'OUBL' KINCO 'T';
  579. 'OUBL' KINCO 'GAMMA';
  580. *
  581. * Les MCHAML faces
  582. *
  583. 'DETR' ROF ;
  584. 'DETR' VITF ;
  585. 'DETR' PF ;
  586. 'OUBL' KINCO 'RNF';
  587. 'OUBL' KINCO 'VITNF';
  588. 'OUBL' KINCO 'PNF';
  589. *
  590. * Les pentes 'ET' les limiteurs
  591. *
  592. 'SI' (ORD_ESP 'EGA' 2);
  593. 'DETR' GRADR;
  594. 'DETR' GRADP;
  595. 'DETR' GRADV;
  596. 'DETR' ALR;
  597. 'DETR' ALP;
  598. 'DETR' ALV;
  599. 'FINSI' ;
  600.  
  601.  
  602. *
  603. ******** On impose le CL
  604. *
  605. *
  606. 'SI' LOGLIM;
  607. PROLIM RV ;
  608. 'FINSI' ;
  609.  
  610.  
  611. 'SI' LOGQUIT;
  612. 'QUITTER' BLOC1;
  613. 'FINSI';
  614.  
  615.  
  616. 'MENAGE' ;
  617.  
  618. 'FIN' BLOC1 ;
  619.  
  620. ********************************************
  621. **** FIN de Boucle Sur les Pas de Temps ***
  622. ********************************************
  623.  
  624. 'FINSI' ;
  625.  
  626. 'FINPROC' ;
  627.  
  628. *****************************************************
  629. *****************************************************
  630. ** FIN PROCEDURE EXEX **
  631. *****************************************************
  632. *****************************************************
  633.  
  634.  
  635. *****************************************************
  636. *****************************************************
  637. ***** PROCEDURE PROLIM *****
  638. *****************************************************
  639. *****************************************************
  640. *
  641. *
  642. **** Cas Euler
  643. *
  644.  
  645.  
  646. 'DEBPROC' PROLIM ;
  647. 'ARGUMENT' RV*TABLE ;
  648.  
  649. *
  650. **** RV . 'DOMAINE' -> KDOMA
  651. *
  652.  
  653. *KDOMA = RV . 'DOMAINE' ;
  654. KDOMA = RV . 'MODTOT' ;
  655. KDOMA2 = RV . 'DOMAINE' ;
  656. KINCO = RV . 'INCO' ;
  657.  
  658. KINCO . 'RNI' = 'KCHT' KDOMA 'SCAL' 'CENTRE'
  659. (KINCO . 'RNI') (KINCO . 'RNLIM');
  660.  
  661. KINCO . 'GNI' = 'KCHT' KDOMA 'VECT' 'CENTRE'
  662. (KINCO . 'GNI') (KINCO . 'GNLIM');
  663.  
  664. KINCO . 'ENI' = 'KCHT' KDOMA 'SCAL' 'CENTRE'
  665. (KINCO . 'ENI') (KINCO . 'ENLIM');
  666.  
  667. KINCO . 'RYNI' = 'KCHT' KDOMA 'SCAL' 'CENTRE'
  668. 'COMP' 'N2 ' (KINCO . 'RYNI')
  669. (KINCO . 'RYNLIM') ;
  670.  
  671. 'FINPROC' ;
  672.  
  673.  
  674. *****************************************************
  675. *****************************************************
  676. ***** FIN PROCEDURE PROLIM *****
  677. *****************************************************
  678. *****************************************************
  679.  
  680.  
  681. ************
  682. * MAILLAGE *
  683. ************
  684.  
  685. RAF = 2 ;
  686. NY = 4 ;
  687. NX = 3 '*' RAF ;
  688.  
  689. L = 1.0D0 ;
  690. DX = L '/' NX '/' 2.0D0;
  691. H = NY '*' DX ;
  692.  
  693. xD = 0.5D0 '*' L ;
  694. xG = -1.0D0 '*' xD ;
  695. yH = 0.5D0 '*' H ;
  696. yB = -1.0D0 '*' yH ;
  697.  
  698. A1 = xG yB ;
  699. A2 = 0.0D0 yB ;
  700. A3 = xD yB ;
  701. A4 = xD yH ;
  702. A5 = 0.0D0 yH ;
  703. A6 = xG yH ;
  704. VECTG = XG 0.0D0 ;
  705. VECTD = XD 0.0D0 ;
  706.  
  707. xBG = xG '-' DX;
  708. XBD = xD '+' DX;
  709.  
  710. B1 = xBG yB;
  711. B2 = xBG yH;
  712. B3 = xBD yB;
  713. B4 = xBD yH;
  714.  
  715. BAS1 = A1 'DROI' NX A2 ;
  716. BAS2 = A2 'DROI' NX A3 ;
  717. HAU2 = A4 'DROI' NX A5 ;
  718. HAU1 = A5 'DROI' NX A6 ;
  719. LATG = B1 'DROI' NY B2 ;
  720. LAT1 = A1 'DROI' NY A6 ;
  721. LAT12 = A2 'DROI' NY A5 ;
  722. LAT2 = A3 'DROI' NY A4 ;
  723. LATD = B3 'DROI' NY B4 ;
  724.  
  725.  
  726. DOM1 = LAT12 'TRANSLATION' NX VECTG ;
  727.  
  728. DOM2 = LAT12 'TRANSLATION' NX VECTD ;
  729.  
  730. VECTFG = (-1.0D0 '*' DX) 0.0D0;
  731. VECTFD = DX 0.0D0;
  732.  
  733. FRONTG = LAT1 'TRANSLATION' 1 VECTFG;
  734. FRONTG = FRONTG 'COUL' ROUG ;
  735.  
  736. FRONTD = LAT2 'TRANSLATION' 1 VECTFD;
  737. FRONTD = FRONTD 'COUL' VERT ;
  738.  
  739. *
  740. *** Rotation
  741. *
  742.  
  743. ANGLE = 30.0D0;
  744. ORIG = 0.0D0 0.0D0;
  745.  
  746. 'MESSAGE';
  747. 'MESSAGE' (CHAIN 'ANGLE = ' ANGLE);
  748. 'MESSAGE';
  749.  
  750. DOM1 = DOM1 'TOURNER' ANGLE ORIG;
  751. DOM2 = DOM2 'TOURNER' ANGLE ORIG;
  752. FRONTG = FRONTG 'TOURNER' ANGLE ORIG;
  753. FRONTD = FRONTD 'TOURNER' ANGLE ORIG;
  754.  
  755. DOMINT = DOM1 'ET' DOM2 ;
  756. 'ELIMINATION' DOMINT 1D-6;
  757.  
  758. FRONT = FRONTG 'ET' FRONTD ;
  759. 'ELIMINATION' FRONT 1D-6;
  760.  
  761. DOMTOT = DOMINT 'ET' FRONT;
  762. 'ELIMINATION' DOMTOT 1D-6;
  763.  
  764. **********************
  765. *** OBJETS MODELES ***
  766. **********************
  767. MDOMTOT = 'CHANGER' DOMTOT 'QUAF' ;
  768. MDOMINT = 'CHANGER' DOMINT 'QUAF' ;
  769. MDOM1 = 'CHANGER' DOM1 'QUAF' ;
  770. MDOM2 = 'CHANGER' DOM2 'QUAF' ;
  771. MFRONTG = 'CHANGER' FRONTG 'QUAF' ;
  772. MFRONTD = 'CHANGER' FRONTD 'QUAF' ;
  773. MFRONT = 'CHANGER' FRONT 'QUAF' ;
  774. 'ELIM' (MDOMTOT 'ET' MDOMINT 'ET' MDOM1 'ET' MDOM2 'ET'
  775. MFRONTG 'ET' MFRONTD 'ET' MFRONT) 1.E-5;
  776. MDNS = 'EULER' ;
  777. $DOMTOT = 'MODE' MDOMTOT MDNS ;
  778. $DOMINT = 'MODE' MDOMINT MDNS ;
  779. $DOM1 = 'MODE' MDOM1 MDNS ;
  780. $DOM2 = 'MODE' MDOM2 MDNS ;
  781. $FRONTG = 'MODE' MFRONTG MDNS ;
  782. $FRONTD = 'MODE' MFRONTD MDNS ;
  783. $FRONT = 'MODE' MFRONT MDNS ;
  784.  
  785. *
  786. ******* Creation de la ligne Utilisée pour le Post-Traitement
  787. * reliant les points centres
  788. *
  789.  
  790. XINIT = XG '+' (0.5D0 '*' DX) ;
  791. YINIT = YB '+' (0.5D0 '*' DX) ;
  792. XFIN = XD '-' (0.5D0 '*' DX) ;
  793. YFIN = YINIT ;
  794. PINI = XINIT YINIT;
  795. PFIN = XFIN YFIN ;
  796. IAUX = (2 '*' NX) '-' 1 ;
  797. COURB = PINI 'DROIT' IAUX PFIN;
  798. COURB = COURB 'TOURNER' ANGLE ORIG;
  799. COURB = COURB 'COULEUR' 'VERT';
  800. 'ELIMINATION' 0.001 Courb ('DOMA' $DOMTOT 'CENTRE') ;
  801.  
  802. 'SI' GRAPH ;
  803. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' COURB)
  804. 'TITRE' ('CHAINE' 'Maillage ');
  805. 'FINSI' ;
  806.  
  807.  
  808. ***********************
  809. **** LA TABLE PGAZ ****
  810. ***********************
  811.  
  812. PGAZ = 'TABLE' ;
  813.  
  814. *
  815. **** Ordre des polynoms cv_i
  816. *
  817.  
  818. PGAZ . 'NORD' = 4 ;
  819.  
  820. *
  821. **** Especes qui sont dans les equations d'Euler
  822. *
  823.  
  824. PGAZ . 'ESPEULE' = 'MOTS' 'N2 ' ;
  825.  
  826. *
  827. **** Espece qui n'y est pas
  828. *
  829.  
  830.  
  831. PGAZ . 'ESPNEULE' = 'O2 ';
  832.  
  833. *
  834.  
  835. PGAZ . 'N2 ' = 'TABLE' ;
  836. PGAZ . 'O2 ' = 'TABLE' ;
  837.  
  838. *
  839. **** R (J/Kg/K)
  840. *
  841.  
  842. PGAZ . 'N2 ' . 'R' = 296.8 ;
  843. PGAZ . 'O2 ' . 'R' = 259.8 ;
  844.  
  845.  
  846. *
  847. **** Regressions polynomials
  848. *
  849.  
  850.  
  851. PGAZ . 'O2 ' . 'A' = 'PROG' 575.012333 0.350522002 -0.000128294865
  852. 2.33636971E-08 -1.53304905E-12;
  853.  
  854. PGAZ . 'N2 ' . 'A' = 'PROG' 652.940766 0.288239099 -7.80442298E-05
  855. 8.78233606E-09 -3.05514485E-13 ;
  856.  
  857.  
  858. *
  859. **** "Enthalpies" (ou energies) de formations a OK (J/Kg)
  860. * Note: ce sont des entites numeriques
  861. *
  862.  
  863. PGAZ . 'O2 ' . 'H0K' = -2.634D5 ;
  864. PGAZ . 'N2 ' . 'H0K' = -2.953D5 ;
  865.  
  866. **********************************************************
  867. *** Fin PGAZ *********************************************
  868. **********************************************************
  869.  
  870. *
  871. *** Etatg
  872. *
  873.  
  874. *
  875.  
  876. s = 0 ;
  877.  
  878. YN2g = 0.77785 ;
  879. UMYN2g = 1.0 '-' YN2g ;
  880. RTOTg = ((PGAZ . 'O2 ' . 'R') * UMYN2g) '+'
  881. ((PGAZ . 'N2 ' . 'R') * YN2G ) ;
  882.  
  883. pg = 1.0D6;
  884. rog = 1.0D2 ;
  885. Tg = pg '/' (rog '*' RTOTg) ;
  886. ung = s ;
  887. utg = 0.0 ;
  888.  
  889. *
  890.  
  891. A1 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 1) '*' UMYN2g) '+'
  892. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 1) '*' YN2g);
  893.  
  894. A2 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 2) '*' UMYN2g) '+'
  895. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 2) '*' YN2g);
  896.  
  897. A3 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 3) '*' UMYN2g) '+'
  898. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 3) '*' YN2g);
  899.  
  900. A4 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 4) '*' UMYN2g) '+'
  901. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 4) '*' YN2g);
  902.  
  903. A5 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 5) '*' UMYN2g) '+'
  904. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 5) '*' YN2g);
  905.  
  906. T2 = Tg '*' Tg ;
  907. T3 = T2 '*' Tg ;
  908. T4 = T3 '*' Tg ;
  909. T5 = T4 '*' Tg ;
  910.  
  911. ETHERg = ((A1 * Tg) '+' ((A2 '/' 2.0) * T2) '+'
  912. ((A3 '/' 3.0) * T3) '+' ((A4 '/' 4.0) * T4) '+'
  913. ((A5 '/' 5.0) * T5)) ;
  914.  
  915. retg = rog '*' (ETHERg '+' (0.5 '*' ung '*' ung)) ;
  916.  
  917.  
  918. rouxg = ((ung '*' ('COS' ANGLE)) '-'
  919. (utg '*' ('SIN' ANGLE))) '*' rog ;
  920.  
  921. rouyg = ((ung '*' ('SIN' ANGLE)) '+'
  922. (utg '*' ('COS' ANGLE))) '*' rog;
  923.  
  924.  
  925. *
  926. *** Etatd
  927. *
  928.  
  929. YN2d = 0.77785 ;
  930. UMYN2d = 1.0 '-' YN2d ;
  931. RTOTd = ((PGAZ . 'O2 ' . 'R') * UMYN2d) '+'
  932. ((PGAZ . 'N2 ' . 'R') * YN2D ) ;
  933.  
  934. pd = pg ;
  935. rod = rog '/' 5.0 ;
  936. Td = pd '/' (rod '*' RTOTd) ;
  937. und = ung ;
  938. utd = utg ;
  939.  
  940. *
  941.  
  942. A1 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 1) '*' UMYN2d) '+'
  943. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 1) '*' YN2d);
  944.  
  945. A2 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 2) '*' UMYN2d) '+'
  946. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 2) '*' YN2d);
  947.  
  948. A3 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 3) '*' UMYN2d) '+'
  949. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 3) '*' YN2d);
  950.  
  951. A4 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 4) '*' UMYN2d) '+'
  952. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 4) '*' YN2d);
  953.  
  954. A5 = (('EXTRAIRE' (PGAZ . 'O2 ' . 'A') 5) '*' UMYN2d) '+'
  955. (('EXTRAIRE' (PGAZ . 'N2 ' . 'A') 5) '*' YN2d);
  956.  
  957. T2 = Td '*' Td ;
  958. T3 = T2 '*' Td ;
  959. T4 = T3 '*' Td ;
  960. T5 = T4 '*' Td ;
  961.  
  962. ETHERd = ((A1 * Td) '+' ((A2 '/' 2.0) * T2) '+'
  963. ((A3 '/' 3.0) * T3) '+' ((A4 '/' 4.0) * T4) '+'
  964. ((A5 '/' 5.0) * T5)) ;
  965.  
  966. rouxd = ((und '*' ('COS' ANGLE)) '-'
  967. (utd '*' ('SIN' ANGLE))) '*' rod;
  968. rouyd = ((und '*' ('SIN' ANGLE)) '+'
  969. (utd '*' ('COS' ANGLE))) '*' rod;
  970.  
  971. retd = rod '*' (ETHERd '+' (0.5 '*' und '*' und)) ;
  972.  
  973. *
  974. *** ro
  975. *
  976.  
  977. RO_f1 = 'KCHT' $FRONTG 'SCAL' 'CENTRE' rog ;
  978. RO_f2 = 'KCHT' $FRONTD 'SCAL' 'CENTRE' rod ;
  979. RO_f = 'KCHT' $FRONT 'SCAL' 'CENTRE' (RO_f1 'ET' RO_f2) ;
  980.  
  981. RO_i1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog;
  982. RO_i2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod;
  983. RO_i = 'KCHT' $DOMINT 'SCAL' 'CENTRE' (RO_i1 'ET' RO_i2);
  984.  
  985. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RO_i 'ET' RO_f) ;
  986.  
  987. *
  988. *** ro u, ro v
  989. *
  990.  
  991. GN_f1 = 'KCHT' $FRONTG 'VECT' 'CENTRE' (rouxg rouyg);
  992. GN_f2 = 'KCHT' $FRONTD 'VECT' 'CENTRE' (rouxd rouyd);
  993. GN_f = 'KCHT' $FRONT 'VECT' 'CENTRE' (GN_f1 'ET' GN_f2);
  994.  
  995. GN_i1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (rouxg rouyg);
  996. GN_i2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (rouxd rouyd);
  997. GN_i = 'KCHT' $DOMINT 'VECT' 'CENTRE' (GN_i1 'ET' GN_i2);
  998.  
  999. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (GN_i 'ET' GN_f) ;
  1000.  
  1001. *
  1002. *** ro e
  1003. *
  1004.  
  1005. RE_f1 = 'KCHT' $FRONTG 'SCAL' 'CENTRE' retg ;
  1006. RE_f2 = 'KCHT' $FRONTD 'SCAL' 'CENTRE' retd ;
  1007. RE_f = 'KCHT' $FRONT 'SCAL' 'CENTRE' (RE_f1 'ET' RE_f2) ;
  1008.  
  1009. RE_i1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' retg ;
  1010. RE_i2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' retd ;
  1011. RE_i = 'KCHT' $DOMINT 'SCAL' 'CENTRE' (RE_i1 'ET' RE_i2);
  1012.  
  1013. REN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RE_i ET RE_f) ;
  1014.  
  1015. *
  1016. *** ro y
  1017. *
  1018.  
  1019. RYN =('KCHT' $FRONTG 'SCAL' 'CENTRE' 'COMP' 'N2 ' (rog '*' YN2g)) 'ET'
  1020. ('KCHT' $DOM1 'SCAL' 'CENTRE' 'COMP' 'N2 ' (rog '*' YN2g)) 'ET'
  1021. ('KCHT' $FRONTD 'SCAL' 'CENTRE' 'COMP' 'N2 ' (rod '*' YN2d)) 'ET'
  1022. ('KCHT' $DOM2 'SCAL' 'CENTRE' 'COMP' 'N2 ' (rod '*' YN2d));
  1023.  
  1024.  
  1025. ********************************************************
  1026. *** CREATION DE 'MODE' POUR GRAPHIQUER LE CHAMELEM ***
  1027. ********************************************************
  1028.  
  1029. MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
  1030.  
  1031. *
  1032. **** Les debits dans le repaire tube
  1033. *
  1034.  
  1035. GNX = 'EXCO' 'UX' GN;
  1036. GNY = 'EXCO' 'UY' GN;
  1037.  
  1038. GNN = (GNX * ('COS' ANGLE)) '+'
  1039. (GNY * ('SIN' ANGLE));
  1040.  
  1041. GNT = (GNY * ('COS' ANGLE)) '-'
  1042. (GNX * ('SIN' ANGLE));
  1043.  
  1044. *
  1045. *** Les variables primitives
  1046. *
  1047.  
  1048. VN PN TN YN GAMN = 'PRIM' 'PERFTEMP' PGAZ
  1049. RN GN REN RYN ;
  1050.  
  1051. RN0 = 'COPIER' RN ;
  1052. *
  1053. *** GRAPHIQUE DES C.I.
  1054. *
  1055.  
  1056. 'SI' GRAPH ;
  1057. *
  1058. *** CREATION DE CHAMELEM
  1059. *
  1060.  
  1061. CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN ;
  1062. CHM_PN = 'KCHA' $DOMTOT 'CHAM' PN ;
  1063. CHM_TN = 'KCHA' $DOMTOT 'CHAM' TN ;
  1064. CHM_GNN = 'KCHA' $DOMTOT 'CHAM' GNN ;
  1065. CHM_GNT = 'KCHA' $DOMTOT 'CHAM' GNT ;
  1066. CHM_REN = 'KCHA' $DOMTOT 'CHAM' REN ;
  1067. CHM_RYN = 'KCHA' $DOMTOT 'CHAM' RYN ;
  1068. TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RO at t=' 0.0);
  1069. TRAC CHM_TN MOD1 'TITR' ('CHAINE' 'T at t=' 0.0);
  1070. TRAC CHM_PN MOD1 'TITR' ('CHAINE' 'P at t=' 0.0);
  1071. TRAC CHM_REN MOD1 'TITR' ('CHAINE' 'ROET at t=' 0.0);
  1072. TRAC CHM_GNN MOD1 'TITR' ('CHAINE' 'ROUN at t=' 0.0);
  1073. TRAC CHM_GNT MOD1 'TITR' ('CHAINE' 'ROUT at t=' 0.0);
  1074. TRAC CHM_RYN MOD1 'TITR' ('CHAINE' 'RYN at t=' 0.0);
  1075.  
  1076. 'FINSI' ;
  1077.  
  1078.  
  1079. ***********************
  1080. **** La table EQEX ****
  1081. ***********************
  1082.  
  1083.  
  1084. CFL = 0.5D0 ;
  1085. NITER = 100 ;
  1086. * TFIN = 0.0005 ;
  1087. TFIN = 100 ;
  1088.  
  1089. RV = 'EQEX' ('DOMA' $DOMTOT 'TABLE') 'ITMA' NITER 'ALFA' CFL
  1090. 'TPSI' 0. 'TFINAL' TFIN
  1091. *
  1092. ***** Option VF = volumes finis
  1093. * CONS = conservative
  1094. * EULER = euler monoespece
  1095. * VANLEER = methode
  1096. *
  1097. 'OPTI' 'VF' 'CONS' 'EULERMST' METO
  1098. *
  1099. ***** Procedure CALCUL
  1100. *
  1101. 'ZONE' $DOMTOT 'OPER' 'CALCUL'
  1102. *
  1103. ***** Operateur 'KONV'
  1104. *
  1105. 'ZONE' $DOMTOT 'OPER' 'KONV'
  1106. *
  1107. ***** Arguments de 'KONV' (maximum 8 chatacters)
  1108. *
  1109. 'IPGAZ' 'RNF' 'VITNF' 'PNF' 'YF'
  1110. *
  1111. ***** LIST des inconnues
  1112. *
  1113. 'INCO' 'RNI' 'GNI' 'ENI' 'RYNI' ;
  1114.  
  1115.  
  1116. *
  1117. *** La table RV . INCO (de soustype INCO);
  1118. *
  1119.  
  1120. RV . 'INCO' = TABLE 'INCO' ;
  1121.  
  1122. *
  1123. *** Stokage des inconnues des equations d'Euler.
  1124. *
  1125.  
  1126. RV . 'INCO' . 'RNI' = 'COPIER' RN ;
  1127. RV . 'INCO' . 'GNI' = 'COPIER' GN ;
  1128. RV . 'INCO' . 'ENI' = 'COPIER' REN ;
  1129. RV . 'INCO' . 'RYNI' = 'COPIER' RYN ;
  1130.  
  1131. *
  1132. *** Le gaz
  1133. *
  1134.  
  1135. RV . 'INCO' . 'IPGAZ' = PGAZ ;
  1136.  
  1137. *
  1138. *** CONDITIONS LIMITS
  1139. *
  1140.  
  1141. RV . 'INCO' . 'CLIM' = VRAI ;
  1142. RV . 'INCO' . 'RNLIM' = 'KCHT' $FRONT 'SCAL' 'CENTRE' RN ;
  1143. RV . 'INCO' . 'GNLIM' = 'KCHT' $FRONT 'VECT' 'CENTRE' GN ;
  1144. RV . 'INCO' . 'ENLIM' = 'KCHT' $FRONT 'SCAL' 'CENTRE' REN ;
  1145. RV . 'INCO' . 'RYNLIM' = 'KCHT' $FRONT 'SCAL' 'CENTRE'
  1146. 'COMP' 'N2 ' RYN ;
  1147.  
  1148. *
  1149. **** Ordre en espace
  1150. * Ordre en temps
  1151. *
  1152.  
  1153. IE = 2 ;
  1154. IT = 2 ;
  1155.  
  1156. RV . 'ORDREESP' = IE ;
  1157. RV . 'ORDRETPS' = IT ;
  1158.  
  1159. *
  1160. **** Test de la convergence
  1161. *
  1162.  
  1163. RV . 'INCO' . 'RN0' = 'COPIER' RN ;
  1164.  
  1165. RV . 'INCO' . 'IT' = 'PROG' ;
  1166. RV . 'INCO' . 'ER' = 'PROG' ;
  1167.  
  1168. *???
  1169. RV . 'MODTOT' = $DOMTOT ;
  1170.  
  1171.  
  1172. *
  1173. ***********************************
  1174. *** Execution EXEX ***
  1175. ***********************************
  1176. *
  1177.  
  1178.  
  1179. 'MESSAGE' ;
  1180. 'MESSAGE' '**************************';
  1181. 'MESSAGE' ('CHAINE' 'METHODE : ' METO) ;
  1182. 'MESSAGE' '**************************';
  1183. 'MESSAGE' ;
  1184.  
  1185.  
  1186.  
  1187. 'TEMPS' ;
  1188. EXEX RV ;
  1189. 'TEMPS' ;
  1190.  
  1191.  
  1192. TFIN = RV. 'PASDETPS'. 'TPS';
  1193.  
  1194. *
  1195. **** SOLUTIONS
  1196. *
  1197.  
  1198. *
  1199. **** Les variables conservatives
  1200. *
  1201.  
  1202. RN = 'COPIER' (RV . 'INCO' . 'RNI');
  1203. GN = 'COPIER' (RV . 'INCO'. 'GNI');
  1204. REN = 'COPIER' (RV . 'INCO'. 'ENI');
  1205. RYN = 'COPIER' (RV . 'INCO'. 'RYNI');
  1206.  
  1207. *
  1208. **** Les variables primitives
  1209. *
  1210.  
  1211. VN PN TN YN GAMN = 'PRIM' 'PERFTEMP' PGAZ
  1212. RN GN REN RYN ;
  1213.  
  1214. *
  1215. **** La vitesse dans le repaire tube
  1216. *
  1217.  
  1218. VNX = 'EXCO' 'UX' VN;
  1219. VNY = 'EXCO' 'UY' VN;
  1220.  
  1221. VNN = (VNX * ('COS' ANGLE)) '+'
  1222. (VNY * ('SIN' ANGLE));
  1223.  
  1224. VNT = (VNY * ('COS' ANGLE)) '-'
  1225. (VNX * ('SIN' ANGLE));
  1226.  
  1227. GNN = VNN * RN;
  1228. GNT = VNT * RN;
  1229.  
  1230. *
  1231. *** GRAPHIQUE DES SOLUTIONS
  1232. *
  1233.  
  1234. 'SI' GRAPH ;
  1235.  
  1236. *
  1237. *** CREATION DE CHAMELEM
  1238. *
  1239.  
  1240. CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN;
  1241. CHM_GNN = 'KCHA' $DOMTOT 'CHAM' GNN ;
  1242. CHM_GNT = 'KCHA' $DOMTOT 'CHAM' GNT ;
  1243. CHM_REN = 'KCHA' $DOMTOT 'CHAM' REN;
  1244. TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RO at t=' TFIN);
  1245. TRAC CHM_REN MOD1 'TITR' ('CHAINE' 'ROET at t=' TFIN);
  1246. TRAC CHM_GNN MOD1 'TITR' ('CHAINE' 'ROUN at t=' TFIN);
  1247. TRAC CHM_GNT MOD1 'TITR' ('CHAINE' 'ROUT at t=' TFIN);
  1248.  
  1249. 'FINSI' ;
  1250.  
  1251. *
  1252. *** Objects evolutions
  1253. *
  1254.  
  1255. xx yy = 'COORDONNEE' Courb;
  1256. ss = 'KOPS' ('KOPS' ('COS' ANGLE) '*' xx) '+'
  1257. ('KOPS' ('SIN' ANGLE) '*' yy);
  1258.  
  1259. evxx = 'EVOL' 'CHPO' ss Courb ;
  1260. lxx = 'EXTRAIRE' evxx 'ORDO' ;
  1261.  
  1262. x0 = 'MINIMUM' lxx;
  1263. x1 = 'MAXIMUM' lxx ;
  1264.  
  1265. * ro
  1266.  
  1267. evro = 'EVOL' 'CHPO' RN Courb ;
  1268. lro = 'EXTRAIRE' evro 'ORDO' ;
  1269. evro = 'EVOL' 'MANU' 'x' lxx 'ro' lro;
  1270. tro = CHAINE '1D ' METO ' : RO IT ' IT ' IE ' IE
  1271. ' tmps ' TFIN ' elem ' 'QUA4' ;
  1272.  
  1273. * u
  1274.  
  1275. evu = 'EVOL' 'CHPO' VNN Courb ;
  1276. lu = 'EXTRAIRE' evu 'ORDO' ;
  1277. evu = 'EVOL' 'MANU' 'x' lxx 'u' lu ;
  1278. tu = CHAINE '1D ' METO ' : U IT ' IT ' IE ' IE
  1279. ' tmps ' TFIN ' elem ' 'QUA4' ;
  1280.  
  1281. * v
  1282.  
  1283. evv = 'EVOL' 'CHPO' VNT Courb ;
  1284. lv = 'EXTRAIRE' evv 'ORDO' ;
  1285. evv = 'EVOL' 'MANU' 'x' lxx 'v' lv ;
  1286. tv = CHAINE '1D ' METO ' : V IT ' IT ' IE ' IE
  1287. ' tmps ' TFIN ' elem ' 'QUA4' ;
  1288.  
  1289. 'SI' GRAPH ;
  1290. 'DESSIN' evv 'TITRE' tv 'XBOR' x0 x1;
  1291. 'FINSI' ;
  1292.  
  1293. * p
  1294.  
  1295. evp = 'EVOL' 'CHPO' PN Courb ;
  1296. lp = 'EXTRAIRE' evp 'ORDO' ;
  1297. evp = 'EVOL' 'MANU' 'x' lxx 'p' lp ;
  1298. tp = CHAINE '1D ' METO ' : P IT ' IT ' IE ' IE
  1299.  
  1300. ' tmps ' TFIN ' elem ' 'QUA4' ;
  1301. * gamma
  1302.  
  1303. evgam = 'EVOL' 'CHPO' GAMN Courb ;
  1304. lgam = 'EXTRAIRE' evgam 'ORDO' ;
  1305. evgam = 'EVOL' 'MANU' 'x' lxx 'gamma' lgam ;
  1306. tgam = CHAINE '1D ' METO ' : GAMMA IT ' IT ' IE ' IE
  1307. ' tmps ' TFIN ' elem ' 'QUA4' ;
  1308.  
  1309.  
  1310. * T
  1311.  
  1312. evT = 'EVOL' 'CHPO' TN Courb ;
  1313. lT = 'EXTRAIRE' evT 'ORDO' ;
  1314. evT = 'EVOL' 'MANU' 'x' lxx 'T' lT ;
  1315. tT = 'CHAINE' '1D ' METO ' : T IT ' IT ' IE ' IE
  1316. ' tmps ' TFIN ' elem ' 'QUA4' ;
  1317.  
  1318.  
  1319. * Fractions massiques
  1320.  
  1321.  
  1322. EVY = 'TABLE' ;
  1323. TY = CHAINE '1D ' METO ' : Y IT ' IT ' IE ' IE
  1324. ' tmps ' TFIN ' elem ' 'QUA4' ;
  1325. YOLD = 'COPIER' YN ;
  1326. NOMECO = 'EXTR' YOLD 'COMP';
  1327. NUMECO = 'DIME' NOMECO ;
  1328. 'REPETER' BLOCCO NUMECO;
  1329. NOMCEL = 'EXTRAIRE' NOMECO &BLOCCO ;
  1330. Y0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1331. 'COMP' NOMCEL
  1332. ('EXCO' NOMCEL YOLD NOMCEL) ;
  1333. N0 = NOMCEL ;
  1334. EVY0 = 'EVOL' 'CHPO' Y0 Courb ;
  1335. LY0 = 'EXTRAIRE' EVY0 'ORDO' ;
  1336. EVY0 = 'EVOL' 'MANU' 'x' lxx N0 LY0 ;
  1337. EVY . &BLOCCO = EVY0;
  1338. 'FIN' BLOCCO;
  1339.  
  1340. EVERR = 'EVOL' 'MANU' 'IT' (RV . 'INCO' . 'IT')
  1341. 'LOG|E|inf' (RV . 'INCO' . 'ER') ;
  1342.  
  1343. 'SI' GRAPH ;
  1344. 'DESSIN' evro 'TITRE' tro 'XBOR' x0 x1 ;
  1345. 'DESSIN' evT 'TITRE' tT 'XBOR' x0 x1 ;
  1346. 'DESSIN' evp 'TITRE' tp 'XBOR' x0 x1 ;
  1347. 'DESSIN' evu 'TITRE' tu 'XBOR' x0 x1 ;
  1348. 'DESSIN' evgam 'TITRE' tgam 'XBOR' x0 x1 ;
  1349. 'DESSIN' EVERR 'TITRE' ('CHAINE' METO ' IE =' IE ' IT =' IT) ;
  1350. 'FINSI' ;
  1351.  
  1352.  
  1353.  
  1354. * TESTS
  1355.  
  1356. ERRO = ('MAXIMUM' (RN '-' RN0) 'ABS') '/'
  1357. ('MAXIMUM' RN0);
  1358.  
  1359. 'SI' (ERRO > 1.0D-4) ;
  1360. 'MESSAGE' 'CG perde la discontinuite de contact stationnaire' ;
  1361. 'ERREUR' 5;
  1362. 'FINSI';
  1363.  
  1364. 'FIN' ;
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  

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