Télécharger pret3D_dem.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : pret3D_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. **** "Discrete Equation Method". ****
  12. **** Deuxieme ordre en espace, premier ordre en temps ****
  13. **** Interieur et murs ****
  14. **** Cas 3D ****
  15. **** ****
  16. **** A. BECCANTINI DEN/DM2S/SFME/LTMF DECEMBRE 2010 ****
  17. **********************************************************************
  18.  
  19. 'OPTION' 'DIME' 3 ;
  20. 'OPTION' 'ELEM' CUB8 ;
  21. 'OPTION' 'ECHO' 1 ;
  22. 'OPTION' 'TRAC' 'X' ;
  23.  
  24. *
  25. *** GRAPH
  26. *
  27.  
  28. GRAPH = VRAI ;
  29. GRAPH = FAUX ;
  30.  
  31. *
  32. ***************************
  33. ***** DOMAINE SPATIAL ****
  34. ***************************
  35. *
  36. **** Deux carre
  37. *
  38.  
  39. A1 = 0.0D0 0.0D0 0.0D0;
  40. A2 = 1.0D0 0.0D0 0.0D0;
  41. A3 = 2.0D0 0.0D0 0.0D0;
  42. A4 = 2.0D0 1.0D0 0.0D0;
  43. A5 = 1.0D0 1.0D0 0.0D0;
  44. A6 = 0.0D0 1.0D0 0.0D0;
  45.  
  46. L12 = A1 'DROIT' 1 A2;
  47. L23 = A2 'DROIT' 1 A3;
  48. L34 = A3 'DROIT' 1 A4;
  49. L45 = A4 'DROIT' 1 A5;
  50. L56 = A5 'DROIT' 1 A6;
  51. L61 = A6 'DROIT' A1;
  52. L25 = A2 'DROIT' 1 A5;
  53.  
  54.  
  55. DOM100 = 'DALL' L12 L25 L56 L61
  56. 'PLANE';
  57. DOM200 = 'DALL' L23 L34 L45 ('INVERSE' L25)
  58. 'PLANE';
  59. DOM10 = DOM100 'VOLU' 1 'TRAN' (0.0 0.0 1.0);
  60. DOM20 = DOM200 'VOLU' 1 'TRAN' (0.0 0.0 1.0);
  61.  
  62. *
  63. *** Point face entre le deux carre, ou on fait les controlles
  64. *
  65.  
  66. P10 = 1.0 0.5 0.5;
  67. P20 = 0.5 0.0 0.0 ;
  68.  
  69. DOM1 = DOM10 ;
  70. DOM2 = DOM20 ;
  71.  
  72. CHPF = 'MANUEL' 'CHPO' A2 'UX' 0.11 'UY' 0.13 'UZ' 0.15 ;
  73. FORM CHPF ;
  74.  
  75. 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
  76.  
  77. DOM1 = 'TOURNER' DOM1 33. (-1.0 -1.0 0.0) (-1.0 -1.0 1.0) ;
  78. DOM2 = 'TOURNER' DOM2 33. (-1.0 -1.0 0.0) (-1.0 -1.0 1.0) ;
  79. DOM1 = 'TOURNER' DOM1 33. (-1.0 -1.0 -1.0) (1.0 -1.0 -1.0) ;
  80. DOM2 = 'TOURNER' DOM2 33. (-1.0 -1.0 -1.0) (1.0 -1.0 -1.0) ;
  81. 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
  82. P10 = 'TOURNER' P10 33. (-1.0 -1.0 0.0) (-1.0 -1.0 1.0) ;
  83. P20 = 'TOURNER' P20 33. (-1.0 -1.0 0.0) (-1.0 -1.0 1.0) ;
  84. P10 = 'TOURNER' P10 33. (-1.0 -1.0 -1.0) (1.0 -1.0 -1.0) ;
  85. P20 = 'TOURNER' P20 33. (-1.0 -1.0 -1.0) (1.0 -1.0 -1.0) ;
  86.  
  87. DOMTOT = DOM1 ET DOM2;
  88.  
  89. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  90.  
  91. $DOM1 = 'MODELISER' DOM1 'EULER';
  92. $DOM2 = 'MODELISER' DOM2 'EULER';
  93.  
  94. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  95.  
  96. TDOM1 = 'DOMA' $DOM1 'VF';
  97. TDOM2 = 'DOMA' $DOM2 'VF';
  98.  
  99. MDOM1 = TDOM1 . 'QUAF' ;
  100. MDOM2 = TDOM2 . 'QUAF' ;
  101. MDOMTOT = TDOMTOT . 'QUAF' ;
  102.  
  103. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  104. 'ELIMINATION' (MDOMTOT ET MDOM2) 0.0001 ;
  105.  
  106. 'SI' GRAPH;
  107. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' ('DOMA' $DOMTOT 'FACEL')
  108. 'ET' P10) 'TITRE' 'Domaine et FACEL';
  109. 'FINSI' ;
  110.  
  111.  
  112.  
  113. *
  114. *** Etats a gauche et a droite
  115. *
  116. *
  117.  
  118. al1g = 0.9 ; limgal1 = 0.11 ;
  119. rn1g = 1.10 ; limgrn1 = 0.21 ;
  120. ux1g = 130. ; limgux1 = 0.31 ;
  121. uy1g = 111. ; limguy1 = 0.41 ;
  122. uz1g = 121. ; limguz1 = 0.21 ;
  123. pn1g = 1.13E5 ; limgpn1 = 0.51 ;
  124. al2g = 0.1 ; limgal2 = 0.61 ;
  125. rn2g = 1.21 ; limgrn2 = 0.71 ;
  126. ux2g = 120. ; limgux2 = 0.81 ;
  127. uy2g = 211. ; limguy2 = 0.13 ;
  128. uz2g = 121. ; limguz2 = 0.12 ;
  129. pn2g = 2.13E5 ; limgpn2 = 0.15 ;
  130.  
  131. xgragal1 = 11.0D-2 ; ygragal1 = 12.0D-2 ; zgragal1 = 13.0D-2 ;
  132. xgragrn1 = 13.0D-1 ; ygragrn1 = 11.0D-1 ; zgragrn1 = 10.0D-1 ;
  133. xgragux1 = 15.0 ; ygragux1 = 12.0 ; zgragux1 = 13.0 ;
  134. xgraguy1 = 17.0 ; ygraguy1 = 19.0 ; zgraguy1 = 18.0 ;
  135. xgraguz1 = 17.5 ; ygraguz1 = 19.3 ; zgraguz1 = 18.0 ;
  136. xgragpn1 = 21.0D2 ; ygragpn1 = 21.2D2 ; zgragpn1 = 20.2D2 ;
  137. xgragal2 = 31.0D-2 ; ygragal2 = 31.3D-2 ; zgragal2 = 32.3D-2 ;
  138. xgragrn2 = 23.0D-1 ; ygragrn2 = 23.4D-1 ; zgragrn2 = 21.4D-1 ;
  139. xgragux2 = 43.0 ; ygragux2 = 47.0 ; zgragux2 = 47.0 ;
  140. xgraguy2 = 21.3 ; ygraguy2 = 24.3 ; zgraguy2 = 24.3 ;
  141. xgraguz2 = 22.3 ; ygraguz2 = 14.3 ; zgraguz2 = 11.3 ;
  142. xgragpn2 = 13.3D1 ; ygragpn2 = 15.3D1 ; zgragpn2 = 11.3D1 ;
  143.  
  144. al1d = 0.8 ; limdal1 = 0.17 ;
  145. rn1d = 1.31 ; limdrn1 = 0.19 ;
  146. ux1d = 230. ; limdux1 = 0.22 ;
  147. uy1d = 431. ; limduy1 = 0.32 ;
  148. uz1d = 331. ; limduz1 = 0.31 ;
  149. pn1d = 1.31E5 ; limdpn1 = 0.42 ;
  150. al2d = 0.2 ; limdal2 = 0.43 ;
  151. rn2d = 1.11 ; limdrn2 = 0.44 ;
  152. ux2d = 320. ; limdux2 = 0.56 ;
  153. uy2d = 111. ; limduy2 = 0.57 ;
  154. uz2d = 131. ; limduz2 = 0.53 ;
  155. pn2d = 1.43E5 ; limdpn2 = 0.58 ;
  156.  
  157. xgradal1 = 11.0D-2 ; ygradal1 = 11.2D-2 ; zgradal1 = 21.2D-2 ;
  158. xgradrn1 = 21.0D-1 ; ygradrn1 = 21.2D-1 ; zgradrn1 = 31.2D-1 ;
  159. xgradux1 = 31.0 ; ygradux1 = 31.2 ; zgradux1 = 41.2 ;
  160. xgraduy1 = 41.0 ; ygraduy1 = 41.3 ; zgraduy1 = 21.3 ;
  161. xgraduz1 = 51.0 ; ygraduz1 = 21.3 ; zgraduz1 = 31.3 ;
  162. xgradpn1 = 51.0D1 ; ygradpn1 = 51.2D1 ; zgradpn1 = 31.2D1 ;
  163. xgradal2 = 12.0D-2 ; ygradal2 = 12.4D-2 ; zgradal2 = 11.4D-2 ;
  164. xgradrn2 = 22.0D-1 ; ygradrn2 = 22.1D-1 ; zgradrn2 = 12.1D-1 ;
  165. xgradux2 = 32.0 ; ygradux2 = 32.1 ; zgradux2 = 22.1 ;
  166. xgraduy2 = 43.0 ; ygraduy2 = 43.3 ; zgraduy2 = 23.3 ;
  167. xgraduz2 = 41.0 ; ygraduz2 = 43.3 ; zgraduz2 = 42.3 ;
  168. xgradpn2 = 53.0D1 ; ygradpn2 = 53.3D1 ; zgradpn2 = 33.3D1 ;
  169.  
  170. ETATG = 'PROG' al1g rn1g ux1g uy1g uz1g pn1g
  171. al2g rn2g ux2g uy2g uz2g pn2g ;
  172.  
  173. ETATD = 'PROG' al1d rn1d ux1d uy1d uz1d pn1d
  174. al2d rn2d ux2d uy2d uz2d pn2d ;
  175.  
  176. P1 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P10;
  177. P2 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P20;
  178.  
  179.  
  180. 'SI' GRAPH;
  181. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET'
  182. ('MANUEL' 'POI1' P1 'COULEUR' 'ROUG') 'ET'
  183. ('MANUEL' 'POI1' P2 'COULEUR' 'ROUG'))
  184. 'TITRE' 'Domaine et points';
  185. 'FINSI' ;
  186. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  187. GEOP2 = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  188.  
  189. **** La densité, la pression, la vitesse
  190.  
  191. AL1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' al1g) '+'
  192. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' al1d) ;
  193. AL2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' al2g) '+'
  194. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' al2d) ;
  195. GRADAL1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  196. 'P1DX' xgragal1 'P1DY' ygragal1 'P1DZ' zgragal1) '+'
  197. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  198. 'P1DX' xgradal1 'P1DY' ygradal1 'P1DZ' zgradal1)
  199. ;
  200. GRADAL2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  201. 'P1DX' xgragal2 'P1DY' ygragal2 'P1DZ' zgragal2) '+'
  202. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  203. 'P1DX' xgradal2 'P1DY' ygradal2 'P1DZ' zgradal2)
  204. ;
  205. LIMAL1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgal1) '+'
  206. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdal1) ;
  207. LIMAL2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgal2) '+'
  208. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdal2) ;
  209.  
  210. RN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' rn1g) '+'
  211. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' rn1d) ;
  212. RN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' rn2g) '+'
  213. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' rn2d) ;
  214. GRADRN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  215. 'P1DX' xgragrn1 'P1DY' ygragrn1 'P1DZ' zgragrn1) '+'
  216. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  217. 'P1DX' xgradrn1 'P1DY' ygradrn1 'P1DZ' zgradrn1)
  218. ;
  219. GRADRN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  220. 'P1DX' xgragrn2 'P1DY' ygragrn2 'P1DZ' zgragrn2) '+'
  221. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  222. 'P1DX' xgradrn2 'P1DY' ygradrn2 'P1DZ' zgradrn2)
  223. ;
  224. LIMRN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgrn1) '+'
  225. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdrn1) ;
  226. LIMRN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgrn2) '+'
  227. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdrn2) ;
  228.  
  229. PN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' pn1g) '+'
  230. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' pn1d) ;
  231. PN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' pn2g) '+'
  232. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' pn2d) ;
  233. GRADPN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  234. 'P1DX' xgragpn1 'P1DY' ygragpn1 'P1DZ' zgragpn1) '+'
  235. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  236. 'P1DX' xgradpn1 'P1DY' ygradpn1 'P1DZ' zgradpn1)
  237. ;
  238. GRADPN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  239. 'P1DX' xgragpn2 'P1DY' ygragpn2 'P1DZ' zgragpn2) '+'
  240. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  241. 'P1DX' xgradpn2 'P1DY' ygradpn2 'P1DZ' zgradpn2)
  242. ;
  243. LIMPN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgpn1) '+'
  244. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdpn1) ;
  245. LIMPN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgpn2) '+'
  246. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdpn2) ;
  247.  
  248.  
  249. UXN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UX' ux1g) '+'
  250. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UX' ux1d) ;
  251. UXN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UX' ux2g) '+'
  252. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UX' ux2d) ;
  253. GRADUX1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  254. 'P1DX' xgragux1 'P1DY' ygragux1 'P1DZ' zgragux1) '+'
  255. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  256. 'P1DX' xgradux1 'P1DY' ygradux1 'P1DZ' zgradux1)
  257. ;
  258. GRADUX2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  259. 'P1DX' xgragux2 'P1DY' ygragux2 'P1DZ' zgragux2) '+'
  260. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  261. 'P1DX' xgradux2 'P1DY' ygradux2 'P1DZ' zgradux2)
  262. ;
  263. LIMUX1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgux1) '+'
  264. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdux1) ;
  265. LIMUX2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgux2) '+'
  266. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdux2) ;
  267.  
  268.  
  269. UYN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UY' uy1g) '+'
  270. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UY' uy1d) ;
  271. UYN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UY' uy2g) '+'
  272. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UY' uy2d) ;
  273. GRADUY1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  274. 'P2DX' xgraguy1 'P2DY' ygraguy1 'P2DZ' zgraguy1) '+'
  275. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  276. 'P2DX' xgraduy1 'P2DY' ygraduy1 'P2DZ' zgraduy1)
  277. ;
  278. GRADUY2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  279. 'P2DX' xgraguy2 'P2DY' ygraguy2 'P2DZ' ygraguy2) '+'
  280. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  281. 'P2DX' xgraduy2 'P2DY' ygraduy2 'P2DZ' zgraduy2)
  282. ;
  283. LIMUY1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P2' limguy1) '+'
  284. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P2' limduy1) ;
  285. LIMUY2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P2' limguy2) '+'
  286. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P2' limduy2) ;
  287.  
  288. UZN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UZ' uz1g) '+'
  289. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UZ' uz1d) ;
  290. UZN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UZ' uz2g) '+'
  291. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UZ' uz2d) ;
  292. GRADUZ1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  293. 'P3DX' xgraguz1 'P3DY' ygraguz1 'P3DZ' zgraguz1) '+'
  294. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  295. 'P3DX' xgraduz1 'P3DY' ygraduz1 'P3DZ' zgraduz1)
  296. ;
  297. GRADUZ2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  298. 'P3DX' xgraguz2 'P3DY' ygraguz2 'P3DZ' ygraguz2) '+'
  299. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  300. 'P3DX' xgraduz2 'P3DY' ygraduz2 'P3DZ' zgraduz2)
  301. ;
  302. LIMUZ1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P3' limguz1) '+'
  303. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P3' limduz1) ;
  304. LIMUZ2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P3' limguz2) '+'
  305. ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P3' limduz2) ;
  306.  
  307. VN1 = UXN1 '+' UYN1 '+' UZN1 ;
  308. VN2 = UXN2 '+' UYN2 '+' UZN2 ;
  309. GRADVN1 = GRADUX1 '+' GRADUY1 '+' GRADUZ1 ;
  310. GRADVN2 = GRADUX2 '+' GRADUY2 '+' GRADUZ2 ;
  311. LIMVN1 = LIMUX1 '+' LIMUY1 '+' LIMUZ1 ;
  312. LIMVN2 = LIMUX2 '+' LIMUY2 '+' LIMUZ2 ;
  313.  
  314. *************************************************************************
  315. *** We check if the reconstruction degenerates to first order as the ****
  316. *** gradients or the limiters are zero ****
  317. *************************************************************************
  318.  
  319. AL1G0 AL2G0 RN1G0 RN2G0 VN1G0 VN2G0 PN1G0 PN2G0 =
  320. 'PRET' 'DEM' $DOMTOT
  321. AL1 (0.0 * GRADAL1) LIMAL1
  322. AL2 (0.0 * GRADAL2) LIMAL2
  323. RN1 (0.0 * GRADRN1) LIMRN1
  324. RN2 (0.0 * GRADRN2) LIMRN2
  325. VN1 (0.0 * GRADVN1) LIMVN1
  326. VN2 (0.0 * GRADVN2) LIMVN2
  327. PN1 (0.0 * GRADPN1) LIMPN1
  328. PN2 (0.0 * GRADPN2) LIMPN2
  329. ;
  330.  
  331. AL1L0 AL2L0 RN1L0 RN2L0 VN1L0 VN2L0 PN1L0 PN2L0 =
  332. 'PRET' 'DEM' $DOMTOT
  333. AL1 GRADAL1 (0.0 * LIMAL1)
  334. AL2 GRADAL2 (0.0 * LIMAL2)
  335. RN1 GRADRN1 (0.0 * LIMRN1)
  336. RN2 GRADRN2 (0.0 * LIMRN2)
  337. VN1 GRADVN1 (0.0 * LIMVN1)
  338. VN2 GRADVN2 (0.0 * LIMVN2)
  339. PN1 GRADPN1 (0.0 * LIMPN1)
  340. PN2 GRADPN2 (0.0 * LIMPN2)
  341. ;
  342.  
  343. ERRO = 'PROG' ;
  344. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (AL1G0 '-' AL1L0) 'ABS'));
  345. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (AL2G0 '-' AL2L0) 'ABS'));
  346. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (RN1G0 '-' RN1L0) 'ABS'));
  347. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (RN2G0 '-' RN2L0) 'ABS'));
  348. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (VN1G0 '-' VN1L0) 'ABS'));
  349. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (VN2G0 '-' VN2L0) 'ABS'));
  350. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (PN1G0 '-' PN1L0) 'ABS'));
  351. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (PN2G0 '-' PN2L0) 'ABS'));
  352.  
  353.  
  354. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  355. 'SI' (ERRO > 1.0D-12) ;
  356. 'MESSAGE' 'Limiteur et gradients zero' ;
  357. 'MESSAGE' 'Erreur trop importante' ;
  358. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  359. 'ERREUR' 5 ;
  360. 'FINSI' ;
  361. *
  362. *** Control des etats sur la surface qui contient P1
  363. *
  364.  
  365. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  366. GEP1F = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  367.  
  368. AL1GEOP1 = 'REDU' AL1G0 GEOP1;
  369. AL2GEOP1 = 'REDU' AL2G0 GEOP1;
  370. RN1GEOP1 = 'REDU' RN1G0 GEOP1;
  371. RN2GEOP1 = 'REDU' RN2G0 GEOP1;
  372. PN1GEOP1 = 'REDU' PN1G0 GEOP1;
  373. PN2GEOP1 = 'REDU' PN2G0 GEOP1;
  374. VN1GEOP1 = 'REDU' VN1G0 GEOP1;
  375. VN2GEOP1 = 'REDU' VN2G0 GEOP1;
  376. TN1GEP1F = 'REDU' VN1G0 GEP1F;
  377. TN2GEP1F = 'REDU' VN2G0 GEP1F;
  378.  
  379. al1gp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 1 ;
  380. al1dp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 3 ;
  381. al2gp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 1 ;
  382. al2dp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 3 ;
  383. rn1gp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 1 ;
  384. rn1dp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 3 ;
  385. rn2gp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 1 ;
  386. rn2dp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 3 ;
  387. pn1gp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 1 ;
  388. pn1dp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 3 ;
  389. pn2gp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 1 ;
  390. pn2dp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 3 ;
  391. un1gp1 = 'EXTRAIRE' VN1GEOP1 'UN ' 1 1 1 ;
  392. un1dp1 = 'EXTRAIRE' VN1GEOP1 'UN ' 1 1 3 ;
  393. un2gp1 = 'EXTRAIRE' VN2GEOP1 'UN ' 1 1 1 ;
  394. un2dp1 = 'EXTRAIRE' VN2GEOP1 'UN ' 1 1 3 ;
  395. ut1gp1 = 'EXTRAIRE' VN1GEOP1 'UT ' 1 1 1 ;
  396. ut1dp1 = 'EXTRAIRE' VN1GEOP1 'UT ' 1 1 3 ;
  397. ut2gp1 = 'EXTRAIRE' VN2GEOP1 'UT ' 1 1 1 ;
  398. ut2dp1 = 'EXTRAIRE' VN2GEOP1 'UT ' 1 1 3 ;
  399. uv1gp1 = 'EXTRAIRE' VN1GEOP1 'UV ' 1 1 1 ;
  400. uv1dp1 = 'EXTRAIRE' VN1GEOP1 'UV ' 1 1 3 ;
  401. uv2gp1 = 'EXTRAIRE' VN2GEOP1 'UV ' 1 1 1 ;
  402. uv2dp1 = 'EXTRAIRE' VN2GEOP1 'UV ' 1 1 3 ;
  403. nxp1 = 'EXTRAIRE' TN1GEP1F 'NX ' 1 1 1 ;
  404. nyp1 = 'EXTRAIRE' TN1GEP1F 'NY ' 1 1 1 ;
  405. nzp1 = 'EXTRAIRE' TN1GEP1F 'NZ ' 1 1 1 ;
  406. txp1 = 'EXTRAIRE' TN1GEP1F 'TX ' 1 1 1 ;
  407. typ1 = 'EXTRAIRE' TN1GEP1F 'TY ' 1 1 1 ;
  408. tzp1 = 'EXTRAIRE' TN1GEP1F 'TZ ' 1 1 1 ;
  409. vxp1 = 'EXTRAIRE' TN1GEP1F 'VX ' 1 1 1 ;
  410. vyp1 = 'EXTRAIRE' TN1GEP1F 'VY ' 1 1 1 ;
  411. vzp1 = 'EXTRAIRE' TN1GEP1F 'VZ ' 1 1 1 ;
  412.  
  413. ux1gp1 = (un1gp1 * nxp1) '+' (ut1gp1 * txp1)
  414. '+' (uv1gp1 * vxp1) ;
  415. uy1gp1 = (un1gp1 * nyp1) '+' (ut1gp1 * typ1)
  416. '+' (uv1gp1 * vyp1) ;
  417. uz1gp1 = (un1gp1 * nzp1) '+' (ut1gp1 * tzp1)
  418. '+' (uv1gp1 * vzp1) ;
  419. ux1dp1 = (un1dp1 * nxp1) '+' (ut1dp1 * txp1)
  420. '+' (uv1dp1 * vxp1) ;
  421. uy1dp1 = (un1dp1 * nyp1) '+' (ut1dp1 * typ1)
  422. '+' (uv1dp1 * vyp1) ;
  423. uz1dp1 = (un1dp1 * nzp1) '+' (ut1dp1 * tzp1)
  424. '+' (uv1dp1 * vzp1) ;
  425. ux2gp1 = (un2gp1 * nxp1) '+' (ut2gp1 * txp1)
  426. '+' (uv2gp1 * vxp1) ;
  427. uy2gp1 = (un2gp1 * nyp1) '+' (ut2gp1 * typ1)
  428. '+' (uv2gp1 * vyp1) ;
  429. uz2gp1 = (un2gp1 * nzp1) '+' (ut2gp1 * tzp1)
  430. '+' (uv2gp1 * vzp1) ;
  431. ux2dp1 = (un2dp1 * nxp1) '+' (ut2dp1 * txp1)
  432. '+' (uv2dp1 * vxp1) ;
  433. uy2dp1 = (un2dp1 * nyp1) '+' (ut2dp1 * typ1)
  434. '+' (uv2dp1 * vyp1) ;
  435. uz2dp1 = (un2dp1 * nzp1) '+' (ut2dp1 * tzp1)
  436. '+' (uv2dp1 * vzp1) ;
  437.  
  438. ERRO = 'PROG' ;
  439. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (TN1GEP1F '-' TN2GEP1F) 'ABS'));
  440. ERRO = ERRO 'ET' ('PROG' ((al1gp1 '-' al1g) 'ABS'));
  441. ERRO = ERRO 'ET' ('PROG' ((al1dp1 '-' al1d) 'ABS'));
  442. ERRO = ERRO 'ET' ('PROG' ((al2gp1 '-' al2g) 'ABS'));
  443. ERRO = ERRO 'ET' ('PROG' ((al2dp1 '-' al2d) 'ABS'));
  444. ERRO = ERRO 'ET' ('PROG' ((rn1gp1 '-' rn1g) 'ABS'));
  445. ERRO = ERRO 'ET' ('PROG' ((rn1dp1 '-' rn1d) 'ABS'));
  446. ERRO = ERRO 'ET' ('PROG' ((rn2gp1 '-' rn2g) 'ABS'));
  447. ERRO = ERRO 'ET' ('PROG' ((rn2dp1 '-' rn2d) 'ABS'));
  448. ERRO = ERRO 'ET' ('PROG' ((pn1gp1 '-' pn1g) 'ABS'));
  449. ERRO = ERRO 'ET' ('PROG' ((pn1dp1 '-' pn1d) 'ABS'));
  450. ERRO = ERRO 'ET' ('PROG' ((pn2gp1 '-' pn2g) 'ABS'));
  451. ERRO = ERRO 'ET' ('PROG' ((pn2dp1 '-' pn2d) 'ABS'));
  452. ERRO = ERRO 'ET' ('PROG' ((ux1gp1 '-' ux1g) 'ABS'));
  453. ERRO = ERRO 'ET' ('PROG' ((ux1dp1 '-' ux1d) 'ABS'));
  454. ERRO = ERRO 'ET' ('PROG' ((ux2gp1 '-' ux2g) 'ABS'));
  455. ERRO = ERRO 'ET' ('PROG' ((ux2dp1 '-' ux2d) 'ABS'));
  456. ERRO = ERRO 'ET' ('PROG' ((uy1gp1 '-' uy1g) 'ABS'));
  457. ERRO = ERRO 'ET' ('PROG' ((uy1dp1 '-' uy1d) 'ABS'));
  458. ERRO = ERRO 'ET' ('PROG' ((uy2gp1 '-' uy2g) 'ABS'));
  459. ERRO = ERRO 'ET' ('PROG' ((uy2dp1 '-' uy2d) 'ABS'));
  460. ERRO = ERRO 'ET' ('PROG' ((uz1gp1 '-' uz1g) 'ABS'));
  461. ERRO = ERRO 'ET' ('PROG' ((uz1dp1 '-' uz1d) 'ABS'));
  462. ERRO = ERRO 'ET' ('PROG' ((uz2gp1 '-' uz2g) 'ABS'));
  463. ERRO = ERRO 'ET' ('PROG' ((uz2dp1 '-' uz2d) 'ABS'));
  464.  
  465. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  466. 'SI' (ERRO > 1.0D-12) ;
  467. 'MESSAGE' 'Limiteur et gradients zero' ;
  468. 'MESSAGE' 'Les etats' ;
  469. 'MESSAGE' 'Erreur trop importante' ;
  470. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  471. 'ERREUR' 5 ;
  472. 'FINSI' ;
  473.  
  474. *
  475. **** Wall
  476. *
  477.  
  478. GEOP2 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
  479. GEP2F = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
  480.  
  481. AL1GEOP2 = 'REDU' AL1G0 GEOP2;
  482. AL2GEOP2 = 'REDU' AL2G0 GEOP2;
  483. RN1GEOP2 = 'REDU' RN1G0 GEOP2;
  484. RN2GEOP2 = 'REDU' RN2G0 GEOP2;
  485. PN1GEOP2 = 'REDU' PN1G0 GEOP2;
  486. PN2GEOP2 = 'REDU' PN2G0 GEOP2;
  487. VN1GEOP2 = 'REDU' VN1G0 GEOP2;
  488. VN2GEOP2 = 'REDU' VN2G0 GEOP2;
  489. TN1GEP2F = 'REDU' VN1G0 GEP2F;
  490. TN2GEP2F = 'REDU' VN2G0 GEP2F;
  491.  
  492. al1gp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 1 ;
  493. al1dp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 3 ;
  494. al2gp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 1 ;
  495. al2dp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 3 ;
  496. rn1gp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 1 ;
  497. rn1dp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 3 ;
  498. rn2gp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 1 ;
  499. rn2dp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 3 ;
  500. pn1gp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 1 ;
  501. pn1dp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 3 ;
  502. pn2gp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 1 ;
  503. pn2dp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 3 ;
  504. un1gp2 = 'EXTRAIRE' VN1GEOP2 'UN ' 1 1 1 ;
  505. un1dp2 = 'EXTRAIRE' VN1GEOP2 'UN ' 1 1 3 ;
  506. un2gp2 = 'EXTRAIRE' VN2GEOP2 'UN ' 1 1 1 ;
  507. un2dp2 = 'EXTRAIRE' VN2GEOP2 'UN ' 1 1 3 ;
  508. ut1gp2 = 'EXTRAIRE' VN1GEOP2 'UT ' 1 1 1 ;
  509. ut1dp2 = 'EXTRAIRE' VN1GEOP2 'UT ' 1 1 3 ;
  510. ut2gp2 = 'EXTRAIRE' VN2GEOP2 'UT ' 1 1 1 ;
  511. ut2dp2 = 'EXTRAIRE' VN2GEOP2 'UT ' 1 1 3 ;
  512. uv1gp2 = 'EXTRAIRE' VN1GEOP2 'UV ' 1 1 1 ;
  513. uv1dp2 = 'EXTRAIRE' VN1GEOP2 'UV ' 1 1 3 ;
  514. uv2gp2 = 'EXTRAIRE' VN2GEOP2 'UV ' 1 1 1 ;
  515. uv2dp2 = 'EXTRAIRE' VN2GEOP2 'UV ' 1 1 3 ;
  516.  
  517. ERRO = 'PROG' ;
  518. ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (TN1GEP2F '-' TN2GEP2F) 'ABS'));
  519. ERRO = ERRO 'ET' ('PROG' ((al1gp2 '-' al1dp2) 'ABS'));
  520. ERRO = ERRO 'ET' ('PROG' ((al2gp2 '-' al2dp2) 'ABS'));
  521. ERRO = ERRO 'ET' ('PROG' ((rn1gp2 '-' rn1dp2) 'ABS'));
  522. ERRO = ERRO 'ET' ('PROG' ((rn2gp2 '-' rn2dp2) 'ABS'));
  523. ERRO = ERRO 'ET' ('PROG' ((pn1gp2 '-' pn1dp2) 'ABS'));
  524. ERRO = ERRO 'ET' ('PROG' ((pn2gp2 '-' pn2dp2) 'ABS'));
  525. ERRO = ERRO 'ET' ('PROG' ((ut1gp2 '-' ut1dp2) 'ABS'));
  526. ERRO = ERRO 'ET' ('PROG' ((ut2gp2 '-' ut2dp2) 'ABS'));
  527. ERRO = ERRO 'ET' ('PROG' ((uv1gp2 '-' uv1dp2) 'ABS'));
  528. ERRO = ERRO 'ET' ('PROG' ((uv2gp2 '-' uv2dp2) 'ABS'));
  529. ERRO = ERRO 'ET' ('PROG' ((un1gp2 '+' un1dp2) 'ABS'));
  530. ERRO = ERRO 'ET' ('PROG' ((un2gp2 '+' un2dp2) 'ABS'));
  531.  
  532. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  533. 'SI' (ERRO > 1.0D-12) ;
  534. 'MESSAGE' 'Limiteur et gradients zero' ;
  535. 'MESSAGE' 'Les etats (mur)' ;
  536. 'MESSAGE' 'Erreur trop importante' ;
  537. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  538. 'ERREUR' 5 ;
  539. 'FINSI' ;
  540.  
  541. *****************************************************
  542. *** We check if the second order reconstruction. ****
  543. *****************************************************
  544.  
  545. AL1F AL2F RN1F RN2F VN1F VN2F PN1F PN2F =
  546. 'PRET' 'DEM' $DOMTOT
  547. AL1 GRADAL1 LIMAL1
  548. AL2 GRADAL2 LIMAL2
  549. RN1 GRADRN1 LIMRN1
  550. RN2 GRADRN2 LIMRN2
  551. VN1 GRADVN1 LIMVN1
  552. VN2 GRADVN2 LIMVN2
  553. PN1 GRADPN1 LIMPN1
  554. PN2 GRADPN2 LIMPN2
  555. ;
  556.  
  557. *** Internal point
  558.  
  559. GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  560. GEP1F = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
  561.  
  562. AL1GEOP1 = 'REDU' AL1F GEOP1;
  563. AL2GEOP1 = 'REDU' AL2F GEOP1;
  564. RN1GEOP1 = 'REDU' RN1F GEOP1;
  565. RN2GEOP1 = 'REDU' RN2F GEOP1;
  566. PN1GEOP1 = 'REDU' PN1F GEOP1;
  567. PN2GEOP1 = 'REDU' PN2F GEOP1;
  568. VN1GEOP1 = 'REDU' VN1F GEOP1;
  569. VN2GEOP1 = 'REDU' VN2F GEOP1;
  570. TN1GEP1F = 'REDU' VN1F GEP1F;
  571. TN2GEP1F = 'REDU' VN2F GEP1F;
  572.  
  573. al1gp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 1 ;
  574. al1dp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 3 ;
  575. al2gp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 1 ;
  576. al2dp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 3 ;
  577. rn1gp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 1 ;
  578. rn1dp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 3 ;
  579. rn2gp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 1 ;
  580. rn2dp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 3 ;
  581. pn1gp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 1 ;
  582. pn1dp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 3 ;
  583. pn2gp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 1 ;
  584. pn2dp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 3 ;
  585. un1gp1 = 'EXTRAIRE' VN1GEOP1 'UN ' 1 1 1 ;
  586. un1dp1 = 'EXTRAIRE' VN1GEOP1 'UN ' 1 1 3 ;
  587. un2gp1 = 'EXTRAIRE' VN2GEOP1 'UN ' 1 1 1 ;
  588. un2dp1 = 'EXTRAIRE' VN2GEOP1 'UN ' 1 1 3 ;
  589. ut1gp1 = 'EXTRAIRE' VN1GEOP1 'UT ' 1 1 1 ;
  590. ut1dp1 = 'EXTRAIRE' VN1GEOP1 'UT ' 1 1 3 ;
  591. ut2gp1 = 'EXTRAIRE' VN2GEOP1 'UT ' 1 1 1 ;
  592. ut2dp1 = 'EXTRAIRE' VN2GEOP1 'UT ' 1 1 3 ;
  593. uv1gp1 = 'EXTRAIRE' VN1GEOP1 'UV ' 1 1 1 ;
  594. uv1dp1 = 'EXTRAIRE' VN1GEOP1 'UV ' 1 1 3 ;
  595. uv2gp1 = 'EXTRAIRE' VN2GEOP1 'UV ' 1 1 1 ;
  596. uv2dp1 = 'EXTRAIRE' VN2GEOP1 'UV ' 1 1 3 ;
  597. nxp1 = 'EXTRAIRE' TN1GEP1F 'NX ' 1 1 1 ;
  598. nyp1 = 'EXTRAIRE' TN1GEP1F 'NY ' 1 1 1 ;
  599. nzp1 = 'EXTRAIRE' TN1GEP1F 'NZ ' 1 1 1 ;
  600. txp1 = 'EXTRAIRE' TN1GEP1F 'TX ' 1 1 1 ;
  601. typ1 = 'EXTRAIRE' TN1GEP1F 'TY ' 1 1 1 ;
  602. tzp1 = 'EXTRAIRE' TN1GEP1F 'TZ ' 1 1 1 ;
  603. vxp1 = 'EXTRAIRE' TN1GEP1F 'VX ' 1 1 1 ;
  604. vyp1 = 'EXTRAIRE' TN1GEP1F 'VY ' 1 1 1 ;
  605. vzp1 = 'EXTRAIRE' TN1GEP1F 'VZ ' 1 1 1 ;
  606. ux1gp1 = (un1gp1 * nxp1) '+' (ut1gp1 * txp1) '+' (uv1gp1 * vxp1) ;
  607. uy1gp1 = (un1gp1 * nyp1) '+' (ut1gp1 * typ1) '+' (uv1gp1 * vyp1) ;
  608. uz1gp1 = (un1gp1 * nzp1) '+' (ut1gp1 * tzp1) '+' (uv1gp1 * vzp1) ;
  609. ux1dp1 = (un1dp1 * nxp1) '+' (ut1dp1 * txp1) '+' (uv1dp1 * vxp1) ;
  610. uy1dp1 = (un1dp1 * nyp1) '+' (ut1dp1 * typ1) '+' (uv1dp1 * vyp1) ;
  611. uz1dp1 = (un1dp1 * nzp1) '+' (ut1dp1 * tzp1) '+' (uv1dp1 * vzp1) ;
  612. ux2gp1 = (un2gp1 * nxp1) '+' (ut2gp1 * txp1) '+' (uv2gp1 * vxp1) ;
  613. uy2gp1 = (un2gp1 * nyp1) '+' (ut2gp1 * typ1) '+' (uv2gp1 * vyp1) ;
  614. uz2gp1 = (un2gp1 * nzp1) '+' (ut2gp1 * tzp1) '+' (uv2gp1 * vzp1) ;
  615. ux2dp1 = (un2dp1 * nxp1) '+' (ut2dp1 * txp1) '+' (uv2dp1 * vxp1) ;
  616. uy2dp1 = (un2dp1 * nyp1) '+' (ut2dp1 * typ1) '+' (uv2dp1 * vyp1) ;
  617. uz2dp1 = (un2dp1 * nzp1) '+' (ut2dp1 * tzp1) '+' (uv2dp1 * vzp1) ;
  618.  
  619. * Selection of the left and the right state
  620.  
  621. MAICEN = 'DIFF' ('CHANGER' 'POI1' GEOP1) GEP1F ;
  622. 'SI' (('NBNO' MAICEN) 'NEG' 2) ;
  623. 'MESSAGE' 'Probleme en maicen' ;
  624. 'ERREUR' 5 ;
  625. 'FINSI' ;
  626.  
  627. PC1 = 'POIN' 1 MAICEN ;
  628. PC2 = 'POIN' 2 MAICEN ;
  629. DXPC1 = ('COORDONNEE' 1 P1) '-' ('COORDONNEE' 1 PC1) ;
  630. DYPC1 = ('COORDONNEE' 2 P1) '-' ('COORDONNEE' 2 PC1) ;
  631. DZPC1 = ('COORDONNEE' 3 P1) '-' ('COORDONNEE' 3 PC1) ;
  632. DXPC2 = ('COORDONNEE' 1 P1) '-' ('COORDONNEE' 1 PC2) ;
  633. DYPC2 = ('COORDONNEE' 2 P1) '-' ('COORDONNEE' 2 PC2) ;
  634. DZPC2 = ('COORDONNEE' 3 P1) '-' ('COORDONNEE' 3 PC2) ;
  635. PSPC1 = (DXPC1 * nxp1) '+' (DYPC1 * nyp1) '+' (DZPC1 * nzp1) ;
  636. PSPC2 = (DXPC2 * nxp1) '+' (DYPC2 * nyp1) '+' (DZPC2 * nzp1) ;
  637. LOG1 = (PSPC1 > 0.0) 'ET' (PSPC2 < 0.0) ;
  638. 'SI' LOG1 ;
  639. PG = PC1 ;
  640. DXG = DXPC1 ;
  641. DYG = DYPC1 ;
  642. DZG = DZPC1 ;
  643. PD = PC2 ;
  644. DXD = DXPC2 ;
  645. DYD = DYPC2 ;
  646. DZD = DZPC2 ;
  647. 'FINSI' ;
  648. LOG2 = (PSPC1 < 0.0) 'ET' (PSPC2 > 0.0) ;
  649. 'SI' LOG2 ;
  650. PG = PC2 ;
  651. DXG = DXPC2 ;
  652. DYG = DYPC2 ;
  653. DZG = DZPC2 ;
  654. PD = PC1 ;
  655. DXD = DXPC1 ;
  656. DYD = DYPC1 ;
  657. DZD = DZPC1 ;
  658. 'FINSI' ;
  659. 'SI' (('NON' LOG1) 'ET' ('NON' LOG2)) ;
  660. 'MESSAGE' 'Probleme en facel' ;
  661. 'ERREUR' 5 ;
  662. 'FINSI' ;
  663.  
  664. al1gn = ('EXTRAIRE' AL1 'SCAL' PG) '+' (
  665. (
  666. (('EXTRAIRE' GRADAL1 'P1DX' PG) * DXG) '+'
  667. (('EXTRAIRE' GRADAL1 'P1DY' PG) * DYG)'+'
  668. (('EXTRAIRE' GRADAL1 'P1DZ' PG) * DZG)
  669. ) * ('EXTRAIRE' LIMAL1 'P1' PG)) ;
  670. al2gn = ('EXTRAIRE' AL2 'SCAL' PG) '+' (
  671. (
  672. (('EXTRAIRE' GRADAL2 'P1DX' PG) * DXG) '+'
  673. (('EXTRAIRE' GRADAL2 'P1DY' PG) * DYG) '+'
  674. (('EXTRAIRE' GRADAL2 'P1DZ' PG) * DZG)
  675. ) * ('EXTRAIRE' LIMAL2 'P1' PG)) ;
  676. rn1gn = ('EXTRAIRE' RN1 'SCAL' PG) '+' (
  677. (
  678. (('EXTRAIRE' GRADRN1 'P1DX' PG) * DXG) '+'
  679. (('EXTRAIRE' GRADRN1 'P1DY' PG) * DYG)'+'
  680. (('EXTRAIRE' GRADRN1 'P1DZ' PG) * DZG)
  681. ) * ('EXTRAIRE' LIMRN1 'P1' PG)) ;
  682. rn2gn = ('EXTRAIRE' RN2 'SCAL' PG) '+' (
  683. (
  684. (('EXTRAIRE' GRADRN2 'P1DX' PG) * DXG) '+'
  685. (('EXTRAIRE' GRADRN2 'P1DY' PG) * DYG)'+'
  686. (('EXTRAIRE' GRADRN2 'P1DZ' PG) * DZG)
  687. ) * ('EXTRAIRE' LIMRN2 'P1' PG)) ;
  688. pn1gn = ('EXTRAIRE' PN1 'SCAL' PG) '+' (
  689. (
  690. (('EXTRAIRE' GRADPN1 'P1DX' PG) * DXG) '+'
  691. (('EXTRAIRE' GRADPN1 'P1DY' PG) * DYG)'+'
  692. (('EXTRAIRE' GRADPN1 'P1DZ' PG) * DZG)
  693. ) * ('EXTRAIRE' LIMPN1 'P1' PG)) ;
  694. pn2gn = ('EXTRAIRE' PN2 'SCAL' PG) '+' (
  695. (
  696. (('EXTRAIRE' GRADPN2 'P1DX' PG) * DXG) '+'
  697. (('EXTRAIRE' GRADPN2 'P1DY' PG) * DYG) '+'
  698. (('EXTRAIRE' GRADPN2 'P1DZ' PG) * DZG)
  699. ) * ('EXTRAIRE' LIMPN2 'P1' PG)) ;
  700. ux1gn = ('EXTRAIRE' VN1 'UX ' PG) '+' (
  701. (
  702. (('EXTRAIRE' GRADUX1 'P1DX' PG) * DXG) '+'
  703. (('EXTRAIRE' GRADUX1 'P1DY' PG) * DYG)'+'
  704. (('EXTRAIRE' GRADUX1 'P1DZ' PG) * DZG)
  705. ) * ('EXTRAIRE' LIMUX1 'P1' PG)) ;
  706. ux2gn = ('EXTRAIRE' VN2 'UX ' PG) '+' (
  707. (
  708. (('EXTRAIRE' GRADUX2 'P1DX' PG) * DXG) '+'
  709. (('EXTRAIRE' GRADUX2 'P1DY' PG) * DYG)'+'
  710. (('EXTRAIRE' GRADUX2 'P1DZ' PG) * DZG)
  711. ) * ('EXTRAIRE' LIMUX2 'P1' PG)) ;
  712. uy1gn = ('EXTRAIRE' VN1 'UY ' PG) '+' (
  713. (
  714. (('EXTRAIRE' GRADUY1 'P2DX' PG) * DXG) '+'
  715. (('EXTRAIRE' GRADUY1 'P2DY' PG) * DYG) '+'
  716. (('EXTRAIRE' GRADUY1 'P2DZ' PG) * DZG)
  717. ) * ('EXTRAIRE' LIMUY1 'P2' PG)) ;
  718. uy2gn = ('EXTRAIRE' VN2 'UY ' PG) '+' (
  719. (
  720. (('EXTRAIRE' GRADUY2 'P2DX' PG) * DXG) '+'
  721. (('EXTRAIRE' GRADUY2 'P2DY' PG) * DYG) '+'
  722. (('EXTRAIRE' GRADUY2 'P2DZ' PG) * DZG)
  723. ) * ('EXTRAIRE' LIMUY2 'P2' PG)) ;
  724. uz1gn = ('EXTRAIRE' VN1 'UZ ' PG) '+' (
  725. (
  726. (('EXTRAIRE' GRADUZ1 'P3DX' PG) * DXG) '+'
  727. (('EXTRAIRE' GRADUZ1 'P3DY' PG) * DYG) '+'
  728. (('EXTRAIRE' GRADUZ1 'P3DZ' PG) * DZG)
  729. ) * ('EXTRAIRE' LIMUZ1 'P3' PG)) ;
  730. uz2gn = ('EXTRAIRE' VN2 'UZ ' PG) '+' (
  731. (
  732. (('EXTRAIRE' GRADUZ2 'P3DX' PG) * DXG) '+'
  733. (('EXTRAIRE' GRADUZ2 'P3DY' PG) * DYG) '+'
  734. (('EXTRAIRE' GRADUZ2 'P3DZ' PG) * DZG)
  735. ) * ('EXTRAIRE' LIMUZ2 'P3' PG)) ;
  736.  
  737. ERRO = 'PROG' ;
  738. ERRO = ERRO 'ET' ('PROG' ((al1gp1 '-' al1gn) 'ABS'));
  739. ERRO = ERRO 'ET' ('PROG' ((al2gp1 '-' al2gn) 'ABS'));
  740. ERRO = ERRO 'ET' ('PROG' ((rn1gp1 '-' rn1gn) 'ABS'));
  741. ERRO = ERRO 'ET' ('PROG' ((rn2gp1 '-' rn2gn) 'ABS'));
  742. ERRO = ERRO 'ET' ('PROG' ((pn1gp1 '-' pn1gn) 'ABS'));
  743. ERRO = ERRO 'ET' ('PROG' ((pn2gp1 '-' pn2gn) 'ABS'));
  744. ERRO = ERRO 'ET' ('PROG' ((ux1gp1 '-' ux1gn) 'ABS'));
  745. ERRO = ERRO 'ET' ('PROG' ((ux2gp1 '-' ux2gn) 'ABS'));
  746. ERRO = ERRO 'ET' ('PROG' ((uy1gp1 '-' uy1gn) 'ABS'));
  747. ERRO = ERRO 'ET' ('PROG' ((uy2gp1 '-' uy2gn) 'ABS'));
  748. ERRO = ERRO 'ET' ('PROG' ((uz1gp1 '-' uz1gn) 'ABS'));
  749. ERRO = ERRO 'ET' ('PROG' ((uz2gp1 '-' uz2gn) 'ABS'));
  750. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  751.  
  752. 'SI' (ERRO > 1.0D-12) ;
  753. 'MESSAGE' 'Deuxieme ordre' ;
  754. 'MESSAGE' 'Les etats gauches' ;
  755. 'MESSAGE' 'Erreur trop importante' ;
  756. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  757. 'ERREUR' 5 ;
  758. 'FINSI' ;
  759.  
  760.  
  761.  
  762. al1dn = ('EXTRAIRE' AL1 'SCAL' PD) '+' (
  763. (
  764. (('EXTRAIRE' GRADAL1 'P1DX' PD) * DXD) '+'
  765. (('EXTRAIRE' GRADAL1 'P1DY' PD) * DYD)'+'
  766. (('EXTRAIRE' GRADAL1 'P1DZ' PD) * DZD)
  767. ) * ('EXTRAIRE' LIMAL1 'P1' PD)) ;
  768. al2dn = ('EXTRAIRE' AL2 'SCAL' PD) '+' (
  769. (
  770. (('EXTRAIRE' GRADAL2 'P1DX' PD) * DXD) '+'
  771. (('EXTRAIRE' GRADAL2 'P1DY' PD) * DYD) '+'
  772. (('EXTRAIRE' GRADAL2 'P1DZ' PD) * DZD)
  773. ) * ('EXTRAIRE' LIMAL2 'P1' PD)) ;
  774. rn1dn = ('EXTRAIRE' RN1 'SCAL' PD) '+' (
  775. (
  776. (('EXTRAIRE' GRADRN1 'P1DX' PD) * DXD) '+'
  777. (('EXTRAIRE' GRADRN1 'P1DY' PD) * DYD)'+'
  778. (('EXTRAIRE' GRADRN1 'P1DZ' PD) * DZD)
  779. ) * ('EXTRAIRE' LIMRN1 'P1' PD)) ;
  780. rn2dn = ('EXTRAIRE' RN2 'SCAL' PD) '+' (
  781. (
  782. (('EXTRAIRE' GRADRN2 'P1DX' PD) * DXD) '+'
  783. (('EXTRAIRE' GRADRN2 'P1DY' PD) * DYD) '+'
  784. (('EXTRAIRE' GRADRN2 'P1DZ' PD) * DZD)
  785. ) * ('EXTRAIRE' LIMRN2 'P1' PD)) ;
  786. pn1dn = ('EXTRAIRE' PN1 'SCAL' PD) '+' (
  787. (
  788. (('EXTRAIRE' GRADPN1 'P1DX' PD) * DXD) '+'
  789. (('EXTRAIRE' GRADPN1 'P1DY' PD) * DYD) '+'
  790. (('EXTRAIRE' GRADPN1 'P1DZ' PD) * DZD)
  791. ) * ('EXTRAIRE' LIMPN1 'P1' PD)) ;
  792. pn2dn = ('EXTRAIRE' PN2 'SCAL' PD) '+' (
  793. (
  794. (('EXTRAIRE' GRADPN2 'P1DX' PD) * DXD) '+'
  795. (('EXTRAIRE' GRADPN2 'P1DY' PD) * DYD) '+'
  796. (('EXTRAIRE' GRADPN2 'P1DZ' PD) * DZD)
  797. ) * ('EXTRAIRE' LIMPN2 'P1' PD)) ;
  798. ux1dn = ('EXTRAIRE' VN1 'UX ' PD) '+' (
  799. (
  800. (('EXTRAIRE' GRADUX1 'P1DX' PD) * DXD) '+'
  801. (('EXTRAIRE' GRADUX1 'P1DY' PD) * DYD) '+'
  802. (('EXTRAIRE' GRADUX1 'P1DZ' PD) * DZD)
  803. ) * ('EXTRAIRE' LIMUX1 'P1' PD)) ;
  804. ux2dn = ('EXTRAIRE' VN2 'UX ' PD) '+' (
  805. (
  806. (('EXTRAIRE' GRADUX2 'P1DX' PD) * DXD) '+'
  807. (('EXTRAIRE' GRADUX2 'P1DY' PD) * DYD) '+'
  808. (('EXTRAIRE' GRADUX2 'P1DZ' PD) * DZD)
  809. ) * ('EXTRAIRE' LIMUX2 'P1' PD)) ;
  810. uy1dn = ('EXTRAIRE' VN1 'UY ' PD) '+' (
  811. (
  812. (('EXTRAIRE' GRADUY1 'P2DX' PD) * DXD) '+'
  813. (('EXTRAIRE' GRADUY1 'P2DY' PD) * DYD) '+'
  814. (('EXTRAIRE' GRADUY1 'P2DZ' PD) * DZD)
  815. ) * ('EXTRAIRE' LIMUY1 'P2' PD)) ;
  816. uy2dn = ('EXTRAIRE' VN2 'UY ' PD) '+' (
  817. (
  818. (('EXTRAIRE' GRADUY2 'P2DX' PD) * DXD) '+'
  819. (('EXTRAIRE' GRADUY2 'P2DY' PD) * DYD) '+'
  820. (('EXTRAIRE' GRADUY2 'P2DZ' PD) * DZD)
  821. ) * ('EXTRAIRE' LIMUY2 'P2' PD)) ;
  822. uz1dn = ('EXTRAIRE' VN1 'UZ ' PD) '+' (
  823. (
  824. (('EXTRAIRE' GRADUZ1 'P3DX' PD) * DXD) '+'
  825. (('EXTRAIRE' GRADUZ1 'P3DY' PD) * DYD) '+'
  826. (('EXTRAIRE' GRADUZ1 'P3DZ' PD) * DZD)
  827. ) * ('EXTRAIRE' LIMUZ1 'P3' PD)) ;
  828. uz2dn = ('EXTRAIRE' VN2 'UZ ' PD) '+' (
  829. (
  830. (('EXTRAIRE' GRADUZ2 'P3DX' PD) * DXD) '+'
  831. (('EXTRAIRE' GRADUZ2 'P3DY' PD) * DYD) '+'
  832. (('EXTRAIRE' GRADUZ2 'P3DZ' PD) * DZD)
  833. ) * ('EXTRAIRE' LIMUZ2 'P3' PD)) ;
  834.  
  835. ERRO = 'PROG' ;
  836. ERRO = ERRO 'ET' ('PROG' ((al1dp1 '-' al1dn) 'ABS'));
  837. ERRO = ERRO 'ET' ('PROG' ((al2dp1 '-' al2dn) 'ABS'));
  838. ERRO = ERRO 'ET' ('PROG' ((rn1dp1 '-' rn1dn) 'ABS'));
  839. ERRO = ERRO 'ET' ('PROG' ((rn2dp1 '-' rn2dn) 'ABS'));
  840. ERRO = ERRO 'ET' ('PROG' ((pn1dp1 '-' pn1dn) 'ABS'));
  841. ERRO = ERRO 'ET' ('PROG' ((pn2dp1 '-' pn2dn) 'ABS'));
  842. ERRO = ERRO 'ET' ('PROG' ((ux1dp1 '-' ux1dn) 'ABS'));
  843. ERRO = ERRO 'ET' ('PROG' ((ux2dp1 '-' ux2dn) 'ABS'));
  844. ERRO = ERRO 'ET' ('PROG' ((uy1dp1 '-' uy1dn) 'ABS'));
  845. ERRO = ERRO 'ET' ('PROG' ((uy2dp1 '-' uy2dn) 'ABS'));
  846. ERRO = ERRO 'ET' ('PROG' ((uz1dp1 '-' uz1dn) 'ABS'));
  847. ERRO = ERRO 'ET' ('PROG' ((uz2dp1 '-' uz2dn) 'ABS'));
  848. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  849. 'SI' (ERRO > 1.0D-12) ;
  850. 'MESSAGE' 'Deuxieme ordre' ;
  851. 'MESSAGE' 'Les etats droites' ;
  852. 'MESSAGE' 'Erreur trop importante' ;
  853. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  854. 'ERREUR' 5 ;
  855. 'FINSI' ;
  856.  
  857. *** Wall point
  858.  
  859. GEOP2 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
  860. GEP2F = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
  861.  
  862. 'SI' GRAPH ;
  863. 'TRACER' (DOMTOT 'ET' ('MANUEL' 'POI1' P2 'COULEUR' 'ROUG'))
  864. 'TITRE' 'Wall' ;
  865. 'FINSI' ;
  866.  
  867. AL1GEOP2 = 'REDU' AL1F GEOP2;
  868. AL2GEOP2 = 'REDU' AL2F GEOP2;
  869. RN1GEOP2 = 'REDU' RN1F GEOP2;
  870. RN2GEOP2 = 'REDU' RN2F GEOP2;
  871. PN1GEOP2 = 'REDU' PN1F GEOP2;
  872. PN2GEOP2 = 'REDU' PN2F GEOP2;
  873. VN1GEOP2 = 'REDU' VN1F GEOP2;
  874. VN2GEOP2 = 'REDU' VN2F GEOP2;
  875. TN1GEP2F = 'REDU' VN1F GEP2F;
  876. TN2GEP2F = 'REDU' VN2F GEP2F;
  877.  
  878. al1gp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 1 ;
  879. al1dp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 3 ;
  880. al2gp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 1 ;
  881. al2dp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 3 ;
  882. rn1gp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 1 ;
  883. rn1dp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 3 ;
  884. rn2gp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 1 ;
  885. rn2dp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 3 ;
  886. pn1gp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 1 ;
  887. pn1dp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 3 ;
  888. pn2gp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 1 ;
  889. pn2dp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 3 ;
  890. un1gp2 = 'EXTRAIRE' VN1GEOP2 'UN ' 1 1 1 ;
  891. un1dp2 = 'EXTRAIRE' VN1GEOP2 'UN ' 1 1 3 ;
  892. un2gp2 = 'EXTRAIRE' VN2GEOP2 'UN ' 1 1 1 ;
  893. un2dp2 = 'EXTRAIRE' VN2GEOP2 'UN ' 1 1 3 ;
  894. ut1gp2 = 'EXTRAIRE' VN1GEOP2 'UT ' 1 1 1 ;
  895. ut1dp2 = 'EXTRAIRE' VN1GEOP2 'UT ' 1 1 3 ;
  896. ut2gp2 = 'EXTRAIRE' VN2GEOP2 'UT ' 1 1 1 ;
  897. ut2dp2 = 'EXTRAIRE' VN2GEOP2 'UT ' 1 1 3 ;
  898. uv1gp2 = 'EXTRAIRE' VN1GEOP2 'UV ' 1 1 1 ;
  899. uv1dp2 = 'EXTRAIRE' VN1GEOP2 'UV ' 1 1 3 ;
  900. uv2gp2 = 'EXTRAIRE' VN2GEOP2 'UV ' 1 1 1 ;
  901. uv2dp2 = 'EXTRAIRE' VN2GEOP2 'UV ' 1 1 3 ;
  902. nxp2 = 'EXTRAIRE' TN1GEP2F 'NX ' 1 1 1 ;
  903. nyp2 = 'EXTRAIRE' TN1GEP2F 'NY ' 1 1 1 ;
  904. nzp2 = 'EXTRAIRE' TN1GEP2F 'NZ ' 1 1 1 ;
  905. txp2 = 'EXTRAIRE' TN1GEP2F 'TX ' 1 1 1 ;
  906. typ2 = 'EXTRAIRE' TN1GEP2F 'TY ' 1 1 1 ;
  907. tzp2 = 'EXTRAIRE' TN1GEP2F 'TZ ' 1 1 1 ;
  908. vxp2 = 'EXTRAIRE' TN1GEP2F 'VX ' 1 1 1 ;
  909. vyp2 = 'EXTRAIRE' TN1GEP2F 'VY ' 1 1 1 ;
  910. vzp2 = 'EXTRAIRE' TN1GEP2F 'VZ ' 1 1 1 ;
  911. ux1gp2 = (un1gp2 * nxp2) '+' (ut1gp2 * txp2) '+' (uv1gp2 * vxp2) ;
  912. uy1gp2 = (un1gp2 * nyp2) '+' (ut1gp2 * typ2) '+' (uv1gp2 * vyp2) ;
  913. uz1gp2 = (un1gp2 * nzp2) '+' (ut1gp2 * tzp2) '+' (uv1gp2 * vzp2) ;
  914. ux2gp2 = (un2gp2 * nxp2) '+' (ut2gp2 * txp2) '+' (uv2gp2 * vxp2) ;
  915. uy2gp2 = (un2gp2 * nyp2) '+' (ut2gp2 * typ2) '+' (uv2gp2 * vyp2) ;
  916. uz2gp2 = (un2gp2 * nzp2) '+' (ut2gp2 * tzp2) '+' (uv2gp2 * vzp2) ;
  917.  
  918. * Selection of the left and the right state
  919.  
  920. MAICEN = 'DIFF' ('CHANGER' 'POI1' GEOP2) GEP2F ;
  921. 'SI' (('NBNO' MAICEN) 'NEG' 1) ;
  922. 'MESSAGE' 'Probleme en maicen' ;
  923. 'ERREUR' 5 ;
  924. 'FINSI' ;
  925.  
  926. PC1 = 'POIN' 1 MAICEN ;
  927. DXPC1 = ('COORDONNEE' 1 P2) '-' ('COORDONNEE' 1 PC1) ;
  928. DYPC1 = ('COORDONNEE' 2 P2) '-' ('COORDONNEE' 2 PC1) ;
  929. DZPC1 = ('COORDONNEE' 3 P2) '-' ('COORDONNEE' 3 PC1) ;
  930. PSPC1 = (DXPC1 * nxp2) '+' (DYPC1 * nyp2)
  931. '+' (DZPC1 * nzp2) ;
  932. LOG1 = (PSPC1 > 0.0) ;
  933. 'SI' LOG1 ;
  934. PG = PC1 ;
  935. DXG = DXPC1 ;
  936. DYG = DYPC1 ;
  937. DZG = DZPC1 ;
  938. 'FINSI' ;
  939. 'SI' (('NON' LOG1)) ;
  940. 'MESSAGE' 'Probleme en facel' ;
  941. 'ERREUR' 5 ;
  942. 'FINSI' ;
  943.  
  944. al1gn = ('EXTRAIRE' AL1 'SCAL' PG) '+' (
  945. (
  946. (('EXTRAIRE' GRADAL1 'P1DX' PG) * DXG) '+'
  947. (('EXTRAIRE' GRADAL1 'P1DY' PG) * DYG)'+'
  948. (('EXTRAIRE' GRADAL1 'P1DZ' PG) * DZG)
  949. ) * ('EXTRAIRE' LIMAL1 'P1' PG)) ;
  950. al2gn = ('EXTRAIRE' AL2 'SCAL' PG) '+' (
  951. (
  952. (('EXTRAIRE' GRADAL2 'P1DX' PG) * DXG) '+'
  953. (('EXTRAIRE' GRADAL2 'P1DY' PG) * DYG) '+'
  954. (('EXTRAIRE' GRADAL2 'P1DZ' PG) * DZG)
  955. ) * ('EXTRAIRE' LIMAL2 'P1' PG)) ;
  956. rn1gn = ('EXTRAIRE' RN1 'SCAL' PG) '+' (
  957. (
  958. (('EXTRAIRE' GRADRN1 'P1DX' PG) * DXG) '+'
  959. (('EXTRAIRE' GRADRN1 'P1DY' PG) * DYG) '+'
  960. (('EXTRAIRE' GRADRN1 'P1DZ' PG) * DZG)
  961. ) * ('EXTRAIRE' LIMRN1 'P1' PG)) ;
  962. rn2gn = ('EXTRAIRE' RN2 'SCAL' PG) '+' (
  963. (
  964. (('EXTRAIRE' GRADRN2 'P1DX' PG) * DXG) '+'
  965. (('EXTRAIRE' GRADRN2 'P1DY' PG) * DYG) '+'
  966. (('EXTRAIRE' GRADRN2 'P1DZ' PG) * DZG)
  967. ) * ('EXTRAIRE' LIMRN2 'P1' PG)) ;
  968. pn1gn = ('EXTRAIRE' PN1 'SCAL' PG) '+' (
  969. (
  970. (('EXTRAIRE' GRADPN1 'P1DX' PG) * DXG) '+'
  971. (('EXTRAIRE' GRADPN1 'P1DY' PG) * DYG) '+'
  972. (('EXTRAIRE' GRADPN1 'P1DZ' PG) * DZG)
  973. ) * ('EXTRAIRE' LIMPN1 'P1' PG)) ;
  974. pn2gn = ('EXTRAIRE' PN2 'SCAL' PG) '+' (
  975. (
  976. (('EXTRAIRE' GRADPN2 'P1DX' PG) * DXG) '+'
  977. (('EXTRAIRE' GRADPN2 'P1DY' PG) * DYG) '+'
  978. (('EXTRAIRE' GRADPN2 'P1DZ' PG) * DZG)
  979. ) * ('EXTRAIRE' LIMPN2 'P1' PG)) ;
  980. ux1gn = ('EXTRAIRE' VN1 'UX ' PG) '+' (
  981. (
  982. (('EXTRAIRE' GRADUX1 'P1DX' PG) * DXG) '+'
  983. (('EXTRAIRE' GRADUX1 'P1DY' PG) * DYG) '+'
  984. (('EXTRAIRE' GRADUX1 'P1DZ' PG) * DZG)
  985. ) * ('EXTRAIRE' LIMUX1 'P1' PG)) ;
  986. ux2gn = ('EXTRAIRE' VN2 'UX ' PG) '+' (
  987. (
  988. (('EXTRAIRE' GRADUX2 'P1DX' PG) * DXG) '+'
  989. (('EXTRAIRE' GRADUX2 'P1DY' PG) * DYG) '+'
  990. (('EXTRAIRE' GRADUX2 'P1DZ' PG) * DZG)
  991. ) * ('EXTRAIRE' LIMUX2 'P1' PG)) ;
  992. uy1gn = ('EXTRAIRE' VN1 'UY ' PG) '+' (
  993. (
  994. (('EXTRAIRE' GRADUY1 'P2DX' PG) * DXG) '+'
  995. (('EXTRAIRE' GRADUY1 'P2DY' PG) * DYG) '+'
  996. (('EXTRAIRE' GRADUY1 'P2DZ' PG) * DZG)
  997. ) * ('EXTRAIRE' LIMUY1 'P2' PG)) ;
  998. uy2gn = ('EXTRAIRE' VN2 'UY ' PG) '+' (
  999. (
  1000. (('EXTRAIRE' GRADUY2 'P2DX' PG) * DXG) '+'
  1001. (('EXTRAIRE' GRADUY2 'P2DY' PG) * DYG) '+'
  1002. (('EXTRAIRE' GRADUY2 'P2DZ' PG) * DZG)
  1003. ) * ('EXTRAIRE' LIMUY2 'P2' PG)) ;
  1004.  
  1005. ERRO = 'PROG' ;
  1006. ERRO = ERRO 'ET' ('PROG' ((al1gp2 '-' al1gn) 'ABS'));
  1007. ERRO = ERRO 'ET' ('PROG' ((al2gp2 '-' al2gn) 'ABS'));
  1008. ERRO = ERRO 'ET' ('PROG' ((rn1gp2 '-' rn1gn) 'ABS'));
  1009. ERRO = ERRO 'ET' ('PROG' ((rn2gp2 '-' rn2gn) 'ABS'));
  1010. ERRO = ERRO 'ET' ('PROG' ((pn1gp2 '-' pn1gn) 'ABS'));
  1011. ERRO = ERRO 'ET' ('PROG' ((pn2gp2 '-' pn2gn) 'ABS'));
  1012. ERRO = ERRO 'ET' ('PROG' ((ux1gp2 '-' ux1gn) 'ABS'));
  1013. ERRO = ERRO 'ET' ('PROG' ((ux2gp2 '-' ux2gn) 'ABS'));
  1014. ERRO = ERRO 'ET' ('PROG' ((uy1gp2 '-' uy1gn) 'ABS'));
  1015. ERRO = ERRO 'ET' ('PROG' ((uy2gp2 '-' uy2gn) 'ABS'));
  1016. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  1017.  
  1018. 'SI' (ERRO > 1.0D-12) ;
  1019. 'MESSAGE' 'Deuxieme ordre' ;
  1020. 'MESSAGE' 'Les etats gauches au mur' ;
  1021. 'MESSAGE' 'Erreur trop importante' ;
  1022. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  1023. 'ERREUR' 5 ;
  1024. 'FINSI' ;
  1025.  
  1026. ERRO = 'PROG' ;
  1027. ERRO = ERRO 'ET' ('PROG' ((al1gp2 '-' al1dp2) 'ABS'));
  1028. ERRO = ERRO 'ET' ('PROG' ((al2gp2 '-' al2dp2) 'ABS'));
  1029. ERRO = ERRO 'ET' ('PROG' ((rn1gp2 '-' rn1dp2) 'ABS'));
  1030. ERRO = ERRO 'ET' ('PROG' ((rn2gp2 '-' rn2dp2) 'ABS'));
  1031. ERRO = ERRO 'ET' ('PROG' ((pn1gp2 '-' pn1dp2) 'ABS'));
  1032. ERRO = ERRO 'ET' ('PROG' ((pn2gp2 '-' pn2dp2) 'ABS'));
  1033. ERRO = ERRO 'ET' ('PROG' ((un1gp2 '+' un1dp2) 'ABS'));
  1034. ERRO = ERRO 'ET' ('PROG' ((un2gp2 '+' un2dp2) 'ABS'));
  1035. ERRO = ERRO 'ET' ('PROG' ((ut1gp2 '-' ut1dp2) 'ABS'));
  1036. ERRO = ERRO 'ET' ('PROG' ((ut2gp2 '-' ut2dp2) 'ABS'));
  1037. ERRO = 'MAXIMUM' ERRO 'ABS' ;
  1038. 'SI' (ERRO > 1.0D-12) ;
  1039. 'MESSAGE' 'Deuxieme ordre' ;
  1040. 'MESSAGE' 'Les etats gauches au mur' ;
  1041. 'MESSAGE' 'Erreur trop importante' ;
  1042. 'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
  1043. 'ERREUR' 5 ;
  1044. 'FINSI' ;
  1045. 'FIN' ;
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  

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