Télécharger pret3D2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : pret3D2.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 multiespeces "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' 0 ;
  19. 'OPTION' 'TRAC' 'X' ;
  20.  
  21.  
  22. *
  23. *** GRAPH
  24. *
  25.  
  26. *GRAPH = VRAI ;
  27. GRAPH = FAUX ;
  28.  
  29. ***************************
  30. *** PROCEDURE RUO1 ****
  31. ***************************
  32. *
  33. *** Precedure pour la rotation d'un tenseur de premier
  34. * ordre autour de l'axe Oz
  35. *
  36.  
  37. 'DEBPROC' RUO1 ;
  38. 'ARGUMENT' ALPHA*'FLOTTANT' UN*'FLOTTANT' UT*'FLOTTANT';
  39.  
  40. SINA = 'SIN' ALPHA ;
  41. COSA = 'COS' ALPHA ;
  42.  
  43. UX = (UN * COSA ) '-' (UT * SINA) ;
  44. UY = (UN * SINA ) '+' (UT * COSA) ;
  45.  
  46.  
  47. 'FINPROC' UX UY;
  48.  
  49. ***************************
  50. *** PROCEDURE RUO2 ****
  51. ***************************
  52. *
  53. *** Precedure pour la rotation d'un tenseur de deuxieme
  54. * ordre autour de l'axe Oz
  55. *
  56.  
  57. 'DEBPROC' RUO2 ;
  58. 'ARGUMENT' ALPHA*'FLOTTANT'
  59. UNN*'FLOTTANT' UNT*'FLOTTANT' UNZ*'FLOTTANT'
  60. UTN*'FLOTTANT' UTT*'FLOTTANT' UTZ*'FLOTTANT';
  61. *
  62. **** (n,t) -> (x,y)
  63. *
  64. * n = CA x '+' SA y ;
  65. * t = -SA x '+' CA y ;
  66. *
  67. * UNT = DUN/DT
  68. *
  69.  
  70. SA = 'SIN' ALPHA ;
  71. CA = 'COS' ALPHA ;
  72. CA2 = CA * CA ;
  73. CASA = CA * SA ;
  74. SA2 = SA * SA;
  75.  
  76. UXX = (CA2 * UNN) '-' (CASA * (UNT '+' UTN)) '+' (SA2 *UTT) ;
  77. UYX = (CASA * (UNN '-' UTT)) '-' (SA2 * UNT) '+' (CA2 * UTN ) ;
  78. UXY = (CASA * (UNN '-' UTT)) '+' (CA2 * UNT) '-' (SA2 * UTN ) ;
  79. UYY = (SA2 * UNN) '+' (CASA * (UNT '+' UTN)) '+' (CA2 *UTT) ;
  80. UXZ = (CA * UNZ) '-' (SA * UTZ) ;
  81. UYZ = (SA * UNZ) '+' (CA * UTZ) ;
  82. 'FINPROC' UXX UXY UXZ UYX UYY UYZ;
  83.  
  84. ***************************
  85. ***** DOMAINE SPATIAL ****
  86. ***************************
  87. *
  88. **** Deux carre
  89. *
  90.  
  91.  
  92. A1 = 0.0D0 0.0D0 0.0D0;
  93. A2 = 1.0D0 0.0D0 0.0D0;
  94. A3 = 2.0D0 0.0D0 0.0D0;
  95. A4 = 2.0D0 1.0D0 0.0D0;
  96. A5 = 1.0D0 1.0D0 0.0D0;
  97. A6 = 0.0D0 1.0D0 0.0D0;
  98.  
  99. L12 = A1 'DROIT' 1 A2;
  100. L23 = A2 'DROIT' 1 A3;
  101. L34 = A3 'DROIT' 1 A4;
  102. L45 = A4 'DROIT' 1 A5;
  103. L56 = A5 'DROIT' 1 A6;
  104. L61 = A6 'DROIT' 1 A1;
  105. L25 = A2 'DROIT' 1 A5;
  106.  
  107.  
  108. DOM100 = 'DALL' L12 L25 L56 L61
  109. 'PLANE';
  110. DOM200 = 'DALL' L23 L34 L45 ('INVERSE' L25)
  111. 'PLANE';
  112. DOM10 = DOM100 'VOLU' 1 'TRAN' (0.0 0.0 1.0);
  113. DOM20 = DOM200 'VOLU' 1 'TRAN' (0.0 0.0 1.0);
  114.  
  115. *
  116. *** Point face entre le deux carre, ou on fait les controlles
  117. *
  118.  
  119. P10 = 1.0 0.5 0.5;
  120.  
  121. DOM1 = DOM10 ;
  122. DOM2 = DOM20 ;
  123.  
  124.  
  125. 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
  126. DOMTOT = DOM1 ET DOM2;
  127.  
  128. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  129.  
  130. $DOM1 = 'MODELISER' DOM1 'EULER';
  131. $DOM2 = 'MODELISER' DOM2 'EULER';
  132.  
  133. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  134.  
  135. TDOM1 = 'DOMA' $DOM1 'VF';
  136. TDOM2 = 'DOMA' $DOM2 'VF';
  137.  
  138. MDOM1 = TDOM1 . 'QUAF' ;
  139. MDOM2 = TDOM2 . 'QUAF' ;
  140. MDOMTOT = TDOMTOT . 'QUAF' ;
  141.  
  142. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  143. 'ELIMINATION' (MDOMTOT ET MDOM2) 0.0001 ;
  144.  
  145. 'SI' GRAPH;
  146. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' ('DOMA' $DOMTOT 'FACEL')
  147. 'ET' P10) 'TITRE' 'Domaine et FACEL';
  148. 'FINSI' ;
  149.  
  150.  
  151. *
  152. **** Proprietes de gaz
  153. *
  154.  
  155.  
  156. *
  157. *** GAZ: H_2, O_2
  158. *
  159. * CP, CV en J/Kg/K @ T = 3000
  160. *
  161.  
  162.  
  163. PGAZ = 'TABLE' ;
  164.  
  165. PGAZ . 'CP' = 'TABLE' ;
  166. PGAZ . 'CP' . 'H2 ' = .18729066D+05 ;
  167. PGAZ . 'CP' . 'O2 ' = .11886820D+04 ;
  168.  
  169.  
  170. PGAZ . 'CV' = 'TABLE' ;
  171. PGAZ . 'CV' . 'H2 ' = .14571861D+05 ;
  172. PGAZ . 'CV' . 'O2 ' = .92885670D+03 ;
  173.  
  174.  
  175. *
  176. **** Especes qui sont dans les equations d'Euler
  177. *
  178.  
  179. PGAZ . 'ESPEULE' = 'MOTS' 'H2 ';
  180.  
  181. *
  182. **** Espece qui n'y est pas
  183. *
  184.  
  185.  
  186. PGAZ . 'ESPNEULE' = 'O2 ';
  187.  
  188.  
  189.  
  190. rog = 1.0 ;
  191. rod = 2.0;
  192.  
  193. RN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog ;
  194. RN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod ;
  195. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RN1 'ET' RN2);
  196.  
  197. pg = 3.0 ;
  198. pd = 4.0 ;
  199.  
  200. PN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' pg ;
  201. PN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' pd ;
  202. PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (PN1 'ET' PN2);
  203.  
  204. ung = 5.0 ;
  205. utg = 6.0 ;
  206. uzg = 6.5 ;
  207. und = 7.0 ;
  208. utd = 8.0 ;
  209. uzd = 8.5 ;
  210.  
  211. VN1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (ung utg uzg) ;
  212. VN2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (und utd uzd) ;
  213. VN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (VN1 'ET' VN2) ;
  214.  
  215.  
  216. * YN
  217.  
  218. YG = 'PROG' 0.2 ;
  219. YD = 'PROG' 0.0 ;
  220.  
  221. 'REPETER' BL1 ('DIME' (PGAZ . 'ESPEULE') );
  222. CELCAR = 'EXTRAIRE' &BL1 (PGAZ . 'ESPEULE');
  223. YCELG = 'EXTRAIRE' &BL1 YG ;
  224. YCELD = 'EXTRAIRE' &BL1 YD ;
  225. YN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE'
  226. 'COMP' CELCAR ycelg ;
  227. YN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE'
  228. 'COMP' CELCAR yceld ;
  229. 'SI' (&BL1 'EGA' 1);
  230. YN = YN1 'ET' YN2;
  231. 'SINON' ;
  232. YN = YN 'ET' YN1 'ET' YN2 ;
  233. 'FINSI' ;
  234. 'FIN' BL1 ;
  235.  
  236. * GAMMA
  237.  
  238. *
  239. *** gamg
  240. *
  241.  
  242. YTOT = 0.0 ;
  243. CPTOT = 0.0 ;
  244. CVTOT = 0.0 ;
  245.  
  246. 'REPETER' BL1 ('DIME' (PGAZ . 'ESPEULE') );
  247. CELCAR = 'EXTRAIRE' &BL1 (PGAZ . 'ESPEULE');
  248. CPCEL = PGAZ . 'CP' . CELCAR ;
  249. CVCEL = PGAZ . 'CV' . CELCAR ;
  250. YCEL = 'EXTRAIRE' &BL1 yg ;
  251. YTOT = YTOT '+' YCEL ;
  252. CPTOT = CPTOT '+' (YCEL '*' CPCEL) ;
  253. CVTOT = CVTOT '+' (YCEL '*' CVCEL) ;
  254. 'FIN' BL1 ;
  255.  
  256. CELCAR = (PGAZ . 'ESPNEULE') ;
  257. CPCEL = PGAZ . 'CP' . CELCAR ;
  258. CVCEL = PGAZ . 'CV' . CELCAR ;
  259. YCEL = 1.0D0 '-' YTOT;
  260. CPTOT = CPTOT '+' (YCEL '*' CPCEL) ;
  261. CVTOT = CVTOT '+' (YCEL '*' CVCEL) ;
  262.  
  263. gamg = CPTOT '/' CVTOT ;
  264.  
  265. *
  266. *** gamd
  267. *
  268.  
  269. YTOT = 0.0 ;
  270. CPTOT = 0.0 ;
  271. CVTOT = 0.0 ;
  272.  
  273. 'REPETER' BL1 ('DIME' (PGAZ . 'ESPEULE') );
  274. CELCAR = 'EXTRAIRE' &BL1 (PGAZ . 'ESPEULE');
  275. CPCEL = PGAZ . 'CP' . CELCAR ;
  276. CVCEL = PGAZ . 'CV' . CELCAR ;
  277. YCEL = 'EXTRAIRE' &BL1 yd ;
  278. YTOT = YTOT '+' YCEL ;
  279. CPTOT = CPTOT '+' (YCEL '*' CPCEL) ;
  280. CVTOT = CVTOT '+' (YCEL '*' CVCEL) ;
  281. 'FIN' BL1 ;
  282.  
  283. CELCAR = (PGAZ . 'ESPNEULE') ;
  284. CPCEL = PGAZ . 'CP' . CELCAR ;
  285. CVCEL = PGAZ . 'CV' . CELCAR ;
  286. YCEL = 1.0D0 '-' YTOT;
  287. CPTOT = CPTOT '+' (YCEL '*' CPCEL) ;
  288. CVTOT = CVTOT '+' (YCEL '*' CVCEL) ;
  289.  
  290. gamd = CPTOT '/' CVTOT ;
  291.  
  292.  
  293. GAM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' gamg ;
  294. GAM2 = 'KCHT '$DOM2 'SCAL' 'CENTRE' gamd ;
  295. GAMN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (GAM1 'ET' GAM2);
  296.  
  297.  
  298. *
  299. *** Etats gauche et droit
  300. *
  301.  
  302. ETATG = YG 'ET' ('PROG' rog ung pg gamg) ;
  303. ETATD = YD 'ET' ('PROG' rod und pd gamd) ;
  304.  
  305. *
  306. *** TEST1: premier ordre en espace, premier ordre en temps
  307. *
  308.  
  309. IE = 1;
  310. IT = 1;
  311.  
  312. RNF VNF PNF YNF GAMF = 'PRET' 'PERFMULT' IE IT $DOMTOT
  313. RN VN PN YN GAMN ;
  314.  
  315.  
  316.  
  317.  
  318. *********************************************************
  319. *** Control des etats sur la surface qui contient P1 ****
  320. *********************************************************
  321.  
  322. P10 = 1.0 0.5 0.5;
  323. P1 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P10;
  324.  
  325. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  326. GEOP2 = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  327.  
  328.  
  329.  
  330. ROGEOP1 = 'REDU' RNF GEOP1;
  331. VGEOP1 = 'REDU' VNF GEOP1;
  332. PGEOP1 = 'REDU' PNF GEOP1;
  333. YGEOP1 = 'REDU' YNF GEOP1;
  334. GAMGEOP1 = 'REDU' GAMF GEOP1;
  335. REFGEOP1 = 'REDU' VNF GEOP2;
  336.  
  337.  
  338. rofag = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 1;
  339. rofad = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 3;
  340. unfag = 'EXTRAIRE' VGEOP1 'UN ' 1 1 1;
  341. unfad = 'EXTRAIRE' VGEOP1 'UN ' 1 1 3;
  342. utfag = 'EXTRAIRE' VGEOP1 'UT ' 1 1 1;
  343. utfad = 'EXTRAIRE' VGEOP1 'UT ' 1 1 3;
  344. pfag = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 1;
  345. pfad = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 3;
  346. gamfag = 'EXTRAIRE' GAMGEOP1 'SCAL' 1 1 1;
  347. gamfad = 'EXTRAIRE' GAMGEOP1 'SCAL' 1 1 3;
  348.  
  349. YFAG = 'PROG' ;
  350. YFAD = 'PROG' ;
  351. 'REPETER' BL1 ('DIME' PGAZ . 'ESPEULE');
  352. CELLCH = 'EXTRAIRE' &BL1 (PGAZ . 'ESPEULE');
  353. YCEL = 'EXTRAIRE' YGEOP1 CELLCH 1 1 1;
  354. YFAG = YFAG 'ET' ('PROG' YCEL);
  355. YCEL = 'EXTRAIRE' YGEOP1 CELLCH 1 1 3;
  356. YFAD = YFAD 'ET' ('PROG' YCEL);
  357. 'FIN' BL1;
  358.  
  359. *
  360. **** Orientation de la normal n de castem par raport a la
  361. * notre; t est par consequence
  362. *
  363.  
  364. NCOS = 'EXTRAIRE' REFGEOP1 'NX' 1 1 1;
  365. NSIN = 'EXTRAIRE' REFGEOP1 'NY' 1 1 1;
  366.  
  367. ORIENT = 1.0 '/' NCOS;
  368. ORIENT = 'SIGNE' 'FLOTTANT' ORIENT;
  369.  
  370.  
  371. *
  372. **** ORIENT = -1 -> Mon etat gauche est son etat droite
  373. *
  374.  
  375. 'SI' (ORIENT > 0);
  376.  
  377. ERRLIG = YFAG 'ET' ('PROG' rofag (unfag '*' ORIENT) pfag gamfag) ;
  378.  
  379. ERRLID = YFAD 'ET' ('PROG' rofad (unfad '*' ORIENT) pfad gamfad) ;
  380.  
  381. 'SINON' ;
  382.  
  383.  
  384. ERRLID = YFAG 'ET' ('PROG' rofag (unfag '*' ORIENT) pfag gamfag) ;
  385.  
  386. ERRLIG = YFAD 'ET' ('PROG' rofad (unfad '*' ORIENT) pfad gamfad) ;
  387.  
  388. 'FINSI' ;
  389.  
  390. ERRO = 'MAXIMUM' ('PROG'
  391. ('MAXIMUM' (ETATG '-' ERRLIG) 'ABS')
  392. ('MAXIMUM' (ETATD '-' ERRLID) 'ABS')
  393. );
  394.  
  395.  
  396. 'SI' (ERRO > 1.0D-14)
  397. 'ERREUR' 5 ;
  398. 'FINSI' ;
  399.  
  400.  
  401.  
  402.  
  403. *
  404. *** TEST2: deuxieme ordre en espace, deuxieme ordre en temps
  405. *
  406. * Invariance par rotation
  407. *
  408.  
  409. * Les gradients
  410.  
  411. rog = 1.00 ;
  412. grong = 1.0D0 ;
  413. grotg = 2.0D0 ;
  414. grozg = 1.5D0 ;
  415. pg = 2.0D0 ;
  416. gpng = 3.0D0 ;
  417. gptg = 4.0D0 ;
  418. gpzg = 5.0D0 ;
  419. ung = 3.0D0 ;
  420. gunng = 5.0D0 ;
  421. guntg = 6.0D0 ;
  422. gunzg = 7.0D0 ;
  423. utg = 4.0D0 ;
  424. gutng = 7.0D0 ;
  425. guttg = 8.0D0 ;
  426. gutzg = 7.0D0 ;
  427. uzg = 4.0D0 ;
  428. guzxg = 7.0D0 ;
  429. guzyg = 8.0D0 ;
  430. guzzg = 7.0D0 ;
  431. gyng = 0.3 ;
  432. gytg = 0.2 ;
  433. gyzg = 0.1 ;
  434.  
  435. rod = 1.50 ;
  436. grond = 1.5D0 ;
  437. grotd = 2.5D0 ;
  438. grozd = 2.0D0 ;
  439. pd = 2.5D0 ;
  440. gpnd = 3.5D0 ;
  441. gptd = 4.5D0 ;
  442. gpzd = 5.5D0 ;
  443. und = 3.5D0 ;
  444. gunnd = 5.5D0 ;
  445. guntd = 6.5D0 ;
  446. gunzd = 7.0D0 ;
  447. utd = 4.5D0 ;
  448. gutnd = 7.5D0 ;
  449. guttd = 8.5D0 ;
  450. gutzd = 7.0D0 ;
  451. uzd = 4.5D0 ;
  452. guzxd = 7.5D0 ;
  453. guzyd = 8.5D0 ;
  454. guzzd = 7.0D0 ;
  455. gynd = 0.13 ;
  456. gytd = 0.12 ;
  457. gyzd = 0.11 ;
  458.  
  459.  
  460. *
  461. *** Rotation
  462. *
  463.  
  464. ANGLE = 7.0D0;
  465. DANGLE = 85;
  466. ORIG = 0.0D0 0.0D0 0.0D0;
  467.  
  468.  
  469. 'REPETER' BL1 5;
  470.  
  471. ANGLE = ANGLE '+' DANGLE ;
  472.  
  473. uxg uyg = RUO1 ANGLE UNG UTG ;
  474. uxd uyd = RUO1 ANGLE UND UTD ;
  475.  
  476. groxg groyg = RUO1 ANGLE grong grotg;
  477. groxd groyd = RUO1 ANGLE grond grotd;
  478.  
  479. gpxg gpyg = RUO1 ANGLE gpng gptg;
  480. gpxd gpyd = RUO1 ANGLE gpnd gptd;
  481.  
  482. gyxg gyyg = RUO1 ANGLE gyng gytg;
  483. gyxd gyyd = RUO1 ANGLE gynd gytd;
  484.  
  485. guxxg guxyg guxzg guyxg guyyg guyzg=
  486. RUO2 ANGLE gunng guntg gunzg gutng guttg gutzg;
  487. guxxd guxyd guxzd guyxd guyyd guyzd=
  488. RUO2 ANGLE gunnd guntd gunzd gutnd guttd gutzd;
  489.  
  490. 'MESSAGE' ;
  491. 'MESSAGE' (CHAIN 'Angle de rotation= ' ANGLE);
  492. 'MESSAGE' ;
  493.  
  494. DOM1 = DOM10 'TOURNER' ANGLE ORIG (0.0 0.0 1.0);
  495. DOM2 = DOM20 'TOURNER' ANGLE ORIG (0.0 0.0 1.0);
  496. P1 = P10 'TOURNER' ANGLE ORIG (0.0 0.0 1.0);
  497.  
  498. 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
  499. DOMTOT = DOM1 ET DOM2;
  500.  
  501. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  502.  
  503. $DOM1 = 'MODELISER' DOM1 'EULER';
  504. $DOM2 = 'MODELISER' DOM2 'EULER';
  505.  
  506. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  507.  
  508. TDOM1 = 'DOMA' $DOM1 'VF';
  509. TDOM2 = 'DOMA' $DOM2 'VF';
  510.  
  511. MDOM1 = TDOM1 . 'QUAF' ;
  512. MDOM2 = TDOM2 . 'QUAF' ;
  513. MDOMTOT = TDOMTOT . 'QUAF' ;
  514.  
  515. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  516. 'ELIMINATION' (MDOMTOT ET MDOM2) 0.0001 ;
  517.  
  518. 'SI' GRAPH;
  519. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' ('DOMA' $DOMTOT 'FACEL')
  520. 'ET' P1) 'TITRE' 'Domaine et FACEL';
  521. 'FINSI' ;
  522.  
  523. *
  524. **** Redefinition de P1 dans $DOMTOT 'FACE'
  525. *
  526.  
  527. P1 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P1;
  528.  
  529.  
  530. ***********************
  531. **** Les CHPOINTs ****
  532. ***********************
  533.  
  534. GAM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' gamg;
  535. GAM2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' gamd;
  536. GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (GAM1 'ET' GAM2);
  537.  
  538. RN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog;
  539. RN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod;;
  540. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RN1 'ET' RN2);
  541.  
  542.  
  543. VIT1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (uxg uyg uzg);
  544. VIT2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (uxd uyd uzd);
  545. VIT = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (VIT1 'ET' VIT2);
  546.  
  547. PN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' pg;
  548. PN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' pd;
  549. PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (PN1 'ET' PN2);
  550.  
  551. YN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' 'COMP' 'H2 '
  552. ('EXTRAIRE' 1 yg) ;
  553. YN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' 'COMP' 'H2 '
  554. ('EXTRAIRE' 1 yd) ;
  555. YN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'H2 '
  556. (YN1 'ET' YN2);
  557.  
  558.  
  559. *
  560. **** On impose les gradients et le limiteurs
  561. *
  562.  
  563.  
  564. ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.5D0 ;
  565.  
  566.  
  567. ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.125D0 ;
  568.  
  569.  
  570. ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2' 'P3'
  571. (0.25 0.25D0 0.25) ;
  572.  
  573. ALY = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1'
  574. 0.1 ;
  575.  
  576.  
  577. GRADR1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  578. (groxg groyg grozg) ;
  579.  
  580. GRADR2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  581. (groxd groyd grozd) ;
  582.  
  583. GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  584. (GRADR1 'ET' GRADR2);
  585.  
  586.  
  587.  
  588. GRADP1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  589. (gpxg gpyg gpzg) ;
  590.  
  591. GRADP2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  592. (gpxd gpyd gpzd) ;
  593.  
  594. GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  595. (GRADP1 'ET' GRADP2);
  596.  
  597.  
  598.  
  599. GRADY1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  600. (gyxg gyyg gyzg) ;
  601.  
  602. GRADY2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  603. (gyxd gyyd gyzd) ;
  604.  
  605. GRADY = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  606. (GRADY1 'ET' GRADY2);
  607.  
  608.  
  609. GRADVX1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  610. (guxxg guxyg guxzg);
  611.  
  612. GRADVX2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY' 'P1DZ'
  613. (guxxd guxyd guxzd);
  614.  
  615. GRADVY1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY' 'P2DZ'
  616. (guyxg guyyg guyzg);
  617.  
  618. GRADVY2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY' 'P2DZ'
  619. (guyxd guyyd guyzd);
  620.  
  621. GRADVZ1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P3DX' 'P3DY' 'P3DZ'
  622. (guzxg guzyg guzzg);
  623.  
  624. GRADVZ2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P3DX' 'P3DY' 'P3DZ'
  625. (guzxd guzyd guzzd);
  626.  
  627. GRADVX = GRADVX1 'ET' GRADVX2 ;
  628. GRADVY = GRADVY1 'ET' GRADVY2 ;
  629. GRADVZ = GRADVZ1 'ET' GRADVZ2 ;
  630. GRADV = GRADVX 'ET' GRADVY 'ET' GRADVZ ;
  631.  
  632. ORDESP = 2;
  633. ORDTEM = 2;
  634.  
  635. *
  636. *** L = 1
  637. *
  638.  
  639. DTCFLG = (gamg '*' pg) '/' rog ;
  640. DTCFLG = DTCFLG '**' 0.5 ;
  641. DTCFLG = DTCFLG '+' ung ;
  642. DTCFLG = 1 '/' DTCFLG ;
  643.  
  644. DTCFLD = (gamd '*' pd) '/' rod ;
  645. DTCFLD = DTCFLD '**' 0.5 ;
  646. DTCFLD = DTCFLD '+' und ;
  647. DTCFLD = 1 '/' DTCFLD ;
  648.  
  649. DTCFLD = 'MINIMUM' ('PROG' DTCFLD DTCFLG);
  650.  
  651.  
  652. ROF VITF PF YF GAMF = 'PRET' 'PERFMULT' ORDESP ORDTEM
  653. $DOMTOT PGAZ RN GRADR ALR
  654. VIT GRADV ALV
  655. PN GRADP ALP
  656. YN GRADY ALY
  657. GAMMA (1D-3 '*' DTCFLD) ;
  658.  
  659.  
  660. *********************************************************
  661. *** Control des etats sur la surface qui contient P1 ****
  662. *********************************************************
  663.  
  664.  
  665. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  666. GEOP2 = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  667.  
  668.  
  669.  
  670. ROGEOP1 = 'REDU' ROF GEOP1;
  671. VGEOP1 = 'REDU' VITF GEOP1;
  672. PGEOP1 = 'REDU' PF GEOP1;
  673. YGEOP1 = 'REDU' YF GEOP1;
  674. GAMGEOP1 = 'REDU' GAMF GEOP1;
  675. REFGEOP1 = 'REDU' VITF GEOP2;
  676.  
  677.  
  678. rofag = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 1;
  679. rofad = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 3;
  680. unfag = 'EXTRAIRE' VGEOP1 'UN ' 1 1 1;
  681. unfad = 'EXTRAIRE' VGEOP1 'UN ' 1 1 3;
  682. utfag = 'EXTRAIRE' VGEOP1 'UT ' 1 1 1;
  683. utfad = 'EXTRAIRE' VGEOP1 'UT ' 1 1 3;
  684. pfag = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 1;
  685. pfad = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 3;
  686. yfag = 'EXTRAIRE' YGEOP1 'H2 ' 1 1 1;
  687. yfad = 'EXTRAIRE' YGEOP1 'H2 ' 1 1 3;
  688.  
  689.  
  690. *
  691. **** Orientation de la normal n de castem par raport a la
  692. * notre; t est par consequence
  693. *
  694.  
  695. NCOS = 'EXTRAIRE' REFGEOP1 'NX' 1 1 1;
  696. NSIN = 'EXTRAIRE' REFGEOP1 'NY' 1 1 1;
  697.  
  698. 'SI' (('ABS' NCOS) > ('ABS' NSIN));
  699. ORIENT = ('COS' ANGLE) '/' NCOS;
  700. 'SINON';
  701. ORIENT = ('SIN' ANGLE) '/' NSIN;
  702. 'FINSI' ;
  703.  
  704. ORIENT = 'SIGNE' 'FLOTTANT' ORIENT;
  705.  
  706.  
  707. *
  708. **** ORIENT = -1 -> Mon etat gauche est son etat droite
  709. *
  710.  
  711. 'SI' (ORIENT > 0);
  712.  
  713. ERRLIG = 'PROG' rofag (unfag '*' ORIENT) pfag yfag;
  714.  
  715. ERRLID = 'PROG' rofad (unfad '*' ORIENT) pfad yfad;
  716.  
  717. 'SINON' ;
  718.  
  719. ERRLID = 'PROG' rofag (unfag '*' ORIENT) pfag yfag;
  720.  
  721. ERRLIG = 'PROG' rofad (unfad '*' ORIENT) pfad yfad;
  722.  
  723. 'FINSI' ;
  724.  
  725. *
  726. **** 'SI' &BL1 > 1, on controle qui rien n'a change!
  727. *
  728.  
  729. 'SI' (&BL1 > 1);
  730. ERRO = 'MAXIMUM' ('PROG'
  731. ('MAXIMUM' (ETATG '-' ERRLIG) 'ABS')
  732. ('MAXIMUM' (ETATD '-' ERRLID) 'ABS')
  733. );
  734.  
  735.  
  736. 'SI' (ERRO > 1.0D-14)
  737. 'MESSAGE' 'Ordre en espace = 2';
  738. 'MESSAGE' 'Ordre en temps = 2';
  739. 'ERREUR' 5 ;
  740. 'FINSI' ;
  741. 'FINSI' ;
  742.  
  743. ETATG = ERRLIG ;
  744. ETATD = ERRLID ;
  745.  
  746. 'FIN' BL1;
  747.  
  748. 'FIN' ;
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  

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