Télécharger tria.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : tria.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ************************************************************************
  5. * tria.dgibi : CAS TEST de l'operateur TRIA *
  6. * Triangulation de Delaunay d'un maillage de points (type POI1). *
  7. * On teste plusieurs cas : en 1D, 2D et 3D, avec, a chaque fois : *
  8. * - un nuage de points distribues aleatoirement ; *
  9. * - un reseau regulier (test de robustesse de l'algorithme). *
  10. * - ajout de test pour les quadratiques (SGounand 2024/10/07) *
  11. ************************************************************************
  12.  
  13. ** INDICATEUR DE TRACE
  14. ITRAC = FAUX ;
  15. OPTI 'ECHO' 1 'TRAC' 'X' ;
  16.  
  17.  
  18. ************************************************************************
  19. * EN DIMENSION 1 *
  20. ************************************************************************
  21.  
  22. OPTI 'DIME' 1 'ELEM' 'SEG2' ;
  23.  
  24. ** POINTS ALEATOIRES
  25. N1 = 10 ;
  26. LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  27. REPE B1 N1 ;
  28. SI (&B1 EGA 1) ;
  29. MAIL1 = POIN (EXTR LX &B1) ;
  30. SINO ;
  31. MAIL1 = MAIL1 ET (POIN (EXTR LX &B1)) ;
  32. FINS ;
  33. FIN B1 ;
  34. MAIL1 = MAIL1 COUL 'ROUG' ;
  35. MAIL2 = TRIA MAIL1 ;
  36. SI ITRAC ;
  37. TRAC (MAIL2 ET MAIL1) 'TITR' 'Points aleatoires (1D)' ;
  38. FINS ;
  39.  
  40.  
  41.  
  42.  
  43. ************************************************************************
  44. * EN DIMENSION 2 *
  45. ************************************************************************
  46.  
  47. OPTI 'DIME' 2 'ELEM' 'TRI3' ;
  48.  
  49. ** POINTS ALEATOIRES DANS LE PLAN
  50. N1 = 8 ;
  51. LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  52. LY = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  53. REPE B1 N1 ;
  54. SI (&B1 EGA 1) ;
  55. MAIL1 = ((EXTR LX &B1) (EXTR LY &B1)) ;
  56. SINO ;
  57. MAIL1 = MAIL1 ET ((EXTR LX &B1) (EXTR LY &B1)) ;
  58. FINS ;
  59. FIN B1 ;
  60. MAIL1 = MAIL1 COUL 'ROUG' ;
  61. MAIL2 = TRIA MAIL1 ;
  62. MAIL21 = TRIA MAIL1 'CONV' ;
  63. MAIL22 = TRIA MAIL1 0.2 ;
  64. MAIL23 = TRIA MAIL1 0.2 'CONV' ;
  65. MAIL3 = CONT MAIL2 ;
  66. MES2 = MESU MAIL2 ;
  67. MES3 = MESU MAIL3 'SURF' ;
  68. SI (('ABS' (MES2 - MES3)) '>' 1.E-13) ;
  69. MESS ' ****** Erreur dans TRIA :'
  70. MESS ' Les mesures des deux triangulations ne sont pas identiques' ;
  71. ERRE 5 ;
  72. FINS ;
  73. SI ITRAC ;
  74. TRAC (MAIL2 ET MAIL1) 'TITR' 'Points aleatoires (2D)' ;
  75. TRAC (MAIL21 ET MAIL1) 'TITR' 'Points aleatoires (2D) + CONV' ;
  76. TRAC (MAIL22 ET MAIL1) 'TITR' 'Points aleatoires (2D) + 0.2' ;
  77. TRAC (MAIL23 ET MAIL1) 'TITR' 'Points aleatoires (2D) + 0.2 + CONV' ;
  78. FINS ;
  79.  
  80.  
  81.  
  82. ** POINTS REPARTIS SUR UN RESEAU CARRE REGULIER
  83. N1 = 3 ;
  84. L1 = D N1 (0. 0.) (1. 0.) ;
  85. MAIL1 = (CHAN 'POI1' (L1 TRAN N1 (0. 1.))) COUL 'ROUG' ;
  86. MAIL2 = TRIA MAIL1 ;
  87. MAIL21 = TRIA MAIL1 'CONV' ;
  88. MAIL22 = TRIA MAIL1 0.2 ;
  89. MAIL23 = TRIA MAIL1 0.2 'CONV' ;
  90. MAIL3 = CONT MAIL2 ;
  91. MES2 = MESU MAIL2 ;
  92. MES3 = MESU MAIL3 'SURF' ;
  93. SI (('ABS' (MES2 - MES3)) '>' 1.E-13) ;
  94. MESS ' ****** Erreur dans TRIA :'
  95. MESS ' Les mesures des deux triangulations ne sont pas identiques' ;
  96. ERRE 5 ;
  97. FINS ;
  98. SI ITRAC ;
  99. TRAC (MAIL2 ET MAIL1) 'TITR' 'Points reguliers (2D)' ;
  100. TRAC (MAIL21 ET MAIL1) 'TITR' 'Points reguliers (2D) + CONV' ;
  101. TRAC (MAIL22 ET MAIL1) 'TITR' 'Points reguliers (2D) + 0.2' ;
  102. TRAC (MAIL23 ET MAIL1) 'TITR' 'Points reguliers (2D) + 0.2 + CONV' ;
  103. FINS ;
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111. ** POINTS ALEATOIRES MAIS ALIGNES
  112. N1 = 5 ;
  113. LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  114. REPE B1 (DIME LX) ;
  115. SI (&B1 EGA 1) ;
  116. MAIL1 = ((EXTR LX &B1) 0.) ;
  117. SINO ;
  118. MAIL1 = MAIL1 ET ((EXTR LX &B1) 0.) ;
  119. FINS ;
  120. FIN B1 ;
  121. DEPL MAIL1 'PROJ' 'DIRE' (0. 1.) 'DROI' (0. 2.) (2. 3.) ;
  122. MAIL1 = MAIL1 COUL 'ROUG' ;
  123. MAIL2 = TRIA MAIL1 ;
  124. MAIL21 = TRIA MAIL1 'CONV' ;
  125. MAIL22 = TRIA MAIL1 0.05 ;
  126. MAIL23 = TRIA MAIL1 0.05 'CONV' ;
  127. SI ITRAC ;
  128. TRAC (MAIL2 ET MAIL1) 'ELEM' 'TITR' 'Points aleatoires alignes (2D)' ;
  129. TRAC (MAIL21 ET MAIL1) 'ELEM' 'TITR'
  130. 'Points aleatoires alignes (2D) + CONV' ;
  131. TRAC (MAIL22 ET MAIL1) 'ELEM' 'TITR'
  132. 'Points aleatoires alignes (2D) + 0.05' ;
  133. TRAC (MAIL23 ET MAIL1) 'ELEM' 'TITR'
  134. 'Points aleatoires alignes (2D) + 0.05 + CONV' ;
  135. FINS ;
  136.  
  137.  
  138.  
  139.  
  140. ************************************************************************
  141. * EN DIMENSION 3 *
  142. ************************************************************************
  143. OPTI 'DIME' 3 'ELEM' 'TET4' ;
  144.  
  145. R1 = @REPERE (-0.5 -0.5 -0.5) (PROG 1. 1. 1.) VRAI 'VERT' ;
  146.  
  147. ** POINTS ALEATOIRES DANS L'ESPACE
  148. N1 = 30 ;
  149. LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  150. LY = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  151. LZ = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  152. REPE B1 N1 ;
  153. SI (&B1 EGA 1) ;
  154. MAIL1 = ((EXTR LX &B1) (EXTR LY &B1) (EXTR LZ &B1)) ;
  155. SINO ;
  156. MAIL1 = MAIL1 ET ((EXTR LX &B1) (EXTR LY &B1) (EXTR LZ &B1)) ;
  157. FINS ;
  158. FIN B1 ;
  159. MAIL1 = MAIL1 COUL 'ROUG' ;
  160. MAIL2 = TRIA MAIL1 ;
  161. MAIL21 = TRIA MAIL1 'CONV' ;
  162. MAIL22 = TRIA MAIL1 0.4 ;
  163. MAIL23 = TRIA MAIL1 0.4 'CONV' ;
  164. MAIL3 = ENVE MAIL2 ;
  165. MES2 = MESU MAIL2 ;
  166. MES3 = MESU MAIL3 'VOLU' ;
  167. SI (('ABS' (MES2 - MES3)) '>' 1.E-13) ;
  168. MESS ' **** Erreur dans TRIA:' ;
  169. MESS ' Les mesures des deux triangulations ne sont pas identiques' ;
  170. ERRE 5 ;
  171. FINS ;
  172. SI ITRAC ;
  173. TRAC (MAIL2 ET MAIL1 ET R1) 'TITR' 'Points aleatoires (3D)' ;
  174. TRAC (MAIL21 ET MAIL1 ET R1) 'TITR' 'Points aleatoires (3D) + CONV' ;
  175. TRAC (MAIL22 ET MAIL1 ET R1) 'TITR' 'Points aleatoires (3D) + 0.4' ;
  176. TRAC (MAIL23 ET MAIL1 ET R1) 'TITR'
  177. 'Points aleatoires (3D) + 0.4 + CONV' ;
  178. FINS ;
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185. ** POINTS REPARTIS SUR UN RESEAU CUBIQUE REGULIER
  186. N1 = 3 ;
  187. L1 = D N1 (0. 0. 0.) (1. 0. 0.) ;
  188. S1 = L1 TRAN N1 (0. 1. 0.) ;
  189. MAIL1 = (CHAN 'POI1' (S1 VOLU 'TRAN' N1 (0. 0. 1.))) COUL 'ROUG' ;
  190. MAIL2 = TRIA MAIL1 ;
  191. MAIL21 = TRIA MAIL1 'CONV' ;
  192. MAIL22 = TRIA MAIL1 0.2 ;
  193. MAIL23 = TRIA MAIL1 0.2 'CONV' ;
  194. MAIL3 = ENVE MAIL2 ;
  195. MES2 = MESU MAIL2 ;
  196. MES3 = MESU MAIL3 'VOLU' ;
  197. SI (('ABS' (MES2 - MES3)) '>' 1.E-13) ;
  198. MESS ' ****** Erreur dans TRIA :'
  199. MESS ' Les mesures des deux triangulations ne sont pas identiques' ;
  200. ERRE 5 ;
  201. FINS ;
  202. SI ITRAC ;
  203. TRAC (MAIL2 ET MAIL1 ET R1) 'TITR' 'Points reguliers (3D)' ;
  204. TRAC (MAIL21 ET MAIL1 ET R1) 'TITR' 'Points reguliers (3D) + CONV' ;
  205. TRAC (MAIL22 ET MAIL1 ET R1) 'TITR' 'Points reguliers (3D) + 0.2' ;
  206. TRAC (MAIL23 ET MAIL1 ET R1) 'TITR'
  207. 'Points reguliers (3D) + 0.2 + CONV' ;
  208. FINS ;
  209.  
  210.  
  211.  
  212.  
  213.  
  214. ** POINTS ALEATOIRES MAIS COPLANAIRES
  215. N1 = 20 ;
  216. LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  217. LY = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  218. REPE B1 N1 ;
  219. SI (&B1 EGA 1) ;
  220. MAIL1 = ((EXTR LX &B1) (EXTR LY &B1) 0.) ;
  221. SINO ;
  222. MAIL1 = MAIL1 ET ((EXTR LX &B1) (EXTR LY &B1) 0.) ;
  223. FINS ;
  224. FIN B1 ;
  225. DEPL MAIL1 'PROJ' 'DIRE' (0. 0. 1.) 'PLAN'
  226. (0. 0. 1.) (0. 1. 1.5) (1. 0. 0.) ;
  227. MAIL1 = MAIL1 COUL 'ROUG' ;
  228. MAIL2 = TRIA MAIL1 ;
  229. MAIL21 = TRIA MAIL1 'CONV' ;
  230. MAIL22 = TRIA MAIL1 0.2 ;
  231. MAIL23 = TRIA MAIL1 0.2 'CONV' ;
  232. SI ITRAC ;
  233. TRAC (MAIL2 ET MAIL1 ET R1) 'TITR'
  234. 'Points aleatoires coplanaires (3D)' ;
  235. TRAC (MAIL21 ET MAIL1 ET R1) 'TITR'
  236. 'Points aleatoires coplanaires (3D) + CONV' ;
  237. TRAC (MAIL22 ET MAIL1 ET R1) 'TITR'
  238. 'Points aleatoires coplanaires (3D) + 0.2' ;
  239. TRAC (MAIL23 ET MAIL1 ET R1) 'TITR'
  240. 'Points aleatoires coplanaires (3D) + 0.2 + CONV' ;
  241. FINS ;
  242.  
  243.  
  244. ** POINTS REPARTIS SUR UN RESEAU CARRE COPLANAIRES
  245. N1 = 4 ;
  246. L1 = D N1 (0. 0. 0.) (1. 0. 0.) ;
  247. MAIL1 = L1 TRAN N1 (0. 1. 0.) ;
  248. DEPL MAIL1 'PROJ' 'DIRE' (0. 0. 1.) 'PLAN'
  249. (0. 0. 0.3) (0. 1. 0.5) (1. 0. 0.) ;
  250. MAIL1 = (CHAN 'POI1' MAIL1) COUL 'ROUG' ;
  251. MAIL2 = TRIA MAIL1 ;
  252. MAIL21 = TRIA MAIL1 'CONV' ;
  253. MAIL22 = TRIA MAIL1 0.1 ;
  254. MAIL23 = TRIA MAIL1 0.1 'CONV' ;
  255. SI ITRAC ;
  256. TRAC (MAIL2 ET MAIL1 ET R1) 'TITR'
  257. 'Points reguliers coplanaires (3D)' ;
  258. TRAC (MAIL21 ET MAIL1 ET R1) 'TITR'
  259. 'Points reguliers coplanaires (3D) + CONV' ;
  260. TRAC (MAIL22 ET MAIL1 ET R1) 'TITR'
  261. 'Points reguliers coplanaires (3D) + 0.1' ;
  262. TRAC (MAIL23 ET MAIL1 ET R1) 'TITR'
  263. 'Points reguliers coplanaires (3D) + 0.1 + CONV' ;
  264. FINS ;
  265.  
  266.  
  267. ** POINTS ALEATOIRES MAIS ALIGNES
  268. N1 = 4 ;
  269. LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
  270. REPE B1 N1 ;
  271. SI (&B1 EGA 1) ;
  272. MAIL1 = ((EXTR LX &B1) 0. 0.) ;
  273. SINO ;
  274. MAIL1 = MAIL1 ET ((EXTR LX &B1) 0. 0.) ;
  275. FINS ;
  276. FIN B1 ;
  277. DEPL MAIL1 'PROJ' 'DIRE' (0. 1. 0.) 'PLAN'
  278. (0. 0. 0.) (0. 0. 1.) (1. 2. 0.) ;
  279. DEPL MAIL1 'PROJ' 'DIRE' (0. 0. 1.) 'PLAN'
  280. (0. 0. 0.5) (1. 0. 1.) (0. 1. 1.) ;
  281. MAIL1 = MAIL1 COUL 'ROUG' ;
  282. MAIL2 = TRIA MAIL1 ;
  283. MAIL21 = TRIA MAIL1 'CONV' ;
  284. MAIL22 = TRIA MAIL1 0.2 ;
  285. MAIL23 = TRIA MAIL1 0.2 'CONV' ;
  286. SI ITRAC ;
  287. TRAC (MAIL2 ET MAIL1 ET R1) 'ELEM' 'TITR'
  288. 'Points aleatoires coplanaires (3D)' ;
  289. TRAC (MAIL21 ET MAIL1 ET R1) 'ELEM' 'TITR'
  290. 'Points aleatoires coplanaires (3D) + CONV' ;
  291. TRAC (MAIL22 ET MAIL1 ET R1) 'ELEM' 'TITR'
  292. 'Points aleatoires coplanaires (3D) + 0.2' ;
  293. TRAC (MAIL23 ET MAIL1 ET R1) 'ELEM' 'TITR'
  294. 'Points aleatoires coplanaires (3D) + 0.2 + CONV' ;
  295. FINS ;
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303. ************************************************************************
  304. * MAILLAGE A PARTIR D'UN CONTOUR/SURFACE (EN DIMENSION 2) *
  305. * ENVELOPPE/VOLUME (EN DIMENSION 3) *
  306. ************************************************************************
  307. OPTI 'DIME' 2 'ELEM' 'TRI3' ;
  308.  
  309. ** TRIANGULATION A PARTIR D'UN CONTOUR FERME EN U
  310. X1 = 0.05 ;
  311. N1 = 15 ;
  312. N2 = 4 ;
  313. L1 = D N1 (0. 0.) (1. 0.) ;
  314. L2 = D N1 L1 (1. 1.) ;
  315. L3 = D N2 L2 ((0.5+X1) 1.) ;
  316. L4 = D N1 L3 ((0.5+X1) 0.1) ;
  317. L5 = D N2 L4 ((0.5-X1) 0.1) ;
  318. L6 = D N1 L5 ((0.5-X1) 1.) ;
  319. L7 = D N2 L6 (0. 1.) ;
  320. L8 = D N1 L7 (0. 0.) ;
  321. ELIM L8 1.E-9 ;
  322. MAIL1 = TRIA L8 0.2 ;
  323. SI ITRAC ;
  324. TRAC MAIL1 'TITR' 'Remplissage a partir du contour' ;
  325. FINS ;
  326. S8 = SURF L8 ;
  327. MAIL1 = TRIA S8 0.2 ;
  328. SI ITRAC ;
  329. TRAC MAIL1 'TITR' 'Re-maillage a partir d une surface' ;
  330. FINS ;
  331.  
  332. OPTI 'DIME' 2 'ELEM' 'TRI6' ;
  333. ** TRIANGULATION A PARTIR D'UN CONTOUR FERME EN U
  334. X1 = 0.05 ;
  335. N1 = 15 ;
  336. N2 = 4 ;
  337. L1 = D N1 (0. 0.) (1. 0.) ;
  338. L2 = D N1 L1 (1. 1.) ;
  339. L3 = D N2 L2 ((0.5+X1) 1.) ;
  340. L4 = D N1 L3 ((0.5+X1) 0.2) ;
  341. L5 = C N2 'PASS' L4 (0.5 ('-' 0.2 X1)) ((0.5-X1) 0.2) ;
  342. L6 = D N1 L5 ((0.5-X1) 1.) ;
  343. L7 = D N2 L6 (0. 1.) ;
  344. L8 = D N1 L7 (0. 0.) ;
  345. ELIM L8 1.E-9 ;
  346. MAIL2 = TRIA L8 0.2 ;
  347. SI ITRAC ;
  348. TRAC MAIL2 'TITR' 'Remplissage a partir du contour' ;
  349. FINS ;
  350. S8 = SURF L8 ;
  351. MAIL2 = TRIA S8 0.2 ;
  352. SI ITRAC ;
  353. TRAC MAIL2 'TITR' 'Re-maillage a partir d une surface' ;
  354. FINS ;
  355.  
  356. OPTI 'DIME' 3 'ELEM' 'TET4' ;
  357. V8 = CHAN 'TET4' (MAIL1 VOLU 'TRAN' 4 (0. 0. 0.5)) ;
  358. ENV8 = ENVE V8 ;
  359. MAIL1 = TRIA ENV8 0.2 ;
  360. SI ITRAC ;
  361. TRAC 'FACE' MAIL1 'TITR' 'Maillage a partir de l enveloppe' ;
  362. FINS ;
  363. MAIL1 = TRIA V8 0.2 ;
  364. SI ITRAC ;
  365. TRAC 'FACE' MAIL1 'TITR' 'Re-maillage a partir d un volume' ;
  366. FINS ;
  367.  
  368. OPTI 'DIME' 3 'ELEM' 'CU20' ;
  369. V8 = MAIL2 VOLU 'TRAN' 4 (0. 0. 0.5) ;
  370. ENV8 = 'CHAN' 'TRI6' (ENVE V8) ;
  371. MAIL2 = TRIA ENV8 0.2 ;
  372. SI ITRAC ;
  373. TRAC 'FACE' MAIL2 'TITR' 'Maillage a partir de l enveloppe' ;
  374. FINS ;
  375. MAIL3 = TRIA MAIL2 0.25 ;
  376. SI ITRAC ;
  377. TRAC 'FACE' MAIL3 'TITR' 'Re-maillage a partir d un volume' ;
  378. FINS ;
  379.  
  380. FIN ;
  381.  
  382.  
  383.  

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