Télécharger pret2.dgibi

Retour à la liste

Numérotation des lignes :

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

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