Télécharger mato-2d4.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : mato-2d4.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTION' 'ECHO' 0 ;
  5. ************************************************************************
  6. * NOM : MATO-2D4
  7. * DESCRIPTION : Test du MAilleur TOpologique pour mailler un carré
  8. * avec une métrique isotrope constante en espace
  9. * dans le but d'obtenir 10x10 mailles.
  10. * Au départ, le carré est 1x1. Concernant la frontière,
  11. * on contraint le mailleur, soit à ne pas la modifier,
  12. * soit à en modifier une partie, soit la totalité.
  13. *
  14. * On teste la qualité des éléments obtenus.
  15. *
  16. * Issu de 2d_9.dgibi+tests
  17. *
  18. *
  19. * LANGAGE : GIBIANE-CAST3M
  20. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  21. * mél : stephane.gounand@cea.fr
  22. **********************************************************************
  23. * VERSION : v1, 07/04/2020, version initiale
  24. * HISTORIQUE : v1, 07/04/2020, création
  25. * HISTORIQUE :
  26. * HISTORIQUE :
  27. ************************************************************************
  28. *
  29. interact = faux ;
  30. graph = faux ;
  31. * Mini, mediane et maxi d'un LISTREEL
  32. 'DEBP' MIMEMA ;
  33. 'ARGU' ch*'MCHAML' ;
  34. 'ARGU' cmp*'MOT' ;
  35. lr = 'EXTR' (CHGRAV ch) 'VALE' cmp ;
  36. lro = 'ORDO' lr ; dlr = 'DIME' lr ;
  37. mil = 'EXTR' lro 1 ; mal = 'EXTR' lro dlr ;
  38. mel = 'EXTR' lro ('/' ('+' 1 dlr) 2) ;
  39. 'FINP' mil mel mal ;
  40. * Passage au gravite d'un MCHAML
  41. 'DEBP' CHGRAV ch*'MCHAML';
  42. 'FINP' ('CHAN' ch ('MODE' ('EXTR' ch 'MAIL') 'THERMIQUE') 'GRAVITE') ;
  43. *
  44. 'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
  45. *
  46. 'SI' ('NON' interact) ;
  47. 'OPTION' 'TRAC' 'PSC' ;
  48. 'SINON' ;
  49. 'OPTION' 'TRAC' 'X' ;
  50. 'FINSI' ;
  51. lqual = 'PROG' 0. 'PAS' 0.05 1. ;
  52. ldens1 = 'PROG' 0.5 'PAS' 0.05 1. ;
  53. ldens2 = 'PROG' 0.9 'PAS' -0.05 0.5 ;
  54. ldens = ldens1 'ET' (ldens2 '**' -1.) ;
  55. *
  56. for = '(E11.3)' ;
  57. *
  58. * Création du contour
  59. *
  60. nx = 2 ; nv = 10 ;
  61. pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ;
  62. lAB = 'DROI' nx pA pB ;
  63. lBC = 'DROI' nx pB pC ;
  64. lCD = 'DROI' nx pC pD ;
  65. lDA = 'DROI' nx pD pA ;
  66. *
  67. cnt = lAB 'ET' lBC 'ET' lCD 'ET' lDA ;
  68. *
  69. 'SI' graph ;
  70. tit = 'CHAI' 'Contour ' ;
  71. 'TRACER' 'CACH' cnt 'TITR' tit 'NOEU' ;
  72. 'FINSI' ;
  73. *
  74. * Tests divers (consistance...)
  75. *
  76. lok = VRAI ;
  77. *
  78. * TEST 1 Création d'un maillage sans ajouter de noeuds
  79. *
  80. mail1 = 'TRIA' 'TOPO' cnt 'NOAJ' ;
  81. 'SI' graph ;
  82. tit = 'CHAI' 'Maillage genere sans noeud supplémentaire' ;
  83. 'TRAC' mail1 'TITR' tit 'NOEU' ;
  84. 'FINSI' ;
  85. * Test 1 : on vérifie que le nombre de noeuds est conservé
  86. nno1 = 'NBNO' cnt ;
  87. nno2 = 'NBNO' mail1 ;
  88. 'SI' ('NEG' nno1 nno2) ;
  89. 'MESS' '!!! TEST 1 : nombre de noeuds non conserve' ;
  90. lok = lok 'ET' faux ;
  91. 'FINS' ;
  92. *
  93. * TEST 2 Remaillage de mail1 avec une taille voulue de 0.1 sans
  94. * toucher le bord
  95. *
  96. mail2 = 'REMA' mail1 ('CONT' mail1) ('/' 1. nv) ;
  97. 'SI' graph ;
  98. tit = 'CHAI' 'Maillage genere sans toucher le bord' ;
  99. 'TRAC' mail2 'TITR' tit 'NOEU' ;
  100. 'FINSI' ;
  101. * Test 2 : on vérifie que les qualités mini, mediane et maxi des éléments sont bonnes
  102. qmail2 = 'INDI' 'TOPO' 'COHE' 'DENS' mail2 ('/' 1. nv) ;
  103. miqo meqo maqo = MIMEMA qmail2 'TOPO' ;
  104. 'MESS' 'FORMAT' for 'TEST 2 : Qmin=' miqo ' Qmed=' meqo ' Qmax=' maqo ;
  105. miqa meqa maqa = MIMEMA qmail2 'COHE' ;
  106. 'MESS' 'FORMAT' for 'TEST 2 : Qcohemin=' miqa ' Qcohemed=' meqa ' Qcohemax=' maqa ;
  107. 'SI' graph ;
  108. momail2 = 'MODE' mail2 'THERMIQUE' ;
  109. tit = 'CHAI' 'Qualite coherence maillage avec noeuds interieurs' ;
  110. 'TRAC' ('EXCO' 'COHE' qmail2) momail2 lqual 'TITR' tit ;
  111. 'FINSI' ;
  112. * Sur mon linux64 au 07/04/2020 : Qmin= 0.91E-01 Qmoy= 0.82E+00 Qmax= 0.10E+01
  113. *!!!! Mieux miqr = 0.08 ; meqr = 0.81 ; maqr = 0.99 ;
  114. *miqr = 0.02 ; meqr = 0.79 ; maqr = 0.99 ;
  115. * 2025/11/24
  116. *!!!! Mieux ou different ?? miqar = 0.08 ; meqar = 0.89 ; maqar = 0.99 ;
  117. * 2025/11/24
  118. *miqar = 0.86 ; meqar = 0.86 ; maqar = 0.86 ;
  119. * 2026/01/08
  120. * miqar = 0.55 ; meqar = 0.87 ; maqar = 0.99 ;
  121. * 2026/06/04
  122. miqar = 0.32 ; meqar = 0.89 ; maqar = 0.99 ;
  123. 'MESS' 'FORMAT' for 'TEST 2 : Qcohemir=' miqar ' Qcohemer=' meqar ' Qcohemar=' maqar ;
  124. 'SI' (('<EG' miqa miqar) 'OU' ('<EG' meqa meqar) 'OU' ('<EG' maqa maqar)) ;
  125. 'MESS' '!!! TEST 2 coherence failed' ;
  126. lok = lok 'ET' faux ;
  127. 'FINS' ;
  128. miqe meqe maqe = MIMEMA qmail2 'DENS' ;
  129. 'MESS' 'FORMAT' for 'TEST 2 : Qdensmin=' miqe ' Qdensmed=' meqe ' Qdensmax=' maqe ;
  130. 'SI' graph ;
  131. tit = 'CHAI' 'Qualite density distribution maillage avec noeuds interieurs' ;
  132. 'TRAC' ('EXCO' 'DENS' qmail2) momail2 ldens 'TITR' tit ;
  133. 'FINSI' ;
  134. * Sur mon linux64 au 07/04/2020 : Qmin= 0.91E-01 Qmoy= 0.82E+00 Qmax= 0.10E+01
  135. *!!!! Mieux miqr = 0.08 ; meqr = 0.81 ; maqr = 0.99 ;
  136. *miqr = 0.02 ; meqr = 0.79 ; maqr = 0.99 ;
  137. * 2025/11/24
  138. *miqer = 0.14 ; meqer = 0.80 ; maqer = 0.99 ;
  139. * 2026/01/08
  140. *miqer = 0.26 ; meqer = 0.53 ; maqer = 0.88 ;
  141. * 2026/06/04
  142. miqer = 0.69 ; meqer = 0.94 ; maqer = 3.31 ;
  143. 'MESS' 'FORMAT' for 'TEST 2 : Qdensmir=' miqer ' Qdensmer=' meqer ' Qdensmar=' maqer ;
  144. 'SI' (('<EG' miqe miqer) 'OU' ('NEG' meqe meqer 0.01) 'OU' ('>EG' maqe maqer)) ;
  145. 'MESS' '!!! TEST 2 density distribution failed' ;
  146. lok = lok 'ET' faux ;
  147. 'FINS' ;
  148. *
  149. * TEST 3 Remaillage de mail1 avec une taille voulue de 0.1 en touchant
  150. * le bord sauf lAB
  151. *
  152. mail3 = 'REMA' mail1 lAB ('/' 1. nv) ;
  153. 'SI' graph ;
  154. tit = 'CHAI' 'Maillage genere sans toucher lAB' ;
  155. 'TRAC' mail3 'TITR' tit 'NOEU' ;
  156. 'FINSI' ;
  157. * Test 3 : on vérifie que les qualités mini, mediane et maxi des éléments sont bonnes
  158. qmail3 = 'INDI' 'TOPO' 'COHE' 'DENS' mail3 ('/' 1. nv) ;
  159. miq meq maq = MIMEMA qmail3 'TOPO' ;
  160. 'MESS' 'FORMAT' for 'TEST 3 : Qmin=' miq ' Qmed=' meq ' Qmax=' maq ;
  161. miqa meqa maqa = MIMEMA qmail3 'COHE' ;
  162. 'MESS' 'FORMAT' for 'TEST 3 : Qcohemin=' miqa ' Qcohemed=' meqa ' Qcohemax=' maqa ;
  163. 'SI' graph ;
  164. momail3 = 'MODE' mail3 'THERMIQUE' ;
  165. tit = 'CHAI' 'Qualite coherence maillage avec noeuds interieurs' ;
  166. 'TRAC' ('EXCO' 'COHE' qmail3) momail3 lqual 'TITR' tit ;
  167. 'FINSI' ;
  168. * Sur mon linux64 au 07/04/2020 : Qmin= 0.13E+00 Qmoy= 0.90E+00 Qmax= 0.10E+01
  169. *!!!!!!!Mieux miqr = 0.12 ; meqr = 0.89 ; maqr = 0.99 ;
  170. *miqr = 0.0076 ; meqr = 0.02 ; maqr = 0.02 ;
  171. * 2025/11/24
  172. *!!!! Mieux ou different ?? miqar = 0.11 ; meqar = 0.89 ; maqar = 0.99 ;
  173. * 2025/11/24 new
  174. *miqar = 0.80 ; meqar = 0.86 ; maqar = 0.97 ;
  175. * 2026/01/08
  176. *miqar = 0.76 ; meqar = 0.87 ; maqar = 0.98 ;
  177. * 2026/06/04
  178. miqar = 0.67 ; meqar = 0.91 ; maqar = 0.98 ;
  179. 'MESS' 'FORMAT' for 'TEST 3 : Qcohemir=' miqar ' Qcohemer=' meqar ' Qcohemar=' maqar ;
  180. 'SI' (('<EG' miqa miqar) 'OU' ('<EG' meqa meqar) 'OU' ('<EG' maqa maqar)) ;
  181. 'MESS' '!!! TEST 3 coherence failed' ;
  182. lok = lok 'ET' faux ;
  183. 'FINS' ;
  184. miqe meqe maqe = MIMEMA qmail3 'DENS' ;
  185. 'MESS' 'FORMAT' for 'TEST 3 : Qdensmin=' miqe ' Qdensmed=' meqe ' Qdensmax=' maqe ;
  186. 'SI' graph ;
  187. tit = 'CHAI' 'Qualite density distribution maillage avec noeuds interieurs' ;
  188. 'TRAC' ('EXCO' 'DENS' qmail3) momail3 ldens 'TITR' tit ;
  189. 'FINSI' ;
  190. * 2025/11/24
  191. *!!!!! Mieux miqer = 0.13 ; meqer = 0.82 ; maqer = 0.99 ;
  192. * 2025/11/24 new
  193. *miqer = 0.08 ; meqer = 0.20 ; maqer = 0.89 ;
  194. * 2026/01/08
  195. *miqer = 0.27 ; meqer = 0.73 ; maqer = 0.99 ;
  196. * 2026/06/04
  197. miqer = 0.68 ; meqer = 0.91 ; maqer = 3.60 ;
  198. 'MESS' 'FORMAT' for 'TEST 3 : Qdensmir=' miqer ' Qdensmer=' meqer ' Qdensmar=' maqer ;
  199. 'SI' (('<EG' miqe miqer) 'OU' ('NEG' meqe meqer 0.01) 'OU' ('>EG' maqe maqer)) ;
  200. 'MESS' '!!! TEST 3 density distribution failed' ;
  201. lok = lok 'ET' faux ;
  202. 'FINS' ;
  203. *
  204. * TEST 4 Remaillage de mail1 avec une taille voulue de 0.1 en touchant
  205. * tout le bord
  206. *
  207. mail4 = 'REMA' mail1 ('/' 1. nv) ;
  208. 'SI' graph ;
  209. tit = 'CHAI' 'Maillage genere en modifiant le bord' ;
  210. 'TRAC' mail4 'TITR' tit 'NOEU' ;
  211. 'FINSI' ;
  212. * Test 4 : on vérifie que les qualités mini, mediane etmaxi des éléments sont bonnes
  213. qmail4 = 'INDI' 'TOPO' 'COHE' 'DENS' mail4 ('/' 1. nv) ;
  214. miq meq maq = MIMEMA qmail4 'TOPO' ;
  215. 'MESS' 'FORMAT' for 'TEST 4 : Qmin=' miq ' Qmed=' meq ' Qmax=' maq ;
  216. miqa meqa maqa = MIMEMA qmail4 'COHE' ;
  217. 'MESS' 'FORMAT' for 'TEST 4 : Qcohemin=' miqa ' Qcohemed=' meqa ' Qcohemax=' maqa ;
  218. 'SI' graph ;
  219. momail4 = 'MODE' mail4 'THERMIQUE' ;
  220. tit = 'CHAI' 'Qualite coherence maillage avec noeuds interieurs' ;
  221. 'TRAC' ('EXCO' 'COHE' qmail4) momail4 lqual 'TITR' tit ;
  222. 'FINSI' ;
  223. * Sur mon linux64 au 07/04/2020 : Qmin= 0.65E+00 Qmoy= 0.91E+00 Qmax= 0.10E+01
  224. *!!!!! Mieux miqr = 0.64 ; meqr = 0.90 ; maqr = 0.99 ;
  225. * 2025/11/24
  226. * !!!! Pas si mal miqar = 0.57 ; meqar = 0.90 ; maqar = 0.99 ;
  227. * 2025/11/24 new
  228. *miqar = 0.73 ; meqar = 0.88 ; maqar = 0.99 ;
  229. * 2026/01/08
  230. *miqar = 0.81 ; meqar = 0.90 ; maqar = 0.99 ;
  231. * 2026/06/04
  232. miqar = 0.77 ; meqar = 0.89 ; maqar = 0.99 ;
  233. 'MESS' 'FORMAT' for 'TEST 4 : Qcohemir=' miqar ' Qcohemer=' meqar ' Qcohemar=' maqar ;
  234. 'SI' (('<EG' miqa miqar) 'OU' ('<EG' meqa meqar) 'OU' ('<EG' maqa maqar)) ;
  235. 'MESS' '!!! TEST 4 coherence failed' ;
  236. lok = lok 'ET' faux ;
  237. 'FINS' ;
  238. miqe meqe maqe = MIMEMA qmail4 'DENS' ;
  239. 'MESS' 'FORMAT' for 'TEST 4 : Qdensmin=' miqe ' Qdensmed=' meqe ' Qdensmax=' maqe ;
  240. 'SI' graph ;
  241. tit = 'CHAI' 'Qualite density distribution maillage avec noeuds interieurs' ;
  242. 'TRAC' ('EXCO' 'DENS' qmail4) momail4 ldens 'TITR' tit ;
  243. 'FINSI' ;
  244. * 2025/11/24
  245. *miqer = 0.59 ; meqer = 0.86 ; maqer = 0.99 ;
  246. * 2026/01/08
  247. *miqer = 0.62 ; meqer = 0.76 ; maqer = 0.99 ;
  248. * 2026/06/04
  249. miqer = 0.69 ; meqer = 0.89 ; maqer = 1.18 ;
  250. 'MESS' 'FORMAT' for 'TEST 4 : Qdensmir=' miqer ' Qdensmer=' meqer ' Qdensmar=' maqer ;
  251. 'SI' (('<EG' miqe miqer) 'OU' ('NEG' meqe meqer 0.01) 'OU' ('>EG' maqe maqer)) ;
  252. 'MESS' '!!! TEST 4 density distribution failed' ;
  253. lok = lok 'ET' faux ;
  254. 'FINS' ;
  255. *
  256. * TEST 5 Remaillage de mail4 avec une taille voulue de 0.1 en ne touchant
  257. * plus le bord. On s'attend à ne pas changer le maillage mais
  258. * c'est sans compter avec l'algorithme du noeud fictif qui nous
  259. * a deja fait des blagues
  260. *
  261. tparam = 'TABL' ; tparam . 'nbpasses_rema' = 1 ;
  262. mail5 = 'REMA' mail4 ('CONT' mail4) ('/' 1. nv) tparam ;
  263. 'SI' graph ;
  264. tit = 'CHAI' 'Maillage genere sans toucher le bord' ;
  265. 'TRAC' mail5 'TITR' tit 'NOEU' ;
  266. 'FINSI' ;
  267. * Test 5 : on vérifie que mail5 et mail4 sont identiques ainsi que les
  268. * qualités
  269. dn45= 'NBEL' ('DIFF' mail4 mail5) ;
  270. 'SI' ('NEG' dn45 0) ;
  271. 'MESS' '!!! TEST 5 : mail4 .NE. mail5' ;
  272. lok = lok 'ET' faux ;
  273. 'FINS' ;
  274. *
  275. * Test final
  276. *
  277. 'SI' ('NON' lok) ;
  278. 'ERREUR' 5 ;
  279. 'SINON' ;
  280. 'SAUT' 1 'LIGN' ;
  281. 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ;
  282. 'FINSI' ;
  283. *
  284. 'SI' interact ;
  285. 'OPTION' 'ECHO' 1 ;
  286. 'OPTION' 'DONN' 5 ;
  287. 'FINSI' ;
  288. *
  289. * End of dgibi file MATO-2D4
  290. *
  291. 'FIN' ;
  292.  
  293.  
  294.  

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