Télécharger pret3D1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : pret3D1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. **********************************************************************
  5. **** APPROCHE VF "Cell-Centred Formulation" pour la solution des ****
  6. **** Equations d'Euler pour un gaz parfait. ****
  7. **** ****
  8. **** OPERATEUR PRET ****
  9. **** Operateur qui 'recontruit les variables primitives aux faces ****
  10. **** Cas gaz monoespece "thermally perfect" ****
  11. **** Differents cas tests ****
  12. **** ****
  13. **** A. BECCANTINI DRN/DMT/SEMT/TTMF AOUT 1998 ****
  14. **********************************************************************
  15.  
  16. 'OPTION' 'DIME' 3 ;
  17. 'OPTION' 'ELEM' CUB8 ;
  18. 'OPTION' 'ECHO' 1 ;
  19. 'OPTION' 'TRAC' 'PS' ;
  20.  
  21. *
  22. *** GRAPH
  23. *
  24.  
  25. *GRAPH = VRAI ;
  26. GRAPH = FAUX ;
  27.  
  28. ***************************
  29. *** PROCEDURE RUO1 ****
  30. ***************************
  31. *
  32. *** Precedure pour la rotation d'un tenseur de premier
  33. * ordre autour de l'axe Oz
  34. *
  35.  
  36. 'DEBPROC' RUO1 ;
  37. 'ARGUMENT' ALPHA*'FLOTTANT' UN*'FLOTTANT' UT*'FLOTTANT';
  38.  
  39. SINA = 'SIN' ALPHA ;
  40. COSA = 'COS' ALPHA ;
  41.  
  42. UX = (UN * COSA ) '-' (UT * SINA) ;
  43. UY = (UN * SINA ) '+' (UT * COSA) ;
  44.  
  45.  
  46. 'FINPROC' UX UY;
  47.  
  48. ***************************
  49. *** PROCEDURE RUO2 ****
  50. ***************************
  51. *
  52. *** Precedure pour la rotation d'un tenseur de deuxieme
  53. * ordre autour de l'axe Oz
  54. *
  55.  
  56. 'DEBPROC' RUO2 ;
  57. 'ARGUMENT' ALPHA*'FLOTTANT'
  58. UNN*'FLOTTANT' UNT*'FLOTTANT' UNZ*'FLOTTANT'
  59. UTN*'FLOTTANT' UTT*'FLOTTANT' UTZ*'FLOTTANT';
  60. *
  61. **** (n,t) -> (x,y)
  62. *
  63. * n = CA x '+' SA y ;
  64. * t = -SA x '+' CA y ;
  65. *
  66. * UNT = DUN/DT
  67. *
  68.  
  69. SA = 'SIN' ALPHA ;
  70. CA = 'COS' ALPHA ;
  71. CA2 = CA * CA ;
  72. CASA = CA * SA ;
  73. SA2 = SA * SA;
  74.  
  75. UXX = (CA2 * UNN) '-' (CASA * (UNT '+' UTN)) '+' (SA2 *UTT) ;
  76. UYX = (CASA * (UNN '-' UTT)) '-' (SA2 * UNT) '+' (CA2 * UTN ) ;
  77. UXY = (CASA * (UNN '-' UTT)) '+' (CA2 * UNT) '-' (SA2 * UTN ) ;
  78. UYY = (SA2 * UNN) '+' (CASA * (UNT '+' UTN)) '+' (CA2 *UTT) ;
  79. UXZ = (CA * UNZ) '-' (SA * UTZ) ;
  80. UYZ = (SA * UNZ) '+' (CA * UTZ) ;
  81. 'FINPROC' UXX UXY UXZ UYX UYY UYZ;
  82.  
  83. ***************************
  84. ***** DOMAINE SPATIAL ****
  85. ***************************
  86.  
  87. *
  88. **** Deux carre
  89. *
  90.  
  91. A1 = 0.0D0 0.0D0 0.0D0;
  92. A2 = 1.0D0 0.0D0 0.0D0;
  93. A3 = 2.0D0 0.0D0 0.0D0;
  94. A4 = 2.0D0 1.0D0 0.0D0;
  95. A5 = 1.0D0 1.0D0 0.0D0;
  96. A6 = 0.0D0 1.0D0 0.0D0;
  97.  
  98. L12 = A1 'DROIT' 1 A2;
  99. L23 = A2 'DROIT' 1 A3;
  100. L34 = A3 'DROIT' 1 A4;
  101. L45 = A4 'DROIT' 1 A5;
  102. L56 = A5 'DROIT' 1 A6;
  103. L61 = A6 'DROIT' 1 A1;
  104. L25 = A2 'DROIT' 1 A5;
  105.  
  106.  
  107. DOM100 = 'DALL' L12 L25 L56 L61
  108. 'PLANE';
  109. DOM200 = 'DALL' L23 L34 L45 ('INVERSE' L25)
  110. 'PLANE';
  111. DOM10 = DOM100 'VOLU' 1 'TRAN' (0.0 0.0 1.0);
  112. DOM20 = DOM200 'VOLU' 1 'TRAN' (0.0 0.0 1.0);
  113.  
  114. *
  115. *** Point face entre le deux carre, ou on fait les controlles
  116. *
  117.  
  118. P10 = 1.0 0.5 0.5;
  119.  
  120. DOM1 = DOM10 ;
  121. DOM2 = DOM20 ;
  122.  
  123. 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
  124. DOMTOT = DOM1 ET DOM2;
  125.  
  126. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  127.  
  128. $DOM1 = 'MODELISER' DOM1 'EULER';
  129. $DOM2 = 'MODELISER' DOM2 'EULER';
  130.  
  131. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  132.  
  133. TDOM1 = 'DOMA' $DOM1 'VF';
  134. TDOM2 = 'DOMA' $DOM2 'VF';
  135.  
  136. MDOM1 = TDOM1 . 'QUAF' ;
  137. MDOM2 = TDOM2 . 'QUAF' ;
  138. MDOMTOT = TDOMTOT . 'QUAF' ;
  139.  
  140. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  141. 'ELIMINATION' (MDOMTOT ET MDOM2) 0.0001 ;
  142.  
  143.  
  144. *
  145. **** TEST1: si les limiteurs sont nuls ou les gradients son nuls
  146. * le deuxieme ordre en espace 'et premier ordre
  147. * en temps degenere en premier ordre en espace
  148. *
  149.  
  150.  
  151. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 1.0D0;
  152.  
  153. PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 2.0D0;
  154.  
  155. VIT = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (4.0 5.0 3.0);
  156.  
  157. GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 1.5D0;
  158.  
  159.  
  160. *
  161. **** Limiteurs nuls, gradients non-nuls
  162. *
  163.  
  164.  
  165.  
  166. GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  167. 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  168. (1.0D0 1.0D0 1.0D0);
  169.  
  170.  
  171.  
  172. GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  173. 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  174. (1.0D0 1.0D0 1.0D0);
  175.  
  176.  
  177.  
  178. GRADVX = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  179. 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  180. (1.0D0 1.0D0 1.0D0);
  181.  
  182.  
  183. GRADVY = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  184. 'COMP' 'P2DX' 'P2DY' 'P2DZ'
  185. (1.0D0 1.0D0 1.0D0);
  186.  
  187. GRADVZ = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  188. 'COMP' 'P3DX' 'P3DY' 'P3DZ'
  189. (1.0D0 1.0D0 1.0D0);
  190.  
  191. GRADV = GRADVX 'ET' GRADVY 'ET' GRADVZ;
  192.  
  193.  
  194.  
  195. ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.0D0 ;
  196.  
  197.  
  198. ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.0D0 ;
  199.  
  200.  
  201. ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2' 'P3'
  202. (0.0 0.0D0 0.0D0) ;
  203.  
  204. *
  205.  
  206. ORDESP = 1;
  207. ORDTEM = 1;
  208.  
  209.  
  210. ROF1 VITF1 PF1 GAMF1 = 'PRET' 'PERFMONO' ORDESP ORDTEM
  211. $DOMTOT RN
  212. VIT
  213. PN
  214. GAMMA ;
  215.  
  216. 'SI' GRAPH;
  217. NN='VECT' (('DOMA' $DOMTOT 'TABLE').'MATROT')
  218. 1.0 'MX ' 'MY ' 'MZ ' ROUGE;
  219. TT='VECT' (('DOMA' $DOMTOT 'TABLE').'MATROT')
  220. 1.0 'UX ' 'UY ' 'UZ ' VERT;
  221. VV='VECT' (('DOMA' $DOMTOT 'TABLE').'MATROT')
  222. 1.0 'RX ' 'RY ' 'RZ ' BLEU;
  223. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' ('DOMA' $DOMTOT 'FACEL')
  224. 'ET' P10) 'TITRE' 'Domaine et FACEL';
  225. 'TRACER' (NN 'ET' TT 'ET' VV) DOMTOT;
  226. 'FINSI' ;
  227.  
  228.  
  229.  
  230. ORDESP = 2;
  231. ORDTEM = 1;
  232.  
  233.  
  234. ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM
  235. $DOMTOT RN GRADR ALR
  236. VIT GRADV ALV
  237. PN GRADP ALP
  238. GAMMA ;
  239.  
  240.  
  241.  
  242. ERRO = 'MAXIMUM' ('PROG'
  243. ('MAXIMUM' (ROF '-' ROF1) 'ABS')
  244. ('MAXIMUM' (PF '-' PF1) 'ABS')
  245. ('MAXIMUM' (VITF '-' VITF1) 'ABS')
  246. ) 'ABS' ;
  247.  
  248. 'SI' (ERRO > 1.0D-15);
  249. 'ERREUR' 5;
  250. 'FINSI' ;
  251.  
  252.  
  253.  
  254. *
  255. **** Limiteurs non-nuls, gradients nuls
  256. *
  257.  
  258.  
  259. GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  260. 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  261. (0.0D0 0.0D0 0.0D0);
  262.  
  263. GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  264. 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  265. (0.0D0 0.0D0 0.0D0);
  266.  
  267. GRADVX = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  268. 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  269. (0.0D0 0.0D0 0.0D0);
  270. GRADVY = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  271. 'COMP' 'P2DX' 'P2DY' 'P2DZ'
  272. (0.0D0 0.0D0 0.0D0);
  273. GRADVZ = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  274. 'COMP' 'P3DX' 'P3DY' 'P3DZ'
  275. (0.0D0 0.0D0 0.0D0);
  276. GRADV = GRADVX 'ET' GRADVY 'ET' GRADVZ;
  277.  
  278. ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.4D0 ;
  279.  
  280.  
  281. ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.8D0 ;
  282.  
  283.  
  284. ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
  285. 'COMP' 'P1' 'P2' 'P3'
  286. (0.9 0.9D0 0.9D0) ;
  287.  
  288.  
  289. ORDESP = 1;
  290. ORDTEM = 1;
  291.  
  292. ROF1 VITF1 PF1 GAMF1 = 'PRET' 'PERFMONO' ORDESP ORDTEM
  293. $DOMTOT RN
  294. VIT
  295. PN
  296. GAMMA ;
  297.  
  298. ORDESP = 2;
  299. ORDTEM = 1;
  300.  
  301. ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM
  302. $DOMTOT RN GRADR ALR
  303. VIT GRADV ALV
  304. PN GRADP ALP
  305. GAMMA ;
  306.  
  307.  
  308. ERRO = 'MAXIMUM' ('PROG'
  309. ('MAXIMUM' (ROF '-' ROF1) 'ABS')
  310. ('MAXIMUM' (PF '-' PF1) 'ABS')
  311. ('MAXIMUM' (VITF '-' VITF1) 'ABS')
  312. ) 'ABS' ;
  313.  
  314. 'SI' (ERRO > 1.0D-15);
  315. 'ERREUR' 5;
  316. 'FINSI' ;
  317.  
  318.  
  319. *
  320. **** TEST2 : Deuxieme ordre en espace, premiere ordre en
  321. * temps: invariance par rotation
  322. *
  323. * Il faut remarquer que:
  324. * densite, pression sont des tenseurs d'ordre 0,
  325. * donc leurs gradients sont des tenseurs d'ordre 1
  326. * la vitesse est un tenseur d'ordre 1,
  327. * donc sont gradient est un tenseur d'ordre 2
  328. *
  329. **** On considere un repere solidal avec la surface, (n,t,v),
  330. * et un repere (x,y,z) (en pratique on a toujours v=z)
  331. *
  332. *** Etats gauche et droite
  333. *
  334.  
  335. gam = 1.4D0;
  336.  
  337. rog = 1.00 ;
  338. grong = 1.0D0 ;
  339. grotg = 2.0D0 ;
  340. grozg = 1.5D0 ;
  341. pg = 2.0D0 ;
  342. gpng = 3.0D0 ;
  343. gptg = 4.0D0 ;
  344. gpzg = 5.0D0 ;
  345. ung = 3.0D0 ;
  346. gunng = 5.0D0 ;
  347. guntg = 6.0D0 ;
  348. gunzg = 7.0D0 ;
  349. utg = 4.0D0 ;
  350. gutng = 7.0D0 ;
  351. guttg = 8.0D0 ;
  352. gutzg = 7.0D0 ;
  353. uzg = 4.0D0 ;
  354. guzxg = 7.0D0 ;
  355. guzyg = 8.0D0 ;
  356. guzzg = 7.0D0 ;
  357.  
  358. rod = 1.50 ;
  359. grond = 1.5D0 ;
  360. grotd = 2.5D0 ;
  361. grozd = 2.0D0 ;
  362. pd = 2.5D0 ;
  363. gpnd = 3.5D0 ;
  364. gptd = 4.5D0 ;
  365. gpzd = 5.5D0 ;
  366. und = 3.5D0 ;
  367. gunnd = 5.5D0 ;
  368. guntd = 6.5D0 ;
  369. gunzd = 7.0D0 ;
  370. utd = 4.5D0 ;
  371. gutnd = 7.5D0 ;
  372. guttd = 8.5D0 ;
  373. gutzd = 7.0D0 ;
  374. uzd = 4.5D0 ;
  375. guzxd = 7.5D0 ;
  376. guzyd = 8.5D0 ;
  377. guzzd = 7.0D0 ;
  378.  
  379.  
  380. *
  381. *** Etats a gauche et a droite du point face P10
  382. *
  383. * ro, un, ut, p
  384.  
  385. ETATG = 'PROG' 1.25000 3.625 2.1875;
  386. ETATD = 'PROG' 1.12500 2.8125 2.28125;
  387.  
  388.  
  389. *
  390. *** Rotation
  391. *
  392.  
  393. ANGLE = 7.0D0;
  394. DANGLE = 85;
  395. ORIG = 0.0D0 0.0D0 0.0D0;
  396.  
  397.  
  398. 'REPETER' BL1 5;
  399.  
  400. ANGLE = ANGLE '+' DANGLE ;
  401.  
  402. uxg uyg = RUO1 ANGLE UNG UTG ;
  403. uxd uyd = RUO1 ANGLE UND UTD ;
  404.  
  405. groxg groyg = RUO1 ANGLE grong grotg;
  406. groxd groyd = RUO1 ANGLE grond grotd;
  407.  
  408. gpxg gpyg = RUO1 ANGLE gpng gptg;
  409. gpxd gpyd = RUO1 ANGLE gpnd gptd;
  410.  
  411. guxxg guxyg guxzg guyxg guyyg guyzg=
  412. RUO2 ANGLE gunng guntg gunzg gutng guttg gutzg;
  413. guxxd guxyd guxzd guyxd guyyd guyzd=
  414. RUO2 ANGLE gunnd guntd gunzd gutnd guttd gutzd;
  415.  
  416. 'MESSAGE' ;
  417. 'MESSAGE' (CHAIN 'Angle de rotation= ' ANGLE);
  418. 'MESSAGE' ;
  419.  
  420. DOM1 = DOM10 'TOURNER' ANGLE ORIG (0.0 0.0 1.0);
  421. DOM2 = DOM20 'TOURNER' ANGLE ORIG (0.0 0.0 1.0);
  422. P1 = P10 'TOURNER' ANGLE ORIG (0.0 0.0 1.0);
  423.  
  424. 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
  425. DOMTOT = DOM1 ET DOM2;
  426.  
  427. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  428. $DOM1 = 'MODELISER' DOM1 'EULER';
  429. $DOM2 = 'MODELISER' DOM2 'EULER';
  430. *
  431. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  432. TDOM1 = 'DOMA' $DOM1 'VF';
  433. TDOM2 = 'DOMA' $DOM2 'VF';
  434. *
  435. MDOM1 = TDOM1 . 'QUAF' ;
  436. MDOM2 = TDOM2 . 'QUAF' ;
  437. MDOMTOT = TDOMTOT . 'QUAF' ;
  438. *
  439. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  440. 'ELIMINATION' (MDOMTOT ET MDOM2) 0.0001 ;
  441. *
  442. **** Redefinition de P1 dans $DOMTOT 'FACE'
  443. *
  444. P1 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P1;
  445.  
  446. ***********************
  447. **** Les CHPOINTs ****
  448. ***********************
  449.  
  450. GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' gam;
  451.  
  452. RN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog;
  453. RN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod;;
  454. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RN1 'ET' RN2);
  455.  
  456.  
  457. VIT1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (uxg uyg uzg);
  458. VIT2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (uxd uyd uzd);
  459. VIT = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (VIT1 'ET' VIT2);
  460.  
  461. PN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' pg;
  462. PN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' pd;
  463. PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (PN1 'ET' PN2);
  464.  
  465.  
  466.  
  467. *
  468. **** On impose les gradients et le limiteurs
  469. *
  470.  
  471.  
  472. ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.5D0 ;
  473.  
  474.  
  475. ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.125D0 ;
  476.  
  477.  
  478. ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2' 'P3'
  479. (0.25 0.25D0 0.25D0) ;
  480.  
  481.  
  482. GRADR1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  483. (groxg groyg grozg) ;
  484.  
  485. GRADR2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  486. (groxd groyd grozd) ;
  487.  
  488. GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  489. (GRADR1 'ET' GRADR2);
  490.  
  491.  
  492.  
  493. GRADP1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  494. (gpxg gpyg gpzg) ;
  495.  
  496. GRADP2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  497. (gpxd gpyd gpzd) ;
  498.  
  499. GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  500. (GRADP1 'ET' GRADP2);
  501.  
  502.  
  503.  
  504. GRADVX1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  505. (guxxg guxyg guxzg);
  506.  
  507. GRADVX2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  508. (guxxd guxyd guxzd);
  509.  
  510. GRADVY1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY' 'P2DZ'
  511. (guyxg guyyg guyzg);
  512.  
  513. GRADVY2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY' 'P2DZ'
  514. (guyxd guyyd guyzd);
  515.  
  516. GRADVZ1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P3DX' 'P3DY' 'P3DZ'
  517. (guzxg guzyg guzzg);
  518.  
  519. GRADVZ2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P3DX' 'P3DY' 'P3DZ'
  520. (guzxd guzyd guzzd);
  521.  
  522. GRADVX = GRADVX1 'ET' GRADVX2 ;
  523. GRADVY = GRADVY1 'ET' GRADVY2 ;
  524. GRADVZ = GRADVZ1 'ET' GRADVZ2 ;
  525. GRADV = GRADVX 'ET' GRADVY 'ET' GRADVZ;
  526.  
  527. ORDESP = 2;
  528. ORDTEM = 1;
  529.  
  530. ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM
  531. $DOMTOT RN GRADR ALR
  532. VIT GRADV ALV
  533. PN GRADP ALP
  534. GAMMA ;
  535. 'SI' GRAPH;
  536. NN='VECT' (('DOMA' $DOMTOT 'TABLE').'MATROT')
  537. 1.0 'MX ' 'MY ' 'MZ ' ROUGE;
  538. TT='VECT' (('DOMA' $DOMTOT 'TABLE').'MATROT')
  539. 1.0 'UX ' 'UY ' 'UZ ' VERT;
  540. VV='VECT' (('DOMA' $DOMTOT 'TABLE').'MATROT')
  541. 1.0 'RX ' 'RY ' 'RZ ' BLEU;
  542. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' ('DOMA' $DOMTOT 'FACEL')
  543. 'ET' P1) 'TITRE' 'Domaine et FACEL';
  544. 'TRACER' (NN 'ET' TT 'ET' VV) DOMTOT;
  545. 'FINSI' ;
  546.  
  547.  
  548. *********************************************************
  549. *** Control des etats sur la surface qui contient P1 ****
  550. *********************************************************
  551.  
  552.  
  553. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  554. GEOP2 = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  555.  
  556.  
  557.  
  558. ROGEOP1 = 'REDU' ROF GEOP1;
  559. VGEOP1 = 'REDU' VITF GEOP1;
  560. PGEOP1 = 'REDU' PF GEOP1;
  561. GAMGEOP1 = 'REDU' GAMF GEOP1;
  562. REFGEOP1 = 'REDU' VITF GEOP2;
  563.  
  564.  
  565. rofag = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 1;
  566. rofad = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 3;
  567. unfag = 'EXTRAIRE' VGEOP1 'UN ' 1 1 1;
  568. unfad = 'EXTRAIRE' VGEOP1 'UN ' 1 1 3;
  569. utfag = 'EXTRAIRE' VGEOP1 'UT ' 1 1 1;
  570. utfad = 'EXTRAIRE' VGEOP1 'UT ' 1 1 3;
  571. uzfag = 'EXTRAIRE' VGEOP1 'UV ' 1 1 1;
  572. uzfad = 'EXTRAIRE' VGEOP1 'UV ' 1 1 3;
  573. pfag = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 1;
  574. pfad = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 3;
  575.  
  576.  
  577. *
  578. **** Orientation de la normal n de castem par raport a la
  579. * notre; t est par consequence
  580. *
  581.  
  582. NCOS = 'EXTRAIRE' REFGEOP1 'NX' 1 1 1;
  583. NSIN = 'EXTRAIRE' REFGEOP1 'NY' 1 1 1;
  584.  
  585. 'SI' (('ABS' NCOS) > ('ABS' NSIN));
  586. ORIENT = ('COS' ANGLE) '/' NCOS;
  587. 'SINON';
  588. ORIENT = ('SIN' ANGLE) '/' NSIN;
  589. 'FINSI' ;
  590.  
  591. ORIENT = 'SIGNE' 'FLOTTANT' ORIENT;
  592.  
  593.  
  594. *
  595. **** ORIENT = -1 -> Mon etat gauche est son etat droite
  596. *
  597.  
  598. 'SI' (ORIENT > 0);
  599.  
  600. ERRLIG = 'PROG' rofag (unfag '*' ORIENT) pfag ;
  601.  
  602. ERRLID = 'PROG' rofad (unfad '*' ORIENT) pfad ;
  603.  
  604. 'SINON' ;
  605.  
  606. ERRLID = 'PROG' rofag (unfag '*' ORIENT) pfag ;
  607.  
  608. ERRLIG = 'PROG' rofad (unfad '*' ORIENT) pfad ;
  609.  
  610. 'FINSI' ;
  611.  
  612. ERRO = 'MAXIMUM' ('PROG'
  613. ('MAXIMUM' (ETATG '-' ERRLIG) 'ABS')
  614. ('MAXIMUM' (ETATD '-' ERRLID) 'ABS')
  615. );
  616.  
  617. 'SI' (ERRO > 1.0D-14)
  618. 'MESSAGE' 'Ordre en espace = 2';
  619. 'MESSAGE' 'Ordre en temps = 1';
  620. 'MESSAGE' ERRO;
  621. 'ERREUR' 5 ;
  622. 'FINSI' ;
  623.  
  624. 'FIN' BL1;
  625.  
  626.  
  627. *
  628. **** TEST3: deuxieme ordre en espace et en temps
  629. * Invariance par rotation
  630. *
  631. *
  632. **** On considere un repere solidal avec la surface, (n,t),
  633. * et un repere (x,y)
  634. *
  635. *** Etats gauche et droite
  636. *
  637.  
  638. gam = 1.4D0;
  639.  
  640. rog = 1.00 ;
  641. grong = 1.0D0 ;
  642. grotg = 2.0D0 ;
  643. grozg = 1.5D0 ;
  644. pg = 2.0D0 ;
  645. gpng = 3.0D0 ;
  646. gptg = 4.0D0 ;
  647. gpzg = 5.0D0 ;
  648. ung = 3.0D0 ;
  649. gunng = 5.0D0 ;
  650. guntg = 6.0D0 ;
  651. gunzg = 7.0D0 ;
  652. utg = 4.0D0 ;
  653. gutng = 7.0D0 ;
  654. guttg = 8.0D0 ;
  655. gutzg = 0.0D0 ;
  656. uzg = 4.0D0 ;
  657. guzxg = 7.0D0 ;
  658. guzyg = 8.0D0 ;
  659. guzzg = 7.0D0 ;
  660.  
  661. rod = 1.50 ;
  662. grond = 1.5D0 ;
  663. grotd = 2.5D0 ;
  664. grozd = 2.0D0 ;
  665. pd = 2.5D0 ;
  666. gpnd = 3.5D0 ;
  667. gptd = 4.5D0 ;
  668. gpzd = 5.5D0 ;
  669. und = 3.5D0 ;
  670. gunnd = 5.5D0 ;
  671. guntd = 6.5D0 ;
  672. gunzd = 7.0D0 ;
  673. utd = 4.5D0 ;
  674. gutnd = 7.5D0 ;
  675. guttd = 8.5D0 ;
  676. gutzd = 7.0D0 ;
  677. uzd = 4.5D0 ;
  678. guzxd = 7.5D0 ;
  679. guzyd = 8.5D0 ;
  680. guzzd = 7.0D0 ;
  681.  
  682.  
  683. *
  684. *** Etats a gauche et a droite du point face P10
  685. *
  686. * ro, un, ut, p
  687.  
  688. ETATG = 'PROG' 1.25000 3.625 2.1875;
  689. ETATD = 'PROG' 1.12500 2.8125 2.28125;
  690.  
  691.  
  692. *
  693. *** Rotation
  694. *
  695.  
  696. ANGLE = 7.0D0;
  697. DANGLE = 85;
  698. ORIG = 0.0D0 0.0D0 0.0D0;
  699.  
  700.  
  701. 'REPETER' BL1 5;
  702.  
  703. ANGLE = ANGLE '+' DANGLE ;
  704.  
  705. uxg uyg = RUO1 ANGLE UNG UTG ;
  706. uxd uyd = RUO1 ANGLE UND UTD ;
  707.  
  708. groxg groyg = RUO1 ANGLE grong grotg;
  709. groxd groyd = RUO1 ANGLE grond grotd;
  710.  
  711. gpxg gpyg = RUO1 ANGLE gpng gptg;
  712. gpxd gpyd = RUO1 ANGLE gpnd gptd;
  713.  
  714. guxxg guxyg guxzg guyxg guyyg guyzg=
  715. RUO2 ANGLE gunng guntg gunzg gutng guttg gutzg;
  716. guxxd guxyd guxzd guyxd guyyd guyzd=
  717. RUO2 ANGLE gunnd guntd gunzd gutnd guttd gutzd;
  718.  
  719. 'MESSAGE' ;
  720. 'MESSAGE' (CHAIN 'Angle de rotation= ' ANGLE);
  721. 'MESSAGE' ;
  722.  
  723. DOM1 = DOM10 'TOURNER' ANGLE ORIG (0.0 0.0 1.0);
  724. DOM2 = DOM20 'TOURNER' ANGLE ORIG (0.0 0.0 1.0);
  725. P1 = P10 'TOURNER' ANGLE ORIG (0.0 0.0 1.0);
  726.  
  727. 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
  728. DOMTOT = DOM1 ET DOM2;
  729.  
  730. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  731.  
  732. $DOM1 = 'MODELISER' DOM1 'EULER';
  733. $DOM2 = 'MODELISER' DOM2 'EULER';
  734.  
  735. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  736.  
  737. TDOM1 = 'DOMA' $DOM1 'VF';
  738. TDOM2 = 'DOMA' $DOM2 'VF';
  739.  
  740. MDOM1 = TDOM1 . 'QUAF' ;
  741. MDOM2 = TDOM2 . 'QUAF' ;
  742. MDOMTOT = TDOMTOT . 'QUAF' ;
  743.  
  744. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  745. 'ELIMINATION' (MDOMTOT ET MDOM2) 0.0001 ;
  746.  
  747. FACTOT = 'DOMA' $DOMTOT 'FACEL' ;
  748.  
  749. *
  750. **** Redefinition de P1 dans $DOMTOT 'FACE'
  751. *
  752.  
  753. P1 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P1;
  754.  
  755.  
  756. ***********************
  757. **** Les CHPOINTs ****
  758. ***********************
  759.  
  760. GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' gam;
  761.  
  762. RN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog;
  763. RN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod;;
  764. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RN1 'ET' RN2);
  765.  
  766.  
  767. VIT1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (uxg uyg uzg);
  768. VIT2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (uxd uyd uzd);
  769. VIT = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (VIT1 'ET' VIT2);
  770.  
  771. PN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' pg;
  772. PN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' pd;
  773. PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (PN1 'ET' PN2);
  774.  
  775.  
  776.  
  777. *
  778. **** On impose les gradients et le limiteurs
  779. *
  780.  
  781.  
  782. ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.5D0 ;
  783.  
  784.  
  785. ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.125D0 ;
  786.  
  787.  
  788. ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2' 'P3'
  789. (0.25 0.25D0 0.25D0) ;
  790.  
  791.  
  792. GRADR1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  793. (groxg groyg grozg) ;
  794.  
  795. GRADR2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  796. (groxd groyd grozd) ;
  797.  
  798. GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  799. (GRADR1 'ET' GRADR2);
  800.  
  801.  
  802.  
  803. GRADP1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  804. (gpxg gpyg gpzg) ;
  805.  
  806. GRADP2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  807. (gpxd gpyd gpzd) ;
  808.  
  809. GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  810. (GRADP1 'ET' GRADP2);
  811.  
  812.  
  813.  
  814. GRADVX1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  815. (guxxg guxyg guxzg);
  816.  
  817. GRADVX2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  818. (guxxd guxyd guxzd);
  819.  
  820. GRADVY1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY' 'P2DZ'
  821. (guyxg guyyg guyzg);
  822.  
  823. GRADVY2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY' 'P2DZ'
  824. (guyxd guyyd guyzd);
  825.  
  826. GRADVZ1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P3DX' 'P3DY' 'P3DZ'
  827. (guzxg guzyg guzzg);
  828.  
  829. GRADVZ2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P3DX' 'P3DY' 'P3DZ'
  830. (guzxd guzyd guzzd);
  831.  
  832. GRADVX = GRADVX1 'ET' GRADVX2 ;
  833. GRADVY = GRADVY1 'ET' GRADVY2 ;
  834. GRADVZ = GRADVZ1 'ET' GRADVZ2 ;
  835. GRADV = GRADVX 'ET' GRADVY 'ET' GRADVZ;
  836.  
  837. ORDESP = 2;
  838. ORDTEM = 2;
  839.  
  840. *
  841. *** L = 1
  842. *
  843.  
  844. DTCFLG = (gam '*' pg) '/' rog ;
  845. DTCFLG = DTCFLG '**' 0.5 ;
  846. DTCFLG = DTCFLG '+' ung ;
  847. DTCFLG = 1 '/' DTCFLG ;
  848.  
  849. DTCFLD = (gam '*' pd) '/' rod ;
  850. DTCFLD = DTCFLD '**' 0.5 ;
  851. DTCFLD = DTCFLD '+' und ;
  852. DTCFLD = 1 '/' DTCFLD ;
  853.  
  854. DTCFLD = 'MINIMUM' ('PROG' DTCFLD DTCFLG);
  855.  
  856.  
  857. ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM
  858. $DOMTOT RN GRADR ALR
  859. VIT GRADV ALV
  860. PN GRADP ALP
  861. GAMMA (1D-3 '*' DTCFLD) ;
  862.  
  863. 'SI' GRAPH;
  864. NN='VECT' (('DOMA' $DOMTOT 'TABLE').'MATROT')
  865. 1.0 'MX ' 'MY ' 'MZ ' ROUGE;
  866. TT='VECT' (('DOMA' $DOMTOT 'TABLE').'MATROT')
  867. 1.0 'UX ' 'UY ' 'UZ ' VERT;
  868. VV='VECT' (('DOMA' $DOMTOT 'TABLE').'MATROT')
  869. 1.0 'RX ' 'RY ' 'RZ ' BLEU;
  870. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' ('DOMA' $DOMTOT 'FACEL')
  871. 'ET' P1) 'TITRE' 'Domaine et FACEL';
  872. 'TRACER' (NN 'ET' TT 'ET' VV) DOMTOT;
  873. 'FINSI' ;
  874.  
  875. *********************************************************
  876. *** Control des etats sur la surface qui contient P1 ****
  877. *********************************************************
  878.  
  879.  
  880. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  881. GEOP2 = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  882.  
  883.  
  884.  
  885. ROGEOP1 = 'REDU' ROF GEOP1;
  886. VGEOP1 = 'REDU' VITF GEOP1;
  887. PGEOP1 = 'REDU' PF GEOP1;
  888. GAMGEOP1 = 'REDU' GAMF GEOP1;
  889. REFGEOP1 = 'REDU' VITF GEOP2;
  890.  
  891.  
  892. rofag = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 1;
  893. rofad = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 3;
  894. unfag = 'EXTRAIRE' VGEOP1 'UN ' 1 1 1;
  895. unfad = 'EXTRAIRE' VGEOP1 'UN ' 1 1 3;
  896. utfag = 'EXTRAIRE' VGEOP1 'UT ' 1 1 1;
  897. utfad = 'EXTRAIRE' VGEOP1 'UT ' 1 1 3;
  898. uzfag = 'EXTRAIRE' VGEOP1 'UV ' 1 1 1;
  899. uzfad = 'EXTRAIRE' VGEOP1 'UV ' 1 1 3;
  900. pfag = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 1;
  901. pfad = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 3;
  902.  
  903.  
  904. *
  905. **** Orientation de la normal n de castem par raport a la
  906. * notre; t est par consequence
  907. *
  908.  
  909. NCOS = 'EXTRAIRE' REFGEOP1 'NX' 1 1 1;
  910. NSIN = 'EXTRAIRE' REFGEOP1 'NY' 1 1 1;
  911.  
  912. 'SI' (('ABS' NCOS) > ('ABS' NSIN));
  913. ORIENT = ('COS' ANGLE) '/' NCOS;
  914. 'SINON';
  915. ORIENT = ('SIN' ANGLE) '/' NSIN;
  916. 'FINSI' ;
  917.  
  918. ORIENT = 'SIGNE' 'FLOTTANT' ORIENT;
  919.  
  920.  
  921. *
  922. **** ORIENT = -1 -> Mon etat gauche est son etat droite
  923. *
  924.  
  925. 'SI' (ORIENT > 0);
  926.  
  927. ERRLIG = 'PROG' rofag (unfag '*' ORIENT) pfag ;
  928.  
  929. ERRLID = 'PROG' rofad (unfad '*' ORIENT) pfad ;
  930.  
  931. 'SINON' ;
  932.  
  933. ERRLID = 'PROG' rofag (unfag '*' ORIENT) pfag ;
  934.  
  935. ERRLIG = 'PROG' rofad (unfad '*' ORIENT) pfad ;
  936.  
  937. 'FINSI' ;
  938.  
  939. *
  940. **** 'SI' &BL1 > 1, on controle qui rien n'a change!
  941. *
  942.  
  943. 'SI' (&BL1 > 1);
  944. ERRO = 'MAXIMUM' ('PROG'
  945. ('MAXIMUM' (ETATG '-' ERRLIG) 'ABS')
  946. ('MAXIMUM' (ETATD '-' ERRLID) 'ABS')
  947. );
  948.  
  949.  
  950. 'SI' (ERRO > 1.0D-14)
  951. 'MESSAGE' 'Ordre en espace = 2';
  952. 'MESSAGE' 'Ordre en temps = 2';
  953. 'MESSAGE' ERRO ;
  954. 'ERREUR' 5 ;
  955. 'FINSI' ;
  956. 'FINSI' ;
  957.  
  958. ETATG = ERRLIG ;
  959. ETATD = ERRLID ;
  960.  
  961. 'FIN' BL1;
  962.  
  963. 'FIN' ;
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  

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