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' lr ;
  34. lro = 'ORDO' lr ; dlr = 'DIME' lr ;
  35. mil = 'EXTR' lro 1 ; mal = 'EXTR' lro dlr ;
  36. mel = 'EXTR' lro ('/' ('+' 1 dlr) 2) ;
  37. 'FINP' mil mel mal ;
  38. * Passage au gravite d'un MCHAML
  39. 'DEBP' CHGRAV ch*'MCHAML';
  40. 'FINP' ('CHAN' ch ('MODE' ('EXTR' ch 'MAIL') 'THERMIQUE') 'GRAVITE') ;
  41. *
  42. 'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
  43. *
  44. 'SI' ('NON' interact) ;
  45. 'OPTION' 'TRAC' 'PSC' ;
  46. 'SINON' ;
  47. 'OPTION' 'TRAC' 'X' ;
  48. 'FINSI' ;
  49. lqual = 'PROG' 0. 'PAS' 0.05 1. ;
  50. *
  51. * Création du contour
  52. *
  53. nx = 1 ; nv = 10 ;
  54. pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ;
  55. lAB = 'DROI' nx pA pB ;
  56. lBC = 'DROI' nx pB pC ;
  57. lCD = 'DROI' nx pC pD ;
  58. lDA = 'DROI' nx pD pA ;
  59. *
  60. cnt = lAB 'ET' lBC 'ET' lCD 'ET' lDA ;
  61. *
  62. 'SI' graph ;
  63. tit = 'CHAI' 'Contour ' ;
  64. 'TRACER' 'CACH' cnt 'TITR' tit 'NOEU' ;
  65. 'FINSI' ;
  66. *
  67. * Tests divers (consistance...)
  68. *
  69. lok = VRAI ;
  70. *
  71. * TEST 1 Création d'un maillage sans ajouter de noeuds
  72. *
  73. mail1 = 'TRIA' 'TOPO' cnt 'NOAJ' ;
  74. 'SI' graph ;
  75. tit = 'CHAI' 'Maillage genere sans noeud supplémentaire' ;
  76. 'TRAC' mail1 'TITR' tit 'NOEU' ;
  77. 'FINSI' ;
  78. * Test 1 : on vérifie que le nombre de noeuds est conservé
  79. nno1 = 'NBNO' cnt ;
  80. nno2 = 'NBNO' mail1 ;
  81. 'SI' ('NEG' nno1 nno2) ;
  82. 'MESS' '!!! TEST 1 : nombre de noeuds non conserve' ;
  83. lok = lok 'ET' faux ;
  84. 'FINS' ;
  85. *
  86. * TEST 2 Remaillage de mail1 avec une taille voulue de 0.1 sans
  87. * toucher le bord
  88. *
  89. mail2 = 'REMA' mail1 ('CONT' mail1) ('/' 1. nv) ;
  90. 'SI' graph ;
  91. tit = 'CHAI' 'Maillage genere sans toucher le bord' ;
  92. 'TRAC' mail2 'TITR' tit 'NOEU' ;
  93. 'FINSI' ;
  94. * Test 2 : on vérifie que les qualités mini, mediane et maxi des éléments sont bonnes
  95. qmail2o = 'INDI' 'TOPO' mail2 ('/' 1. nv) ;
  96. miqo meqo maqo = MIMEMA ('EXTR' (CHGRAV qmail2o) 'VALE' 'TOPO') ;
  97. 'MESS' 'FORMAT' '(E9.2)' 'TEST 2 : Qmin=' miqo ' Qmed=' meqo ' Qmax=' maqo ;
  98. qmail2a = 'INDI' 'ALIG' mail2 ('/' 1. nv) ;
  99. miqa meqa maqa = MIMEMA ('EXTR' (CHGRAV qmail2a) 'VALE' 'ALIG') ;
  100. 'MESS' 'FORMAT' '(E9.2)' 'TEST 2 : Qalimin=' miqa ' Qalimed=' meqa ' Qalimax=' maqa ;
  101. 'SI' graph ;
  102. momail2 = 'MODE' mail2 'THERMIQUE' ;
  103. tit = 'CHAI' 'Qualite alignement maillage avec noeuds interieurs' ;
  104. 'TRAC' qmail2a momail2 lqual 'TITR' tit ;
  105. 'FINSI' ;
  106. * Sur mon linux64 au 07/04/2020 : Qmin= 0.91E-01 Qmoy= 0.82E+00 Qmax= 0.10E+01
  107. *!!!! Mieux miqref = 0.08 ; meqref = 0.81 ; maqref = 0.99 ;
  108. *miqref = 0.02 ; meqref = 0.79 ; maqref = 0.99 ;
  109. * 2025/11/24
  110. *!!!! Mieux ou different ?? miqaref = 0.08 ; meqaref = 0.89 ; maqaref = 0.99 ;
  111. * 2025/11/24
  112. miqaref = 0.86 ; meqaref = 0.86 ; maqaref = 0.86 ;
  113. 'SI' ('<EG' miqa miqaref) ;
  114. 'MESS' '!!! TEST 2 : miqa=' miqa ' < miqaref=' miqaref ;
  115. lok = lok 'ET' faux ;
  116. 'FINS' ;
  117. 'SI' ('&lt;EG' meqa meqaref) ;
  118. 'MESS' '!!! TEST 2 : meqa=' meqa ' < meqaref=' meqaref ;
  119. lok = lok 'ET' faux ;
  120. 'FINS' ;
  121. 'SI' ('&lt;EG' maqa maqaref) ;
  122. 'MESS' '!!! TEST 2 : maqa=' maqa ' < maqaref=' maqaref ;
  123. lok = lok 'ET' faux ;
  124. 'FINS' ;
  125. qmail2e = 'INDI' 'EQUI' mail2 ('/' 1. nv) ;
  126. miqe meqe maqe = MIMEMA ('EXTR' (CHGRAV qmail2e) 'VALE' 'EQUI') ;
  127. 'MESS' 'FORMAT' '(E9.2)' 'TEST 2 : Qequmin=' miqe ' Qequmed=' meqe ' Qequmax=' maqe ;
  128. 'SI' graph ;
  129. momail2 = 'MODE' mail2 'THERMIQUE' ;
  130. tit = 'CHAI' 'Qualite equidistribution maillage avec noeuds interieurs' ;
  131. 'TRAC' qmail2e momail2 lqual 'TITR' tit ;
  132. 'FINSI' ;
  133. * Sur mon linux64 au 07/04/2020 : Qmin= 0.91E-01 Qmoy= 0.82E+00 Qmax= 0.10E+01
  134. *!!!! Mieux miqref = 0.08 ; meqref = 0.81 ; maqref = 0.99 ;
  135. *miqref = 0.02 ; meqref = 0.79 ; maqref = 0.99 ;
  136. * 2025/11/24
  137. miqeref = 0.14 ; meqeref = 0.80 ; maqeref = 0.99 ;
  138. 'SI' ('&lt;EG' miqe miqeref) ;
  139. 'MESS' '!!! TEST 2 : miqe=' miqe ' < miqeref=' miqeref ;
  140. lok = lok 'ET' faux ;
  141. 'FINS' ;
  142. 'SI' ('&lt;EG' meqe meqeref) ;
  143. 'MESS' '!!! TEST 2 : meqe=' meqe ' < meqeref=' meqeref ;
  144. lok = lok 'ET' faux ;
  145. 'FINS' ;
  146. 'SI' ('&lt;EG' maqe maqeref) ;
  147. 'MESS' '!!! TEST 2 : maqe=' maqe ' < maqeref=' maqeref ;
  148. lok = lok 'ET' faux ;
  149. 'FINS' ;
  150. *
  151. * TEST 3 Remaillage de mail1 avec une taille voulue de 0.1 en touchant
  152. * le bord sauf lAB
  153. *
  154. mail3 = 'REMA' mail1 lAB ('/' 1. nv) ;
  155. 'SI' graph ;
  156. tit = 'CHAI' 'Maillage genere sans toucher lAB' ;
  157. 'TRAC' mail3 'TITR' tit 'NOEU' ;
  158. 'FINSI' ;
  159. * Test 3 : on vérifie que les qualités mini, mediane et maxi des éléments sont bonnes
  160. qmail3o = 'INDI' 'TOPO' mail3 ('/' 1. nv) ;
  161. miq meq maq = MIMEMA ('EXTR' (CHGRAV qmail3o) 'VALE' 'TOPO') ;
  162. 'MESS' 'FORMAT' '(E9.2)' 'TEST 3 : Qmin=' miq ' Qmed=' meq ' Qmax=' maq ;
  163. qmail3a = 'INDI' 'ALIG' mail3 ('/' 1. nv) ;
  164. miqa meqa maqa = MIMEMA ('EXTR' (CHGRAV qmail3a) 'VALE' 'ALIG') ;
  165. 'MESS' 'FORMAT' '(E9.2)' 'TEST 3 : Qalimin=' miqa ' Qalimed=' meqa ' Qalimax=' maqa ;
  166. 'SI' graph ;
  167. momail3 = 'MODE' mail3 'THERMIQUE' ;
  168. tit = 'CHAI' 'Qualite alignement maillage sans toucher lAB' ;
  169. 'TRAC' qmail3a momail3 lqual 'TITR' tit ;
  170. 'FINSI' ;
  171. * Sur mon linux64 au 07/04/2020 : Qmin= 0.13E+00 Qmoy= 0.90E+00 Qmax= 0.10E+01
  172. *!!!!!!!Mieux miqref = 0.12 ; meqref = 0.89 ; maqref = 0.99 ;
  173. *miqref = 0.0076 ; meqref = 0.02 ; maqref = 0.02 ;
  174. * 2025/11/24
  175. *!!!! Mieux ou different ?? miqaref = 0.11 ; meqaref = 0.89 ; maqaref = 0.99 ;
  176. * 2025/11/24 new
  177. miqaref = 0.80 ; meqaref = 0.86 ; maqaref = 0.97 ;
  178. 'SI' ('&lt;EG' miqa miqaref) ;
  179. 'MESS' '!!! TEST 3 : miqa=' miqa ' < miqaref=' miqaref ;
  180. lok = lok 'ET' faux ;
  181. 'FINS' ;
  182. 'SI' ('&lt;EG' meqa meqaref) ;
  183. 'MESS' '!!! TEST 3 : meqa=' meqa ' < meqaref=' meqaref ;
  184. lok = lok 'ET' faux ;
  185. 'FINS' ;
  186. 'SI' ('&lt;EG' maqa maqaref) ;
  187. 'MESS' '!!! TEST 3 : maqa=' maqa ' < maqaref=' maqaref ;
  188. lok = lok 'ET' faux ;
  189. 'FINS' ;
  190. qmail3e = 'INDI' 'EQUI' mail3 ('/' 1. nv) ;
  191. miqe meqe maqe = MIMEMA ('EXTR' (CHGRAV qmail3e) 'VALE' 'EQUI') ;
  192. 'MESS' 'FORMAT' '(E9.2)' 'TEST 3 : Qequmin=' miqe ' Qequmed=' meqe ' Qequmax=' maqe ;
  193. 'SI' graph ;
  194. momail3 = 'MODE' mail3 'THERMIQUE' ;
  195. tit = 'CHAI' 'Qualite equidistribution maillage avec noeuds interieurs' ;
  196. 'TRAC' qmail3e momail3 lqual 'TITR' tit ;
  197. 'FINSI' ;
  198. * 2025/11/24
  199. *!!!!! Mieux miqeref = 0.13 ; meqeref = 0.82 ; maqeref = 0.99 ;
  200. * 2025/11/24 new
  201. miqeref = 0.08 ; meqeref = 0.20 ; maqeref = 0.89 ;
  202. 'SI' ('&lt;EG' miqe miqeref) ;
  203. 'MESS' '!!! TEST 3 : miqe=' miqe ' < miqeref=' miqeref ;
  204. lok = lok 'ET' faux ;
  205. 'FINS' ;
  206. 'SI' ('&lt;EG' meqe meqeref) ;
  207. 'MESS' '!!! TEST 3 : meqe=' meqe ' < meqeref=' meqeref ;
  208. lok = lok 'ET' faux ;
  209. 'FINS' ;
  210. 'SI' ('&lt;EG' maqe maqeref) ;
  211. 'MESS' '!!! TEST 3 : maqe=' maqe ' < maqeref=' maqeref ;
  212. lok = lok 'ET' faux ;
  213. 'FINS' ;
  214. *
  215. * TEST 4 Remaillage de mail1 avec une taille voulue de 0.1 en touchant
  216. * tout le bord
  217. *
  218. mail4 = 'REMA' mail1 ('/' 1. nv) ;
  219. 'SI' graph ;
  220. tit = 'CHAI' 'Maillage genere en modifiant le bord' ;
  221. 'TRAC' mail4 'TITR' tit 'NOEU' ;
  222. 'FINSI' ;
  223. * Test 4 : on vérifie que les qualités mini, mediane et maxi des éléments sont bonnes
  224. qmail4o = 'INDI' 'TOPO' mail4 ('/' 1. nv) ;
  225. miq meq maq = MIMEMA ('EXTR' (CHGRAV qmail4o) 'VALE' 'TOPO') ;
  226. 'MESS' 'FORMAT' '(E9.2)' 'TEST 4 : Qmin=' miq ' Qmed=' meq ' Qmax=' maq ;
  227. qmail4a = 'INDI' 'ALIG' mail4 ('/' 1. nv) ;
  228. miqa meqa maqa = MIMEMA ('EXTR' (CHGRAV qmail4a) 'VALE' 'ALIG') ;
  229. 'MESS' 'FORMAT' '(E9.2)' 'TEST 4 : Qalimin=' miqa ' Qalimed=' meqa ' Qalimax=' maqa ;
  230. 'SI' graph ;
  231. momail4 = 'MODE' mail4 'THERMIQUE' ;
  232. tit = 'CHAI' 'Qualite alignement maillage avec bord modifie' ;
  233. 'TRAC' qmail4a momail4 lqual 'TITR' tit ;
  234. 'FINSI' ;
  235. * Sur mon linux64 au 07/04/2020 : Qmin= 0.65E+00 Qmoy= 0.91E+00 Qmax= 0.10E+01
  236. *!!!!! Mieux miqref = 0.64 ; meqref = 0.90 ; maqref = 0.99 ;
  237. * 2025/11/24
  238. * !!!! Pas si mal miqaref = 0.57 ; meqaref = 0.90 ; maqaref = 0.99 ;
  239. * 2025/11/24 new
  240. miqaref = 0.73 ; meqaref = 0.88 ; maqaref = 0.99 ;
  241. 'SI' ('&lt;EG' miqa miqaref) ;
  242. 'MESS' '!!! TEST 4 : miqa=' miqa ' < miqaref=' miqaref ;
  243. lok = lok 'ET' faux ;
  244. 'FINS' ;
  245. 'SI' ('&lt;EG' meqa meqaref) ;
  246. 'MESS' '!!! TEST 4 : meqa=' meqa ' < meqaref=' meqaref ;
  247. lok = lok 'ET' faux ;
  248. 'FINS' ;
  249. 'SI' ('&lt;EG' maqa maqaref) ;
  250. 'MESS' '!!! TEST 4 : maqa=' maqa ' < maqaref=' maqaref ;
  251. lok = lok 'ET' faux ;
  252. 'FINS' ;
  253. qmail4e = 'INDI' 'EQUI' mail4 ('/' 1. nv) ;
  254. miqe meqe maqe = MIMEMA ('EXTR' (CHGRAV qmail4e) 'VALE' 'EQUI') ;
  255. 'MESS' 'FORMAT' '(E9.2)' 'TEST 4 : Qequmin=' miqe ' Qequmed=' meqe ' Qequmax=' maqe ;
  256. 'SI' graph ;
  257. momail4 = 'MODE' mail4 'THERMIQUE' ;
  258. tit = 'CHAI' 'Qualite equidistribution maillage avec bord modifie' ;
  259. 'TRAC' qmail4e momail4 lqual 'TITR' tit ;
  260. 'FINSI' ;
  261. * 2025/11/24
  262. miqeref = 0.59 ; meqeref = 0.86 ; maqeref = 0.99 ;
  263. 'SI' ('&lt;EG' miqe miqeref) ;
  264. 'MESS' '!!! TEST 4 : miqe=' miqe ' < miqeref=' miqeref ;
  265. lok = lok 'ET' faux ;
  266. 'FINS' ;
  267. 'SI' ('&lt;EG' meqe meqeref) ;
  268. 'MESS' '!!! TEST 4 : meqe=' meqe ' < meqeref=' meqeref ;
  269. lok = lok 'ET' faux ;
  270. 'FINS' ;
  271. 'SI' ('&lt;EG' maqe maqeref) ;
  272. 'MESS' '!!! TEST 4 : maqe=' maqe ' < maqeref=' maqeref ;
  273. lok = lok 'ET' faux ;
  274. 'FINS' ;
  275. *
  276. * TEST 5 Remaillage de mail4 avec une taille voulue de 0.1 en ne touchant
  277. * plus le bord. On s'attend à ne pas changer le maillage mais
  278. * c'est sans compter avec l'algorithme du noeud fictif qui nous
  279. * a deja fait des blagues
  280. *
  281. mail5 = 'REMA' mail4 ('CONT' mail4) ('/' 1. nv) ;
  282. 'SI' graph ;
  283. tit = 'CHAI' 'Maillage genere sans toucher le bord' ;
  284. 'TRAC' mail5 'TITR' tit 'NOEU' ;
  285. 'FINSI' ;
  286. * Test 5 : on vérifie que mail5 et mail4 sont identiques ainsi que les
  287. * qualités
  288. dn45= 'NBEL' ('DIFF' mail4 mail5) ;
  289. *!!!! dn45 = 0 ;
  290. 'SI' ('NEG' dn45 0) ;
  291. 'MESS' '!!! TEST 5 : mail4 .NE. mail5' ;
  292. lok = lok 'ET' faux ;
  293. 'FINS' ;
  294. *
  295. * Test final
  296. *
  297. 'SI' ('NON' lok) ;
  298. 'ERREUR' 5 ;
  299. 'SINON' ;
  300. 'SAUT' 1 'LIGN' ;
  301. 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ;
  302. 'FINSI' ;
  303. *
  304. 'SI' interact ;
  305. 'OPTION' 'ECHO' 1 ;
  306. 'OPTION' 'DONN' 5 ;
  307. 'FINSI' ;
  308. *
  309. * End of dgibi file MATO-2D4
  310. *
  311. 'FIN' ;
  312.  
  313.  
  314.  

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