Télécharger mato-3d2.dgibi

Retour à la liste

Numérotation des lignes :

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

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