Télécharger mato-2d1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : mato-2d1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTION' 'ECHO' 0 ;
  5. ************************************************************************
  6. * NOM : MATO-2D1
  7. * DESCRIPTION : Test du MAilleur TOpologique pour mailler un simple
  8. * carré 10x10 de manière régulière.
  9. *
  10. * On teste la qualité des éléments obtenus.
  11. * On améliore un peu la qualité du maillage obtenu
  12. * avec une boucle entre r-adaptation (DEDU ADAP) et
  13. * remaillage.
  14. * Toutefois, après quelque itérations la
  15. * qualité oscille sans s'alméliorer car les critères
  16. * optimisés ne sont pas les mêmes aux deux étapes.
  17. *
  18. * Issu de 2d_1.dgibi+tests
  19. *
  20. *
  21. * LANGAGE : GIBIANE-CAST3M
  22. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  23. * mél : stephane.gounand@cea.fr
  24. **********************************************************************
  25. * VERSION : v1, 02/04/2020, version initiale
  26. * HISTORIQUE : v1, 02/04/2020, création
  27. * HISTORIQUE :
  28. * HISTORIQUE :
  29. ************************************************************************
  30. *
  31. interact = faux ;
  32. graph = faux ;
  33. complet = FAUX ;
  34. *
  35. 'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
  36. *
  37. 'SI' ('NON' interact) ;
  38. 'OPTION' 'TRAC' 'PSC' ;
  39. 'SINON' ;
  40. 'OPTION' 'TRAC' 'X' ;
  41. 'FINSI' ;
  42. lqual = 'PROG' 0.5 'PAS' 0.025 1. ;
  43. *
  44. * Création du contour
  45. *
  46. nx = 10 ;
  47. *nx = 2 ; 'OPTI' debu 1 ;
  48. pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ;
  49. lAB = 'DROI' nx pA pB ;
  50. lBC = 'DROI' nx pB pC ;
  51. lCD = 'DROI' nx pC pD ;
  52. lDA = 'DROI' nx pD pA ;
  53. *
  54. cnt = lAB 'ET' lBC 'ET' lCD 'ET' lDA ;
  55. *
  56. 'SI' graph ;
  57. tit = 'CHAI' 'Contour ' ;
  58. 'TRACER' 'CACH' cnt 'TITR' tit 'NOEU' ;
  59. 'FINSI' ;
  60. *
  61. * Tests divers (consistance...)
  62. *
  63. lok = VRAI ;
  64. *
  65. * TEST 1 Création d'un maillage sans ajouter de noeuds
  66. *
  67. * tparam = 'TABL' ;
  68. * tparam . 'debug' = 0 ;
  69. * tparam . 'graph' = vrai ;
  70. * mail1 = MAILTOPO 'TRIA' cnt 'NOAJ' tparam ;
  71. mail1 = 'TRIA' 'TOPO' cnt 'NOAJ' ;
  72. 'SI' graph ;
  73. tit = 'CHAI' 'Maillage genere sans noeud supplémentaire' ;
  74. 'TRAC' mail1 'TITR' tit 'NOEU' ;
  75. 'FINSI' ;
  76. * Test 1 : on vérifie que le nombre de noeuds est conservé
  77. nno1 = 'NBNO' cnt ;
  78. nno2 = 'NBNO' mail1 ;
  79. 'SI' ('NEG' nno1 nno2) ;
  80. 'MESS' '!!! TEST 1 : nombre de noeuds non conserve' ;
  81. lok = lok 'ET' faux ;
  82. 'FINS' ;
  83. *
  84. * TEST 2 Création d'un maillage en ajoutant des noeuds interieurs
  85. *
  86. mail2 = 'TRIA' 'TOPO' cnt 'AJNO' ;
  87. 'SI' graph ;
  88. tit = 'CHAI' 'Maillage genere en ajoutant des noeuds interieurs' ;
  89. 'TRAC' mail2 'TITR' tit 'NOEU' ;
  90. 'FINSI' ;
  91. * Test 2 : on vérifie que les qualités mini, moyenne et maxi des éléments sont bonnes
  92. qmail2 = 'INDI' 'TOPO' mail2 ;
  93. miq = 'MINI' qmail2 ; moq = MATOUTIL 'MOYECHAM' qmail2 ;
  94. maq = 'MAXI' qmail2 ;
  95. 'MESS' 'FORMAT' '(E9.2)' 'TEST 2 : Qmin=' miq ' Qmoy=' moq ' Qmax=' maq ;
  96. 'SI' graph ;
  97. momail2 = 'MODE' mail2 'THERMIQUE' ;
  98. tit = 'CHAI' 'Qualite maillage avec noeuds interieurs' ;
  99. 'TRAC' qmail2 momail2 lqual 'TITR' tit ;
  100. 'FINSI' ;
  101. * Sur mon linux64 au 02/04/2020 : qmin=0.64 qmoy=0.87 qmax=1.00
  102. miqref = 0.63 ; moqref = 0.86 ; maqref = 0.99 ;
  103. 'SI' ('<EG' miq miqref) ;
  104. 'MESS' '!!! TEST 2 : miq=' miq ' < miqref=' miqref ;
  105. lok = lok 'ET' faux ;
  106. 'FINS' ;
  107. 'SI' ('&lt;EG' moq moqref) ;
  108. 'MESS' '!!! TEST 2 : moq=' moq ' < moqref=' moqref ;
  109. lok = lok 'ET' faux ;
  110. 'FINS' ;
  111. 'SI' ('&lt;EG' maq maqref) ;
  112. 'MESS' '!!! TEST 2 : maq=' maq ' < maqref=' maqref ;
  113. lok = lok 'ET' faux ;
  114. 'FINS' ;
  115. *
  116. * TEST 2b Une petite boucle avec de la r-adaptation (DEDU ADAP) permet
  117. * d'améliorer la régularité du maillage mail2 mais ce n'est pas nécessaire
  118. * pour la suite donc on saute.
  119. *
  120. * 2020/04/03 : On arrive à avoir qmin = 0.80
  121. * avec nopt = 2 ; thdedu = 0.2 ; rdepa =1. ; nitm = 1 ;
  122. *
  123. 'SI' complet ;
  124. nopt = 2 ; iopt = 0 ;
  125. * Paramètres de DEDUADAP
  126. thdedu = 0.2 ; rdepa = 1. ; nitm = 1 ;
  127. maili = mail2 ;
  128. 'REPE' bclopt nopt ;
  129. iopt = iopt '+' 1 ;
  130. tit = 'CHAI' 'i=' iopt ;
  131. * Partie DEDUADAP
  132. maili1 = maili ;
  133. depa = 'DEDU' 'ADAP' maili1 'THET' thdedu 'NITM' nitm ;
  134. depa = '*' depa rdepa ;
  135. mcdep = 'MAXI' depa 'ABS' ;
  136. 'MESS' tit ' dedu max. dep=' mcdep ;
  137. 'FORM' depa ;
  138. qmaili1 = 'INDI' 'TOPO' maili1 ;
  139. miq = 'MINI' qmaili1 ; moq = MATOUTIL 'MOYECHAM' qmaili1 ;
  140. maq = 'MAXI' qmaili1 ;
  141. 'MESS' 'FORMAT' '(E9.2)' tit ' deduadap : Qmin=' miq ' Qmoy=' moq ' Qmax=' maq ;
  142. 'SI' graph ;
  143. momaili1 = 'MODE' maili1 'THERMIQUE' ;
  144. vdep = 'VECT' depa -1. 'UX' 'UY' 'NOIR' ;
  145. titg = 'CHAI' tit ' deduadap' ;
  146. 'TRAC' qmaili1 momaili1 vdep maili1 lqual 'TITR' titg ;
  147. 'FINS' ;
  148. * Partie MAILTOPO
  149. maili2 = 'REMA' maili1 ('CONT' maili1) ;
  150. * Qualités
  151. qmaili2 = 'INDI' 'TOPO' maili2 ;
  152. miq = 'MINI' qmaili2 ; moq = MATOUTIL 'MOYECHAM' qmaili2 ;
  153. maq = 'MAXI' qmaili2 ;
  154. 'MESS' 'FORMAT' '(E9.2)' tit ' mailtopo : Qmin=' miq ' Qmoy=' moq ' Qmax=' maq ;
  155. 'SI' graph ;
  156. momaili2 = 'MODE' maili2 'THERMIQUE' ;
  157. titg = 'CHAI' tit ' mailtopo' ;
  158. 'TRAC' qmaili2 momaili2 lqual 'TITR' titg ;
  159. 'FINSI' ;
  160. maili = maili2 ;
  161. 'FIN' bclopt ;
  162. mail2 = maili ;
  163. 'FINS' ;
  164. *
  165. * TEST 3 Remaillage du précédent avec une métrique uniforme constante
  166. * en espace
  167. *
  168. metva = '/' 1. nx ;
  169. mail3 = 'REMA' mail2 ('CONT' mail2) metva ;
  170. 'SI' graph ;
  171. tit = 'CHAI' 'Maillage avec metrique constante uniforme' ;
  172. 'TRAC' mail3 'TITR' tit 'NOEU' ;
  173. 'FINSI' ;
  174. * Test 3 : on vérifie que les qualités mini et moyenne des éléments sont bonnes
  175. qmail3 = 'INDI' 'TOPO' mail3 metva ;
  176. miq = 'MINI' qmail3 ; moq = MATOUTIL 'MOYECHAM' qmail3 ;
  177. maq = 'MAXI' qmail3 ;
  178. 'MESS' 'FORMAT' '(E9.2)' 'TEST 3 : Qmin=' miq ' Qmoy=' moq ' Qmax=' maq ;
  179. 'SI' graph ;
  180. momail3 = 'MODE' mail3 'THERMIQUE' ;
  181. tit = 'CHAI' 'Qualite maillage avec noeuds interieurs' ;
  182. 'TRAC' qmail3 momail3 lqual 'TITR' tit ;
  183. 'FINSI' ;
  184. * Sur mon linux64 au 02/04/2020 : qmin=0.624 qmoy=0.847 qmax=1.00
  185. miqref = 0.61 ; moqref = 0.83 ; maqref = 0.99 ;
  186. 'SI' ('&lt;EG' miq miqref) ;
  187. 'MESS' '!!! TEST 3 : miq=' miq ' < miqref=' miqref ;
  188. lok = lok 'ET' faux ;
  189. 'FINS' ;
  190. 'SI' ('&lt;EG' moq moqref) ;
  191. 'MESS' '!!! TEST 3 : moq=' moq ' < moqref=' moqref ;
  192. lok = lok 'ET' faux ;
  193. 'FINS' ;
  194. 'SI' ('&lt;EG' maq maqref) ;
  195. 'MESS' '!!! TEST 3 : maq=' maq ' < maqref=' maqref ;
  196. lok = lok 'ET' faux ;
  197. 'FINS' ;
  198. *
  199. * TEST 4 On vérifie qu'en remaillant le maillage précédent avec la même
  200. * métrique uniforme constante donnée sous forme d'un champ isotrope
  201. * constant, on ne modifie pas le maillage
  202. *
  203. vcnx = '**' ('/' 1. nx) -2 ;
  204. cmet = 'MANU' 'CHPO' mail3 1 'G' vcnx ;
  205. mail4 = 'REMA' mail3 ('CONT' mail3) cmet ;
  206. * Test 4 : on vérifie que mail4 et mail3 sont identiques ainsi que les
  207. * qualités
  208. dn34= 'NBEL' ('DIFF' mail3 mail4) ;
  209. 'SI' ('NEG' dn34 0) ;
  210. 'MESS' '!!! TEST 4 : mail3 .NE. mail4' ;
  211. lok = lok 'ET' faux ;
  212. 'FINS' ;
  213. qmail4 = 'INDI' 'TOPO' mail4 cmet ;
  214. *dq34 = 'MAXI' ('-' ('REDU' qmail4 mail3) qmail3) 'ABS' ;
  215. dq34 = 'MAXI' ('-' qmail4 qmail3) 'ABS' ;
  216. * VALE prec un peu trop serré pour semt2
  217. 'SI' ('>' dq34 ('*' ('VALE' 'PREC') 10.)) ;
  218. 'MESS' '!!! TEST 4 : qmail3 .NE. qmail4' ;
  219. lok = lok 'ET' faux ;
  220. 'FINS' ;
  221. *
  222. * TEST 5 On vérifie qu'en remaillant le maillage précédent avec la même
  223. * métrique uniforme constante donnée sous forme d'un champ anisotrope
  224. * constant, on ne modifie pas le maillage
  225. *
  226. vcnx = '**' ('/' 1. nx) -2 ;
  227. cmet = 'MANU' 'CHPO' mail3 3 'G11' vcnx 'G22' vcnx
  228. 'G21' 0. ;
  229. mail5 = 'REMA' mail3 ('CONT' mail3) cmet ;
  230. * Test 5 : on vérifie que mail5 et mail3 sont identiques ainsi que les
  231. * qualités
  232. dn35= 'NBEL' ('DIFF' mail3 mail5) ;
  233. 'SI' ('NEG' dn35 0) ;
  234. 'MESS' '!!! TEST 5 : mail3 .NE. mail5' ;
  235. lok = lok 'ET' faux ;
  236. 'FINS' ;
  237. qmail5 = 'INDI' 'TOPO' mail5 cmet ;
  238. dq35 = 'MAXI' ('-' qmail5 qmail3) 'ABS' ;
  239. * VALE prec un peu trop serré pour semt2
  240. 'SI' ('>' dq35 ('*' ('VALE' 'PREC') 10.)) ;
  241. 'MESS' '!!! TEST 5 : qmail3 .NE. qmail5' ;
  242. lok = lok 'ET' faux ;
  243. 'FINS' ;
  244. *
  245. * TEST 6 Une petite boucle avec de la r-adaptation (DEDU ADAP) pour voir si on peut
  246. * améliorer la qualité du maillage mail3.
  247. *
  248. * La réponse est oui, on peut effectivement avoir une amélioration mais
  249. * après quelque itérations la qualité oscille sans s'alméliorer entre
  250. * r-adaptation et remaillage car les critères optimisés ne sont pas les
  251. * mêmes aux deux étapes.
  252. *
  253. * 2020/04/03 : On arrive à avoir qmin = 0.70 avec thdedu = 1. ; rdepa =1. ; nitm = 1 ;
  254. * 2020/04/03 : On arrive à avoir qmin = 0.76 avec thdedu = 0.2 ; rdepa =1. ; nitm = 1 ;
  255. *
  256. nopt = 2 ; iopt = 0 ;
  257. * Paramètres de DEDUADAP
  258. thdedu = 0.2 ; rdepa = 1. ; nitm = 1 ;
  259. maili = mail3 ;
  260. vcnx = '/' 1. nx ;
  261. vcnx2 = '**' vcnx -2 ;
  262. ldep = 'PROG' ; lqmin = 'PROG' ; lqmoy = 'PROG' ;
  263. 'REPE' bclopt nopt ;
  264. iopt = iopt '+' 1 ;
  265. tit = 'CHAI' 'i=' iopt ;
  266. * Partie DEDUADAP
  267. maili1 = maili ;
  268. modi1 = 'MODE' maili1 'MECANIQUE' ;
  269. cmet = 'MANU' 'CHPO' maili1 3 'G11' vcnx2 'G22' vcnx2 'G21' 0. ;
  270. ccmet = 'CHAN' 'CHAM' cmet modi1 ;
  271. depa = 'DEDU' 'ADAP' maili1 'METR' ccmet modi1 'THET' thdedu 'NITM' nitm ;
  272. depa = '*' depa rdepa ;
  273. mcdep = 'MAXI' depa 'ABS' ; ldep = ldep 'ET' mcdep ;
  274. 'MESS' tit ' dedu max. dep=' mcdep ;
  275. 'FORM' depa ;
  276. qmaili1 = 'INDI' 'TOPO' maili1 vcnx ;
  277. miq = 'MINI' qmaili1 ; moq = MATOUTIL 'MOYECHAM' qmaili1 ;
  278. maq = 'MAXI' qmaili1 ;
  279. 'MESS' 'FORMAT' '(E9.2)' tit ' deduadap : Qmin=' miq ' Qmoy=' moq ' Qmax=' maq ;
  280. 'SI' graph ;
  281. momaili1 = 'MODE' maili1 'THERMIQUE' ;
  282. vdep = 'VECT' depa -1. 'UX' 'UY' 'NOIR' ;
  283. titg = 'CHAI' tit ' deduadap' ;
  284. 'TRAC' qmaili1 momaili1 vdep maili1 lqual 'TITR' titg ;
  285. 'FINS' ;
  286. * Partie MAILTOPO
  287. maili2 = 'REMA' maili1 ('CONT' maili1) vcnx ;
  288. * Qualités
  289. qmaili2 = 'INDI' 'TOPO' maili2 vcnx ;
  290. miq = 'MINI' qmaili2 ; moq = MATOUTIL 'MOYECHAM' qmaili2 ;
  291. maq = 'MAXI' qmaili2 ;
  292. 'MESS' 'FORMAT' '(E9.2)' tit ' mailtopo : Qmin=' miq ' Qmoy=' moq ' Qmax=' maq ;
  293. 'SI' graph ;
  294. momaili2 = 'MODE' maili2 'THERMIQUE' ;
  295. titg = 'CHAI' tit ' mailtopo' ;
  296. 'TRAC' qmaili2 momaili2 lqual 'TITR' titg ;
  297. 'FINSI' ;
  298. maili = maili2 ;
  299. 'FIN' bclopt ;
  300. * Sur mon linux64 au 02/04/2020 : qmin=0.723 qmoy=0.890 qmax=1.00
  301. miqref = 0.71 ; moqref = 0.88 ; maqref = 0.99 ;
  302. 'SI' ('&lt;EG' miq miqref) ;
  303. 'MESS' '!!! TEST 6 : miq=' miq ' < miqref=' miqref ;
  304. lok = lok 'ET' faux ;
  305. 'FINS' ;
  306. 'SI' ('&lt;EG' moq moqref) ;
  307. 'MESS' '!!! TEST 6 : moq=' moq ' < moqref=' moqref ;
  308. lok = lok 'ET' faux ;
  309. 'FINS' ;
  310. 'SI' ('&lt;EG' maq maqref) ;
  311. 'MESS' '!!! TEST 6 : maq=' maq ' < maqref=' maqref ;
  312. lok = lok 'ET' faux ;
  313. 'FINS' ;
  314. *
  315. * Test final
  316. *
  317. 'SI' ('NON' lok) ;
  318. 'ERREUR' 5 ;
  319. 'SINON' ;
  320. 'SAUT' 1 'LIGN' ;
  321. 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ;
  322. 'FINSI' ;
  323. *
  324. 'SI' interact ;
  325. 'OPTION' 'ECHO' 1 ;
  326. 'OPTION' 'DONN' 5 ;
  327. 'FINSI' ;
  328. *
  329. * End of dgibi file MATO-2D1
  330. *
  331. 'FIN' ;
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  

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