Télécharger pret_dem.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : pret_dem.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. **********************************************************************
  5. **** APPROCHE VF "Cell-Centred Formulation" pour la solution des ****
  6. **** Equations d'Euler pour un gaz parfait. ****
  7. **** "Discrete Equation Method". ****
  8. **** ****
  9. **** OPERATEUR PRET ****
  10. **** Operateur qui 'recontruit les variables primitives aux faces ****
  11. **** Cas gaz mono-espece "thermally perfect" ****
  12. **** "Discrete Equation Method". ****
  13. **** Deuxieme ordre en espace, premier ordre en temps ****
  14. **** Interieur et murs ****
  15. **** ****
  16. **** A. BECCANTINI DEN/DM2S/SFME/LTMF AOUT 2007 ****
  17. **********************************************************************
  18.  
  19. 'OPTION' 'DIME' 2 'ELEM' QUA4 'ECHO' 1
  20. 'TRAC' 'X' ;
  21.  
  22. *
  23. *** GRAPH
  24. *
  25.  
  26. GRAPH = VRAI ;
  27. GRAPH = FAUX ;
  28.  
  29.  
  30. ***************************
  31. ***** DOMAINE SPATIAL ****
  32. ***************************
  33.  
  34. *
  35. **** Deux carre
  36. *
  37.  
  38. A1 = 0.0D0 0.0D0;
  39. A2 = 2.0D0 0.0D0;
  40. A3 = 2.2D0 0.0D0;
  41. A4 = 2.0D0 0.8D0;
  42. A5 = 1.0D0 0.90D0;
  43. A6 = 0.0D0 1.1D0;
  44.  
  45. L12 = A1 'DROIT' 1 A2;
  46. L23 = A2 'DROIT' 1 A3;
  47. L34 = A3 'DROIT' 1 A4;
  48. L45 = A4 'DROIT' 1 A5;
  49. L56 = A5 'DROIT' 1 A6;
  50. L61 = A6 'DROIT' 1 A1;
  51. L25 = A2 'DROIT' 1 A5;
  52.  
  53.  
  54. DOM10 = 'DALL' L12 L25 L56 L61
  55. 'PLANE';
  56. DOM20 = 'DALL' L23 L34 L45 ('INVERSE' L25)
  57. 'PLANE';
  58.  
  59.  
  60. *
  61. *** Etats a gauche et a droite
  62. *
  63. *
  64.  
  65. al1g = 0.9 ; limgal1 = 0.11 ;
  66. rn1g = 1.10 ; limgrn1 = 0.21 ;
  67. ux1g = 130. ; limgux1 = 0.31 ;
  68. uy1g = 111. ; limguy1 = 0.41 ;
  69. pn1g = 1.13E5 ; limgpn1 = 0.51 ;
  70. al2g = 0.1 ; limgal2 = 0.61 ;
  71. rn2g = 1.21 ; limgrn2 = 0.71 ;
  72. ux2g = 120. ; limgux2 = 0.81 ;
  73. uy2g = 211. ; limguy2 = 0.13 ;
  74. pn2g = 2.13E5 ; limgpn2 = 0.15 ;
  75.  
  76. xgragal1 = 11.0D-2 ; ygragal1 = 12.0D-2 ;
  77. xgragrn1 = 13.0D-1 ; ygragrn1 = 11.0D-1 ;
  78. xgragux1 = 15.0 ; ygragux1 = 12.0 ;
  79. xgraguy1 = 17.0 ; ygraguy1 = 19.0 ;
  80. xgragpn1 = 21.0D2 ; ygragpn1 = 21.2D2 ;
  81. xgragal2 = 31.0D-2 ; ygragal2 = 31.3D-2 ;
  82. xgragrn2 = 23.0D-1 ; ygragrn2 = 23.4D-1 ;
  83. xgragux2 = 43.0 ; ygragux2 = 47.0 ;
  84. xgraguy2 = 21.3 ; ygraguy2 = 24.3 ;
  85. xgragpn2 = 13.3D1 ; ygragpn2 = 15.3D1 ;
  86.  
  87. al1d = 0.8 ; limdal1 = 0.17 ;
  88. rn1d = 1.31 ; limdrn1 = 0.19 ;
  89. ux1d = 230. ; limdux1 = 0.22 ;
  90. uy1d = 431. ; limduy1 = 0.32 ;
  91. pn1d = 1.31E5 ; limdpn1 = 0.42 ;
  92. al2d = 0.2 ; limdal2 = 0.43 ;
  93. rn2d = 1.11 ; limdrn2 = 0.44 ;
  94. ux2d = 320. ; limdux2 = 0.56 ;
  95. uy2d = 111. ; limduy2 = 0.57 ;
  96. pn2d = 1.43E5 ; limdpn2 = 0.58 ;
  97.  
  98. xgradal1 = 11.0D-2 ; ygradal1 = 11.2D-2 ;
  99. xgradrn1 = 21.0D-1 ; ygradrn1 = 21.2D-1 ;
  100. xgradux1 = 31.0 ; ygradux1 = 31.2 ;
  101. xgraduy1 = 41.0 ; ygraduy1 = 41.3 ;
  102. xgradpn1 = 51.0D1 ; ygradpn1 = 51.2D1 ;
  103. xgradal2 = 12.0D-2 ; ygradal2 = 12.4D-2 ;
  104. xgradrn2 = 22.0D-1 ; ygradrn2 = 22.1D-1 ;
  105. xgradux2 = 32.0 ; ygradux2 = 32.1 ;
  106. xgraduy2 = 43.0 ; ygraduy2 = 43.3 ;
  107. xgradpn2 = 53.0D1 ; ygradpn2 = 53.3D1 ;
  108.  
  109. ETATG = 'PROG' al1g rn1g ux1g uy1g pn1g
  110. al2g rn2g ux2g uy2g pn2g ;
  111.  
  112. ETATD = 'PROG' al1d rn1d ux1d uy1d pn1d
  113. al2d rn2d ux2d uy2d pn2d ;
  114.  
  115. DOM1 = DOM10 ;
  116. DOM2 = DOM20 ;
  117.  
  118. DOMTOT = DOM1 ET DOM2;
  119. 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
  120.  
  121. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  122.  
  123. $DOM1 = 'MODELISER' DOM1 'EULER';
  124. $DOM2 = 'MODELISER' DOM2 'EULER';
  125. $L25 = 'MODELISER' L25 'EULER';
  126. $L12 = 'MODELISER' L12 'EULER';
  127.  
  128. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  129. TDOM1 = 'DOMA' $DOM1 'VF';
  130. TDOM2 = 'DOMA' $DOM2 'VF';
  131. TL25 = 'DOMA' $L25 'VF';
  132. TL12 = 'DOMA' $L12 'VF';
  133.  
  134. MDOM1 = TDOM1 . 'QUAF' ;
  135. MDOM2 = TDOM2 . 'QUAF' ;
  136. MDOMTOT = TDOMTOT . 'QUAF' ;
  137. ML25 = TL25 . 'QUAF' ;
  138. ML12 = TL12 . 'QUAF' ;
  139.  
  140. 'ELIMINATION' (MDOMTOT ET MDOM1 ET ML25) 0.0001 ;
  141. 'ELIMINATION' (MDOMTOT ET MDOM2 ET ML12) 0.0001 ;
  142.  
  143. P1 = 'POIN' 1 (TL25 . 'CENTRE') ;
  144. P2 = 'POIN' 1 (TL12 . 'CENTRE') ;
  145.  
  146. 'SI' GRAPH;
  147. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET'
  148. ('MANUEL' 'POI1' P1 'COULEUR' 'ROUG') 'ET'
  149. ('MANUEL' 'POI1' P2 'COULEUR' 'ROUG'))
  150. 'TITRE' 'Domaine et points';
  151. 'FINSI' ;
  152.  
  153. **** La densité, la pression, la vitesse
  154.  
  155. AL1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' al1g) '+'
  156. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' al1d) ;
  157. AL2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' al2g) '+'
  158. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' al2d) ;
  159. GRADAL1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  160. 'P1DX' xgragal1 'P1DY' ygragal1) '+'
  161. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  162. 'P1DX' xgradal1 'P1DY' ygradal1)
  163. ;
  164. GRADAL2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  165. 'P1DX' xgragal2 'P1DY' ygragal2) '+'
  166. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  167. 'P1DX' xgradal2 'P1DY' ygradal2)
  168. ;
  169. LIMAL1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgal1) '+'
  170. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdal1) ;
  171. LIMAL2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgal2) '+'
  172. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdal2) ;
  173.  
  174. RN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' rn1g) '+'
  175. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' rn1d) ;
  176. RN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' rn2g) '+'
  177. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' rn2d) ;
  178. GRADRN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  179. 'P1DX' xgragrn1 'P1DY' ygragrn1) '+'
  180. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  181. 'P1DX' xgradrn1 'P1DY' ygradrn1)
  182. ;
  183. GRADRN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  184. 'P1DX' xgragrn2 'P1DY' ygragrn2) '+'
  185. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  186. 'P1DX' xgradrn2 'P1DY' ygradrn2)
  187. ;
  188. LIMRN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgrn1) '+'
  189. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdrn1) ;
  190. LIMRN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgrn2) '+'
  191. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdrn2) ;
  192.  
  193. PN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' pn1g) '+'
  194. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' pn1d) ;
  195. PN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' pn2g) '+'
  196. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' pn2d) ;
  197. GRADPN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  198. 'P1DX' xgragpn1 'P1DY' ygragpn1) '+'
  199. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  200. 'P1DX' xgradpn1 'P1DY' ygradpn1)
  201. ;
  202. GRADPN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  203. 'P1DX' xgragpn2 'P1DY' ygragpn2) '+'
  204. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  205. 'P1DX' xgradpn2 'P1DY' ygradpn2)
  206. ;
  207. LIMPN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgpn1) '+'
  208. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdpn1) ;
  209. LIMPN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgpn2) '+'
  210. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdpn2) ;
  211.  
  212.  
  213. UXN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UX' ux1g) '+'
  214. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UX' ux1d) ;
  215. UXN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UX' ux2g) '+'
  216. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UX' ux2d) ;
  217. GRADUX1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  218. 'P1DX' xgragux1 'P1DY' ygragux1) '+'
  219. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  220. 'P1DX' xgradux1 'P1DY' ygradux1)
  221. ;
  222. GRADUX2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  223. 'P1DX' xgragux2 'P1DY' ygragux2) '+'
  224. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  225. 'P1DX' xgradux2 'P1DY' ygradux2)
  226. ;
  227. LIMUX1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgux1) '+'
  228. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdux1) ;
  229. LIMUX2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgux2) '+'
  230. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdux2) ;
  231.  
  232.  
  233. UYN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UY' uy1g) '+'
  234. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UY' uy1d) ;
  235. UYN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UY' uy2g) '+'
  236. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UY' uy2d) ;
  237. GRADUY1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  238. 'P2DX' xgraguy1 'P2DY' ygraguy1) '+'
  239. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  240. 'P2DX' xgraduy1 'P2DY' ygraduy1)
  241. ;
  242. GRADUY2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 2
  243. 'P2DX' xgraguy2 'P2DY' ygraguy2) '+'
  244. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 2
  245. 'P2DX' xgraduy2 'P2DY' ygraduy2)
  246. ;
  247. LIMUY1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P2' limguy1) '+'
  248. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P2' limduy1) ;
  249. LIMUY2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P2' limguy2) '+'
  250. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P2' limduy2) ;
  251.  
  252. VN1 = UXN1 '+' UYN1 ;
  253. VN2 = UXN2 '+' UYN2 ;
  254. GRADVN1 = GRADUX1 '+' GRADUY1 ;
  255. GRADVN2 = GRADUX2 '+' GRADUY2 ;
  256. LIMVN1 = LIMUX1 '+' LIMUY1 ;
  257. LIMVN2 = LIMUX2 '+' LIMUY2 ;
  258.  
  259. *************************************************************************
  260. *** We check if the reconstruction degenerates to first order as the ****
  261. *** gradients or the limiters are zero ****
  262. *************************************************************************
  263.  
  264. AL1G0 AL2G0 RN1G0 RN2G0 VN1G0 VN2G0 PN1G0 PN2G0 =
  265. 'PRET' 'DEM' $DOMTOT
  266. AL1 (0.0 * GRADAL1) LIMAL1
  267. AL2 (0.0 * GRADAL2) LIMAL2
  268. RN1 (0.0 * GRADRN1) LIMRN1
  269. RN2 (0.0 * GRADRN2) LIMRN2
  270. VN1 (0.0 * GRADVN1) LIMVN1
  271. VN2 (0.0 * GRADVN2) LIMVN2
  272. PN1 (0.0 * GRADPN1) LIMPN1
  273. PN2 (0.0 * GRADPN2) LIMPN2
  274. ;
  275.  
  276. AL1L0 AL2L0 RN1L0 RN2L0 VN1L0 VN2L0 PN1L0 PN2L0 =
  277. 'PRET' 'DEM' $DOMTOT
  278. AL1 GRADAL1 (0.0 * LIMAL1)
  279. AL2 GRADAL2 (0.0 * LIMAL2)
  280. RN1 GRADRN1 (0.0 * LIMRN1)
  281. RN2 GRADRN2 (0.0 * LIMRN2)
  282. VN1 GRADVN1 (0.0 * LIMVN1)
  283. VN2 GRADVN2 (0.0 * LIMVN2)
  284. PN1 GRADPN1 (0.0 * LIMPN1)
  285. PN2 GRADPN2 (0.0 * LIMPN2)
  286. ;
  287.  
  288. ERRO = 'PROG' ;
  289. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (AL1G0 '-' AL1L0) 'ABS'));
  290. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (AL2G0 '-' AL2L0) 'ABS'));
  291. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (RN1G0 '-' RN1L0) 'ABS'));
  292. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (RN2G0 '-' RN2L0) 'ABS'));
  293. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (VN1G0 '-' VN1L0) 'ABS'));
  294. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (VN2G0 '-' VN2L0) 'ABS'));
  295. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (PN1G0 '-' PN1L0) 'ABS'));
  296. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (PN2G0 '-' PN2L0) 'ABS'));
  297.  
  298.  
  299. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  300. 'SI' (ERRO > 1.0D-16) ;
  301. 'MESSAGE' 'Limiteur et gradients zero' ;
  302. 'MESSAGE' 'Erreur trop importante' ;
  303. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  304. 'ERREUR' 5 ;
  305. 'FINSI' ;
  306.  
  307. *
  308. *** Control des etats sur la surface qui contient P1
  309. *
  310.  
  311. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  312. GEP1F = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  313.  
  314. AL1GEOP1 = 'REDU' AL1G0 GEOP1;
  315. AL2GEOP1 = 'REDU' AL2G0 GEOP1;
  316. RN1GEOP1 = 'REDU' RN1G0 GEOP1;
  317. RN2GEOP1 = 'REDU' RN2G0 GEOP1;
  318. PN1GEOP1 = 'REDU' PN1G0 GEOP1;
  319. PN2GEOP1 = 'REDU' PN2G0 GEOP1;
  320. VN1GEOP1 = 'REDU' VN1G0 GEOP1;
  321. VN2GEOP1 = 'REDU' VN2G0 GEOP1;
  322. TN1GEP1F = 'REDU' VN1G0 GEP1F;
  323. TN2GEP1F = 'REDU' VN2G0 GEP1F;
  324.  
  325. al1gp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 1 ;
  326. al1dp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 3 ;
  327. al2gp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 1 ;
  328. al2dp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 3 ;
  329. rn1gp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 1 ;
  330. rn1dp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 3 ;
  331. rn2gp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 1 ;
  332. rn2dp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 3 ;
  333. pn1gp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 1 ;
  334. pn1dp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 3 ;
  335. pn2gp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 1 ;
  336. pn2dp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 3 ;
  337. un1gp1 = 'EXTRAIRE' VN1GEOP1 'UN ' 1 1 1 ;
  338. un1dp1 = 'EXTRAIRE' VN1GEOP1 'UN ' 1 1 3 ;
  339. un2gp1 = 'EXTRAIRE' VN2GEOP1 'UN ' 1 1 1 ;
  340. un2dp1 = 'EXTRAIRE' VN2GEOP1 'UN ' 1 1 3 ;
  341. ut1gp1 = 'EXTRAIRE' VN1GEOP1 'UT ' 1 1 1 ;
  342. ut1dp1 = 'EXTRAIRE' VN1GEOP1 'UT ' 1 1 3 ;
  343. ut2gp1 = 'EXTRAIRE' VN2GEOP1 'UT ' 1 1 1 ;
  344. ut2dp1 = 'EXTRAIRE' VN2GEOP1 'UT ' 1 1 3 ;
  345. nxp1 = 'EXTRAIRE' TN1GEP1F 'NX ' 1 1 1 ;
  346. nyp1 = 'EXTRAIRE' TN1GEP1F 'NY ' 1 1 1 ;
  347. txp1 = 'EXTRAIRE' TN1GEP1F 'TX ' 1 1 1 ;
  348. typ1 = 'EXTRAIRE' TN1GEP1F 'TY ' 1 1 1 ;
  349. ux1gp1 = (un1gp1 * nxp1) '+' (ut1gp1 * txp1) ;
  350. uy1gp1 = (un1gp1 * nyp1) '+' (ut1gp1 * typ1) ;
  351. ux1dp1 = (un1dp1 * nxp1) '+' (ut1dp1 * txp1) ;
  352. uy1dp1 = (un1dp1 * nyp1) '+' (ut1dp1 * typ1) ;
  353. ux2gp1 = (un2gp1 * nxp1) '+' (ut2gp1 * txp1) ;
  354. uy2gp1 = (un2gp1 * nyp1) '+' (ut2gp1 * typ1) ;
  355. ux2dp1 = (un2dp1 * nxp1) '+' (ut2dp1 * txp1) ;
  356. uy2dp1 = (un2dp1 * nyp1) '+' (ut2dp1 * typ1) ;
  357.  
  358. ERRO = 'PROG' ;
  359. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (TN1GEP1F '-' TN2GEP1F) 'ABS'));
  360. ERRO = ERRO 'ET' ('PROG' ((al1gp1 '-' al1g) 'ABS'));
  361. ERRO = ERRO 'ET' ('PROG' ((al1dp1 '-' al1d) 'ABS'));
  362. ERRO = ERRO 'ET' ('PROG' ((al2gp1 '-' al2g) 'ABS'));
  363. ERRO = ERRO 'ET' ('PROG' ((al2dp1 '-' al2d) 'ABS'));
  364. ERRO = ERRO 'ET' ('PROG' ((rn1gp1 '-' rn1g) 'ABS'));
  365. ERRO = ERRO 'ET' ('PROG' ((rn1dp1 '-' rn1d) 'ABS'));
  366. ERRO = ERRO 'ET' ('PROG' ((rn2gp1 '-' rn2g) 'ABS'));
  367. ERRO = ERRO 'ET' ('PROG' ((rn2dp1 '-' rn2d) 'ABS'));
  368. ERRO = ERRO 'ET' ('PROG' ((pn1gp1 '-' pn1g) 'ABS'));
  369. ERRO = ERRO 'ET' ('PROG' ((pn1dp1 '-' pn1d) 'ABS'));
  370. ERRO = ERRO 'ET' ('PROG' ((pn2gp1 '-' pn2g) 'ABS'));
  371. ERRO = ERRO 'ET' ('PROG' ((pn2dp1 '-' pn2d) 'ABS'));
  372. ERRO = ERRO 'ET' ('PROG' ((ux1gp1 '-' ux1g) 'ABS'));
  373. ERRO = ERRO 'ET' ('PROG' ((ux1dp1 '-' ux1d) 'ABS'));
  374. ERRO = ERRO 'ET' ('PROG' ((ux2gp1 '-' ux2g) 'ABS'));
  375. ERRO = ERRO 'ET' ('PROG' ((ux2dp1 '-' ux2d) 'ABS'));
  376. ERRO = ERRO 'ET' ('PROG' ((uy1gp1 '-' uy1g) 'ABS'));
  377. ERRO = ERRO 'ET' ('PROG' ((uy1dp1 '-' uy1d) 'ABS'));
  378. ERRO = ERRO 'ET' ('PROG' ((uy2gp1 '-' uy2g) 'ABS'));
  379. ERRO = ERRO 'ET' ('PROG' ((uy2dp1 '-' uy2d) 'ABS'));
  380.  
  381. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  382. 'SI' (ERRO > 1.0D-12) ;
  383. 'MESSAGE' 'Limiteur et gradients zero' ;
  384. 'MESSAGE' 'Les etats' ;
  385. 'MESSAGE' 'Erreur trop importante' ;
  386. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  387. 'ERREUR' 5 ;
  388. 'FINSI' ;
  389.  
  390. *
  391. **** Wall
  392. *
  393.  
  394. GEOP2 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
  395. GEP2F = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
  396.  
  397. AL1GEOP2 = 'REDU' AL1G0 GEOP2;
  398. AL2GEOP2 = 'REDU' AL2G0 GEOP2;
  399. RN1GEOP2 = 'REDU' RN1G0 GEOP2;
  400. RN2GEOP2 = 'REDU' RN2G0 GEOP2;
  401. PN1GEOP2 = 'REDU' PN1G0 GEOP2;
  402. PN2GEOP2 = 'REDU' PN2G0 GEOP2;
  403. VN1GEOP2 = 'REDU' VN1G0 GEOP2;
  404. VN2GEOP2 = 'REDU' VN2G0 GEOP2;
  405. TN1GEP2F = 'REDU' VN1G0 GEP2F;
  406. TN2GEP2F = 'REDU' VN2G0 GEP2F;
  407.  
  408. al1gp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 1 ;
  409. al1dp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 3 ;
  410. al2gp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 1 ;
  411. al2dp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 3 ;
  412. rn1gp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 1 ;
  413. rn1dp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 3 ;
  414. rn2gp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 1 ;
  415. rn2dp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 3 ;
  416. pn1gp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 1 ;
  417. pn1dp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 3 ;
  418. pn2gp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 1 ;
  419. pn2dp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 3 ;
  420. un1gp2 = 'EXTRAIRE' VN1GEOP2 'UN ' 1 1 1 ;
  421. un1dp2 = 'EXTRAIRE' VN1GEOP2 'UN ' 1 1 3 ;
  422. un2gp2 = 'EXTRAIRE' VN2GEOP2 'UN ' 1 1 1 ;
  423. un2dp2 = 'EXTRAIRE' VN2GEOP2 'UN ' 1 1 3 ;
  424. ut1gp2 = 'EXTRAIRE' VN1GEOP2 'UT ' 1 1 1 ;
  425. ut1dp2 = 'EXTRAIRE' VN1GEOP2 'UT ' 1 1 3 ;
  426. ut2gp2 = 'EXTRAIRE' VN2GEOP2 'UT ' 1 1 1 ;
  427. ut2dp2 = 'EXTRAIRE' VN2GEOP2 'UT ' 1 1 3 ;
  428.  
  429. ERRO = 'PROG' ;
  430. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (TN1GEP2F '-' TN2GEP2F) 'ABS'));
  431. ERRO = ERRO 'ET' ('PROG' ((al1gp2 '-' al1dp2) 'ABS'));
  432. ERRO = ERRO 'ET' ('PROG' ((al2gp2 '-' al2dp2) 'ABS'));
  433. ERRO = ERRO 'ET' ('PROG' ((rn1gp2 '-' rn1dp2) 'ABS'));
  434. ERRO = ERRO 'ET' ('PROG' ((rn2gp2 '-' rn2dp2) 'ABS'));
  435. ERRO = ERRO 'ET' ('PROG' ((pn1gp2 '-' pn1dp2) 'ABS'));
  436. ERRO = ERRO 'ET' ('PROG' ((pn2gp2 '-' pn2dp2) 'ABS'));
  437. ERRO = ERRO 'ET' ('PROG' ((ut1gp2 '-' ut1dp2) 'ABS'));
  438. ERRO = ERRO 'ET' ('PROG' ((ut2gp2 '-' ut2dp2) 'ABS'));
  439. ERRO = ERRO 'ET' ('PROG' ((un1gp2 '+' un1dp2) 'ABS'));
  440. ERRO = ERRO 'ET' ('PROG' ((un2gp2 '+' un2dp2) 'ABS'));
  441.  
  442.  
  443. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  444. 'SI' (ERRO > 1.0D-16) ;
  445. 'MESSAGE' 'Limiteur et gradients zero' ;
  446. 'MESSAGE' 'Les etats (mur)' ;
  447. 'MESSAGE' 'Erreur trop importante' ;
  448. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  449. 'ERREUR' 5 ;
  450. 'FINSI' ;
  451.  
  452. *****************************************************
  453. *** We check if the second order reconstruction. ****
  454. *****************************************************
  455.  
  456. AL1F AL2F RN1F RN2F VN1F VN2F PN1F PN2F =
  457. 'PRET' 'DEM' $DOMTOT
  458. AL1 GRADAL1 LIMAL1
  459. AL2 GRADAL2 LIMAL2
  460. RN1 GRADRN1 LIMRN1
  461. RN2 GRADRN2 LIMRN2
  462. VN1 GRADVN1 LIMVN1
  463. VN2 GRADVN2 LIMVN2
  464. PN1 GRADPN1 LIMPN1
  465. PN2 GRADPN2 LIMPN2
  466. ;
  467.  
  468. *** Internal point
  469.  
  470. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  471. GEP1F = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  472.  
  473. AL1GEOP1 = 'REDU' AL1F GEOP1;
  474. AL2GEOP1 = 'REDU' AL2F GEOP1;
  475. RN1GEOP1 = 'REDU' RN1F GEOP1;
  476. RN2GEOP1 = 'REDU' RN2F GEOP1;
  477. PN1GEOP1 = 'REDU' PN1F GEOP1;
  478. PN2GEOP1 = 'REDU' PN2F GEOP1;
  479. VN1GEOP1 = 'REDU' VN1F GEOP1;
  480. VN2GEOP1 = 'REDU' VN2F GEOP1;
  481. TN1GEP1F = 'REDU' VN1F GEP1F;
  482. TN2GEP1F = 'REDU' VN2F GEP1F;
  483.  
  484. al1gp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 1 ;
  485. al1dp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 3 ;
  486. al2gp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 1 ;
  487. al2dp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 3 ;
  488. rn1gp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 1 ;
  489. rn1dp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 3 ;
  490. rn2gp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 1 ;
  491. rn2dp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 3 ;
  492. pn1gp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 1 ;
  493. pn1dp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 3 ;
  494. pn2gp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 1 ;
  495. pn2dp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 3 ;
  496. un1gp1 = 'EXTRAIRE' VN1GEOP1 'UN ' 1 1 1 ;
  497. un1dp1 = 'EXTRAIRE' VN1GEOP1 'UN ' 1 1 3 ;
  498. un2gp1 = 'EXTRAIRE' VN2GEOP1 'UN ' 1 1 1 ;
  499. un2dp1 = 'EXTRAIRE' VN2GEOP1 'UN ' 1 1 3 ;
  500. ut1gp1 = 'EXTRAIRE' VN1GEOP1 'UT ' 1 1 1 ;
  501. ut1dp1 = 'EXTRAIRE' VN1GEOP1 'UT ' 1 1 3 ;
  502. ut2gp1 = 'EXTRAIRE' VN2GEOP1 'UT ' 1 1 1 ;
  503. ut2dp1 = 'EXTRAIRE' VN2GEOP1 'UT ' 1 1 3 ;
  504. nxp1 = 'EXTRAIRE' TN1GEP1F 'NX ' 1 1 1 ;
  505. nyp1 = 'EXTRAIRE' TN1GEP1F 'NY ' 1 1 1 ;
  506. txp1 = 'EXTRAIRE' TN1GEP1F 'TX ' 1 1 1 ;
  507. typ1 = 'EXTRAIRE' TN1GEP1F 'TY ' 1 1 1 ;
  508. ux1gp1 = (un1gp1 * nxp1) '+' (ut1gp1 * txp1) ;
  509. uy1gp1 = (un1gp1 * nyp1) '+' (ut1gp1 * typ1) ;
  510. ux1dp1 = (un1dp1 * nxp1) '+' (ut1dp1 * txp1) ;
  511. uy1dp1 = (un1dp1 * nyp1) '+' (ut1dp1 * typ1) ;
  512. ux2gp1 = (un2gp1 * nxp1) '+' (ut2gp1 * txp1) ;
  513. uy2gp1 = (un2gp1 * nyp1) '+' (ut2gp1 * typ1) ;
  514. ux2dp1 = (un2dp1 * nxp1) '+' (ut2dp1 * txp1) ;
  515. uy2dp1 = (un2dp1 * nyp1) '+' (ut2dp1 * typ1) ;
  516.  
  517. * Selection of the left and the right state
  518.  
  519. MAICEN = 'DIFF' ('CHANGER' 'POI1' GEOP1) GEP1F ;
  520. 'SI' (('NBNO' MAICEN) 'NEG' 2) ;
  521. 'MESSAGE' 'Probleme en maicen' ;
  522. 'ERREUR' 5 ;
  523. 'FINSI' ;
  524.  
  525. PC1 = 'POIN' 1 MAICEN ;
  526. PC2 = 'POIN' 2 MAICEN ;
  527. DXPC1 = ('COORDONNEE' 1 P1) '-' ('COORDONNEE' 1 PC1) ;
  528. DYPC1 = ('COORDONNEE' 2 P1) '-' ('COORDONNEE' 2 PC1) ;
  529. DXPC2 = ('COORDONNEE' 1 P1) '-' ('COORDONNEE' 1 PC2) ;
  530. DYPC2 = ('COORDONNEE' 2 P1) '-' ('COORDONNEE' 2 PC2) ;
  531. PSPC1 = (DXPC1 * nxp1) '+' (DYPC1 * nyp1) ;
  532. PSPC2 = (DXPC2 * nxp1) '+' (DYPC2 * nyp1) ;
  533. LOG1 = (PSPC1 > 0.0) 'ET' (PSPC2 < 0.0) ;
  534. 'SI' LOG1 ;
  535. PG = PC1 ;
  536. DXG = DXPC1 ;
  537. DYG = DYPC1 ;
  538. PD = PC2 ;
  539. DXD = DXPC2 ;
  540. DYD = DYPC2 ;
  541. 'FINSI' ;
  542. LOG2 = (PSPC1 < 0.0) 'ET' (PSPC2 > 0.0) ;
  543. 'SI' LOG2 ;
  544. PG = PC2 ;
  545. DXG = DXPC2 ;
  546. DYG = DYPC2 ;
  547. PD = PC1 ;
  548. DXD = DXPC1 ;
  549. DYD = DYPC1 ;
  550. 'FINSI' ;
  551. 'SI' (('NON' LOG1) 'ET' ('NON' LOG2)) ;
  552. 'MESSAGE' 'Probleme en facel' ;
  553. 'ERREUR' 5 ;
  554. 'FINSI' ;
  555.  
  556. al1gn = ('EXTRAIRE' AL1 'SCAL' PG) '+' (
  557. (
  558. (('EXTRAIRE' GRADAL1 'P1DX' PG) * DXG) '+'
  559. (('EXTRAIRE' GRADAL1 'P1DY' PG) * DYG)
  560. ) * ('EXTRAIRE' LIMAL1 'P1' PG)) ;
  561. al2gn = ('EXTRAIRE' AL2 'SCAL' PG) '+' (
  562. (
  563. (('EXTRAIRE' GRADAL2 'P1DX' PG) * DXG) '+'
  564. (('EXTRAIRE' GRADAL2 'P1DY' PG) * DYG)
  565. ) * ('EXTRAIRE' LIMAL2 'P1' PG)) ;
  566. rn1gn = ('EXTRAIRE' RN1 'SCAL' PG) '+' (
  567. (
  568. (('EXTRAIRE' GRADRN1 'P1DX' PG) * DXG) '+'
  569. (('EXTRAIRE' GRADRN1 'P1DY' PG) * DYG)
  570. ) * ('EXTRAIRE' LIMRN1 'P1' PG)) ;
  571. rn2gn = ('EXTRAIRE' RN2 'SCAL' PG) '+' (
  572. (
  573. (('EXTRAIRE' GRADRN2 'P1DX' PG) * DXG) '+'
  574. (('EXTRAIRE' GRADRN2 'P1DY' PG) * DYG)
  575. ) * ('EXTRAIRE' LIMRN2 'P1' PG)) ;
  576. pn1gn = ('EXTRAIRE' PN1 'SCAL' PG) '+' (
  577. (
  578. (('EXTRAIRE' GRADPN1 'P1DX' PG) * DXG) '+'
  579. (('EXTRAIRE' GRADPN1 'P1DY' PG) * DYG)
  580. ) * ('EXTRAIRE' LIMPN1 'P1' PG)) ;
  581. pn2gn = ('EXTRAIRE' PN2 'SCAL' PG) '+' (
  582. (
  583. (('EXTRAIRE' GRADPN2 'P1DX' PG) * DXG) '+'
  584. (('EXTRAIRE' GRADPN2 'P1DY' PG) * DYG)
  585. ) * ('EXTRAIRE' LIMPN2 'P1' PG)) ;
  586. ux1gn = ('EXTRAIRE' VN1 'UX ' PG) '+' (
  587. (
  588. (('EXTRAIRE' GRADUX1 'P1DX' PG) * DXG) '+'
  589. (('EXTRAIRE' GRADUX1 'P1DY' PG) * DYG)
  590. ) * ('EXTRAIRE' LIMUX1 'P1' PG)) ;
  591. ux2gn = ('EXTRAIRE' VN2 'UX ' PG) '+' (
  592. (
  593. (('EXTRAIRE' GRADUX2 'P1DX' PG) * DXG) '+'
  594. (('EXTRAIRE' GRADUX2 'P1DY' PG) * DYG)
  595. ) * ('EXTRAIRE' LIMUX2 'P1' PG)) ;
  596. uy1gn = ('EXTRAIRE' VN1 'UY ' PG) '+' (
  597. (
  598. (('EXTRAIRE' GRADUY1 'P2DX' PG) * DXG) '+'
  599. (('EXTRAIRE' GRADUY1 'P2DY' PG) * DYG)
  600. ) * ('EXTRAIRE' LIMUY1 'P2' PG)) ;
  601. uy2gn = ('EXTRAIRE' VN2 'UY ' PG) '+' (
  602. (
  603. (('EXTRAIRE' GRADUY2 'P2DX' PG) * DXG) '+'
  604. (('EXTRAIRE' GRADUY2 'P2DY' PG) * DYG)
  605. ) * ('EXTRAIRE' LIMUY2 'P2' PG)) ;
  606.  
  607. ERRO = 'PROG' ;
  608. ERRO = ERRO 'ET' ('PROG' ((al1gp1 '-' al1gn) 'ABS'));
  609. ERRO = ERRO 'ET' ('PROG' ((al2gp1 '-' al2gn) 'ABS'));
  610. ERRO = ERRO 'ET' ('PROG' ((rn1gp1 '-' rn1gn) 'ABS'));
  611. ERRO = ERRO 'ET' ('PROG' ((rn2gp1 '-' rn2gn) 'ABS'));
  612. ERRO = ERRO 'ET' ('PROG' ((pn1gp1 '-' pn1gn) 'ABS'));
  613. ERRO = ERRO 'ET' ('PROG' ((pn2gp1 '-' pn2gn) 'ABS'));
  614. ERRO = ERRO 'ET' ('PROG' ((ux1gp1 '-' ux1gn) 'ABS'));
  615. ERRO = ERRO 'ET' ('PROG' ((ux2gp1 '-' ux2gn) 'ABS'));
  616. ERRO = ERRO 'ET' ('PROG' ((uy1gp1 '-' uy1gn) 'ABS'));
  617. ERRO = ERRO 'ET' ('PROG' ((uy2gp1 '-' uy2gn) 'ABS'));
  618. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  619.  
  620.  
  621. 'SI' (ERRO > 1.0D-13) ;
  622. 'MESSAGE' 'Deuxieme ordre' ;
  623. 'MESSAGE' 'Les etats gauches' ;
  624. 'MESSAGE' 'Erreur trop importante' ;
  625. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  626. 'ERREUR' 5 ;
  627. 'FINSI' ;
  628.  
  629.  
  630.  
  631. al1dn = ('EXTRAIRE' AL1 'SCAL' PD) '+' (
  632. (
  633. (('EXTRAIRE' GRADAL1 'P1DX' PD) * DXD) '+'
  634. (('EXTRAIRE' GRADAL1 'P1DY' PD) * DYD)
  635. ) * ('EXTRAIRE' LIMAL1 'P1' PD)) ;
  636. al2dn = ('EXTRAIRE' AL2 'SCAL' PD) '+' (
  637. (
  638. (('EXTRAIRE' GRADAL2 'P1DX' PD) * DXD) '+'
  639. (('EXTRAIRE' GRADAL2 'P1DY' PD) * DYD)
  640. ) * ('EXTRAIRE' LIMAL2 'P1' PD)) ;
  641. rn1dn = ('EXTRAIRE' RN1 'SCAL' PD) '+' (
  642. (
  643. (('EXTRAIRE' GRADRN1 'P1DX' PD) * DXD) '+'
  644. (('EXTRAIRE' GRADRN1 'P1DY' PD) * DYD)
  645. ) * ('EXTRAIRE' LIMRN1 'P1' PD)) ;
  646. rn2dn = ('EXTRAIRE' RN2 'SCAL' PD) '+' (
  647. (
  648. (('EXTRAIRE' GRADRN2 'P1DX' PD) * DXD) '+'
  649. (('EXTRAIRE' GRADRN2 'P1DY' PD) * DYD)
  650. ) * ('EXTRAIRE' LIMRN2 'P1' PD)) ;
  651. pn1dn = ('EXTRAIRE' PN1 'SCAL' PD) '+' (
  652. (
  653. (('EXTRAIRE' GRADPN1 'P1DX' PD) * DXD) '+'
  654. (('EXTRAIRE' GRADPN1 'P1DY' PD) * DYD)
  655. ) * ('EXTRAIRE' LIMPN1 'P1' PD)) ;
  656. pn2dn = ('EXTRAIRE' PN2 'SCAL' PD) '+' (
  657. (
  658. (('EXTRAIRE' GRADPN2 'P1DX' PD) * DXD) '+'
  659. (('EXTRAIRE' GRADPN2 'P1DY' PD) * DYD)
  660. ) * ('EXTRAIRE' LIMPN2 'P1' PD)) ;
  661. ux1dn = ('EXTRAIRE' VN1 'UX ' PD) '+' (
  662. (
  663. (('EXTRAIRE' GRADUX1 'P1DX' PD) * DXD) '+'
  664. (('EXTRAIRE' GRADUX1 'P1DY' PD) * DYD)
  665. ) * ('EXTRAIRE' LIMUX1 'P1' PD)) ;
  666. ux2dn = ('EXTRAIRE' VN2 'UX ' PD) '+' (
  667. (
  668. (('EXTRAIRE' GRADUX2 'P1DX' PD) * DXD) '+'
  669. (('EXTRAIRE' GRADUX2 'P1DY' PD) * DYD)
  670. ) * ('EXTRAIRE' LIMUX2 'P1' PD)) ;
  671. uy1dn = ('EXTRAIRE' VN1 'UY ' PD) '+' (
  672. (
  673. (('EXTRAIRE' GRADUY1 'P2DX' PD) * DXD) '+'
  674. (('EXTRAIRE' GRADUY1 'P2DY' PD) * DYD)
  675. ) * ('EXTRAIRE' LIMUY1 'P2' PD)) ;
  676. uy2dn = ('EXTRAIRE' VN2 'UY ' PD) '+' (
  677. (
  678. (('EXTRAIRE' GRADUY2 'P2DX' PD) * DXD) '+'
  679. (('EXTRAIRE' GRADUY2 'P2DY' PD) * DYD)
  680. ) * ('EXTRAIRE' LIMUY2 'P2' PD)) ;
  681.  
  682. ERRO = 'PROG' ;
  683. ERRO = ERRO 'ET' ('PROG' ((al1dp1 '-' al1dn) 'ABS'));
  684. ERRO = ERRO 'ET' ('PROG' ((al2dp1 '-' al2dn) 'ABS'));
  685. ERRO = ERRO 'ET' ('PROG' ((rn1dp1 '-' rn1dn) 'ABS'));
  686. ERRO = ERRO 'ET' ('PROG' ((rn2dp1 '-' rn2dn) 'ABS'));
  687. ERRO = ERRO 'ET' ('PROG' ((pn1dp1 '-' pn1dn) 'ABS'));
  688. ERRO = ERRO 'ET' ('PROG' ((pn2dp1 '-' pn2dn) 'ABS'));
  689. ERRO = ERRO 'ET' ('PROG' ((ux1dp1 '-' ux1dn) 'ABS'));
  690. ERRO = ERRO 'ET' ('PROG' ((ux2dp1 '-' ux2dn) 'ABS'));
  691. ERRO = ERRO 'ET' ('PROG' ((uy1dp1 '-' uy1dn) 'ABS'));
  692. ERRO = ERRO 'ET' ('PROG' ((uy2dp1 '-' uy2dn) 'ABS'));
  693. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  694. 'SI' (ERRO > 1.0D-13) ;
  695. 'MESSAGE' 'Deuxieme ordre' ;
  696. 'MESSAGE' 'Les etats droites' ;
  697. 'MESSAGE' 'Erreur trop importante' ;
  698. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  699. 'ERREUR' 5 ;
  700. 'FINSI' ;
  701.  
  702. *** Wall point
  703.  
  704. GEOP2 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
  705. GEP2F = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
  706.  
  707. 'SI' GRAPH ;
  708. 'TRACER' (DOMTOT 'ET' ('MANUEL' 'POI1' P2 'COULEUR' 'ROUG'))
  709. 'TITRE' 'Wall' ;
  710. 'FINSI' ;
  711.  
  712. AL1GEOP2 = 'REDU' AL1F GEOP2;
  713. AL2GEOP2 = 'REDU' AL2F GEOP2;
  714. RN1GEOP2 = 'REDU' RN1F GEOP2;
  715. RN2GEOP2 = 'REDU' RN2F GEOP2;
  716. PN1GEOP2 = 'REDU' PN1F GEOP2;
  717. PN2GEOP2 = 'REDU' PN2F GEOP2;
  718. VN1GEOP2 = 'REDU' VN1F GEOP2;
  719. VN2GEOP2 = 'REDU' VN2F GEOP2;
  720. TN1GEP2F = 'REDU' VN1F GEP2F;
  721. TN2GEP2F = 'REDU' VN2F GEP2F;
  722.  
  723. al1gp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 1 ;
  724. al1dp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 3 ;
  725. al2gp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 1 ;
  726. al2dp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 3 ;
  727. rn1gp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 1 ;
  728. rn1dp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 3 ;
  729. rn2gp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 1 ;
  730. rn2dp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 3 ;
  731. pn1gp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 1 ;
  732. pn1dp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 3 ;
  733. pn2gp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 1 ;
  734. pn2dp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 3 ;
  735. un1gp2 = 'EXTRAIRE' VN1GEOP2 'UN ' 1 1 1 ;
  736. un1dp2 = 'EXTRAIRE' VN1GEOP2 'UN ' 1 1 3 ;
  737. un2gp2 = 'EXTRAIRE' VN2GEOP2 'UN ' 1 1 1 ;
  738. un2dp2 = 'EXTRAIRE' VN2GEOP2 'UN ' 1 1 3 ;
  739. ut1gp2 = 'EXTRAIRE' VN1GEOP2 'UT ' 1 1 1 ;
  740. ut1dp2 = 'EXTRAIRE' VN1GEOP2 'UT ' 1 1 3 ;
  741. ut2gp2 = 'EXTRAIRE' VN2GEOP2 'UT ' 1 1 1 ;
  742. ut2dp2 = 'EXTRAIRE' VN2GEOP2 'UT ' 1 1 3 ;
  743. nxp2 = 'EXTRAIRE' TN1GEP2F 'NX ' 1 1 1 ;
  744. nyp2 = 'EXTRAIRE' TN1GEP2F 'NY ' 1 1 1 ;
  745. txp2 = 'EXTRAIRE' TN1GEP2F 'TX ' 1 1 1 ;
  746. typ2 = 'EXTRAIRE' TN1GEP2F 'TY ' 1 1 1 ;
  747. ux1gp2 = (un1gp2 * nxp2) '+' (ut1gp2 * txp2) ;
  748. uy1gp2 = (un1gp2 * nyp2) '+' (ut1gp2 * typ2) ;
  749. ux2gp2 = (un2gp2 * nxp2) '+' (ut2gp2 * txp2) ;
  750. uy2gp2 = (un2gp2 * nyp2) '+' (ut2gp2 * typ2) ;
  751.  
  752. * Selection of the left and the right state
  753.  
  754. MAICEN = 'DIFF' ('CHANGER' 'POI1' GEOP2) GEP2F ;
  755. 'SI' (('NBNO' MAICEN) 'NEG' 1) ;
  756. 'MESSAGE' 'Probleme en maicen' ;
  757. 'ERREUR' 5 ;
  758. 'FINSI' ;
  759.  
  760. PC1 = 'POIN' 1 MAICEN ;
  761. DXPC1 = ('COORDONNEE' 1 P2) '-' ('COORDONNEE' 1 PC1) ;
  762. DYPC1 = ('COORDONNEE' 2 P2) '-' ('COORDONNEE' 2 PC1) ;
  763. PSPC1 = (DXPC1 * nxp2) '+' (DYPC1 * nyp2) ;
  764. LOG1 = (PSPC1 > 0.0) ;
  765. 'SI' LOG1 ;
  766. PG = PC1 ;
  767. DXG = DXPC1 ;
  768. DYG = DYPC1 ;
  769. 'FINSI' ;
  770. 'SI' (('NON' LOG1)) ;
  771. 'MESSAGE' 'Probleme en facel' ;
  772. 'ERREUR' 5 ;
  773. 'FINSI' ;
  774.  
  775. al1gn = ('EXTRAIRE' AL1 'SCAL' PG) '+' (
  776. (
  777. (('EXTRAIRE' GRADAL1 'P1DX' PG) * DXG) '+'
  778. (('EXTRAIRE' GRADAL1 'P1DY' PG) * DYG)
  779. ) * ('EXTRAIRE' LIMAL1 'P1' PG)) ;
  780. al2gn = ('EXTRAIRE' AL2 'SCAL' PG) '+' (
  781. (
  782. (('EXTRAIRE' GRADAL2 'P1DX' PG) * DXG) '+'
  783. (('EXTRAIRE' GRADAL2 'P1DY' PG) * DYG)
  784. ) * ('EXTRAIRE' LIMAL2 'P1' PG)) ;
  785. rn1gn = ('EXTRAIRE' RN1 'SCAL' PG) '+' (
  786. (
  787. (('EXTRAIRE' GRADRN1 'P1DX' PG) * DXG) '+'
  788. (('EXTRAIRE' GRADRN1 'P1DY' PG) * DYG)
  789. ) * ('EXTRAIRE' LIMRN1 'P1' PG)) ;
  790. rn2gn = ('EXTRAIRE' RN2 'SCAL' PG) '+' (
  791. (
  792. (('EXTRAIRE' GRADRN2 'P1DX' PG) * DXG) '+'
  793. (('EXTRAIRE' GRADRN2 'P1DY' PG) * DYG)
  794. ) * ('EXTRAIRE' LIMRN2 'P1' PG)) ;
  795. pn1gn = ('EXTRAIRE' PN1 'SCAL' PG) '+' (
  796. (
  797. (('EXTRAIRE' GRADPN1 'P1DX' PG) * DXG) '+'
  798. (('EXTRAIRE' GRADPN1 'P1DY' PG) * DYG)
  799. ) * ('EXTRAIRE' LIMPN1 'P1' PG)) ;
  800. pn2gn = ('EXTRAIRE' PN2 'SCAL' PG) '+' (
  801. (
  802. (('EXTRAIRE' GRADPN2 'P1DX' PG) * DXG) '+'
  803. (('EXTRAIRE' GRADPN2 'P1DY' PG) * DYG)
  804. ) * ('EXTRAIRE' LIMPN2 'P1' PG)) ;
  805. ux1gn = ('EXTRAIRE' VN1 'UX ' PG) '+' (
  806. (
  807. (('EXTRAIRE' GRADUX1 'P1DX' PG) * DXG) '+'
  808. (('EXTRAIRE' GRADUX1 'P1DY' PG) * DYG)
  809. ) * ('EXTRAIRE' LIMUX1 'P1' PG)) ;
  810. ux2gn = ('EXTRAIRE' VN2 'UX ' PG) '+' (
  811. (
  812. (('EXTRAIRE' GRADUX2 'P1DX' PG) * DXG) '+'
  813. (('EXTRAIRE' GRADUX2 'P1DY' PG) * DYG)
  814. ) * ('EXTRAIRE' LIMUX2 'P1' PG)) ;
  815. uy1gn = ('EXTRAIRE' VN1 'UY ' PG) '+' (
  816. (
  817. (('EXTRAIRE' GRADUY1 'P2DX' PG) * DXG) '+'
  818. (('EXTRAIRE' GRADUY1 'P2DY' PG) * DYG)
  819. ) * ('EXTRAIRE' LIMUY1 'P2' PG)) ;
  820. uy2gn = ('EXTRAIRE' VN2 'UY ' PG) '+' (
  821. (
  822. (('EXTRAIRE' GRADUY2 'P2DX' PG) * DXG) '+'
  823. (('EXTRAIRE' GRADUY2 'P2DY' PG) * DYG)
  824. ) * ('EXTRAIRE' LIMUY2 'P2' PG)) ;
  825.  
  826. ERRO = 'PROG' ;
  827. ERRO = ERRO 'ET' ('PROG' ((al1gp2 '-' al1gn) 'ABS'));
  828. ERRO = ERRO 'ET' ('PROG' ((al2gp2 '-' al2gn) 'ABS'));
  829. ERRO = ERRO 'ET' ('PROG' ((rn1gp2 '-' rn1gn) 'ABS'));
  830. ERRO = ERRO 'ET' ('PROG' ((rn2gp2 '-' rn2gn) 'ABS'));
  831. ERRO = ERRO 'ET' ('PROG' ((pn1gp2 '-' pn1gn) 'ABS'));
  832. ERRO = ERRO 'ET' ('PROG' ((pn2gp2 '-' pn2gn) 'ABS'));
  833. ERRO = ERRO 'ET' ('PROG' ((ux1gp2 '-' ux1gn) 'ABS'));
  834. ERRO = ERRO 'ET' ('PROG' ((ux2gp2 '-' ux2gn) 'ABS'));
  835. ERRO = ERRO 'ET' ('PROG' ((uy1gp2 '-' uy1gn) 'ABS'));
  836. ERRO = ERRO 'ET' ('PROG' ((uy2gp2 '-' uy2gn) 'ABS'));
  837. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  838. 'SI' (ERRO > 1.0D-13) ;
  839. 'MESSAGE' 'Deuxieme ordre' ;
  840. 'MESSAGE' 'Les etats gauches au mur' ;
  841. 'MESSAGE' 'Erreur trop importante' ;
  842. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  843. 'ERREUR' 5 ;
  844. 'FINSI' ;
  845.  
  846. ERRO = 'PROG' ;
  847. ERRO = ERRO 'ET' ('PROG' ((al1gp2 '-' al1dp2) 'ABS'));
  848. ERRO = ERRO 'ET' ('PROG' ((al2gp2 '-' al2dp2) 'ABS'));
  849. ERRO = ERRO 'ET' ('PROG' ((rn1gp2 '-' rn1dp2) 'ABS'));
  850. ERRO = ERRO 'ET' ('PROG' ((rn2gp2 '-' rn2dp2) 'ABS'));
  851. ERRO = ERRO 'ET' ('PROG' ((pn1gp2 '-' pn1dp2) 'ABS'));
  852. ERRO = ERRO 'ET' ('PROG' ((pn2gp2 '-' pn2dp2) 'ABS'));
  853. ERRO = ERRO 'ET' ('PROG' ((un1gp2 '+' un1dp2) 'ABS'));
  854. ERRO = ERRO 'ET' ('PROG' ((un2gp2 '+' un2dp2) 'ABS'));
  855. ERRO = ERRO 'ET' ('PROG' ((ut1gp2 '-' ut1dp2) 'ABS'));
  856. ERRO = ERRO 'ET' ('PROG' ((ut2gp2 '-' ut2dp2) 'ABS'));
  857. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  858. 'SI' (ERRO > 1.0D-13) ;
  859. 'MESSAGE' 'Deuxieme ordre' ;
  860. 'MESSAGE' 'Les etats gauches au mur' ;
  861. 'MESSAGE' 'Erreur trop importante' ;
  862. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  863. 'ERREUR' 5 ;
  864. 'FINSI' ;
  865. 'FIN' ;
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  

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