Télécharger test_fsur.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : test_fsur.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *----------------------------------------------------------------------*
  5. * PETIT TEST DE VERIFICATION DE L'OPERATEUR FSUR
  6. *----------------------------------------------------------------------*
  7. 'OPTION' 'ECHO' 0 ;
  8. * Mettre IGRAPH a VRAI pour avoir les quelques traces
  9. IGRAPH = FAUX;
  10.  
  11. *----------------------------------------------------------------------*
  12. * VERIFICATION EN DIMENSION 2
  13. *----------------------------------------------------------------------*
  14. 'OPTION' 'DIME' 2 ;
  15.  
  16. P0 = 0. 0. ;
  17. P1 = 10. 0. ;
  18. P2 = 0. 10. ;
  19.  
  20. 'OPTION' 'ELEM' 'SEG2' ;
  21. L1 = P0 'DROITE' 8 P1 ;
  22.  
  23. * TEST 1 : COQ2 sur DROITE INCLINEE A 45 degres
  24. * ======== Comparaison de la solution avec PRESS
  25. L2 = P0 'DROITE' 7 (P1 'PLUS' P2) ;
  26.  
  27. MOD1 = 'MODELISER' L2 'MECANIQUE' 'ELASTIQUE' 'COQ2' ;
  28. MAT1 = 'MATERIAU' MOD1 'YOUN' 200.E+9 'NU' 0.3 'EPAI' 0.1 ;
  29.  
  30. * Solution avec MODE PRES pression constante = p
  31. MOP = 'MODE' L2 'CHARGEMENT' 'PRESSION' 'COQ2' ;
  32. MAP = 'MATE' MOP 'PRES' 1. 'EPAI' 1. ;
  33. PR1 = 'PRES' MOP MAP ;
  34.  
  35. * Solution avec FSUR et vecteur constant = - p VECT_N
  36. V1 = -1. 1. ; V1 = V1 / ('NORM' V1) ;
  37. FS1 = 'FSUR' 'COQU' MOD1 V1 ;
  38. * Solution avec FSUR et chpoint constant de composantes = - p VECT_N
  39. ch_fy2 = 'MANU' 'CHPO' L2 2 'FX' (-1. * (SIN 45.)) 'FY' (COS 45.) ;
  40. FS2 = 'FSUR' 'COQU' MOD1 ch_fy2 ;
  41. 'SI' IGRAPH ;
  42. v_zz = 'VECT' ch_fy2 'FORC' 1. ;
  43. 'TRAC' v_zz L2
  44. 'TITR' 'TEST 1 - COQ2 - CHPOINT DE Forces SURfaciques' ;
  45. v_z1 = 'VECT' pr1 'FORC' 1. 'ROUG' ;
  46. v_z2 = 'VECT' fs2 'FORC' 1. 'BLEU' ;
  47. 'TRAC' (v_z1 'ET' v_z2) L2
  48. 'TITR' 'TEST 1 - COQ2 - Comparaison PRESS (rouge) / FSUR (bleu)' ;
  49. 'FINSI' ;
  50. * Tests simples de bon fonctionnement
  51. Er_pr1 = PR1 + 1.E-15 ;
  52. ERR1_1 = 'MAXI' 'ABS' (fS1-pr1) ;
  53. 'MESS' 'TEST 1-1 : ECART.ABS = ' ERR1_1 ;
  54. ERR1_1 = 'MAXI' 'ABS' ( (fs1-pr1) / Er_pr1 ) ;
  55. 'MESS' 'TEST 1-1 : ECART.REL = ' ERR1_1 ;
  56. 'SI' (ERR1_1 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  57. ERR1_2 = 'MAXI' (fS2-pr1) 'ABS' ;
  58. 'MESS' 'TEST 1-2 : ECART.ABS = ' ERR1_2 ;
  59. ERR1_2 = 'MAXI' 'ABS' ( (fs2-pr1) / Er_pr1 ) ;
  60. 'MESS' 'TEST 1-2 : ECART.REL = ' ERR1_2 ;
  61. 'SI' (ERR1_2 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  62.  
  63. * TEST 2 : MASSIF avec 1 type EF a bord droit (horizontal/vertical)
  64. * ======== Comparaison de la solution avec PRESS
  65. 'OPTION' 'ELEM' 'QUA4' 'MODE' 'PLAN' 'CONT' ;
  66. S1 = L1 'TRANS' 8 P2 ;
  67.  
  68. MOD1 = 'MODELISER' S1 'MECANIQUE' 'ELASTIQUE' ;
  69.  
  70. * Solution avec PRESS pression constante = p
  71. MOP = 'MODE' L1 'CHARGEMENT' 'PRESSION' ;
  72. MAP = 'MATE' MOP 'PRES' 2. ;
  73. PR1 = 'PRES' MOP MAP ;
  74. * Solution avec FSUR et vecteur constant = - p VECT_N (VECT_N = -y)
  75. FS1 = 'FSUR' 'MASS' MOD1 L1 (0. 2.) ;
  76. * Solution avec FSUR et chpoint constant de composantes = + p y
  77. ** ch_fy2 = 'MANU' 'CHPO' L1 1 'FX' 0. 'FY' 2. ;
  78. ch_fy2 = 'MANU' 'CHPO' L1 1 'FY' 2. ;
  79. FS2 = 'FSUR' 'MASS' MOD1 ch_fy2 ;
  80. 'SI' IGRAPH ;
  81. v_zz = 'VECT' ch_fy2 'FORC' 1. ;
  82. 'TRAC' v_zz S1
  83. 'TITR' 'TEST 2 - MASS - CHPOINT DE Forces SURfaciques' ;
  84. v_z1 = 'VECT' pr1 'FORC' 1. 'ROUG' ;
  85. v_z2 = 'VECT' fs2 'FORC' 1. 'BLEU' ;
  86. 'TRAC' (v_z1 'ET' v_z2) S1
  87. 'TITR' 'TEST 2 - MASS - Comparaison PRESS (roug) / FSUR (bleu)' ;
  88. 'FINSI' ;
  89. * Tests simples de bon fonctionnement
  90. Er_pr1 = PR1 + 1.E-15 ;
  91. ERR2_1 = 'MAXI' 'ABS' (fs1-pr1) ;
  92. 'MESS' 'TEST 2-1 : ECART.ABS = ' ERR2_1 ;
  93. ERR2_1 = 'MAXI' 'ABS' ( (fs1-pr1) / Er_pr1 ) ;
  94. 'MESS' 'TEST 2-1 : ECART.REL = ' ERR2_1 ;
  95. ERR2_2 = 'MAXI' (fS2-pr1) 'ABS' ;
  96. 'MESS' 'TEST 2-2 : ECART.ABS = ' ERR2_2 ;
  97. ERR2_2 = 'MAXI' 'ABS' ( (fs2-pr1) / Er_pr1 ) ;
  98. 'MESS' 'TEST 2-2 : ECART.REL = ' ERR2_2 ;
  99. 'SI' (ERR2_2 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  100.  
  101. * TEST 3 : MASSIF avec 2 types EF a bord courbe (arc de cercle)
  102. * ======== Comparaison de la solution avec PRESS
  103. * Nota : Il faut que les elements des bords generent 2 types d'element
  104. * dans le maillage suite au SURF !
  105. 'OPTION' 'ELEM' 'QUA4' 'MODE' 'PLAN' 'GENE' ;
  106. C1 = 'CERC' 25 P1 P0 P2 ;
  107. S2 = 'SURF' (L1 'ET' C1 'ET' ('DROITE' 8 P2 P0)) ;
  108. 'SI' IGRAPH ;
  109. 'TRACER' S2 'QUAL' 'TITR' 'TEST3 - DISQUE PLAN - MASSIF' ;
  110. 'FINSI' ;
  111.  
  112. MOD2 = 'MODELISER' S2 'MECANIQUE' 'ELASTIQUE' 'DPGE' P0 ;
  113.  
  114. * Solution avec PRESS pression constante = p
  115. MOP = 'MODE' C1 'CHARGEMENT' 'PRESSION' ;
  116. MAP = 'MATE' MOP 'PRES' 1. ;
  117. PR2 = 'PRES' MOP MAP ;
  118.  
  119. * Solution avec FSUR et chpoint variable decrivant - p VECT_N
  120. x2 y2 = 'COORD' C1 ;
  121. r = (x2*x2) + (y2*y2) ; r = r**(-0.5) ;
  122. x2 = 'NOMC' 'FX' x2 ; y2 = 'NOMC' 'FY' y2 ;
  123. **ch_fs = -1. * r * (x2 'ET' y2) ;
  124. ch_fs = -0.1 * (x2 'ET' y2) ;
  125. FS2 = 'FSUR' 'MASS' MOD2 ch_fs ;
  126. 'SI' IGRAPH ;
  127. v_zz = 'VECT' ch_fs 'FORC' 1. ;
  128. 'TRAC' v_zz S2
  129. 'TITR' 'TEST 3 - MASS - CHPOINT DE Forces SURfaciques' ;
  130. v_z1 = 'VECT' pr2 'FORC' 1. 'ROUG' ;
  131. v_z2 = 'VECT' fs2 'FORC' 1. 'BLEU' ;
  132. 'TRAC' (v_z1 'ET' v_z2) S2
  133. 'TITR' 'TEST 3 - MASS - Comparaison PRESS (roug) / FSUR (bleu)' ;
  134. 'FINSI' ;
  135. * Tests simples de bon fonctionnement
  136. Er_pr2 = PR2 + 1.E-15 ;
  137. ERR3_1 = 'MAXI' (fS2-pr2) 'ABS' ;
  138. 'MESS' 'TEST 3-1 : ECART.ABS = ' ERR3_1 ;
  139. ERR3_1 = 'MAXI' 'ABS' ( (fs2-pr2) / Er_pr2 ) ;
  140. 'MESS' 'TEST 3-1 : ECART.REL = ' ERR3_1 ;
  141. 'SI' (ERR3_1 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  142. *Nota : L'ecart absolu ERR3_1 "important" s'explique tres bien.
  143. * A l'utilisateur de reflechir !
  144.  
  145. * TEST 4 : Axisymetrie : disque horizontal
  146. * ======== Comparaison de la solution avec PRESS
  147. 'OPTI' 'DIME' 2 'MODE' 'AXIS' ;
  148.  
  149. MOD1 = 'MODELISER' L1 'MECANIQUE' 'ELASTIQUE' 'COQ2' ;
  150. MAT1 = 'MATERIAU' MOD1 'YOUN' 200.E+9 'NU' 0.3 'EPAI' 0.1 ;
  151.  
  152. * Solution avec PRESS pression constante = p
  153. MOP = 'MODE' L1 'CHARGEMENT' 'PRESSION' 'COQ2' ;
  154. MAP = 'MATE' MOP 'PRES' 1. 'EPAI' 1. ;
  155. PR1 = 'PRES' MOP MAP ;
  156. * Solution avec FSUR et vecteur constant = - p VECT_N (VECT_N = -z)
  157. FS1 = 'FSUR' 'COQU' MOD1 (0. 1.) ;
  158. * Solution avec FSUR et chpoint constant de composantes = + p z
  159. ch_fz1 = 'MANU' 'CHPO' L1 2 'FZ' 1. 'FR' 0. ;
  160. FS2 = 'FSUR' 'COQU' MOD1 ch_fz1 ;
  161. 'SI' IGRAPH ;
  162. v_zz = 'VECT' ch_fz1 'FORC' 1. ;
  163. 'TRAC' v_zz L1
  164. 'TITR' 'TEST 4 - COQ2 - CHPOINT DE Forces SURfaciques' ;
  165. v_z1 = 'VECT' pr1 'FORC' 0.1 'ROUG' ;
  166. v_z2 = 'VECT' fs2 'FORC' 0.1 'BLEU' ;
  167. 'TRAC' (v_z1 'ET' v_z2) L1
  168. 'TITR' 'TEST 4 - COQ2 - Comparaison PRESS (roug) / FSUR (bleu)' ;
  169. 'FINSI' ;
  170. * Tests simples de bon fonctionnement
  171. Er_pr1 = PR1 + 1.E-15 ;
  172. ERR4_1 = 'MAXI' (fS1-pr1) 'ABS' ;
  173. 'MESS' 'TEST 4-1 : ECART.ABS = ' ERR4_1 ;
  174. ERR4_1 = 'MAXI' 'ABS' ( (fs1-pr1) / Er_pr1 ) ;
  175. 'MESS' 'TEST 4-1 : ECART.REL = ' ERR4_1 ;
  176. 'SI' (ERR4_1 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  177. ERR4_2 = 'MAXI' (fS2-pr1) 'ABS' ;
  178. 'MESS' 'TEST 4-2 : ECART.ABS = ' ERR4_2 ;
  179. ERR4_2 = 'MAXI' 'ABS' ( (fs2-pr1) / Er_pr1 ) ;
  180. 'MESS' 'TEST 4-2 : ECART.REL = ' ERR4_2 ;
  181. 'SI' (ERR4_2 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  182.  
  183. *----------------------------------------------------------------------*
  184. * VERIFICATION EN DIMENSION 3
  185. *----------------------------------------------------------------------*
  186. 'OPTI' 'DIME' 3 ;
  187.  
  188. * TEST 5 : COQ4 plaque plane
  189. * ======== Comparaison de la solution avec PRESS
  190. MOD1 = 'MODELISER' S1 'MECANIQUE' 'ELASTIQUE' 'COQ4' ;
  191. MAT1 = 'MATERIAU' MOD1 'YOUN' 200.E+9 'NU' 0.3 'EPAI' 0.1 ;
  192.  
  193. * Solution avec PRESS pression constante = p
  194. MOP = 'MODE' S1 'CHARGEMENT' 'PRESSION' 'COQ4' ;
  195. MAP = 'MATE' MOP 'PRES' 1. 'EPAI' 1. ;
  196. PR1 = 'PRES' MOP MAP ;
  197. * Solution avec FSUR et vecteur constant = - p VECT_N (VECT_N = -z)
  198. FS1 = 'FSUR' 'COQU' MOD1 (0. 0. 1.) MAT1 ;
  199. * Solution avec FSUR et chpoint constant de composantes = + p z
  200. ch_fz1 = 'MANU' 'CHPO' S1 3 'FX' 0. 'FY' 0. 'FZ' 1. ;
  201. FS2 = 'FSUR' 'COQU' MOD1 ch_fz1 MAT1 ;
  202. 'SI' IGRAPH ;
  203. v_zz = 'VECT' ch_fz1 'FORC' 1. ;
  204. 'TRAC' v_zz S1
  205. 'TITR' 'TEST 5 - COQ4 - CHPOINT DE Forces SURfaciques' ;
  206. v_z1 = 'VECT' pr1 'FORC' 1. 'ROUG' ;
  207. v_z2 = 'VECT' fs2 'FORC' 1. 'BLEU' ;
  208. 'TRAC' (v_z1 'ET' v_z2) S1
  209. 'TITR' 'TEST 5 - COQ4 - Comparaison PRESS (rouge) / FSUR (bleu)' ;
  210. 'FINSI' ;
  211. * Tests simples de bon fonctionnement
  212. Er_pr1 = PR1 + 1.E-15 ;
  213. ERR5_1 = 'MAXI' (fS1-pr1) 'ABS' ;
  214. 'MESS' 'TEST 5-1 : ECART.ABS = ' ERR5_1 ;
  215. ERR5_1 = 'MAXI' 'ABS' ( (fs1-pr1) / Er_pr1 ) ;
  216. 'MESS' 'TEST 5-1 : ECART.REL = ' ERR5_1 ;
  217. 'SI' (ERR5_1 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  218. ERR5_2 = 'MAXI' (fS2-pr1) 'ABS' ;
  219. 'MESS' 'TEST 5-2 : ECART.ABS = ' ERR5_2 ;
  220. ERR5_2 = 'MAXI' 'ABS' ( (fs2-pr1) / Er_pr1 ) ;
  221. 'MESS' 'TEST 5-2 : ECART.REL = ' ERR5_2 ;
  222. 'SI' (ERR5_2 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  223.  
  224. * TEST 6 : MASSIF 3D - CUBE
  225. * ======== Comparaison de la solution avec PRESS
  226. 'OPTION' 'ELEM' 'CUB8' ;
  227. V1 = 'VOLU' S1 'TRANS' 3 (0. 0. 20.) ;
  228. F3 = 'FACE' 2 V1 ;
  229.  
  230. MOD1 = 'MODELISER' V1 'MECANIQUE' 'ELASTIQUE' ;
  231.  
  232. * Solution avec PRESS pression constante = p
  233. MOP = 'MODE' F3 'CHARGEMENT' 'PRESSION' ;
  234. MAP = 'MATE' MOP 'PRES' -1. ;
  235. PR1 = 'PRES' MOP MAP ;
  236. Er_pr1 = PR1 + 1.E-15 ;
  237. * Solution avec FSUR et vecteur constant = - p VECT_N (VECT_N = +z)
  238. FS1 = 'FSUR' 'MASS' MOD1 F3 (0. 0. -1.) ;
  239. * Solution avec FSUR et chpoint constant de composantes = - p z
  240. ch_fy1 = 'MANU' 'CHPO' F3 1 'FZ' -1. ;
  241. FS2 = 'FSUR' 'MASS' MOD1 ch_fy1 ;
  242. 'SI' IGRAPH ;
  243. v_zz = 'VECT' ch_fy1 'FORC' 1. ;
  244. 'TRAC' v_zz V1
  245. 'TITR' 'TEST 6 - MASS - CHPOINT DE Forces SURfaciques' ;
  246. v_z1 = 'VECT' pr1 'FORC' 1. 'ROUG' ;
  247. v_z2 = 'VECT' fs2 'FORC' 1. 'BLEU' ;
  248. 'TRAC' (v_z1 'ET' v_z2) V1
  249. 'TITR' 'TEST 6 - MASS - Comparaison PRESS (rouge) / FSUR (bleu)' ;
  250. 'FINSI' ;
  251. * Tests simples de bon fonctionnement
  252. ERR6_1 = 'MAXI' (fS1-pr1) 'ABS' ;
  253. 'MESS' 'TEST 6-1 : ECART.ABS = ' ERR6_1 ;
  254. ERR6_1 = 'MAXI' 'ABS' ( (fs1-pr1) / Er_pr1 ) ;
  255. 'MESS' 'TEST 6-1 : ECART.REL = ' ERR6_1 ;
  256. 'SI' (ERR6_1 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  257. ERR6_2 = 'MAXI' (fS2-pr1) 'ABS' ;
  258. 'MESS' 'TEST 6-2 : ECART.ABS = ' ERR6_2 ;
  259. ERR6_2 = 'MAXI' 'ABS' ( (fs2-pr1) / Er_pr1 ) ;
  260. 'MESS' 'TEST 6-2 : ECART.REL = ' ERR6_2 ;
  261. 'SI' (ERR6_2 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  262.  
  263. * TEST 7 : MASSIF avec 2 types EF a bord courbe (portion de cylindre)
  264. * ======== Comparaison de la solution avec PRESS
  265. vecz = 0. 0. 17. ;
  266. V2 = 'VOLU' S2 'TRANS' 8 vecz ;
  267. PtV2 = 'POINT' V2 'CYLI' P0 (P0 'PLUS' vecz) P2 1.E-8 ;
  268. S2b = 'ELEM' ('ENVE' V2) 'APPU' 'STRI' PtV2 ;
  269.  
  270. MOD2 = 'MODELISER' V2 'MECANIQUE' 'ELASTIQUE' ;
  271.  
  272. * Solution avec PRESS pression constante = p
  273. MOP = 'MODE' S2b 'CHARGEMENT' 'PRESSION' ;
  274. MAP = 'MATE' MOP 'PRES' 1. ;
  275. PR2 = 'PRES' MOP MAP ;
  276. * Solution avec FSUR et chpoint variable decrivant - p VECT_N
  277. x2 y2 z2 = 'COORD' S2b ;
  278. r = (x2*x2) + (y2*y2) ; r = r**(-0.5) ;
  279. x2 = 'NOMC' 'FX' x2 ; y2 = 'NOMC' 'FY' y2 ; z2 = 'NOMC' 'FZ' z2 ;
  280. ch_fs = -1. * r * (x2 'ET' y2) ;
  281. **ch_fs = -0.1 * (x2 'ET' y2) ;
  282. FS2 = 'FSUR' 'MASS' MOD2 ch_fs ;
  283. 'SI' IGRAPH ;
  284. v_zz = 'VECT' ch_fs 'FORC' 1. ;
  285. 'TRAC' v_zz ('ARETE' V2)
  286. 'TITR' 'TEST 7 - MASS - CHPOINT DE Forces SURfaciques' ;
  287. v_z1 = 'VECT' pr2 'FORC' 1. 'ROUG' ;
  288. v_z2 = 'VECT' fs2 'FORC' 1. 'BLEU' ;
  289. 'TRAC' (v_z1 'ET' v_z2) ('ARETE' V2)
  290. 'TITR' 'TEST 7 - MASS - Comparaison PRESS (roug) / FSUR (bleu)' ;
  291. 'FINSI' ;
  292. * Tests simples de bon fonctionnement
  293. Er_pr2 = PR2 + 1.E-15 ;
  294. ERR7_1 = 'MAXI' (fS2-pr2) 'ABS' ;
  295. 'MESS' 'TEST 7-1 : ECART.ABS = ' ERR7_1 ;
  296. ERR7_1 = 'MAXI' 'ABS' ( (fs2-pr2) / Er_pr2 ) ;
  297. 'MESS' 'TEST 7-1 : ECART.REL = ' ERR7_1 ;
  298. 'SI' (ERR7_1 '>EG' 1.E-11) ; 'ERREUR' 5 ; 'FINSI' ;
  299. *Nota : L'ecart absolu ERR7_1 "important" s'explique tres bien.
  300. * A l'utilisateur de reflechir !
  301.  
  302. 'FIN' ;
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  

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