Télécharger INTG_test.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : INTG_test.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5.  
  6. ************************************************************************
  7. * Ce Cas-Test permet de tester l'operateur INTG dans differentes
  8. * configurations d'options
  9. ************************************************************************
  10.  
  11. OPTI DIME 3 ELEM 'CUB8';
  12. XZPREC = (VALE 'PREC') * 100.D0;
  13.  
  14. ************************************************************************
  15. * MAILLAGE d'un CUBE de cote L
  16. ************************************************************************
  17. L = 2.D0 ;
  18. NBE1 = 10 ;
  19.  
  20. P1 = 0. 0. 0. ;
  21. P2 = L 0. 0. ;
  22.  
  23. L1 = DROI NBE1 P1 P2;
  24. L2 = L1 PLUS (0. L 0.);
  25.  
  26. S1 = L1 REGL NBE1 L2;
  27. S2 = S1 PLUS (0. 0. L);
  28.  
  29. V1 = S1 VOLU NBE1 S2;
  30.  
  31. *TRAC CACH V1;
  32.  
  33.  
  34. ************************************************************************
  35. * MODELE et MCHAML
  36. ************************************************************************
  37. MOD1 = MODE V1 'MECANIQUE' 'ELASTIQUE';
  38. MCH1 = MANU 'CHML' MOD1 'VOL1' 1.D0 ; COMM 'MCHAML CONSTANT';
  39.  
  40. MOD2 = REDU MOD1 (VIDE 'MAILLAGE');
  41.  
  42.  
  43. ************************************************************************
  44. * INTEGRALES
  45. ************************************************************************
  46. INTG11 = INTG MOD1 MCH1;
  47.  
  48. TEST = ABS (INTG11 - (L ** 3)) ;
  49. MESS TEST XZPREC;
  50. SI (TEST > XZPREC);
  51. MESS 'ERREUR 1 DANS INTG';
  52. ERRE 5;
  53. FINS;
  54.  
  55.  
  56. INTG12 = INTG MOD1 MCH1 'ELEM';
  57. MIN12 = MINI INTG12;
  58. MAX12 = MAXI INTG12;
  59. DELTA = MAX12 - MIN12;
  60. TEST = MAX12 - (INTG11 / (NBE1 **3));
  61. MESS MIN12 MAX12 DELTA TEST;
  62. SI ((DELTA > XZPREC) OU (TEST > XZPREC));
  63. MESS 'ERREUR 2 DANS INTG';
  64. ERRE 5;
  65. FINS;
  66.  
  67.  
  68. INTG21 = INTG MOD2 MCH1;
  69. MESS INTG21;
  70. SI (INTG21 > 0.D0);
  71. MESS 'ERREUR 3 DANS INTG';
  72. ERRE 5;
  73. FINS;
  74.  
  75.  
  76. INTG22 = INTG MOD2 MCH1 'ELEM';
  77. MAIL22 = EXTR INTG22 'MAIL';
  78. TEST = NBEL MAIL22;
  79. SI (TEST NEG 0);
  80. MESS 'ERREUR 4 DANS INTG';
  81. ERRE 5;
  82. FINS;
  83.  
  84. *----------------------------------------------------------------------*
  85. * INTEGRATION DE COURBES D'EVOLUTION *
  86. *----------------------------------------------------------------------*
  87.  
  88.  
  89. * COURBES MONOTONES :
  90. *--------------------
  91.  
  92. * Definition de 2 evolutions :
  93. ev1 = evol manu 'x' (prog 1. pas 1. 10.) 'y' (prog 1. pas 1. 10.) ;
  94. ev1 = 3. * ev1 ;
  95. ev2 = ev1 ** 2 ;
  96. ev0 = ev1 et ev2 ;
  97.  
  98. zp1 = 2.e4 * (vale prec) ;
  99.  
  100. *-------------- Integration de 1 courbe sur 1 intervalle --------------*
  101.  
  102. xx = intg ev1 ;
  103. list xx ;
  104. * 'Resultat doit etre' : 148.5 ;
  105. yy = 148.5 ;
  106. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  107.  
  108. *--- Option INDI :
  109. xx = intg ev1 indi 1 2 ;
  110. list xx ;
  111. * 'Resultat doit etre' : 4.5 ;
  112. yy = 4.5 ;
  113. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  114.  
  115. xx = intg ev1 indi 2 4 ;
  116. list xx ;
  117. * 'Resultat doit etre' : 18. ;
  118. yy = 18.0 ;
  119. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  120.  
  121. *--- Option BORN :
  122. * Pour les bornes reelles, je cree une evol + raffinee
  123. ev3 = evol manu 'x' (prog 1. pas 0.1 10.) 'y' (prog 1. pas 0.1 10.) ;
  124. ev3 = 3. * ev3 ;
  125. xx = intg ev1 born 1.2 5.3 ;
  126. list xx ;
  127. * 'Resultat doit etre' : 39.975 ;
  128. * (6. + 3.6) * 0.5 * 0.8 + (2.5 + 10.5 + 13.5) + ((15.9 + 15.) * 0.5 * 0.3)
  129. yy = 39.975 ;
  130. zz = intg ev3 indi 3 44 ;
  131. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  132. si ((zz - yy) > zp1) ; erre 21 ; fins ;
  133.  
  134. * Bornes en dehores de l'intervalle de definition :
  135. * On prolonge avec la valeur a droite eou a gauche :
  136. xx = intg ev1 born 0. 10. ;
  137. list xx ;
  138. * 'Resultat doit etre' : 15.5*9.+1. = 151.5
  139. yy = 151.5 ;
  140. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  141.  
  142. xx = intg ev1 born 0. 15. ;
  143. list xx ;
  144. * 'Resultat doit etre' : 15.5*9.+1.+30.*5. = 301.5
  145. yy = 301.5 ;
  146. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  147.  
  148. * Bornes inversees :
  149. xx = intg ev1 born 11.2 1.7 ;
  150. list xx ;
  151. * 'Resultat doit etre' : -1.*xx
  152. yy = -1. * (intg ev1 born 1.7 11.2) ;
  153. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  154.  
  155. * Intervalle de largeur nulle ;
  156. xx = intg ev1 born 2.5 2.5 ;
  157. list xx ;
  158. * 'Resultat doit etre' : 0.
  159. yy = 0. ;
  160. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  161.  
  162.  
  163. *----------------- 1 evolution, plusieurs intervalles -----------------*
  164.  
  165. *--- Option INDI :
  166. xx = intg ev1 indi (lect 1 2) (lect 2 4) ;
  167. list xx ;
  168. * 'Resultat doit etre' : {0. 3.5 18.}
  169. yy = prog 4.5 18. ;
  170. si ((xx - yy maxi abs) > zp1) ; erre 21 ; fins ;
  171.  
  172. *--- Option BORN :
  173. xx = intg ev1 born (prog 1.2 2.) (prog 5.3 7.7) ;
  174. list xx ;
  175. * 'Resultat doit etre' : {39.975 82.935}
  176. * (7.5 + 10.5 + 13.5 + 16.5 + 19.5) + ((21.+23.1)*0.5*0.7) ;
  177. yy = prog 39.975 82.935 ;
  178. si ((xx - yy maxi abs) > zp1) ; erre 21 ; fins ;
  179.  
  180. * En dehors de l'intervalle de definition :
  181. xx = intg ev1 born (prog 1.2 0.) (prog 5.3 11.) ;
  182. list xx ;
  183. * 'Resultat doit etre' : {39.975 181.5}
  184. * 148.5 + 3. + 30. = 181.5
  185. yy = prog 39.975 181.5 ;
  186. si ((xx - yy maxi abs) > zp1) ; erre 21 ; fins ;
  187.  
  188. * Bornes "inversees" :
  189. xx = intg ev1 born (prog 1.2 11.) (prog 5.3 0.) ;
  190. list xx ;
  191. * 'Resultat doit etre' : {39.975 -181.5}
  192. * 148.5 + 3. + 30. = -181.5
  193. yy = prog 39.975 -181.5 ;
  194. si ((xx - yy maxi abs) > zp1) ; erre 21 ; fins ;
  195.  
  196. * 1 intervalle de largeur nulle :
  197. xx = intg ev1 born (prog 1.2 11.) (prog 1.2 0.) ;
  198. list xx ;
  199. * 'Resultat doit etre' : {0. -181.5}
  200. * 148.5 + 3. + 30. = -181.5
  201. yy = prog 0. -181.5 ;
  202. si ((xx - yy maxi abs) > zp1) ; erre 21 ; fins ;
  203.  
  204. *---------- Integration de plusieurs courbes sur 1 intervalle ---------*
  205. xx = intg ev0 ;
  206. list xx ;
  207. * 'Resultat doit etre' (148.5 3010.5) ;
  208. yy = prog 148.5 3010.5 ;
  209. si ((xx - yy maxi abs) > zp1) ; erre 21 ; fins ;
  210.  
  211. *--- Option INDI :
  212. xx = intg ev0 indi 1 2 ;
  213. list xx ;
  214. * 'Resultat doit etre' (4.5 22.5)
  215. yy = prog 4.5 22.5 ;
  216. si ((xx - yy maxi abs) > zp1) ; erre 21 ; fins ;
  217.  
  218. xx = intg ev0 indi 2 4 ;
  219. list xx ;
  220. * 'Resultat doit etre' : {18. 171.}
  221. yy = prog 18. 171. ;
  222. si ((xx - yy maxi abs) > zp1) ; erre 21 ; fins ;
  223.  
  224. *--- Option BORN :
  225. ev4 = ipol (prog 1. pas 0.1 10.) ev2 ;
  226. ev4 = evol manu (prog 1. pas 0.1 10.) ev4 ;
  227. ev5 = ev3 et ev4 ;
  228. xx = intg ev0 born 1.2 5.3 ;
  229. list xx ;
  230. yy = intg ev5 indi 3 44 ;
  231. list yy ;
  232. si ((xx - yy maxi abs) > zp1) ; erre 21 ; fins ;
  233.  
  234. *----- Integration de plusieurs courbes sur plusieurs intervalles -----*
  235.  
  236. *--- Option INDI :
  237. xx = intg ev0 indi (lect 1 2) (lect 2 4) ;
  238. list xx ;
  239. * 'Resultat doit etre' : 1 NUAGE avec 2 LISTREEL, 1 par courbe
  240. * {4.5 18.000} {22.5 171.}
  241. yy1 = prog 4.5 18. ;
  242. yy2 = prog 22.5 171. ;
  243. * Extraction LISTREEL du NUAGE :
  244. xx1 = extr xx 'IE1' ;
  245. ii = 2 ;
  246. xx2 = extr xx (chai 'IE' ii) ;
  247. si ((xx1 - yy1 maxi abs) > zp1) ; erre 21 ; fins ;
  248. si ((xx2 - yy2 maxi abs) > zp1) ; erre 21 ; fins ;
  249.  
  250. *--- Option BORN :
  251.  
  252. * Plusieurs evolutions, plusieurs intervalles :
  253. xx = intg ev0 born (prog 1.2 1.7) (prog 5.3 7.1) ;
  254. yy = intg ev5 indi (lect 3 8) (lect 44 62) ;
  255. xx1 = extr xx IE1 ;
  256. yy1 = extr yy IE1 ;
  257. xx2 = extr xx IE2 ;
  258. yy2 = extr yy IE2 ;
  259. list xx1 ;
  260. list yy1 ;
  261. list xx2 ;
  262. list yy2 ;
  263. si ((xx1 - yy1 maxi abs) > zp1) ; erre 21 ; fins ;
  264. si ((xx2 - yy2 maxi abs) > zp1) ; erre 21 ; fins ;
  265.  
  266. * FONCTIONS MULTIVALUEES :
  267. * ------------------------
  268.  
  269. * Cercle :
  270. * --------
  271.  
  272. lx1 = prog 0. pas 0.05 2. ;
  273. lx1 = 180. * lx1 ;
  274. ly1 = cos lx1 ;
  275. ly2 = sin lx1 ;
  276. evx = evol manu ly1 ly2 ;
  277. *dess evx ;
  278.  
  279. xx = intg evx ;
  280. list xx ;
  281. * 'Resultat doit etre' : approximation de -pi
  282. yy = intg evx indi 1 41 ;
  283. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  284.  
  285. * Valeur absolu, resultat doit etre : 0.
  286. xx = intg evx abso ;
  287. list xx ;
  288. * 'Resultat doit etre' : 0.
  289. yy = 0. ;
  290. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  291.  
  292. * Avec INDI et borne :
  293. xx = intg evx born 1. 0. ;
  294. list xx ;
  295. yy = intg evx indi 41 1 ;
  296. * 'Resultat doit etre' : moitie integrale totale
  297. yy = 0.5 * yy ;
  298. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  299.  
  300. * Sinus "vertical" :
  301. * ------------------
  302.  
  303. * Integrale sur tout le domaine :
  304. lx1 = prog 0. pas 0.05 2. ;
  305. lx1 = 180. * lx1 ;
  306. ly2 = sin lx1 ;
  307. evx = evol manu ly2 lx1 ;
  308. *dess evx ;
  309.  
  310. xx = intg evx ;
  311. list xx ;
  312. * 'Resultat doit etre' : 0.
  313. yy = 0. ;
  314. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  315.  
  316. * En donnant les bornes :
  317. xx = intg evx born 0. 1. ;
  318. list xx ;
  319. yy = intg evx indi 1 21 ;
  320. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  321.  
  322. * "S" :
  323. lx1 = prog 1.1 pas 1. 5.1 5.1 5.1 pas -1. 1.1 1.1 1.1 pas 1. 5.1 ;
  324. ly1 = prog 5*0 1. 5*2 3. 5*4 ;
  325. evx = evol roug manu 'x' lx1 'y' ly1 ;
  326. *dess evx ;
  327.  
  328. xx = intg evx ;
  329. list xx ;
  330. * 'Resultat doit etre' : 8.
  331. yy = 8. ;
  332. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  333.  
  334. * Moitie intervalle :
  335. xx = intg evx born 1.1 3.1 ;
  336. list xx ;
  337. * 'Resultat doit etre' : 4.
  338. yy = 4. ;
  339. si ((xx - yy) > zp1) ; erre 21 ; fins ;
  340.  
  341. * Cas pathologique signale au support :
  342. * -------------------------------------
  343. lra = prog 0 pas 0.5 2;
  344. lro = prog 5*1;
  345. ev1 = evol manu lra lro;
  346.  
  347. int1 = intg ev1 borne 1. 1.3 ;
  348. list int1 ;
  349.  
  350. si (int1 neg 0.3 (vale prec)) ; erre 21 ; fins ;
  351.  
  352. fin ;
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  

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