Télécharger test_intgeo.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : test_intgeo.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. ****************************************************
  6.  
  7. * teste l'option GEOM de l'operateurINTE
  8. * creation : Benoit PRABEL, 12/09/2012
  9. * modifs : ...
  10. ****************************************************
  11.  
  12. ****** OPTIONS GENERALES ET PARAMETRES **********
  13.  
  14. opti dime 3 elem tri3;
  15. * opti trac open ;
  16. * opti trac PSC ;
  17. opti trac 'PSC' 'EPTR' 5 'POTR' 'HELVETICA_16';
  18. * opti impi 12;
  19.  
  20. *** qq points de vue ***
  21. eyex = 1000. 0. 0.;
  22. eyey = 0. -1000. 0.;
  23. eyez = 0. 0. 1000.;
  24. eye3d = 500. -800. 400.;
  25.  
  26. *** nberr = nombre d'erreurs détectées ***
  27. nberr= 0;
  28.  
  29. ****** CAS DE BASE 1 **********
  30.  
  31. TITR 'CAS DE BASE 1 : INCLUSION';
  32.  
  33. *construction de tri1
  34. p1 = 0. 0. 0.;
  35. p2 = 1. 0. 0.;
  36. p3 = 0. 2. 0.;
  37. tri1 = manu 'TRI3' p1 p2 p3 'VERT';
  38.  
  39. *construction de tri2 avec plusieurs inclinaisons
  40. p41 = -1. 1. 2.;
  41. p51 = 3. 1. 2.;
  42. p61 = 0. 1. -2.;
  43. tri21 = manu 'TRI3' p41 p51 p61 'BLEU';
  44. p42 = -1. 0. 0.5;
  45. p52 = 3. 0. 0.5;
  46. p62 = 0. 3. -0.5;
  47. tri22 = manu 'TRI3' p42 p52 p62 'BLEU';
  48. p43 = -1. 2. 2.;
  49. p53 = 3. 2. 2.;
  50. p63 = 0. -2. -2.;
  51. tri23 = manu 'TRI3' p43 p53 p63 'BLEU';
  52.  
  53. trac eye3d (tri1 et tri21) ;
  54. tri11b tri21b lig11 lig21 = INTE 'GEOM' tri1 tri21;
  55. lig11 = lig11 coul 'ORAN';
  56. list tri11b; list tri21b; list lig11; list lig21;
  57.  
  58. trac eye3d (tri11b et tri21b) ;
  59. trac eye3d (tri11b et lig11) ;
  60. trac eye3d (tri21b et lig21) ;
  61.  
  62. tri12b tri22b lig12 lig22 = INTE 'GEOM' tri1 tri22;
  63. trac eye3d (tri12b) ;
  64. trac eye3d (tri22b) ;
  65. tri13b tri23b lig13 lig23 = INTE 'GEOM' tri1 tri23;
  66. trac eye3d (tri13b) ;
  67. trac eye3d (tri23b) ;
  68.  
  69. si ((nbel tri11b) neg 3); nberr=nberr+1; fins;
  70. si ((nbel tri12b) neg 3); nberr=nberr+1; fins;
  71. si ((nbel tri13b) neg 1); nberr=nberr+1; fins;
  72. si ((nbel tri21b) neg 5); nberr=nberr+1; fins;
  73. si ((nbel tri22b) neg 5); nberr=nberr+1; fins;
  74. si ((nbel tri23b) neg 5); nberr=nberr+1; fins;
  75. mess '1 : nberr=' nberr;
  76.  
  77. ****** CAS DE BASE 2 **********
  78.  
  79. TITR 'CAS DE BASE 2 : INCLUSION INVERSE';
  80.  
  81. tri2c tri1c lig2c lig1c = INTE 'GEOM' tri21 tri1;
  82. lig2c = lig2c coul 'ORAN';
  83. trac eye3d (tri1c et tri2c et lig2c) ;
  84.  
  85.  
  86. ****** CAS DE BASE 3 **********
  87.  
  88. TITR 'CAS DE BASE 3 : chevauchement';
  89.  
  90. p7 = 0. 1.5 0.5;
  91. p8 = 2. 1.5 0.5;
  92. p9 = 1. 0. -0.5;
  93. tri3 = manu 'TRI3' p7 p8 p9 'TURQ';
  94.  
  95. trac eye3d (tri1 et tri3) ;
  96. tri13 tri33 lig13 lig33= INTE 'GEOM' tri1 tri3;
  97. * trac eyez (tri13 et tri33 et lig13) ;
  98. * trac eyey (tri13 et tri33 et lig13) ;
  99. trac eye3d (tri13 et lig13) ;
  100. trac eye3d (tri33 et lig33) ;
  101.  
  102. si ((nbel tri13) neg 4); nberr=nberr+1; fins;
  103. si ((nbel tri23) neg 1); nberr=nberr+1; fins;
  104. mess '3 : nberr=' nberr;
  105.  
  106.  
  107.  
  108. ******* CAS PLAN - PLAN ******
  109.  
  110. ntri1 = 20; ntri2 = 8;
  111.  
  112. TITR (chai 'CAS COMPLEXE 4 : PLAN - PLAN (n=' ntri1 ntri2 ')' );
  113.  
  114. *surface reglee 1
  115. nregl1 = ntri1 / 2;
  116. dx1 = (10./nregl1);
  117. DENS dx1;
  118. pp1 = 0. 0. 0.;
  119. pp2 = 0. 2. 0.;
  120. vx1 = 10. 0. 0.;
  121. d1 = pp1 droi 1 pp2;
  122. d2 = d1 plus vx1;
  123. s1 = d1 regl nregl1 d2 ;
  124. s1 = s1 coul VERT;
  125. s1cote4 = (s1 cote 4) CHAN poi1;
  126.  
  127. *surface reglee 2
  128. nregl2 = ntri2 / 2;
  129. dx2 = 1.;
  130. DENS dx1;
  131. ppp1 = -1.5 1. 1.;
  132. ppp2 = 0. 1. -1.;
  133. vx2 = nregl2 * (1. 0. 0.);
  134. dd1 = ppp1 droi 1 ppp2;
  135. dd2 = dd1 plus vx2;
  136. s2 = dd1 regl nregl2 dd2 ;
  137. s2 = s2 coul BLEU;
  138.  
  139. trac (-700. -400. 330.) (s1 et s2) ;
  140. s11 s22 lig11 lig22= INTE 'GEOM' s1 s2;
  141. trac (-700. -400. 330.) (s11 et s22 et lig11 et lig22) ;
  142. trac (-700. -400. 330.) (s11) ;
  143. trac (-700. -400. 330.) (s22) ;
  144.  
  145. si ((nbel lig11) neg 13); nberr=nberr+1; fins;
  146. si ((nbno lig11) neg 14); nberr=nberr+1; fins;
  147. mess '4 : nberr=' nberr;
  148.  
  149.  
  150. ******* CAS PLAN - CYLINDRE ******
  151.  
  152. *cylindre 2
  153. nz = 1;
  154. hz = 2.;
  155. ray2 = 2.;
  156. ncirc = 4;
  157. pcen2 = 5. (1.5*ray2) (-0.5*hz);
  158. pcyl1 = pcen2 moin (ray2 0. 0.);
  159. pcyl2 = pcen2 moin (0. ray2 0.);
  160. pcyl3 = pcen2 plus (ray2 0. 0.);
  161. pcyl4 = pcen2 plus (0. ray2 0.);
  162. cer2 = (cer3 ncirc pcyl1 pcyl2 pcyl3)
  163. et (cer3 ncirc pcyl3 pcyl4 pcyl1) ;
  164. cyl2 = cer2 TRAN nz (0. 0. hz);
  165.  
  166. TITR 'CAS COMPLEXE 5 : PLAN - CYLINDRE (' nz ncirc ')';
  167. trac (s1 et cyl2) 'CACH';
  168.  
  169. s111 cyl22 cer11 cer22 = INTE 'GEOM' s1 cyl2;
  170. list cer11;
  171. trac (s111 et cyl22) 'CACH';
  172. trac (s111) 'CACH';
  173. trac (cyl22) 'CACH';
  174.  
  175. nz = 2;
  176. TITR 'CAS COMPLEXE 6 : PLAN - CYLINDRE (' nz ncirc ')';
  177. cyl2 = cer2 TRAN nz (0. 0. hz);
  178. trac (s1 et cyl2);
  179. s111 cyl22 cer11 cer22 = INTE 'GEOM' s1 cyl2;
  180. trac (s111 et cyl22) 'CACH';
  181.  
  182. ncirc = 6;
  183. TITR 'CAS COMPLEXE 7 : PLAN - CYLINDRE (' nz ncirc ')';
  184. pcen2 = 5. (1.5*ray2) (-0.5*hz);
  185. pcyl1 = pcen2 moin (ray2 0. 0.);
  186. pcyl2 = pcen2 moin (0. ray2 0.);
  187. pcyl3 = pcen2 plus (ray2 0. 0.);
  188. pcyl4 = pcen2 plus (0. ray2 0.);
  189. cer2 = (cer3 ncirc pcyl1 pcyl2 pcyl3)
  190. et (cer3 ncirc pcyl3 pcyl4 pcyl1) ;
  191. cyl2 = cer2 TRAN nz (0. 0. hz);
  192. trac (s1 et cyl2) 'CACH';
  193.  
  194. s111 cyl22 cer11 cer22 = INTE 'GEOM' s1 cyl2;
  195. trac (s111 et cyl22) 'CACH';
  196.  
  197. *recup d'une partie interieure seulement
  198. s114 = elem s111 'APPUYE' 'LARGEMENT' s1cote4;
  199. trac (s114) 'CACH';
  200. s115 = s111 diff s114;
  201.  
  202. si ((nbel s114) neg 23); nberr=nberr+1; fins;
  203. mess '7 : nberr=' nberr;
  204.  
  205.  
  206. ******* CAS PLAN - SPHERE ******
  207.  
  208. TITR 'CAS COMPLEXE 8 : SPHERE - PLAN';
  209.  
  210. nsph = 8;
  211. nsph = 12;
  212. nsph = 20;
  213. Rsph = 0.6;
  214. ps0z0 = 0.5 0.5 0.;
  215.  
  216. *carre
  217. carr1 = 0.25*Rsph;
  218. ncarr1 = nsph / 4 ;
  219. ps1z0 = ps0z0 plus ((-1*carr1) (-1*carr1) 0.);
  220. ps2z0 = ps0z0 plus (carr1 (-1*carr1) 0.);
  221. ps3z0 = ps0z0 plus (carr1 carr1 0.);
  222. ps4z0 = ps0z0 plus ((-1*carr1) carr1 0.);
  223. lcarr12 = ps1z0 droi ncarr1 ps2z0;
  224. lcarr43 = ps4z0 droi ncarr1 ps3z0;
  225. scarr = regl ncarr1 lcarr12 lcarr43;
  226. lcarr23 = scarr cote 2 ;
  227. lcarr14 = scarr cote 4 ;
  228.  
  229. *cercle + raccord
  230. Rs05 = Rsph / (2**0.5);
  231. nc1 = nsph / 2 ;
  232. ps5z0 = ps0z0 plus ((-1*Rs05) (-1*Rs05) 0.);
  233. ps6z0 = ps0z0 plus (Rs05 (-1*Rs05) 0.);
  234. ps7z0 = ps0z0 plus (Rs05 Rs05 0.);
  235. ps8z0 = ps0z0 plus ((-1*Rs05) Rs05 0.);
  236. c567 = cer3 nc1 ps5z0 ps6z0 ps7z0;
  237. c785 = cer3 nc1 ps7z0 ps8z0 ps5z0;
  238. sc567 = c567 regl nc1 (lcarr12 et lcarr23);
  239. sc785 = c785 regl nc1 ((inve lcarr43) et lcarr14);
  240.  
  241. sz0 = scarr et sc567 et sc785;
  242. elim sz0 1.E-8;
  243.  
  244. *on créé la sphere par translation
  245. xz0 yz0 zz0 = coor sz0;
  246. unz0 = manu 'CHPO' sz0 'SCAL' 1.;
  247. rz02 = ((xz0-(0.5*unz0))**2) + ((yz0-(0.5*unz0))**2) ;
  248. rz0 = rz02**0.5 ;
  249.  
  250. list ((maxi (rz0/Rsph)) - 1);
  251.  
  252. alphz0 = ASIN (BORN (rz0/Rsph) 'SCAL' 'COMPRIS' -1 1) ;
  253. depz0 = Rsph * (unz0 - (cos alphz0));
  254. depz0 = (manu sz0 CHPO UX 0. UY 0.) + (depz0 NOMC 'UZ');
  255. sphz0 = sz0 plus depz0;
  256.  
  257. psph0 = 0.5 0.5 Rsph;
  258. psph1 = 0. 0. Rsph;
  259. psph2 = 0.5 0. Rsph;
  260. sphz0s = syme sphz0 'PLAN' psph0 psph1 psph2;
  261.  
  262. sphz1 = sphz0 et sphz0s;
  263. elim sphz1 1.E-8;
  264. *on ramene la sphere
  265. depl sphz1 moin (0. 0. (Rsph-0.5));
  266.  
  267. * maillage du plan
  268. nc = 10;
  269.  
  270. pc0 = 0. 0. 0.;
  271. pc1 = 1. 0. 0.;
  272. pc2 = 1. 1. 0.;
  273. pc3 = 0. 1. 0.;
  274.  
  275. lc01 = pc0 droi nc pc1;
  276. lc32 = pc3 droi nc pc2;
  277.  
  278. scz0 = lc01 regl nc lc32 coul bleu;
  279. lc12 = cote 2 scz0 coul oran;
  280. lc03 = cote 4 scz0 coul vert;
  281.  
  282. trac (700 500 -500) (sphz1 et scz0) CACH;
  283. trac (700 500 100) (sphz1 et scz0) CACH;
  284.  
  285. * opti impi 12 trac open;
  286. sphz11 scz00 cerz01 cerz00 = INTE 'GEOM' sphz1 scz0;
  287. * opti impi 0;
  288. temp impr ;
  289. temp sgac impr;
  290. cerz01 = cerz01 coul rose;
  291. cerz00 = cerz00 coul roug;
  292. trac (sphz11 et cerz01) 'CACH';
  293. trac (0. 0. -100) (scz00 et (cerz00 moin (0. 0. 1.E-5))) 'CACH';
  294.  
  295. * opti donn 5;
  296.  
  297. * on veut une calotte
  298. pt01 = CHAN cerz01 'POI1';
  299. pt11 = CHAN sphz11 'POI1';
  300. calot1 = sphz0s ;
  301. ncalot0 = nbel calot1;
  302. repe bcalot 10;
  303. ptapp = inte pt11 (chan calot1 'POI1') ;
  304. ptapp = diff ptapp (inte ptapp pt01 'NOVE');
  305. calot0 = calot1;
  306. ef2add = sphz11 ELEM 'APPUYE' 'LARGEMENT' ptapp;
  307. ef2add = diff ef2add (inte calot1 ef2add 'NOVE');
  308. calot1 = calot1 et ef2add;
  309. trac (calot1 et scz00)
  310. 'TITR' (chai 'calotte iteration' (&bcalot));
  311. ncalot1 = nbel calot1;
  312. mess (&bcalot) ncalot1;
  313. si (ncalot1 ega ncalot0); quit bcalot; fins;
  314. ncalot0=ncalot1;
  315. fin bcalot;
  316.  
  317. * on verifie qu on a bien un cercle centré en 0.5 0.5
  318. x00 y00 z00 = coor cerz00;
  319. r00 = (((x00-0.5)**2) + ((y00-0.5)**2))**0.5;
  320. * trac (0. 0. 100 ) r00 (cerz00);
  321. ecar00 = r00 - 0.33;
  322. si ( (maxi ecar00 'ABS') >eg 1.E-2); nberr=nberr+1; fins;
  323. * et que lon traverse pas le plan
  324. zcal1 = coor calot1 3;
  325. si ((mini zcal1) < -5.E-5); nberr=nberr+1; fins;
  326. mess '8 : nberr=' nberr;
  327.  
  328.  
  329. ******* CAS SPHERE - SPHERE ******
  330.  
  331. TITR 'CAS COMPLEXE 9 : SPHERE - SPHERE';
  332. sphz2 = sphz1 TOUR pc0 pc1 60.;
  333. trac (900 -300 500) (sphz1 et sphz2) CACH;
  334.  
  335. * opti impi 12 trac open;
  336. * opti impi 12;
  337. sphz111 sphz222 cerz111 cerz222 = INTE 'GEOM' sphz1 sphz2 'NOVE';
  338. * opti impi 0 donn 5;
  339. cerz111=cerz111 coul rose;
  340. trac (-900 300 500) (sphz111 et sphz222) CACH;
  341. trac (900 -300 500) (sphz111 et cerz111) CACH;
  342. trac (900 -300 500) (sphz222 et (cerz222 coul roug)) CACH;
  343. * opti donn 5;
  344.  
  345. * on veut une calotte
  346. pt01 = CHAN cerz111 'POI1';
  347. pt11 = CHAN sphz111 'POI1';
  348. calot11 = sphz1 point proch (1. 1. 1.);
  349. calot11 = sphz1 elem 'APPU' 'LARG' calot11;
  350. ncalot0 = nbel calot11;
  351. iserr=1;
  352. repe bcalot 25;
  353. ptapp = inte pt11 (chan calot11 'POI1') ;
  354. ptapp = diff ptapp (inte ptapp pt01 'NOVE');
  355. calot0 = calot11;
  356. ef2add = sphz111 ELEM 'APPUYE' 'LARGEMENT' ptapp;
  357. ef2add = diff ef2add (inte calot11 ef2add 'NOVE');
  358. calot11 = calot11 et ef2add;
  359. trac (calot11 et pt01)
  360. 'TITR' (chai 'calotte iteration' (&bcalot));
  361. ncalot11 = nbel calot11;
  362. mess (&bcalot) ncalot11;
  363. si (ncalot11 ega ncalot0); iserr=0; quit bcalot; fins;
  364. ncalot0=ncalot11;
  365. fin bcalot;
  366. nberr=nberr+iserr;
  367. mess '9 : nberr=' nberr;
  368.  
  369.  
  370. * mess (chai 'tapez "opti donn 3" pour sortie AVS');
  371. * opti donn 5;
  372. * ********************* SORTIES AVS ***************************
  373. *
  374. * OPTI SORT 'AVS/INTGEO_CAS07_PLAN_0'; SORT 'AVS' s1;
  375. * OPTI SORT 'AVS/INTGEO_CAS07_CYLINDRE_0'; SORT 'AVS' cyl2;
  376. * OPTI SORT 'AVS/INTGEO_CAS07_CERCLE_1'; SORT 'AVS' cer11;
  377. * OPTI SORT 'AVS/INTGEO_CAS07_PLAN_1'; SORT 'AVS' s114;
  378. * OPTI SORT 'AVS/INTGEO_CAS07_PLANbis_1'; SORT 'AVS' s115;
  379. * OPTI SORT 'AVS/INTGEO_CAS07_CYLINDRE_1'; SORT 'AVS' cyl22;
  380. *
  381. * OPTI SORT 'AVS/INTGEO_CAS09_SPHERE1_0'; SORT 'AVS' sphz1;
  382. * OPTI SORT 'AVS/INTGEO_CAS09_SPHERE2_0'; SORT 'AVS' sphz2;
  383. * OPTI SORT 'AVS/INTGEO_CAS09_SPHERE1_1'; SORT 'AVS' sphz111;
  384. * OPTI SORT 'AVS/INTGEO_CAS09_SPHERE2_1'; SORT 'AVS' sphz222;
  385. * OPTI SORT 'AVS/INTGEO_CAS09_INTERS1_1'; SORT 'AVS' cerz111;
  386. * OPTI SORT 'AVS/INTGEO_CAS09_INTERS2_1'; SORT 'AVS' cerz222;
  387. * OPTI SORT 'AVS/INTGEO_CAS09_CALOTTE1_1'; SORT 'AVS' calot11;
  388. *
  389. *
  390. * mess (chai 'tapez "opti donn 3" pour test du bon fonctionnement');
  391. * opti donn 5;
  392. ************ BON FONCTIONNEMENT / ERREUR ? ****************
  393. SI (nberr EGA 0);
  394. ERRE 0;
  395. SINO;
  396. MESS 'il y a ' nberr ' erreurs detectees';
  397. ERRE 5;
  398. FINS;
  399.  
  400. FIN ;
  401.  
  402. * CAS coplanaire a faire + tard...
  403. * mess (chai 'tapez "opti donn 3" pour cas coplanaire');
  404. * opti donn 5;
  405. * ******* CAS coplanaire ******
  406. *
  407. * TITR 'CAS 10 : COPLANAIRE ';
  408. * dx = 0.1;
  409. * nx = enti (0.5 / dx);
  410. * xp3 = 0.6;
  411. * yp3 = 0.5;
  412. *
  413. * dens dx ;
  414. * p1 = 0. 0. 0.;
  415. * p2 = 1. 0. 0.;
  416. * p3 = xp3 yp3 0.;
  417. * p4 = 1. 1. 0.;
  418. * p5 = 0. 1. 0.;
  419. *
  420. * l12 = p1 droi (2*nx) p2;
  421. * l23 = p2 droi (-1*nx) p3;
  422. * l34 = p3 droi (-1*nx) p4;
  423. * l45 = p4 droi (2*nx) p5;
  424. * l51 = p5 droi (2*nx) p1;
  425. *
  426. * s1 = dall l12 (l23 et l34) l45 l51;
  427. *
  428. * * avancee dans le plan
  429. * lon23 = norm (p2 moin p3);
  430. * nu2 = 0.3;
  431. * ux2 = nu2 * (yp3/lon23);
  432. * uy2 = nu2 * ((1.-xp3)/lon23);
  433. * uxy2 = manu 'CHPO' l23 2 'UX' ux2 'UY' uy2 'NATU' 'DIFFUS';
  434. * uxy4 = manu 'CHPO' l34 2 'UX' ux2 'UY' (-1.*uy2) 'NATU' 'DIFFUS';
  435. * uxy = uxy2 + uxy4;
  436. * vuxy = vect uxy 1. 'DEPL' BLEU;
  437. * trac vuxy s1 ;
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  

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