Télécharger indi.dgibi

Retour à la liste

Numérotation des lignes :

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

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