Télécharger tube3D.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : tube3D.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ******************************************************************
  5. * CALCUL DU TUBE A CHOC *
  6. * FORMULATION VF COMPRESSIBLE EXPLICITE *
  7. * DIFFERENTS SOLVEURS *
  8. * *
  9. * A. BECCANTINI TTMF MARS 1998 *
  10. * Remise à jours : JUIILETT 2001 *
  11. * Remise à jours : SEPTEMBRE 2002 (syntaxe de 'KONV' changé) *
  12. ******************************************************************
  13.  
  14. 'OPTION' 'DIME' 3 ;
  15. 'OPTION' 'ELEM' 'CUB8' ;
  16. 'OPTION' 'ISOV' 'SULI' ;
  17. 'OPTION' 'ECHO' 1 ;
  18. 'OPTION' 'TRAC' 'X' ;
  19.  
  20. GRAPH = VRAI ;
  21. GRAPH = FAUX ;
  22.  
  23. *
  24. *** Methodes possibles :
  25. *
  26. * 'VANLEER'
  27. * 'VLH '
  28. * 'HUSVLH '
  29. * 'GODUNOV'
  30. * 'AUSMPLUS'
  31.  
  32. METO = 'VLH' ;
  33. LOGSO = VRAI ;
  34. SAFFAC = 0.7 ;
  35. NITER = 1000 ;
  36. TFINAL = 0.2 ;
  37.  
  38. ************
  39. * MAILLAGE *
  40. ************
  41.  
  42. RAF = 1 ;
  43. NX=25 '*' RAF ;
  44. NY=2 '*' RAF ;
  45. NZ=2 '*' RAF ;
  46.  
  47. L = 1.0D0 ;
  48. DX = L/NX/2.0D0;
  49. H = NY*DX ;
  50. P = NZ*DX ;
  51. xD = 0.5D0*L ;
  52. xG = -1.0D0*xD ;
  53. yH = 0.5D0*H ;
  54. yB = -1.0D0*yH ;
  55. zV = 0.5D0*P ;
  56. zR = -1.0D0*zV ;
  57.  
  58.  
  59. A1 = xG yB zR ;
  60. A2 = 0.0D0 yB zR;
  61. A3 = xD yB zR;
  62. A4 = xD yH zR;
  63. A5 = 0.0D0 yH zR;
  64. A6 = xG yH zR;
  65. A7 = xG yB zV ;
  66. A8 = 0.0D0 yB zV;
  67. A9 = xD yB zV;
  68. A10 = xD yH zV;
  69. A11 = 0.0D0 yH zV;
  70. A12 = xG yH zV;
  71. VECTG = XG 0.0D0 zV;
  72. VECTD = XD 0.0D0 zV;
  73.  
  74. xBG = xG-DX;
  75. XBD = xD+DX;
  76.  
  77. B1 = xBG yB zR;
  78. B2 = xBG yH zR;
  79. B3 = xBD yB zR;
  80. B4 = xBD yH zR;
  81. B5 = xBG yB zV;
  82. B6 = xBG yH zV;
  83. B7 = xBD yB zV;
  84. B8 = xBD yH zV;
  85.  
  86. BAS1 = A1 'DROI' NX A2 ;
  87. BAS2 = A2 'DROI' NX A3 ;
  88. BAS3 = A7 'DROI' NX A8 ;
  89. BAS4 = A8 'DROI' NX A9 ;
  90. BAS5 = A1 'DROI' NZ A7 ;
  91. BAS6 = A2 'DROI' NZ A8 ;
  92. BAS7 = A3 'DROI' NZ A9 ;
  93. BAS8 = B1 'DROI' NZ B5 ;
  94. BAS9 = B3 'DROI' NZ B7 ;
  95. BAS10 = B5 'DROI' 1 A7 ;
  96. BAS11 = B1 'DROI' 1 A1 ;
  97. BAS12 = B7 'DROI' 1 A9 ;
  98. BAS13 = B3 'DROI' 1 A3 ;
  99. HAU2 = A4 'DROI' NX A5 ;
  100. HAU1 = A5 'DROI' NX A6 ;
  101. HAU4 = A10 'DROI' NX A11 ;
  102. HAU3 = A11 'DROI' NX A12 ;
  103. HAU7 = A4 'DROI' NZ A10 ;
  104. HAU6 = A5 'DROI' NZ A11 ;
  105. HAU5 = A6 'DROI' NZ A12 ;
  106. HAU8 = B2 'DROI' NZ B6 ;
  107. HAU9 = B4 'DROI' NZ B8 ;
  108. HAU10 = B6 'DROI' 1 A12 ;
  109. HAU11 = A6 'DROI' 1 B2 ;
  110. HAU12 = B8 'DROI' 1 A10 ;
  111. HAU13 = B4 'DROI' 1 A4 ;
  112. AVA5 = A7 'DROI' NY A12;
  113. AVA6 = A8 'DROI' NY A11;
  114. AVA7 = A9 'DROI' NY A10;
  115. AVA8 = B5 'DROI' NY B6;
  116. AVA9 = B7 'DROI' NY B8;
  117. ARR5 = A1 'DROI' NY A6;
  118. ARR6 = A2 'DROI' NY A5;
  119. ARR7 = A3 'DROI' NY A4;
  120. ARR8 = B1 'DROI' NY B2;
  121. ARR9 = B3 'DROI' NY B4;
  122.  
  123. 'OPTI' 'ELEM' 'QUA4';
  124.  
  125. S1 = 'DALL' AVA8 HAU8 ARR8 BAS8;
  126. S2 = 'DALL' AVA5 HAU5 ARR5 BAS5;
  127. S3 = 'DALL' AVA6 HAU6 ARR6 BAS6;
  128. S4 = 'DALL' AVA7 HAU7 ARR7 BAS7;
  129. S5 = 'DALL' AVA9 HAU9 ARR9 BAS9;
  130.  
  131. S6 = 'DALL' BAS10 AVA5 HAU10 AVA8;
  132. S7 = 'DALL' BAS3 AVA6 HAU3 AVA5;
  133. S8 = 'DALL' BAS4 AVA7 HAU4 AVA6;
  134. S9 = 'DALL' BAS12 AVA9 HAU12 AVA7;
  135.  
  136. S10 = 'DALL' BAS10 BAS5 BAS11 BAS8 ;
  137. S11 = 'DALL' BAS3 BAS6 BAS1 BAS5;
  138. S12 = 'DALL' BAS4 BAS7 BAS2 BAS6;
  139. S13 = 'DALL' BAS12 BAS9 BAS13 BAS7;
  140.  
  141. S14 = 'DALL' BAS11 ARR5 HAU11 ARR8;
  142. S15 = 'DALL' BAS1 ARR6 HAU1 ARR5;
  143. S16 = 'DALL' BAS2 ARR7 HAU2 ARR6;
  144. S17 = 'DALL' BAS13 ARR9 HAU13 ARR7;
  145.  
  146. S18 = 'DALL' HAU10 HAU5 HAU11 HAU8 ;
  147. S19 = 'DALL' HAU3 HAU6 HAU1 HAU5;
  148. S20 = 'DALL' HAU4 HAU7 HAU2 HAU6;
  149. S21 = 'DALL' HAU12 HAU9 HAU13 HAU7;
  150.  
  151. 'OPTI' 'ELEM' 'CUB8';
  152.  
  153. DOM1 = (S7 et S11 et S15 et S19 et S2 et S3) 'VOLU';
  154. DOM2 = (S8 et S12 et S16 et S20 et S3 et S4) 'VOLU';
  155. FRONTG = (S6 et S10 et S14 et S18 et S1 et S2) 'VOLU';
  156. FRONTD = (S9 et S13 et S17 et S21 et S4 et S5) 'VOLU';
  157.  
  158. *
  159. *** Rotation
  160. *
  161.  
  162. ANGLE = 30.0D0;
  163. ORIG1 = 0.0D0 0.0D0 0.0D0;
  164. ORIG2 = 0.0D0 0.0D0 1.0D0;
  165.  
  166. 'MESSAGE';
  167. 'MESSAGE' (CHAIN 'ANGLE = ' ANGLE);
  168. 'MESSAGE';
  169.  
  170. DOM1 = DOM1 'TOURNER' ANGLE ORIG1 ORIG2;
  171. DOM2 = DOM2 'TOURNER' ANGLE ORIG1 ORIG2;
  172. FRONTG = FRONTG 'TOURNER' ANGLE ORIG1 ORIG2;
  173. FRONTD = FRONTD 'TOURNER' ANGLE ORIG1 ORIG2;
  174.  
  175. DOMINT = DOM1 'ET' DOM2 ;
  176. 'ELIMINATION' DOMINT 1D-6;
  177.  
  178. FRONT = FRONTG 'ET' FRONTD ;
  179. 'ELIMINATION' FRONT 1D-6;
  180. FRONT = FRONT 'COULEUR' 'ROUGE';
  181. DOMTOT = DOMINT 'ET' FRONT;
  182. 'ELIMINATION' DOMTOT 1D-6;
  183.  
  184. $DOMTOT = 'MODE' DOMTOT 'EULER' ;
  185. $DOMINT = 'MODE' DOMINT 'EULER' ;
  186. $DOM1 = 'MODE' DOM1 'EULER' ;
  187. $DOM2 = 'MODE' DOM2 'EULER' ;
  188. $FRONTG = 'MODE' FRONTG 'EULER' ;
  189. $FRONTD = 'MODE' FRONTD 'EULER' ;
  190. $FRONT = 'MODE' FRONT 'EULER' ;
  191.  
  192. TDOMTOT = 'DOMA' $DOMTOT 'VF' ;
  193. TDOMINT = 'DOMA' $DOMINT 'VF' ;
  194. TDOM1 = 'DOMA' $DOM1 'VF' ;
  195. TDOM2 = 'DOMA' $DOM2 'VF' ;
  196. TFRONTG = 'DOMA' $FRONTG 'VF' ;
  197. TFRONTD = 'DOMA' $FRONTD 'VF' ;
  198. TFRONT = 'DOMA' $FRONT 'VF' ;
  199.  
  200. MDOMTOT = TDOMTOT . 'QUAF' ;
  201. MDOMINT = TDOMINT . 'QUAF' ;
  202. MDOM1 = TDOM1 . 'QUAF' ;
  203. MDOM2 = TDOM2 . 'QUAF' ;
  204. MFRONTG = TFRONTG . 'QUAF' ;
  205. MFRONTD = TFRONTD . 'QUAF' ;
  206. MFRONT = TFRONT . 'QUAF' ;
  207. 'ELIM' (MDOMTOT 'ET' MDOMINT 'ET' MDOM1 'ET' MDOM2 'ET'
  208. MFRONTG 'ET' MFRONTD 'ET' MFRONT) 1.E-5 ;
  209.  
  210. *
  211. ******* Creation de la ligne Utilisée pour le Post-Traitement
  212. * reliant les points centres
  213. *
  214.  
  215. XINIT = XG + (0.5D0*DX);
  216. YINIT = YB + (0.5D0*DX);
  217. ZINIT = ZV - (0.5D0*DX);
  218. XFIN = XD - (0.5D0*DX) ;
  219. YFIN = YINIT ;
  220. ZFIN = ZINIT ;
  221. PINI = XINIT YINIT ZINIT;
  222. PFIN = XFIN YFIN ZFIN;
  223. IAUX = (2 * NX) - 1 ;
  224. COURB = PINI 'DROIT' IAUX PFIN;
  225. COURB = COURB 'TOURNER' ANGLE ORIG1 ORIG2;
  226. P1 = ('DOMA' $DOMTOT 'CENTRE') 'POIN' 'PROC' (COURB 'POIN' 1);
  227. 'REPETER' BLOC1 (IAUX-1);
  228. P2 = ('DOMA' $DOMTOT 'CENTRE') 'POIN' 'PROC'
  229. (COURB 'POIN' (&BLOC1+1));
  230. SI (&BLOC1 'EGA' 1);
  231. COUR='MANU' 'SEG2' P1 P2;
  232. SINON;
  233. LL='MANU' 'SEG2' P1 P2;
  234. COUR=COUR 'ET' LL;
  235. FINSI;
  236. P1 = P2;
  237. 'FIN' BLOC1;
  238. COURB = COUR 'COULEUR' 'VERT';
  239. 'ELIMINATION' (1.0D-6) Courb ('DOMA' $DOMTOT 'MAILLAGE');
  240.  
  241. ************************************************************
  242. * CONDITIONS INITIALES ET LIMITES. *
  243. ************************************************************
  244.  
  245. gamgd = 1.4D0;
  246.  
  247. *
  248. *** Etat gauche
  249. *
  250.  
  251. rog = 1.0 ;
  252. ung = 0.0 ;
  253. utg = 0.0 ;
  254. uvg = 0.0 ;
  255. pg = 1.0 ;
  256.  
  257.  
  258. rouxg = ((ung '*' ('COS' ANGLE)) '-'
  259. (utg '*' ('SIN' ANGLE))) '*' rog ;
  260. rouyg = ((ung '*' ('SIN' ANGLE)) '+'
  261. (utg '*' ('COS' ANGLE))) '*' rog;
  262. rouzg = uvg '*' rog;
  263. recing = 0.5D0 '*' rog '*' ((ung '*' ung) '+' (utg '*' utg)
  264. '+' (uvg '*' uvg));
  265. retg = (pg '/' (gamgd '-' 1.0)) '+' recing;
  266.  
  267. *
  268. *** Etat droite
  269. *
  270.  
  271. rod = 1.0D-1 ;
  272. und = 0.0D0 ;
  273. utd = 0.0;
  274. uvd = 0.0;
  275. pd = 1.0D-1;
  276.  
  277. rouxd = ((und '*' ('COS' ANGLE)) '-'
  278. (utd '*' ('SIN' ANGLE))) '*' rod;
  279. rouyd = ((und '*' ('SIN' ANGLE)) '+'
  280. (utd '*' ('COS' ANGLE))) '*' rod;
  281. rouzd = uvd '*' rod;
  282. recind = 0.5D0 '*' rod '*' ((und '*' und)
  283. '+' (utd '*' utd));
  284. retd = (pd '/' (gamgd '-' 1.0)) '+' recind;
  285.  
  286. *
  287. *** gamma
  288. *
  289.  
  290. GAMN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' gamgd;
  291.  
  292. *
  293. *** ro
  294. *
  295.  
  296. RO_f1 = 'KCHT' $FRONTG 'SCAL' 'CENTRE' rog ;
  297. RO_f2 = 'KCHT' $FRONTD 'SCAL' 'CENTRE' rod ;
  298. RO_f = 'KCHT' $FRONT 'SCAL' 'CENTRE' (RO_f1 'ET' RO_f2) ;
  299.  
  300. RO_i1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog;
  301. RO_i2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod;
  302. RO_i = 'KCHT' $DOMINT 'SCAL' 'CENTRE' (RO_i1 'ET' RO_i2);
  303.  
  304. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RO_i 'ET' RO_f) ;
  305.  
  306.  
  307. *
  308. *** ro u, ro v
  309. *
  310.  
  311. GN_f1 = 'KCHT' $FRONTG 'VECT' 'CENTRE' (rouxg rouyg rouzg);
  312. GN_f2 = 'KCHT' $FRONTD 'VECT' 'CENTRE' (rouxd rouyd rouzd);
  313. GN_f = 'KCHT' $FRONT 'VECT' 'CENTRE' (GN_f1 'ET' GN_f2);
  314.  
  315. GN_i1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (rouxg rouyg rouzg);
  316. GN_i2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (rouxd rouyd rouzd);
  317. GN_i = 'KCHT' $DOMINT 'VECT' 'CENTRE' (GN_i1 'ET' GN_i2);
  318.  
  319. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (GN_i 'ET' GN_f) ;
  320.  
  321.  
  322. *
  323. *** ro e
  324. *
  325.  
  326. RE_f1 = 'KCHT' $FRONTG 'SCAL' 'CENTRE' retg ;
  327. RE_f2 = 'KCHT' $FRONTD 'SCAL' 'CENTRE' retd ;
  328. RE_f = 'KCHT' $FRONT 'SCAL' 'CENTRE' (RE_f1 'ET' RE_f2) ;
  329.  
  330. RE_i1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' retg ;
  331. RE_i2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' retd ;
  332. RE_i = 'KCHT' $DOMINT 'SCAL' 'CENTRE' (RE_i1 'ET' RE_i2);
  333.  
  334. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RE_i ET RE_f) ;
  335.  
  336. ********************************************************
  337. *** CREATION DE 'MODE' POUR GRAPHIQUER LE CHAMELEM ***
  338. ********************************************************
  339.  
  340. MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE';
  341.  
  342. *
  343. **** Les debits dans le repaire tube
  344. *
  345.  
  346. GNX = 'EXCO' 'UX' GN;
  347. GNY = 'EXCO' 'UY' GN;
  348. GNZ = 'EXCO' 'UZ' GN;
  349.  
  350. GNN = (GNX * ('COS' ANGLE)) '+'
  351. (GNY * ('SIN' ANGLE));
  352.  
  353. GNT = (GNY * ('COS' ANGLE)) '-'
  354. (GNX * ('SIN' ANGLE));
  355.  
  356. GNV = GNZ;
  357. *
  358. *** GRAPHIQUE DES C.I.
  359. *
  360. 'SI' GRAPH ;
  361. *
  362. *** CREATION DE CHAMELEM
  363. *
  364. CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN ;
  365. CHM_GNN = 'KCHA' $DOMTOT 'CHAM' GNN ;
  366. CHM_GNT = 'KCHA' $DOMTOT 'CHAM' GNT ;
  367. CHM_GNV = 'KCHA' $DOMTOT 'CHAM' GNV ;
  368. CHM_RETN = 'KCHA' $DOMTOT 'CHAM' RETN ;
  369. TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RO at t=' 0.0);
  370. TRAC CHM_RETN MOD1 'TITR' ('CHAINE' 'ROET at t=' 0.0);
  371. TRAC CHM_GNN MOD1 'TITR' ('CHAINE' 'ROUN at t=' 0.0);
  372. TRAC CHM_GNT MOD1 'TITR' ('CHAINE' 'ROUT at t=' 0.0);
  373. TRAC CHM_GNV MOD1 'TITR' ('CHAINE' 'ROUV at t=' 0.0);
  374. 'FINSI' ;
  375. *
  376. **** Les variables primitives
  377. *
  378. VN PN = 'PRIM' 'PERFMONO'
  379. RN GN RETN GAMN ;
  380. *
  381. **** Les gradients
  382. *
  383. CACCA CHLIM COEFSCAL = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'NOLIMITE'
  384. ('MOTS' 'SCAL') RN ;
  385. CACCA CHLIM COEFVECT = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'NOLIMITE'
  386. ('MOTS' 'UX' 'UY' 'UZ') VN ;
  387. *
  388. **** Le calcul
  389. *
  390. TPS = 0.0 ;
  391. ZERO = 1.0D-12 ;
  392. 'TEMPS' 'ZERO' ;
  393. 'REPETER' BL1 NITER ;
  394. *
  395. **** Primitive variables
  396. *
  397. VN PN = 'PRIM' 'PERFMONO' RN GN RETN GAMN ;
  398.  
  399. 'SI' LOGSO ;
  400.  
  401. GRADR ALR = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  402. ('MOTS' 'SCAL') RN 'GRADGEO' COEFSCAL ;
  403.  
  404. GRADP ALP = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  405. ('MOTS' 'SCAL') PN 'GRADGEO' COEFSCAL ;
  406.  
  407. GRADV ALV = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'LIMITEUR'
  408. ('MOTS' 'UX' 'UY' 'UZ') VN 'GRADGEO' COEFVECT ;
  409.  
  410. ROF VITF PF GAMF = 'PRET' 'PERFMONO' 2 1
  411. $DOMTOT
  412. RN GRADR ALR
  413. VN GRADV ALV
  414. PN GRADP ALP
  415. GAMN ;
  416.  
  417. 'SINON' ;
  418.  
  419. ROF VITF PF GAMF = 'PRET' 'PERFMONO' 1 1
  420. $DOMTOT
  421. RN
  422. VN
  423. PN
  424. GAMN ;
  425.  
  426. 'FINSI' ;
  427.  
  428. RESIDU DELTAT = 'KONV' 'VF' 'PERFMONO' 'RESI' METO
  429. $DOMTOT ('MOTS' 'RN' 'RUX' 'RUY' 'RUZ' 'RETN')
  430. ROF VITF PF GAMF ;
  431.  
  432. DT_CON = SAFFAC '*' DELTAT ;
  433. *
  434. **** The time step linked to tps
  435. *
  436. DTTPS = (TFINAL '-' TPS) * (1. '+' ZERO) ;
  437. *
  438. **** Total time step
  439. *
  440. DTMIN = 'MINIMUM' ('PROG' DT_CON DTTPS) ;
  441. *
  442. **** Increment of the variables (convection)
  443. *
  444. RESIDU = DTMIN '*' RESIDU ;
  445.  
  446. DRN = 'EXCO' 'RN' RESIDU 'SCAL' ;
  447. DGN = 'EXCO' ('MOTS' 'RUX' 'RUY' 'RUZ') RESIDU
  448. ('MOTS' 'UX' 'UY' 'UZ') ;
  449. DRETN = 'EXCO' 'RETN' RESIDU 'SCAL' ;
  450.  
  451. TPS = TPS '+' DTMIN ;
  452. RN = RN '+' DRN ;
  453. GN = GN '+' DGN ;
  454. RETN = RETN '+' DRETN ;
  455.  
  456. 'SI' (((&BL1 '/' 20) '*' 20) 'EGA' &BL1) ;
  457. 'MESSAGE' ('CHAINE' 'ITER =' &BL1 ' TPS =' TPS) ;
  458. 'FINSI' ;
  459.  
  460. 'SI' (TPS > TFINAL) ;
  461. 'QUITTER' BL1 ;
  462. 'FINSI' ;
  463.  
  464. 'FIN' BL1 ;
  465. 'TEMPS' ;
  466. *
  467. ***** On calcule les variables primitive
  468. *
  469.  
  470. VN PN = 'PRIM' 'PERFMONO' RN GN RETN GAMN ;
  471.  
  472. *
  473. **** La vitesse dans le repaire tube
  474. *
  475.  
  476. VNX = 'EXCO' 'UX' VN;
  477. VNY = 'EXCO' 'UY' VN;
  478. VNZ = 'EXCO' 'UZ' VN;
  479.  
  480. VNN = (VNX * ('COS' ANGLE)) '+'
  481. (VNY * ('SIN' ANGLE));
  482.  
  483. VNT = (VNY * ('COS' ANGLE)) '-'
  484. (VNX * ('SIN' ANGLE));
  485.  
  486. VNV = VNZ;
  487.  
  488. GNN = VNN * RN;
  489. GNT = VNT * RN;
  490. GNV = VNV * RN;
  491.  
  492. *
  493. *** GRAPHIQUE DES SOLUTIONS
  494. *
  495.  
  496. 'SI' (GRAPH);
  497.  
  498. *
  499. *** CREATION DE CHAMELEM
  500. *
  501.  
  502. CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN;
  503. CHM_GNN = 'KCHA' $DOMTOT 'CHAM' GNN ;
  504. CHM_GNT = 'KCHA' $DOMTOT 'CHAM' GNT ;
  505. CHM_GNV = 'KCHA' $DOMTOT 'CHAM' GNV ;
  506. CHM_RETN = 'KCHA' $DOMTOT 'CHAM' RETN;
  507. TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RO at t=' TPS);
  508. TRAC CHM_RETN MOD1 'TITR' ('CHAINE' 'ROET at t=' TPS);
  509. TRAC CHM_GNN MOD1 'TITR' ('CHAINE' 'ROUN at t=' TPS);
  510. TRAC CHM_GNT MOD1 'TITR' ('CHAINE' 'ROUT at t=' TPS);
  511.  
  512. 'FINSI' ;
  513.  
  514. *
  515. *** Objects evolutions
  516. *
  517. 'SI' LOGSO ;
  518. IE = 2 ;
  519. 'SINON' ;
  520. IE = 1 ;
  521. 'FINSI' ;
  522. IT = 1 ;
  523. xx yy zz= 'COORDONNEE' Courb;
  524. ss = 'KOPS' ('KOPS' ('COS' ANGLE) '*' xx) '+'
  525. ('KOPS' ('SIN' ANGLE) '*' yy) ;
  526. evxx = 'EVOL' 'CHPO' ss Courb ;
  527. lxx = 'EXTRAIRE' evxx 'ORDO' ;
  528.  
  529. x0 = 'MINIMUM' lxx;
  530. x1 = 'MAXIMUM' lxx;
  531.  
  532. evro = 'EVOL' 'CHPO' RN Courb ;
  533. lro = 'EXTRAIRE' evro 'ORDO' ;
  534. evro = 'EVOL' 'MANU' 'x' lxx 'ro' lro;
  535. tro = CHAINE '1D ' METO ' : RO IT ' IT ' IE ' IE
  536. ' tmps ' TPS ' elem ' 'CUB8' ;
  537. evu = 'EVOL' 'CHPO' VNN Courb ;
  538. lu = 'EXTRAIRE' evu 'ORDO' ;
  539. evu = 'EVOL' 'MANU' 'x' lxx 'u' lu ;
  540. tu = CHAINE '1D ' METO ' : U IT ' IT ' IE ' IE
  541. ' tmps ' TPS ' elem ' 'CUB8' ;
  542. evv = 'EVOL' 'CHPO' VNT Courb ;
  543. lv = 'EXTRAIRE' evv 'ORDO' ;
  544. evv = 'EVOL' 'MANU' 'x' lxx 'v' lv ;
  545. tv = CHAINE '1D ' METO ' : V IT ' IT ' IE ' IE
  546. ' tmps ' TPS ' elem ' 'CUB8' ;
  547. SI GRAPH;
  548. 'DESSIN' evv 'TITRE' tv 'XBOR' x0 x1;
  549. FINSI;
  550. evw = 'EVOL' 'CHPO' VNV Courb ;
  551. lw = 'EXTRAIRE' evw 'ORDO' ;
  552. evw = 'EVOL' 'MANU' 'x' lxx 'w' lw ;
  553. tw = CHAINE '1D ' METO ' : W IT ' IT ' IE ' IE
  554. ' tmps ' TPS ' elem ' 'CUB8' ;
  555. SI GRAPH;
  556. 'DESSIN' evw 'TITRE' tw 'XBOR' x0 x1;
  557. FINSI;
  558.  
  559. evp = 'EVOL' 'CHPO' PN Courb ;
  560. lp = 'EXTRAIRE' evp 'ORDO' ;
  561. evp = 'EVOL' 'MANU' 'x' lxx 'p' lp ;
  562. tp = CHAINE '1D ' METO ' : P IT ' IT ' IE ' IE
  563. ' tmps ' TPS ' elem ' 'CUB8' ;
  564.  
  565. ls = lro '**' gamgd;
  566. ls = lp '/' ls;
  567. evs = 'EVOL' 'MANU' 'x' lxx 's' ls ;
  568. ts = CHAINE '1D ' METO ' : s IT ' IT ' IE ' IE
  569. ' tmps ' TPS ' elem ' 'CUB8' ;
  570.  
  571. *
  572. *** Solution analytique
  573. *
  574.  
  575. lxxa = 'PROG' -0.49000 -0.47000 -0.45000 -0.43000 -0.41000 -0.390
  576. -0.37000 -0.35000 -0.33000 -0.31000 -0.29000 -0.27000 -0.25000
  577. -0.23000 -0.21000 -0.19000 -0.17000 -0.15000 -0.13000 -0.11000
  578. -9.00000E-2 -7.00000E-2 -5.00000E-2 -3.00000E-2 -1.00000E-2;
  579. lxxa = lxxa 'ET' ('PROG'
  580. 1.00000E-02 3.00000E-02 5.00000E-02 7.00000E-02 9.00000E-02
  581. 0.11000 0.13000 0.15000 0.17000 0.19000 0.21000 0.23000 0.25000
  582. 0.27000 0.29000 0.31000 0.33000 0.35000 0.37000 0.39000 0.41000
  583. 0.43000 0.45000 0.47000) ;
  584. lpa = 'PROG' 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
  585. 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 .99193
  586. .85405 .79151 .69598 .64297 .57841 .51997 .45356 .41754
  587. .37307 .33114 .29475 .28482 .28482 .28482 .28482 .28482
  588. .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482
  589. .28482 .28482 .28482 .28482 .28482 .28482 .10000 .10000
  590. .10000 .10000 .10000;
  591. lroa = 'PROG' 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
  592. 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 .99423
  593. .89343 .84619 .77192 .72945 .67635 .62680 .56851 .53588
  594. .49447 .45410 .41786 .40776 .40776 .40776 .40776 .40776
  595. .40776 .40776 .40776 .40776 .40776 .20444 .20444 .20444
  596. .20444 .20444 .20444 .20444 .20444 .20444 .10000 .10000
  597. .10000 .10000 .10000;
  598. lua = 'PROG' 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
  599. 0.0 0.0 6.84663E-03 .13185 .19435 .29851 .36173 .44507 .52768
  600. .63185 .69395 .77728 .86406 .94740 .97167 .97167 .97167
  601. .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167
  602. .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167
  603. 0.0 0.0 0.0 0.0 0.0;
  604. EPSI=0.26;
  605.  
  606. lsa = lroa '**' gamgd;
  607. lsa = lpa '/' lsa;
  608.  
  609. evroa = 'EVOL' 'MANU' 'x' lxxa 'ro' lroa;
  610. evpa = 'EVOL' 'MANU' 'x' lxxa 'p' lpa;
  611. evua = 'EVOL' 'MANU' 'x' lxxa 'ua' lua;
  612. evsa = 'EVOL' 'MANU' 'x' lxxa 's' lsa;
  613.  
  614. *PM du fait de la précision du SIN et du COS, (de l'ordre de 10-10)
  615. * l'intervalle lxx est plus petit que lxxa.
  616. * Comme IPOL fait une erreur dans ce cas, on restreint lxxa
  617. 'REMPLACER' lxxa 1 ('EXTR' lxx 1) ;
  618. 'REMPLACER' lxxa ('DIME' lxxa) ('EXTR' lxx ('DIME' lxx)) ;
  619.  
  620. lper = 'IPOL' lxxa lxx lp ;
  621. luer = 'IPOL' lxxa lxx lu ;
  622. lroer = 'IPOL' lxxa lxx lro ;
  623.  
  624. dlp = 'MAXIMUM' (ABS ( lper '-' lpa));
  625. dlu = 'MAXIMUM' (ABS ( luer '-' lua));
  626. dlro = 'MAXIMUM' (ABS ( lroer '-' lroa));
  627. dl = (dlp '+' dlu '+' dlro) '/' 3.0D0;
  628.  
  629. *
  630. *** Quelque DESSIN
  631. *
  632.  
  633.  
  634. TAB1=TABLE;
  635. TAB1.'TITRE'= TABLE ;
  636. TAB1.1='MARQ TRIB REGU';
  637. TAB1.'TITRE' . 1 = MOT 'Numerique';
  638. TAB1.2='MARQ CROI REGU';
  639. TAB1.'TITRE' . 2 = MOT 'Exacte';
  640. SI GRAPH;
  641. 'DESSIN' (evro 'ET' evroa) 'TITRE' tro 'XBOR' x0 x1
  642. 'LEGE' TAB1;
  643. 'DESSIN' (evp 'ET' evpa) 'TITRE' tp 'XBOR' x0 x1
  644. 'LEGE' TAB1;
  645. 'DESSIN' (evu 'ET' evua) 'TITRE' tu 'XBOR' x0 x1
  646. 'LEGE' TAB1;
  647. 'DESSIN' (evs 'ET' evsa) 'TITRE' ts 'XBOR' x0 x1
  648. 'LEGE' TAB1;
  649. FINSI;
  650.  
  651. SI (DL > EPSI);
  652. MESSAGE 'Erreur calcul du tube a choc';
  653. MESSAGE dl;
  654. ERREUR 5;
  655. FINSI;
  656.  
  657. ERRO1 = 'MAXIMUM' (lv 'ET' lw) 'ABS' ;
  658. 'SI' (ERRO1 '>' 1.0D-6);
  659. MESSAGE 'Erreur calcul du tube a choc';
  660. MESSAGE dl;
  661. ERREUR 5;
  662. 'FINSI' ;
  663.  
  664. FIN;
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  

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