Télécharger indi.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : indi.dgibi
  2. ************************************************************************
  3. * Petit test de l'operateur INDI options 'ASPE' et 'SKEW' *
  4. ************************************************************************
  5.  
  6.  
  7. ** Options generales
  8. OPTI 'ECHO' 0 'DENS' 0.16 ;
  9. itrac = FAUX ;
  10. a = 1. ;
  11. def = 0.01 ;
  12.  
  13. MESS '---------------------------------------------------------------' ;
  14. MESS '| Dim. | Cas | ASPE | SKEW |' ;
  15. MESS '| | | Aspect ratio | Skewness |' ;
  16. MESS '---------------------------------------------------------------' ;
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. **************************** Exemple en 2D *****************************
  26.  
  27. ** Options generales
  28. OPTI 'DIME' 2 'ELEM' 'TRI3' ;
  29.  
  30.  
  31. ** Cas d'un triangle equilateral
  32. p1 = 0. 0. ;
  33. p2 = a 0. ;
  34. p3 = (0.5 * a) (0.5 * a * (3. ** 0.5)) ;
  35. s0 = MANU 'TRI3' p1 p2 p3 ;
  36. q0 = INDI s0 'ASPE' 'SKEW' ;
  37. as0 = EXTR q0 'ASPE' 1 1 1 ;
  38. sk0 = EXTR q0 'SKEW' 1 1 1 ;
  39. MESS '| 2 | triangle equilat. | ' as0 ' |' sk0 ' |' ;
  40. MESS '---------------------------------------------------------------' ;
  41.  
  42.  
  43. ** Cas d'un triangle "needle"
  44. s1 = s0 PLUS (0. 0.) ;
  45. DEPL (s1 POIN 'PROC' p3) 'PLUS' ((a / def) * (0. 1.)) ;
  46. q1 = INDI s1 'ASPE' 'SKEW' ;
  47. as1 = EXTR q1 'ASPE' 1 1 1 ;
  48. sk1 = EXTR q1 'SKEW' 1 1 1 ;
  49. MESS '| 2 | triangle needle |' as1 ' |' sk1 ' |' ;
  50. MESS '---------------------------------------------------------------' ;
  51.  
  52.  
  53. ** Cas d'un triangle "cap"
  54. s2 = MANU 'TRI3' p1 p2 (0.5 def) ;
  55. q2 = INDI s2 'ASPE' 'SKEW' ;
  56. as2 = EXTR q2 'ASPE' 1 1 1 ;
  57. sk2 = EXTR q2 'SKEW' 1 1 1 ;
  58. MESS '| 2 | triangle cap |' as2 ' |' sk2 ' |' ;
  59. MESS '---------------------------------------------------------------' ;
  60.  
  61.  
  62. ** Cas d'un triangle "sliver"
  63. s3 = s0 PLUS (0. 0.) ;
  64. DEPL (s3 POIN 'PROC' p3) 'PLUS' ((0.1 * a / def) * (1. 0.)) ;
  65. q3 = INDI s3 'ASPE' 'SKEW' ;
  66. as3 = EXTR q3 'ASPE' 1 1 1 ;
  67. sk3 = EXTR q3 'SKEW' 1 1 1 ;
  68. MESS '| 2 | triangle sliver |' as3 ' |' sk3 ' |' ;
  69. MESS '---------------------------------------------------------------' ;
  70.  
  71.  
  72. ** Maillage d'une bielle
  73. r1 = 1. ;
  74. r2 = 0.6 ;
  75. r3 = 0.2 ;
  76. ep = 0.25 ;
  77. c1 = LIGN (0. 0.) (r1 0.) 360. 'ROTA' ;
  78. c2 = LIGN (0. 0.) ((r1 + ep) 0.) 360. 'ROTA' ;
  79. p1 = c2 POIN 'PROC' ((r1 + ep) * ((COS 30.) (SIN 30.))) ;
  80. p2 = c2 POIN 'PROC' ((r1 + ep) * ((COS -30.) (SIN -30.))) ;
  81. c2 = c2 ELEM 'COMP' p1 p2 ;
  82. c3 = LIGN (0. 0.) ((-1. * r2) 0.) 360. 'ROTA' ;
  83. c4 = LIGN (0. 0.) ((-1. * r2 - ep) 0.) 360. 'ROTA' ;
  84. p3 = c4 POIN 'PROC' ((r2 + ep) * ((COS -160.) (SIN -160.))) ;
  85. p4 = c4 POIN 'PROC' ((r2 + ep) * ((COS 160.) (SIN 160.))) ;
  86. c4 = c4 ELEM 'COMP' p3 p4 ;
  87. DEPL (c3 ET c4) 'PLUS' (6. 0.) ;
  88. l41 = DROI p4 p1 ;
  89. l23 = DROI p2 p3 ;
  90. l41 con1 c2 = l41 CONG r3 c2 ;
  91. c2 con2 l23 = c2 CONG r3 l23 ;
  92. l23 con3 c4 = l23 CONG r3 c4 ;
  93. c4 con4 l41 = c4 CONG r3 l41 ;
  94. cint = c1 ET c3 ;
  95. cext = INVE (con1 ET c2 ET con2 ET l23 ET con3 ET c4 ET con4 ET l41) ;
  96. OPTI 'ECHO' -1 ;
  97. ELIM cint 1.E-10 ;
  98. OPTI 'ECHO' 0 ;
  99. ar = cint ET cext ;
  100. bielle = SURF ar ;
  101. q = INDI bielle 'ASPE' 'SKEW' ;
  102. * mini,maxi,moyenne
  103. asmin = MINI q 'AVEC' (MOTS 'ASPE') ;
  104. skmin = MINI q 'AVEC' (MOTS 'SKEW') ;
  105. asmax = MAXI q 'AVEC' (MOTS 'ASPE') ;
  106. skmax = MAXI q 'AVEC' (MOTS 'SKEW') ;
  107. air = MESU bielle ;
  108. mo = MODE bielle 'MECANIQUE' ;
  109. q = CHAN 'NOEUD' q mo ;
  110. asmoy = (INTG mo q 'ASPE') / air ;
  111. skmoy = (INTG mo q 'SKEW') / air ;
  112. MESS '| 2 | maillage surf. | | |' ;
  113. MESS '| | d''une bielle | | |' ;
  114. MESS '| | minimum |' asmin ' |' skmin ' |' ;
  115. MESS '| | moyenne |' asmoy ' |' skmoy ' |' ;
  116. MESS '| | maximum |' asmax ' |' skmax ' |' ;
  117. MESS '---------------------------------------------------------------' ;
  118. * trace du champ
  119. SI itrac ;
  120. TRAC (EXCO q 'ASPE') mo 'TITR' 'Maillage d''une bielle - Aspect Ratio' (PROG 1. 'PAS' 0.05 2.) ;
  121. TRAC (EXCO q 'SKEW') mo 'TITR' 'Maillage d''une bielle - Skewness' (PROG 0. 'PAS' 0.02 0.4) ;
  122. FINSI ;
  123. * distributions
  124. npas = 50 ;
  125. las = PROG asmin 'PAS' ((asmax - asmin) / npas) asmax ;
  126. ddas = HIST mo q las 'ASPE' ;
  127. evmoy = EVOL 'VERT' 'MANU' (PROG asmoy asmoy) (PROG 0. (MAXI (EXTR ddas 'ORDO'))) ;
  128. SI itrac ;
  129. DESS (ddas ET evmoy) 'TITR' 'Triangles - Distribution de ASPE - Moyenne en VERT' ;
  130. FINSI ;
  131. lsk = PROG 0. 'PAS' (1. / npas) 1. ;
  132. ddsk = HIST mo q lsk 'SKEW' ;
  133. evmoy = EVOL 'VERT' 'MANU' (PROG skmoy skmoy) (PROG 0. (MAXI (EXTR ddsk 'ORDO'))) ;
  134. SI itrac ;
  135. DESS (ddsk ET evmoy) 'TITR' 'Triangles - Distribution de SKEW - Moyenne en VERT' ;
  136. FINSI ;
  137. * trace des "mauvais" elements
  138. SI itrac ;
  139. elas = q ELEM 'SUPE' 2. 'AVEC' (MOTS 'ASPE') COUL 'ORAN' ;
  140. elsk = q ELEM 'SUPE' 0.4 'AVEC' (MOTS 'SKEW') COUL 'ROUG' ;
  141. TRAC (ar ET elas) 'TITR' 'Mauvais triangles - Orange = ASPE > 2' ;
  142. TRAC (ar ET elsk) 'TITR' 'Mauvais triangles - Rouge = SKEW > 0.4' ;
  143. FINSI ;
  144.  
  145.  
  146.  
  147.  
  148. **************************** Exemple en 3D *****************************
  149.  
  150. ** Options generales
  151. OPTI 'DIME' 3 'ELEM' 'TET4' ;
  152.  
  153.  
  154. ** Cas de la bielle precedente (doit donner en 3D les memes resultats qu'en 2D)
  155. q = INDI bielle 'ASPE' 'SKEW' ;
  156. * mini,maxi,moyenne
  157. asmin = MINI q 'AVEC' (MOTS 'ASPE') ;
  158. skmin = MINI q 'AVEC' (MOTS 'SKEW') ;
  159. asmax = MAXI q 'AVEC' (MOTS 'ASPE') ;
  160. skmax = MAXI q 'AVEC' (MOTS 'SKEW') ;
  161. air = MESU bielle ;
  162. mo = MODE bielle 'MECANIQUE' ;
  163. q = CHAN 'NOEUD' q mo ;
  164. asmoy = (INTG mo q 'ASPE') / air ;
  165. skmoy = (INTG mo q 'SKEW') / air ;
  166. MESS '| 3 | maillage surf. | | |' ;
  167. MESS '| | d''une bielle | | |' ;
  168. MESS '| | minimum |' asmin ' |' skmin ' |' ;
  169. MESS '| | moyenne |' asmoy ' |' skmoy ' |' ;
  170. MESS '| | maximum |' asmax ' |' skmax ' |' ;
  171. MESS '---------------------------------------------------------------' ;
  172. * trace du champ
  173. SI itrac ;
  174. TRAC (EXCO q 'ASPE') mo 'TITR' 'Maillage d''une bielle - Aspect Ratio' (PROG 1. 'PAS' 0.05 2.) ;
  175. TRAC (EXCO q 'SKEW') mo 'TITR' 'Maillage d''une bielle - Skewness' (PROG 0. 'PAS' 0.02 0.4) ;
  176. * trace des "mauvais" elements
  177. elas = q ELEM 'SUPE' 2. 'AVEC' (MOTS 'ASPE') COUL 'ORAN' ;
  178. elsk = q ELEM 'SUPE' 0.4 'AVEC' (MOTS 'SKEW') COUL 'ROUG' ;
  179. TRAC (ar ET elas) 'TITR' 'Mauvais triangles - Orange = ASPE > 2' ;
  180. TRAC (ar ET elsk) 'TITR' 'Mauvais triangles - Rouge = SKEW > 0.4' ;
  181. FINSI ;
  182.  
  183.  
  184. ** Cas d'un tetraedre regulier
  185. a = 1. ;
  186. b = a / (2 * (2. ** 0.5)) ;
  187. mb = -1. * b ;
  188. p1 = b b b ;
  189. p2 = b mb mb ;
  190. p3 = mb b mb ;
  191. p4 = mb mb b ;
  192. v0 = MANU 'TET4' p1 p2 p3 p4 ;
  193. q0 = INDI v0 'ASPE' 'SKEW' ;
  194. as0 = EXTR q0 'ASPE' 1 1 1 ;
  195. sk0 = EXTR q0 'SKEW' 1 1 1 ;
  196. MESS '| 3 | tetraedre regulier |' as0 ' |' sk0 ' |' ;
  197. MESS '---------------------------------------------------------------' ;
  198.  
  199.  
  200. ** Cas d'un tetraedre "needle"
  201. v1 = v0 PLUS (0. 0. 0.) ;
  202. DEPL (v1 POIN 'PROC' p1) 'PLUS' ((a / def) * (1. 1. 1.)) ;
  203. q1 = INDI v1 'ASPE' 'SKEW' ;
  204. as1 = EXTR q1 'ASPE' 1 1 1 ;
  205. sk1 = EXTR q1 'SKEW' 1 1 1 ;
  206. MESS '| 3 | tetraedre needle |' as1 ' |' sk1 ' |' ;
  207. MESS '---------------------------------------------------------------' ;
  208.  
  209.  
  210. ** Cas d'un tetraedre "spindle"
  211. v2 = v0 PLUS (0. 0. 0.) ;
  212. DEPL ((v2 POIN 'PROC' p1) ET (v2 POIN 'PROC' p4)) 'PLUS' (0. 0. ((0.5 * def) - b)) ;
  213. DEPL ((v2 POIN 'PROC' p2) ET (v2 POIN 'PROC' p3)) 'PLUS' (0. 0. (b - (0.5 * def))) ;
  214. q2 = INDI v2 'ASPE' 'SKEW' ;
  215. as2 = EXTR q2 'ASPE' 1 1 1 ;
  216. sk2 = EXTR q2 'SKEW' 1 1 1 ;
  217. MESS '| 3 | tetraedre spindle |' as2 ' |' sk2 ' |' ;
  218. MESS '---------------------------------------------------------------' ;
  219.  
  220.  
  221. ** Cas d'un tetraedre "wedge"
  222. v3 = v0 PLUS (0. 0. 0.) ;
  223. DEPL (v3 POIN 'PROC' p1) 'AFFI' (def / a) (0. 0. b) p1 ;
  224. DEPL (v3 POIN 'PROC' p4) 'AFFI' (def / a) (0. 0. b) p1 ;
  225. q3 = INDI v3 'ASPE' 'SKEW' ;
  226. as3 = EXTR q3 'ASPE' 1 1 1 ;
  227. sk3 = EXTR q3 'SKEW' 1 1 1 ;
  228. MESS '| 3 | tetraedre wedge |' as3 ' |' sk3 ' |' ;
  229. MESS '---------------------------------------------------------------' ;
  230.  
  231.  
  232. ** Cas d'un tetraedre "cap"
  233. v4 = v0 PLUS (0. 0. 0.) ;
  234. p14 = v4 POIN 'PROC' p1 ;
  235. DEPL p14 'PROJ' 'CONI' (1. 1. 1.) 'PLAN' p2 p3 p4 ;
  236. DEPL p14 'PLUS' (def * (1. 1. 1.)) ;
  237. q4 = INDI v4 'ASPE' 'SKEW' ;
  238. as4 = EXTR q4 'ASPE' 1 1 1 ;
  239. sk4 = EXTR q4 'SKEW' 1 1 1 ;
  240. MESS '| 3 | tetraedre cap |' as4 ' |' sk4 ' |' ;
  241. MESS '---------------------------------------------------------------' ;
  242.  
  243.  
  244. ** Cas d'un tetraedre "sliver"
  245. p1 = 0. 0. 0. ;
  246. p2 = a 0. 0. ;
  247. p3 = 0. a 0. ;
  248. p4 = a a def ;
  249. v5 = MANU 'TET4' p1 p2 p3 p4 ;
  250. q5 = INDI v5 'ASPE' 'SKEW' ;
  251. as5 = EXTR q5 'ASPE' 1 1 1 ;
  252. sk5 = EXTR q5 'SKEW' 1 1 1 ;
  253. MESS '| 3 | tetraedre sliver |' as5 ' |' sk5 ' |' ;
  254. MESS '---------------------------------------------------------------' ;
  255.  
  256.  
  257. ** Maillage 3D de la bielle
  258. s1 = bielle ;
  259. arb = ar PLUS (0. 0. (2. * ep)) ;
  260. s2 = SURF arb 'PLAN' ;
  261. s3 = REGL ar arb ;
  262. bielle = VOLU (s1 ET s2 ET s3) ;
  263. ar = ARET bielle ;
  264. q = INDI bielle 'ASPE' 'SKEW' ;
  265. * mini,maxi,moyenne
  266. asmin = MINI q 'AVEC' (MOTS 'ASPE') ;
  267. skmin = MINI q 'AVEC' (MOTS 'SKEW') ;
  268. asmax = MAXI q 'AVEC' (MOTS 'ASPE') ;
  269. skmax = MAXI q 'AVEC' (MOTS 'SKEW') ;
  270. vol = MESU bielle ;
  271. mo = MODE bielle 'MECANIQUE' ;
  272. q = CHAN 'NOEUD' q mo ;
  273. asmoy = (INTG mo q 'ASPE') / vol ;
  274. skmoy = (INTG mo q 'SKEW') / vol ;
  275. MESS '| 3 | maillage volumique | | |' ;
  276. MESS '| | d''une bielle | | |' ;
  277. MESS '| | minimum |' asmin ' |' skmin ' |' ;
  278. MESS '| | moyenne |' asmoy ' |' skmoy ' |' ;
  279. MESS '| | maximum |' asmax ' |' skmax ' |' ;
  280. MESS '---------------------------------------------------------------' ;
  281. * trace du champ
  282. SI itrac ;
  283. TRAC (EXCO q 'ASPE') mo 'TITR' 'Maillage d''une bielle - Aspect Ratio' (PROG 1. 'PAS' 0.2 4.) ;
  284. TRAC (EXCO q 'SKEW') mo 'TITR' 'Maillage d''une bielle - Skewness' (PROG 0. 'PAS' 0.04 0.8) ;
  285. FINSI ;
  286. * distributions
  287. npas = 50 ;
  288. las = PROG asmin 'PAS' ((asmax - asmin) / npas) asmax ;
  289. ddas = HIST mo q las 'ASPE' ;
  290. evmoy = EVOL 'VERT' 'MANU' (PROG asmoy asmoy) (PROG 0. (MAXI (EXTR ddas 'ORDO'))) ;
  291. SI itrac ;
  292. DESS (ddas ET evmoy) 'TITR' 'Tetraedres - Distribution de ASPE - Moyenne en VERT' ;
  293. FINSI ;
  294. lsk = PROG 0. 'PAS' (1. / npas) 1. ;
  295. ddsk = HIST mo q lsk 'SKEW' ;
  296. evmoy = EVOL 'VERT' 'MANU' (PROG skmoy skmoy) (PROG 0. (MAXI (EXTR ddsk 'ORDO'))) ;
  297. SI itrac ;
  298. DESS (ddsk ET evmoy) 'TITR' 'Tetraedres - Distribution de SKEW - Moyenne en VERT' ;
  299. FINSI ;
  300. * trace des "mauvais" elements
  301. SI itrac ;
  302. elas = q ELEM 'SUPE' 4. 'AVEC' (MOTS 'ASPE') COUL 'ORAN' ;
  303. elsk = q ELEM 'SUPE' 0.8 'AVEC' (MOTS 'SKEW') COUL 'ROUG' ;
  304. TRAC (ar ET elas) 'TITR' 'Mauvais tetraedres - Orange = ASPE > 4' ;
  305. TRAC (ar ET elsk) 'TITR' 'Mauvais tetraedres - Rouge = SKEW > 0.8' ;
  306. FINSI ;
  307.  
  308.  
  309.  
  310.  
  311. FIN ;
  312.  
  313.  
  314.  
  315.  
  316.  

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