Télécharger pret_ther3.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : pret_ther3.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 "thermally perfect" mono-espece ****
  11. **** Differents cas tests ****
  12. **** Interieur ****
  13. **** ****
  14. **** A. BECCANTINI DRN/DMT/SEMT/TTMF DECEMBRE 1998 ****
  15. **********************************************************************
  16.  
  17. 'OPTION' 'DIME' 2 ;
  18. 'OPTION' 'ELEM' QUA4 ;
  19. 'OPTION' 'ECHO' 0 ;
  20. 'OPTION' 'TRAC' 'X' ;
  21.  
  22. *
  23. *** GRAPH
  24. *
  25.  
  26. * GRAPH = VRAI ;
  27. GRAPH = FAUX ;
  28.  
  29.  
  30. ***************************
  31. *** PROCEDURE RUO1 ****
  32. ***************************
  33. *
  34. *** Precedure pour la rotation d'un tenseur de premier
  35. * ordre
  36. *
  37.  
  38. 'DEBPROC' RUO1 ;
  39. 'ARGUMENT' ALPHA*'FLOTTANT' UN*'FLOTTANT' UT*'FLOTTANT';
  40.  
  41. SINA = 'SIN' ALPHA ;
  42. COSA = 'COS' ALPHA ;
  43.  
  44. UX = (UN * COSA ) '-' (UT * SINA) ;
  45. UY = (UN * SINA ) '+' (UT * COSA) ;
  46.  
  47.  
  48. 'FINPROC' UX UY;
  49.  
  50. ***************************
  51. *** PROCEDURE RUO2 ****
  52. ***************************
  53. *
  54. *** Precedure pour la rotation d'un tenseur de deuxieme
  55. * ordre
  56. *
  57.  
  58. 'DEBPROC' RUO2 ;
  59. 'ARGUMENT' ALPHA*'FLOTTANT' UNN*'FLOTTANT' UNT*'FLOTTANT'
  60. UTN*'FLOTTANT' UTT*'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.  
  81. 'FINPROC' UXX UXY UYX UYY;
  82.  
  83. *******************************************************
  84. **** Cas mono-especes : la table proprieté de gaz ****
  85. *******************************************************
  86.  
  87. PGAZ = 'TABLE' ;
  88.  
  89. *
  90. **** Especes qui sont dans les equations d'Euler
  91. *
  92.  
  93. *
  94. **** Espece qui n'y est pas
  95. *
  96.  
  97.  
  98. PGAZ . 'ESPNEULE' = 'O2 ';
  99.  
  100. *
  101.  
  102. PGAZ . 'O2 ' = 'TABLE' ;
  103.  
  104. *
  105. **** R (J/Kg/K)
  106. *
  107.  
  108. PGAZ . 'O2 ' . 'R' = 259.8 ;
  109.  
  110.  
  111. *
  112. **** Regressions polynomials
  113. *
  114.  
  115. PGAZ . 'O2 ' . 'A' = 'PROG' 575.012333 0.0 0.0 0.0 0. ;
  116.  
  117. *
  118. **** "Enthalpies" (ou energies) de formations a OK (J/Kg)
  119. * Note: ce sont des entites numeriques
  120. * h_i = h_i(T0) '-' \int_0^{T0} cp_i(x) dx =
  121. * h_i(T0) '-' (\int_0^{T0} cv_i(x) dx '+' R_i * T0)
  122. *
  123.  
  124. PGAZ . 'O2 ' . 'H0K' = -2.634D5 ;
  125.  
  126.  
  127. ***************************
  128. ***** DOMAINE SPATIAL ****
  129. ***************************
  130.  
  131. *
  132. **** Deux carre
  133. *
  134.  
  135. A1 = 0.0D0 0.0D0 ;
  136. A2 = 1.0D0 0.0D0 ;
  137. A3 = 2.0D0 0.0D0 ;
  138. A4 = 2.0D0 1.0D0 ;
  139. A5 = 1.0D0 1.0D0 ;
  140. A6 = 0.0D0 1.0D0 ;
  141.  
  142. L12 = A1 'DROIT' 1 A2 ;
  143. L23 = A2 'DROIT' 1 A3 ;
  144. L34 = A3 'DROIT' 1 A4 ;
  145. L45 = A4 'DROIT' 1 A5 ;
  146. L56 = A5 'DROIT' 1 A6 ;
  147. L61 = A6 'DROIT' 1 A1 ;
  148. L25 = A2 'DROIT' 1 A5 ;
  149.  
  150.  
  151. DOM10 = 'DALL' L12 L25 L56 L61
  152. 'PLANE';
  153. DOM20 = 'DALL' L23 L34 L45 ('INVERSE' L25)
  154. 'PLANE';
  155.  
  156. *
  157. *** Point face entre le deux carre, ou on fait les controlles
  158. *
  159.  
  160. P10 = 1.0 0.5;
  161.  
  162. DOM1 = DOM10 ;
  163. DOM2 = DOM20 ;
  164. DOMTOT = DOM1 'ET' DOM2 ;
  165. 'ELIMINATION' DOMTOT 0.0001 ;
  166.  
  167. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  168.  
  169. $DOM1 = 'MODELISER' DOM1 'EULER';
  170. $DOM2 = 'MODELISER' DOM2 'EULER';
  171.  
  172. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  173.  
  174. TDOM1 = 'DOMA' $DOM1 'VF';
  175. TDOM2 = 'DOMA' $DOM2 'VF';
  176.  
  177. MDOM1 = TDOM1 . 'QUAF' ;
  178. MDOM2 = TDOM2 . 'QUAF' ;
  179. MDOMTOT = TDOMTOT . 'QUAF' ;
  180.  
  181. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  182. 'ELIMINATION' (MDOMTOT ET MDOM2) 0.0001 ;
  183.  
  184. 'SI' GRAPH;
  185. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' ('DOMA' $DOMTOT 'FACEL')
  186. 'ET' P10) 'TITRE' 'Domaine et FACEL';
  187. 'FINSI' ;
  188.  
  189.  
  190. *
  191. **** TEST1: si les limiteurs sont nuls ou les gradients son nuls
  192. * le deuxieme ordre en espace 'et premier ordre
  193. * en temps degenere en premier ordre en espace
  194. *
  195.  
  196.  
  197. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 1.0D0;
  198.  
  199. PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 2.0D0;
  200.  
  201. VIT = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (4.0 5.0);
  202.  
  203. GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 1.5D0;
  204.  
  205.  
  206. *
  207. **** Limiteurs nuls, gradients non-nuls
  208. *
  209.  
  210.  
  211.  
  212. GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  213. (1.0D0 1.0D0);
  214.  
  215.  
  216.  
  217. GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  218. (1.0D0 1.0D0);
  219.  
  220.  
  221.  
  222. GRADVX = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  223. (1.0D0 1.0D0);
  224.  
  225.  
  226. GRADVY = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
  227. (1.0D0 1.0D0);
  228.  
  229. GRADV = GRADVX 'ET' GRADVY ;
  230.  
  231.  
  232.  
  233. ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.0D0 ;
  234.  
  235.  
  236. ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.0D0 ;
  237.  
  238.  
  239. ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2'
  240. (0.0 0.0D0) ;
  241.  
  242.  
  243. *
  244.  
  245. ORDESP = 1;
  246. ORDTEM = 1;
  247.  
  248.  
  249. ROF1 VITF1 PF1 = 'PRET' 'PERFTEMP' ORDESP ORDTEM
  250. $DOMTOT PGAZ RN VIT PN ;
  251.  
  252.  
  253.  
  254. ORDESP = 2;
  255. ORDTEM = 1;
  256.  
  257.  
  258. ROF VITF PF = 'PRET' 'PERFTEMP' ORDESP ORDTEM
  259. $DOMTOT PGAZ RN GRADR ALR
  260. VIT GRADV ALV
  261. PN GRADP ALP ;
  262. ERRO = 'MAXIMUM' ('PROG'
  263. ('MAXIMUM' (ROF '-' ROF1) 'ABS')
  264. ('MAXIMUM' (PF '-' PF1) 'ABS')
  265. ('MAXIMUM' (VITF '-' VITF1) 'ABS') );
  266.  
  267. 'SI' (ERRO > 1.0D-15);
  268. 'ERREUR' 5;
  269. 'FINSI' ;
  270.  
  271.  
  272.  
  273. *
  274. **** Limiteurs non-nuls, gradients nuls
  275. *
  276.  
  277.  
  278. GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  279. (0.0D0 0.0D0);
  280.  
  281. GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  282. (0.0D0 0.0D0);
  283.  
  284. GRADVX = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  285. (0.0D0 0.0D0);
  286. GRADVY = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
  287. (0.0D0 0.0D0);
  288. GRADV = GRADVX 'ET' GRADVY ;
  289.  
  290. ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.4D0 ;
  291.  
  292.  
  293. ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.8D0 ;
  294.  
  295.  
  296. ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2'
  297. (0.9 0.9D0) ;
  298.  
  299. ORDESP = 1;
  300. ORDTEM = 1;
  301.  
  302. ROF1 VITF1 PF1 = 'PRET' 'PERFTEMP' ORDESP ORDTEM
  303. $DOMTOT PGAZ RN VIT PN ;
  304.  
  305. ORDESP = 2;
  306. ORDTEM = 1;
  307.  
  308. ROF VITF PF = 'PRET' 'PERFTEMP' ORDESP ORDTEM
  309. $DOMTOT PGAZ RN GRADR ALR
  310. VIT GRADV ALV
  311. PN GRADP ALP ;
  312. ERRO = 'MAXIMUM' ('PROG'
  313. ('MAXIMUM' (ROF '-' ROF1) 'ABS')
  314. ('MAXIMUM' (PF '-' PF1) 'ABS')
  315. ('MAXIMUM' (VITF '-' VITF1) 'ABS')
  316. ) ;
  317.  
  318.  
  319. 'SI' (ERRO > 1.0D-15);
  320. 'ERREUR' 5;
  321. 'FINSI' ;
  322.  
  323.  
  324. *
  325. **** TEST2 : Deuxieme ordre en espace, deuxieme ordre en
  326. * temps: invariance par rotation
  327. *
  328. * Il faut remarquer que:
  329. * densite, pression sont des tenseurs d'ordre 0,
  330. * donc leurs gradients sont des tenseurs d'ordre 1
  331. * la vitesse est un tenseur d'ordre 1,
  332. * donc sont gradient est un tenseur d'ordre 2
  333. *
  334. **** On considere un repere solidal avec la surface, (n,t),
  335. * et un repere (x,y)
  336. * On consider une probleme 1D dans le repaire (n,t)
  337. *
  338. *** Etats gauche et droite
  339. *
  340.  
  341.  
  342.  
  343. gamg = 1.4D0;
  344. rog = 1.00 ;
  345. grong = -1.0D0 ;
  346. grotg = 0.0D0;
  347. alrog = 0.1 ;
  348. pg = 2.0D0 ;
  349. gpng = -3.0D0 ;
  350. gptg = 0.0D0;
  351. alpg = 0.2 ;
  352. ung = 3.0D0 ;
  353. gunng = -5.0D0 ;
  354. guntg = 0.0D0 ;
  355. utg = 0.0D0 ;
  356. gutng = 0.0D0 ;
  357. guttg = 0.0D0;
  358. alug = 0.3 ;
  359.  
  360. c2g = gamg '*' pg '/' rog ;
  361.  
  362.  
  363. gamd = 1.8 ;
  364. rod = 1.50 ;
  365. grond = -1.5D0 ;
  366. grotd = 0.0D0 ;
  367. alrod = 0.25 ;
  368. pd = 2.5D0 ;
  369. gpnd = -3.5D0 ;
  370. gptd = 0.0D0 ;
  371. alpd = 0.3 ;
  372. und = 3.5D0 ;
  373. gunnd = -5.5D0 ;
  374. guntd = 0.0D0 ;
  375. utd = 0.0D0 ;
  376. gutnd = 0.0D0 ;
  377. guttd = 0.0D0;
  378. alud = 0.15 ;
  379.  
  380. c2d = gamd '*' pd '/' rod ;
  381.  
  382. deltat = 1.0 ;
  383.  
  384. * Encrement predictive
  385.  
  386. drog = -1.0 '*' ((ung '*' grong '*' alrog) '+' (rog '*' gunng '*' alug))
  387. ;
  388. drog = drog '*' deltat ;
  389.  
  390. drod = -1.0 '*' ((und '*' grond '*' alrod) '+' (rod '*' gunnd '*' alud))
  391. ;
  392. drod = drod '*' deltat ;
  393.  
  394. dung = -1.0 '*' ((ung '*' gunng '*' alug) '+' (alpg '*' gpng '/' rog)) ;
  395. dung = dung '*' deltat ;
  396.  
  397. dund = -1.0 '*' ((und '*' gunnd '*' alud) '+' (alpd '*' gpnd '/' rod)) ;
  398. dund = dund '*' deltat ;
  399.  
  400. dpg = -1.0 '*' ((rog '*' c2g '*' gunng '*' alug) '+'
  401. (ung '*' gpng '*' alpg)) ;
  402. dpg = dpg '*' deltat ;
  403.  
  404. dpd = -1.0 '*' ((rod '*' c2d '*' gunnd '*' alud) '+'
  405. (und '*' gpnd '*' alpd)) ;
  406. dpd = dpd '*' deltat ;
  407.  
  408.  
  409. * Encrement corrective; dxg = -dxd = 0.5
  410.  
  411. dsrog = 0.5 '*' grong '*' alrog ;
  412. dsrod = -0.5 '*' grond '*' alrod ;
  413.  
  414. dspg = 0.5 '*' gpng '*' alpg ;
  415. dspd = -0.5 '*' gpnd '*' alpd ;
  416.  
  417. dsung = 0.5 '*' gunng '*' alug ;
  418. dsund = -0.5 '*' gunnd '*' alud ;
  419.  
  420.  
  421. * Les etats
  422.  
  423. etrog = rog '+' drog '+' dsrog ;
  424. etrod = rod '+' drod '+' dsrod ;
  425.  
  426. etung = ung '+' dung '+' dsung ;
  427. etund = und '+' dund '+' dsund ;
  428.  
  429. etpg = pg '+' dpg '+' dspg ;
  430. etpd = pd '+' dpd '+' dspd ;
  431.  
  432. *
  433. *** Etats a gauche et a droite du point face P10
  434. *
  435. * ro, un, ut, p
  436.  
  437. ETATG = 'PROG' etrog etung 0.0 etpg ;
  438. ETATD = 'PROG' etrod etund 0.0 etpd ;
  439.  
  440. *
  441. *** Rotation
  442. *
  443.  
  444. DANGLE = 85;
  445. ANGLE = -1.0 '*' DANGLE ;
  446. ORIG = 0.0D0 0.0D0;
  447.  
  448.  
  449. 'REPETER' BL1 5;
  450.  
  451. ANGLE = ANGLE '+' DANGLE ;
  452.  
  453. uxg uyg = RUO1 ANGLE UNG UTG ;
  454. uxd uyd = RUO1 ANGLE UND UTD ;
  455.  
  456. groxg groyg = RUO1 ANGLE grong grotg;
  457. groxd groyd = RUO1 ANGLE grond grotd;
  458.  
  459. gpxg gpyg = RUO1 ANGLE gpng gptg;
  460. gpxd gpyd = RUO1 ANGLE gpnd gptd;
  461.  
  462. guxxg guxyg guyxg guyyg = RUO2 ANGLE gunng guntg gutng guttg;
  463. guxxd guxyd guyxd guyyd = RUO2 ANGLE gunnd guntd gutnd guttd;
  464.  
  465.  
  466. 'MESSAGE' ;
  467. 'MESSAGE' (CHAIN 'Angle de rotation= ' ANGLE);
  468. 'MESSAGE' ;
  469.  
  470. DOM1 = DOM10 'TOURNER' ANGLE ORIG;
  471. DOM2 = DOM20 'TOURNER' ANGLE ORIG;
  472. P1 = P10 'TOURNER' ANGLE ORIG;
  473.  
  474. DOMTOT = DOM1 ET DOM2;
  475. 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
  476. DOMTOT = DOM1 ET DOM2;
  477.  
  478.  
  479. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  480.  
  481. $DOM1 = 'MODELISER' DOM1 'EULER';
  482. $DOM2 = 'MODELISER' DOM2 'EULER';
  483.  
  484. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  485.  
  486. TDOM1 = 'DOMA' $DOM1 'VF';
  487. TDOM2 = 'DOMA' $DOM2 'VF';
  488.  
  489. MDOM1 = TDOM1 . 'QUAF' ;
  490. MDOM2 = TDOM2 . 'QUAF' ;
  491. MDOMTOT = TDOMTOT . 'QUAF' ;
  492.  
  493. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  494. 'ELIMINATION' (MDOMTOT ET MDOM2) 0.0001 ;
  495.  
  496.  
  497. 'SI' GRAPH;
  498. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' ('DOMA' $DOMTOT 'FACEL')
  499. 'ET' P1) 'TITRE' 'Domaine et FACEL';
  500. 'FINSI' ;
  501.  
  502. *
  503. **** Redefinition de P1 dans $DOMTOT . 'FACE'
  504. *
  505.  
  506. P1 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P1;
  507.  
  508.  
  509. ***********************
  510. **** Les CHPOINTs ****
  511. ***********************
  512.  
  513. GAM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' gamg ;
  514. GAM2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' gamd ;
  515. GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (GAM1 'ET' GAM2) ;
  516.  
  517. RN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog;
  518. RN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod;
  519. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RN1 'ET' RN2);
  520.  
  521.  
  522. VIT1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (uxg uyg);
  523. VIT2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (uxd uyd);
  524. VIT = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (VIT1 'ET' VIT2);
  525.  
  526. PN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' pg;
  527. PN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' pd;
  528. PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (PN1 'ET' PN2);
  529.  
  530. *
  531. **** On impose les gradients et le limiteurs
  532. *
  533.  
  534. ALR1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' 'COMP' 'P1' alrog ;
  535. ALR2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' 'COMP' 'P1' alrod ;
  536. ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1'
  537. (ALR1 'ET' ALR2) ;
  538.  
  539.  
  540. ALP1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' 'COMP' 'P1' alpg ;
  541. ALP2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' 'COMP' 'P1' alpd ;
  542. ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1'
  543. (ALP1 'ET' ALP2) ;
  544.  
  545.  
  546. ALV1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1' 'P2'
  547. (alug alug) ;
  548. ALV2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1' 'P2'
  549. (alud alud) ;
  550. ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2'
  551. (ALV1 'ET' ALV2) ;
  552.  
  553.  
  554.  
  555. GRADR1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  556. (groxg groyg) ;
  557.  
  558. GRADR2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  559. (groxd groyd) ;
  560.  
  561. GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  562. (GRADR1 'ET' GRADR2);
  563.  
  564.  
  565.  
  566. GRADP1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  567. (gpxg gpyg) ;
  568.  
  569. GRADP2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  570. (gpxd gpyd) ;
  571.  
  572. GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  573. (GRADP1 'ET' GRADP2);
  574.  
  575.  
  576.  
  577. GRADVX1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  578. (guxxg guxyg);
  579.  
  580. GRADVX2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
  581. (guxxd guxyd);
  582.  
  583. GRADVY1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
  584. (guyxg guyyg);
  585.  
  586. GRADVY2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
  587. (guyxd guyyd);
  588.  
  589. GRADVX = GRADVX1 'ET' GRADVX2 ;
  590. GRADVY = GRADVY1 'ET' GRADVY2 ;
  591. GRADV = GRADVX 'ET' GRADVY ;
  592.  
  593.  
  594. ORDESP = 2;
  595. ORDTEM = 2;
  596.  
  597. ROF VITF PF = 'PRET' 'PERFTEMP' ORDESP ORDTEM
  598. $DOMTOT PGAZ RN GRADR ALR
  599. VIT GRADV ALV
  600. PN GRADP ALP
  601. GAMMA deltat ;
  602.  
  603.  
  604. *********************************************************
  605. *** Control des etats sur la surface qui contient P1 ****
  606. *********************************************************
  607.  
  608.  
  609. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  610. GEOP2 = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  611.  
  612.  
  613.  
  614. ROGEOP1 = 'REDU' ROF GEOP1;
  615. VGEOP1 = 'REDU' VITF GEOP1;
  616. PGEOP1 = 'REDU' PF GEOP1;
  617. REFGEOP1 = 'REDU' VITF GEOP2;
  618.  
  619. rofag = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 1;
  620. rofad = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 3;
  621. unfag = 'EXTRAIRE' VGEOP1 'UN ' 1 1 1;
  622. unfad = 'EXTRAIRE' VGEOP1 'UN ' 1 1 3;
  623. utfag = 'EXTRAIRE' VGEOP1 'UT ' 1 1 1;
  624. utfad = 'EXTRAIRE' VGEOP1 'UT ' 1 1 3;
  625. pfag = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 1;
  626. pfad = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 3;
  627.  
  628. *
  629. **** Orientation de la normal n de castem par raport a la
  630. * notre; t est par consequence
  631. *
  632.  
  633. NCOS = 'EXTRAIRE' REFGEOP1 'NX' 1 1 1;
  634. NSIN = 'EXTRAIRE' REFGEOP1 'NY' 1 1 1;
  635.  
  636. 'SI' (('ABS' NCOS) > ('ABS' NSIN));
  637. ORIENT = ('COS' ANGLE) '/' NCOS;
  638. 'SINON';
  639. ORIENT = ('SIN' ANGLE) '/' NSIN;
  640. 'FINSI' ;
  641.  
  642. ORIENT = 'SIGNE' 'FLOTTANT' ORIENT;
  643.  
  644.  
  645. *
  646. **** ORIENT = -1 -> Mon etat gauche est son etat droite
  647. *
  648.  
  649. 'SI' (ORIENT > 0);
  650.  
  651. ERRLIG = 'PROG' rofag (unfag '*' ORIENT)
  652. (utfag '*' ORIENT) pfag ;
  653.  
  654. ERRLID = 'PROG' rofad (unfad '*' ORIENT)
  655. (utfad '*' ORIENT) pfad ;
  656.  
  657. 'SINON' ;
  658.  
  659. ERRLID = 'PROG' rofag (unfag '*' ORIENT)
  660. (utfag '*' ORIENT) pfag ;
  661.  
  662. ERRLIG = 'PROG' rofad (unfad '*' ORIENT)
  663. (utfad '*' ORIENT) pfad ;
  664.  
  665. 'FINSI' ;
  666.  
  667. ERRO = 'MAXIMUM' ('PROG'
  668. ('MAXIMUM' (ETATG '-' ERRLIG) 'ABS')
  669. ('MAXIMUM' (ETATD '-' ERRLID) 'ABS')
  670. );
  671.  
  672. 'SI' (ERRO > 1.0D-14)
  673. 'MESSAGE' 'Ordre en espace = 2';
  674. 'MESSAGE' 'Ordre en temps = 1';
  675. 'ERREUR' 5 ;
  676. 'FINSI' ;
  677.  
  678. 'FIN' BL1;
  679.  
  680.  
  681.  
  682. 'FIN' ;
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  

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