Télécharger mato-3d3.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : mato-3d3.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTION' 'ECHO' 0 ;
  5. ************************************************************************
  6. * NOM : MATO-3D3
  7. * DESCRIPTION : Test du MAilleur TOpologique pour mailler un cube
  8. * avec une métrique isotrope constante en espace
  9. * dans le but d'obtenir 1x1x1 mailles.
  10. * Au départ, le cube est 5x5x5. 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 mato-2d5.dgibi
  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, 08/06/2026, version initiale
  24. * HISTORIQUE : v1, 08/06/2026, 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' 3 'ELEM' 'CUB8' ;
  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. * On met nv plus petit que 1 pour bien forcer le deraffinement
  61. nx = 5 ; nv = 0.5 ;
  62. pA = 0. 0. 0. ; pB = 1. 0. 0. ;
  63. lAB = 'DROI' nx pA pB ;
  64. fbas = 'TRAN' lAB nx (0. 1. 0.) ;
  65. vol = 'VOLU' 'TRAN' fbas nx (0. 0. 1.) ;
  66. env = 'ENVE' vol ;
  67. env = 'CHAN' env 'TRI3' ;
  68. * faces x=0, y=0, z=0
  69. x y z = 'COOR' env ;
  70. px0 = 'POIN' x 'EGINFE' ('VALE' prec) ;
  71. facx0 = 'ELEM' env appuye strictement px0 ;
  72. py0 = 'POIN' y 'EGINFE' ('VALE' prec) ;
  73. facy0 = 'ELEM' env appuye strictement py0 ;
  74. pz0 = 'POIN' z 'EGINFE' ('VALE' prec) ;
  75. facz0 = 'ELEM' env appuye strictement pz0 ;
  76. fac0 = facx0 'ET' facy0 'ET' facz0 ;
  77. fac1 = 'DIFF' env fac0 ;
  78. *
  79. 'SI' graph ;
  80. tit = 'CHAI' 'Enveloppe ' ;
  81. envq = 'CHAN' env 'QUAF' ;
  82. fac0q = 'CHAN' fac0 'QUAF' ;
  83. fac1q = 'CHAN' fac1 'QUAF' ;
  84. 'TRACER' 'CACH' envq 'TITR' tit ;
  85. 'TRACER' 'CACH' ('COUL' fac0q roug) 'TITR' tit ;
  86. 'TRACER' 'CACH' ('COUL' fac1q vert) 'TITR' tit ;
  87. 'FINSI' ;
  88. *
  89. * Tests divers (consistance...)
  90. *
  91. lok = VRAI ;
  92. *
  93. * TEST 1 Création d'un maillage initial
  94. *
  95. mail1 = 'TRIA' 'TOPO' env ;
  96. 'SI' graph ;
  97. tit = 'CHAI' 'Maillage initial genere par TRIA TOPO' ;
  98. 'TRAC' mail1 'TITR' tit 'NOEU' ;
  99. 'FINSI' ;
  100. * Test 1 : on vérifie que les qualités mini, moyenne et maxi des éléments sont bonnes
  101. qmail1 = 'INDI' 'TOPO' 'EQLT' mail1 ;
  102. miqo meqo maqo = MIMEMA qmail1 'TOPO' ;
  103. 'MESS' 'FORMAT' for 'TEST 1 : Qmin=' miqo ' Qmed=' meqo ' Qmax=' maqo ;
  104. miqa meqa maqa = MIMEMA qmail1 'EQLT' ;
  105. 'MESS' 'FORMAT' for 'TEST 1 : Qeqltmin=' miqa ' Qeqltmed=' meqa ' Qeqltmax=' maqa ;
  106. 'SI' graph ;
  107. momail1 = 'MODE' mail1 'THERMIQUE' ;
  108. tit = 'CHAI' 'Qualite equilateralite maillage avec noeuds interieurs' ;
  109. 'TRAC' ('EXCO' 'EQLT' qmail1) momail1 lqual 'TITR' tit ;
  110. 'FINSI' ;
  111. * 2026/06/08 nx=5 nv=0.5
  112. *miqar = 0.64 ; meqar = 0.82 ; maqar = 0.99 ;
  113. * 2026/06/11 nx=5 nv=0.5 linux32
  114. miqar = 0.62 ; meqar = 0.83 ; maqar = 0.99 ;
  115. 'MESS' 'FORMAT' for 'TEST 1 : Qeqltmir=' miqar ' Qeqltmer=' meqar ' Qeqltmar=' maqar ;
  116. 'SI' (('<EG' miqa miqar) 'OU' ('<EG' meqa meqar) 'OU' ('<EG' maqa maqar)) ;
  117. 'MESS' '!!! TEST 1 failed' ;
  118. lok = lok 'ET' faux ;
  119. 'FINS' ;
  120. *
  121. * TEST 2 Remaillage de mail1 avec une taille voulue de 0.2 sans
  122. * toucher le bord
  123. *
  124. tparam = 'TABL' ; tparam . 'impr' = 1 ;
  125. mail2 = 'REMA' mail1 ('ENVE' mail1) ('/' 1. nv) tparam ;
  126. critqs = tparam . 'critquals_eff' ;
  127. critq2 = 'EXTR' critqs ('DIME' critqs) ;
  128. 'SI' graph ;
  129. tit = 'CHAI' 'Maillage genere sans toucher le bord' ;
  130. 'TRAC' mail2 'TITR' tit 'NOEU' ;
  131. 'FINSI' ;
  132. * Test 2 : on vérifie que les qualités mini, mediane et maxi des éléments sont bonnes
  133. qmail2 = 'INDI' 'TOPO' 'COHE' 'DENS' mail2 ('/' 1. nv) critq2 ;
  134. miqo meqo maqo = MIMEMA qmail2 'TOPO' ;
  135. 'MESS' 'FORMAT' for 'TEST 2 : Qmin=' miqo ' Qmed=' meqo ' Qmax=' maqo ;
  136. miqa meqa maqa = MIMEMA qmail2 'COHE' ;
  137. 'MESS' 'FORMAT' for 'TEST 2 : Qcohemin=' miqa ' Qcohemed=' meqa ' Qcohemax=' maqa ;
  138. 'SI' graph ;
  139. momail2 = 'MODE' mail2 'THERMIQUE' ;
  140. tit = 'CHAI' 'Qualite coherence maillage avec noeuds interieurs' ;
  141. 'TRAC' ('EXCO' 'COHE' qmail2) momail2 lqual 'TITR' tit ;
  142. 'FINSI' ;
  143. * 2026/06/08 nx=5 nv=0.5 linux32
  144. *miqar = 0.36 ; meqar = 0.48 ;
  145. maqar = 0.66 ;
  146. * 2026/06/10 nx=5 nv=0.5 linux64
  147. miqar = 0.09 ; meqar = 0.45 ;
  148. *maqar = 0.89 ;
  149. * 2026/06/11 nx=5 nv=0.5 linux32
  150. miqar = 0.11 ; meqar = 0.37 ; maqar = 0.89 ;
  151. 'MESS' 'FORMAT' for 'TEST 2 : Qcohemir=' miqar ' Qcohemer=' meqar ' Qcohemar=' maqar ;
  152. 'SI' (('<EG' miqa miqar) 'OU' ('<EG' meqa meqar) 'OU' ('<EG' maqa maqar)) ;
  153. 'MESS' '!!! TEST 2 coherence failed' ;
  154. lok = lok 'ET' faux ;
  155. 'FINS' ;
  156. miqe meqe maqe = MIMEMA qmail2 'DENS' ;
  157. 'MESS' 'FORMAT' for 'TEST 2 : Qdensmin=' miqe ' Qdensmed=' meqe ' Qdensmax=' maqe ;
  158. 'SI' graph ;
  159. tit = 'CHAI' 'Qualite density distribution maillage avec noeuds interieurs' ;
  160. 'TRAC' ('EXCO' 'DENS' qmail2) momail2 ldens 'TITR' tit ;
  161. 'FINSI' ;
  162. * 2026/06/08 nx=5 nv=0.5 linux32
  163. *miqer = 0.14 ; meqer = 0.15 ; maqer = 0.16 ;
  164. * 2026/06/10 nx=5 nv=0.5 linux64
  165. *miqer = 0.04 ; meqer = 0.15 ; maqer = 0.33 ;
  166. * 2026/06/11 nx=5 nv=0.5 linux32
  167. miqer = 0.04 ; meqer = 0.11 ; maqer = 0.32 ;
  168. 'MESS' 'FORMAT' for 'TEST 2 : Qdensmir=' miqer ' Qdensmer=' meqer ' Qdensmar=' maqer ;
  169. 'SI' (('<EG' miqe miqer) 'OU' ('NEG' meqe meqer 0.01) 'OU' ('>EG' maqe maqer)) ;
  170. 'MESS' '!!! TEST 2 density distribution failed' ;
  171. lok = lok 'ET' faux ;
  172. 'FINS' ;
  173. *
  174. * TEST 3 Remaillage de mail1 avec une taille voulue de 0.2 en touchant
  175. * les faces x=0, y=0, z=0 mais pas les trois autres
  176. *
  177. tparam = 'TABL' ; tparam . 'impr' = 1 ;
  178. mail3 = 'REMA' mail1 fac1 ('/' 1. nv) tparam ;
  179. 'SI' graph ;
  180. tit = 'CHAI' 'Maillage genere sans toucher les faces x_i=0' ;
  181. 'TRAC' mail3 'TITR' tit 'NOEU' ;
  182. 'FINSI' ;
  183. * Test 3 : on vérifie que les qualités mini, mediane et maxi des éléments sont bonnes
  184.  
  185. qmail3 = 'INDI' 'TOPO' 'COHE' 'DENS' mail3 ('/' 1. nv) ;
  186. miq meq maq = MIMEMA qmail3 'TOPO' ;
  187. 'MESS' 'FORMAT' for 'TEST 3 : Qmin=' miq ' Qmed=' meq ' Qmax=' maq ;
  188. miqa meqa maqa = MIMEMA qmail3 'COHE' ;
  189. 'MESS' 'FORMAT' for 'TEST 3 : Qcohemin=' miqa ' Qcohemed=' meqa ' Qcohemax=' maqa ;
  190. 'SI' graph ;
  191. momail3 = 'MODE' mail3 'THERMIQUE' ;
  192. tit = 'CHAI' 'Qualite coherence maillage avec noeuds interieurs' ;
  193. 'TRAC' ('EXCO' 'COHE' qmail3) momail3 lqual 'TITR' tit ;
  194. 'FINSI' ;
  195. * 2026/06/08 nx=5 nv=0.5 linux32
  196. *miqar = 0.18 ;
  197. meqar = 0.26 ; maqar = 0.37 ;
  198. * 2026/06/10 nx=5 nv=0.5 linux64
  199. miqar = 0.10 ;
  200. *meqar = 0.34 ; maqar = 0.89 ;
  201. * 2026/06/11 nx=5 nv=0.5 linux32
  202. miqar = 0.11 ; meqar = 0.36 ; maqar = 0.86 ;
  203. 'MESS' 'FORMAT' for 'TEST 3 : Qcohemir=' miqar ' Qcohemer=' meqar ' Qcohemar=' maqar ;
  204. 'SI' (('<EG' miqa miqar) 'OU' ('<EG' meqa meqar) 'OU' ('<EG' maqa maqar)) ;
  205. 'MESS' '!!! TEST 3 coherence failed' ;
  206. lok = lok 'ET' faux ;
  207. 'FINS' ;
  208. miqe meqe maqe = MIMEMA qmail3 'DENS' ;
  209. 'MESS' 'FORMAT' for 'TEST 3 : Qdensmin=' miqe ' Qdensmed=' meqe ' Qdensmax=' maqe ;
  210. 'SI' graph ;
  211. tit = 'CHAI' 'Qualite density distribution maillage avec noeuds interieurs' ;
  212. 'TRAC' ('EXCO' 'DENS' qmail3) momail3 ldens 'TITR' tit ;
  213. 'FINSI' ;
  214. * 2026/06/08 nx=5 nv=0.5 linux32
  215. *miqer = 0.18 ; meqer = 0.19 ; maqer = 0.20 ;
  216. * 2026/06/08 nx=5 nv=0.5 linux64
  217. *miqer = 0.03 ; meqer = 0.16 ; maqer = 0.35 ;
  218. * 2026/06/08 nx=5 nv=0.5 linux32
  219. miqer = 0.06 ; meqer = 0.14 ; maqer = 0.39 ;
  220. 'MESS' 'FORMAT' for 'TEST 3 : Qdensmir=' miqer ' Qdensmer=' meqer ' Qdensmar=' maqer ;
  221. 'SI' (('<EG' miqe miqer) 'OU' ('NEG' meqe meqer 0.03) 'OU' ('>EG' maqe maqer)) ;
  222. 'MESS' '!!! TEST 3 density distribution failed' ;
  223. lok = lok 'ET' faux ;
  224. 'FINS' ;
  225. *
  226. * TEST 4 Remaillage de mail1 avec une taille voulue de 0.2 en touchant
  227. * tout le bord
  228. *
  229. tparam = 'TABL' ; tparam . 'impr' = 1 ;
  230. mail4 = 'REMA' mail1 ('/' 1. nv) tparam ;
  231. 'SI' graph ;
  232. tit = 'CHAI' 'Maillage genere en modifiant le bord' ;
  233. 'TRAC' mail4 'TITR' tit 'NOEU' ;
  234. 'FINSI' ;
  235. * Test 4 : on vérifie que les qualités mini, mediane et maxi des éléments sont bonnes
  236. qmail4 = 'INDI' 'TOPO' 'COHE' 'DENS' mail4 ('/' 1. nv) ;
  237. miq meq maq = MIMEMA qmail4 'TOPO' ;
  238. 'MESS' 'FORMAT' for 'TEST 4 : Qmin=' miq ' Qmed=' meq ' Qmax=' maq ;
  239. miqa meqa maqa = MIMEMA qmail4 'COHE' ;
  240. 'MESS' 'FORMAT' for 'TEST 4 : Qcohemin=' miqa ' Qcohemed=' meqa ' Qcohemax=' maqa ;
  241. 'SI' graph ;
  242. momail4 = 'MODE' mail4 'THERMIQUE' ;
  243. tit = 'CHAI' 'Qualite coherence maillage avec noeuds interieurs' ;
  244. 'TRAC' ('EXCO' 'COHE' qmail4) momail4 lqual 'TITR' tit ;
  245. 'FINSI' ;
  246. * 2026/06/08 nx=5 nv=0.5
  247. * miqar = 0.81 ; meqar = 0.81 ; maqar = 0.81 ;
  248. * 2026/06/11 nx=5 nv=0.5 linux32
  249. miqar = 0.63 ; meqar = 0.77 ; maqar = 0.88 ;
  250. 'MESS' 'FORMAT' for 'TEST 4 : Qcohemir=' miqar ' Qcohemer=' meqar ' Qcohemar=' maqar ;
  251. 'SI' (('<EG' miqa miqar) 'OU' ('<EG' meqa meqar) 'OU' ('<EG' maqa maqar)) ;
  252. 'MESS' '!!! TEST 4 coherence failed' ;
  253. lok = lok 'ET' faux ;
  254. 'FINS' ;
  255. miqe meqe maqe = MIMEMA qmail4 'DENS' ;
  256. 'MESS' 'FORMAT' for 'TEST 4 : Qdensmin=' miqe ' Qdensmed=' meqe ' Qdensmax=' maqe ;
  257. 'SI' graph ;
  258. tit = 'CHAI' 'Qualite density distribution maillage avec noeuds interieurs' ;
  259. 'TRAC' ('EXCO' 'DENS' qmail4) momail4 ldens 'TITR' tit ;
  260. 'FINSI' ;
  261. * 2026/06/08 nx=5 nv=0.5
  262. * miqer = 0.55 ; meqer = 0.56 ; maqer = 0.57 ;
  263. * 2026/06/11 nx=5 nv=0.5 linux32
  264. miqer = 0.36 ; meqer = 0.44 ; maqer = 0.51 ;
  265. 'MESS' 'FORMAT' for 'TEST 4 : Qdensmir=' miqer ' Qdensmer=' meqer ' Qdensmar=' maqer ;
  266. 'SI' (('<EG' miqe miqer) 'OU' ('NEG' meqe meqer 0.01) 'OU' ('>EG' maqe maqer)) ;
  267. 'MESS' '!!! TEST 4 density distribution failed' ;
  268. lok = lok 'ET' faux ;
  269. 'FINS' ;
  270. *
  271. * TEST 5 Remaillage de mail4 avec une taille voulue de 0.2 en ne touchant
  272. * plus le bord. On s'attend à ne pas changer le maillage mais
  273. * c'est sans compter avec l'algorithme du noeud fictif qui nous
  274. * a deja fait des blagues
  275. *
  276. * Il faut aussi garder exactement le même critère de qualité
  277. * lpcritq = tparam . 'lpcritq' ;
  278. * lcq = 'EXTR' lpcritq ('DIME' lpcritq) ;
  279. * jcq = 'ENTI' 'PROC' ('EXTR' lcq 1) ;
  280. * pcq = 'EXTR' lcq 2 ; qcq = 'EXTR' lcq 3 ;
  281. * tparam5 = 'TABL' ;
  282. * tparam5 . 'impr' = 2 ;
  283. * tparam5 . 'critqual' = 'LECT' jcq ;
  284. * tparam5 . 'critqual_pmoy' = 'PROG' pcq ;
  285. * tparam5 . 'critqual_qbias' = 'PROG' qcq ;
  286.  
  287. tparam = 'TABL' ; tparam . 'impr' = 1 ; tparam . 'nbpasses_rema' = 1 ;
  288. mail5 = 'REMA' mail4 ('ENVE' mail4) ('/' 1. nv) tparam ;
  289. 'SI' graph ;
  290. tit = 'CHAI' 'Maillage genere sans toucher le bord' ;
  291. 'TRAC' mail5 'TITR' tit 'NOEU' ;
  292. 'FINSI' ;
  293. * Test 5 : on vérifie que mail5 et mail4 sont identiques ainsi que les
  294. * qualités
  295. dn45= 'NBEL' ('DIFF' mail4 mail5) ;
  296. 'SI' ('NEG' dn45 0) ;
  297. 'MESS' '!!! TEST 5 : mail4 .NE. mail5' ;
  298. lok = lok 'ET' faux ;
  299. 'FINS' ;
  300. *
  301. * Test final
  302. *
  303. 'SI' ('NON' lok) ;
  304. 'ERREUR' 5 ;
  305. 'SINON' ;
  306. 'SAUT' 1 'LIGN' ;
  307. 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ;
  308. 'FINSI' ;
  309. *
  310. 'SI' interact ;
  311. 'OPTION' 'ECHO' 1 ;
  312. 'OPTION' 'DONN' 5 ;
  313. 'FINSI' ;
  314. *
  315. * End of dgibi file MATO-3D3
  316. *
  317. 'FIN' ;
  318.  
  319.  
  320.  

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