Télécharger joi1_lie_1.dgibi

Retour à la liste

Numérotation des lignes :

  1. 'OPTI' 'ECHO' 0 ;
  2. ************************************************************************
  3. ************************************************************************
  4. ************************************************************************
  5. * Cas test sur la mise a jour des vecteurs orientant les elements JOI1 *
  6. * avec FORM *
  7. * *
  8. * Un element JOI1 est considere, ses 6 ddl sont soumis a une serie *
  9. * de deplacements et rotations aleatoires. *
  10. * On verifie que les vecteurs du repere du joint sont correctement *
  11. * recalcule selon cette cinematique *
  12. ************************************************************************
  13.  
  14. tol1 = 1.E-13 ;
  15. ntest = 100 ;
  16.  
  17.  
  18. ************************************************************************
  19. * Test en dimension 2 : on impose des valeurs aleatoires aux ddl *
  20. ************************************************************************
  21.  
  22. ** Options generales
  23. 'OPTI' 'DIME' 2 'ELEM' 'SEG2' ;
  24. p0 = 0. 0. ;
  25.  
  26. ** Maillage d'un element joint
  27. p1 = 1. -2. ;
  28. p2 = p1 'PLUS' (3. -4.) ;
  29. l1 = 'DROI' 1 p1 p2 ;
  30. v1 = (0. 1.) ;
  31.  
  32. ** Modele et champ materiau initial
  33. mo = 'MODE' l1 'MECANIQUE' 'ELASTIQUE' 'ORTHOTROPE' 'JOI1' 'LIE' ;
  34. ma = 'MATE' mo 'KN' 1. 'KS' 1. 'QS' 1.
  35. 'DIRECTION' v1 ;
  36.  
  37. conf0 = 'FORM' ;
  38.  
  39. ma1 = ma ;
  40. 'MESS' ;
  41. 'MESS' 'Test en dimension 2' ;
  42. 'MESS' '-------------------------------'
  43. '-------------------------------' ;
  44. 'MESS' 'V1 initial' ;
  45. 'MESS' '-------------------------------'
  46. '-------------------------------' ;
  47. 'MESS' (v1 'COOR' 1) ;
  48. 'MESS' (v1 'COOR' 2) ;
  49. 'MESS' '-------------------------------'
  50. '-------------------------------' ;
  51. 'MESS' 'V1 (theorique - calcul)' ;
  52. 'MESS' '-------------------------------'
  53. '-------------------------------' ;
  54. * vecteur du repere initial
  55. v1i = v1 'PLUS' p0 ;
  56. * boucle realisant n rotation et deplacements aleatoires des deux noeuds
  57. 'REPE' b1 ntest ;
  58. mes1 = 'MESU' l1 ;
  59. rig1 = 'RIGI' mo ma1 ;
  60. lran = 'BRUI' 'BLAN' 'UNIF' 0. 1. 6 ;
  61. * deplacements et rotations (en radians) aleatoires a appliquer aux
  62. * noeuds
  63. ux1 = ('EXTR' lran 1) * mes1 ;
  64. uy1 = ('EXTR' lran 2) * mes1 ;
  65. ux2 = ('EXTR' lran 3) * mes1 ;
  66. uy2 = ('EXTR' lran 4) * mes1 ;
  67. rz1 = ('EXTR' lran 5) * pi ;
  68. rz2 = ('EXTR' lran 6) * pi ;
  69. * calcul de reference : rotation du repere avec l'operateur TOUR
  70. * on calcule la rotation equivalente a la translation du segment l1
  71. p11 = p1 'PLUS' (ux1 uy1) ;
  72. p22 = p2 'PLUS' (ux2 uy2) ;
  73. vab = p2 'MOIN' p1 ;
  74. vcd = p22 'MOIN' p11 ;
  75. cosw1 = vab 'PSCA' vcd / (('NORM' vab) * ('NORM' vcd)) ;
  76. sig = 'SIGN' ((('COOR' 1 vab) * ('COOR' 2 vcd)) -
  77. (('COOR' 2 vab) * ('COOR' 1 vcd)<{pan wtYle="color: #000000; font-weight: bold;">)) ;
  78. w1 = sig * ('ACOS' cosw1) ;
  79. cosw1 = 'COS' w1 ;
  80. v1f = v1i 'TOUR' w1 p0 ;
  81. v1f = v1f / ('NORM' v1f) ;
  82. v1i = v1f 'PLUS' p0 ;
  83. * application des ddl puis rotation du repere avec FORM
  84. bl1 = 'BLOQ' 'UX' p1 ;
  85. f1 = 'DEPI' bl1 ux1 ;
  86. bl2 = 'BLOQ' 'UX' p2 ;
  87. f2 = 'DEPI' bl2 ux2 ;
  88. bl3 = 'BLOQ' 'UY' p1 ;
  89. f3 = 'DEPI' bl3 uy1 ;
  90. bl4 = 'BLOQ' 'UY' p2 ;
  91. f4 = 'DEPI' bl4 uy2 ;
  92. bl5 = 'BLOQ' 'RZ' p1 ;
  93. f5 = 'DEPI' bl5 rz1 ;
  94. bl6 = 'BLOQ' 'RZ' p2 ;
  95. f6 = 'DEPI' bl6 rz2 ;
  96. u1 = 'RESO' (rig1 'ET' bl1 'ET' bl2 'ET' bl3 'ET'
  97. bl4 'ET' bl5 'ET' bl6)
  98. (f1 'ET' f2 'ET' f3 'ET' f4 'ET' f5 'ET' f6) ;
  99. conf1 ma1 = 'FORM' u1 mo ma1 ;
  100. r1 = ('EXTR' ma1 'V1X' 1 1 1) ('EXTR' ma1 'V1Y' 1 1 1) ;
  101. * comparaison a la solution de reference
  102. 'MESS' (v1f 'COOR' 1) (r1 'COOR' 1) ;
  103. 'MESS' (v1f 'COOR' 2) (r1 'COOR' 2) ;
  104. err1 = ('NORM' (v1f 'MOIN' r1)) / ('NORM' v1f) ;
  105. 'MESS' ' erreur = ' err1 ;
  106. 'MESS' '-------------------------------'
  107. '-------------------------------' ;
  108. * test sur l'erreur
  109. 'SI' (('ABS' err1) > tol1) ;
  110. 'ERREUR' 5 ;
  111. 'FINS' ;
  112. 'FIN' b1 ;
  113.  
  114. 'MESS' ;
  115. 'MESS' ;
  116. 'MESS' ;
  117.  
  118.  
  119. ************************************************************************
  120. * Test en dimension 3 : on impose des valeurs aleatoires aux ddl *
  121. ************************************************************************
  122.  
  123. ** Options generales
  124. 'OPTI' 'DIME' 3 'ELEM' 'SEG2' 'ECHO' 0 ;
  125. tol1 = 1.E-13 ;
  126. p0 = 0. 0. 0. ;
  127.  
  128. ** Maillage d'un element joint
  129. p1 = 1. -2. 3. ;
  130. p2 = p1 'PLUS' (-4. 5. -6.) ;
  131. l1 = 'DROI' 1 p1 p2 ;
  132. v1 = (1. 0. 0.) ;
  133. v2 = (0. 1. 0.) ;
  134.  
  135. ** Modele et champ materiau initial
  136. mo = 'MODE' l1 'MECANIQUE' 'ELASTIQUE' 'ORTHOTROPE' 'JOI1' 'LIE' ;
  137. ma = 'MATE' mo 'KN' 1. 'KS1' 1. 'KS2' 1.
  138. 'QN' 1. 'QS1' 1. 'QS2' 1.
  139. 'DIRECTION' v1 v2 ;
  140.  
  141. conf0 = 'FORM' ;
  142.  
  143. ma1 = ma ;
  144. 'MESS' ;
  145. 'MESS' 'Test en dimension 3' ;
  146. 'MESS' '-------------------------------'
  147. '-------------------------------' ;
  148. 'MESS' 'V1 initial | V2 initial ' ;
  149. 'MESS' '-------------------------------'
  150. '-------------------------------' ;
  151. 'MESS' (v1 'COOR' 1) ' | ' (v2 'COOR' 1) ;
  152. 'MESS' (v1 'COOR' 2) ' | ' (v2 'COOR' 2) ;
  153. 'MESS' (v1 'COOR' 3) ' | ' (v2 'COOR' 3) ;
  154. 'MESS' '-------------------------------'
  155. '-------------------------------' ;
  156. 'MESS' 'V1 (theorique - calcul) | V2 (theorique - calcul) ' ;
  157. 'MESS' '-------------------------------'
  158. '-------------------------------' ;
  159. * vecteurs du repere initial
  160. v1i = v1 'PLUS' p0 ;
  161. v2i = v2 'PLUS' p0 ;
  162. * boucle realisant n rotation et deplacements aleatoires des deux noeuds
  163. 'REPE' b1 ntest ;
  164. rig1 = 'RIGI' mo ma1 ;
  165. lran = 'BRUI' 'BLAN' 'UNIF' 0. 1. 12 ;
  166. * deplacements et rotations (en radians) aleatoires a appliquer aux
  167. * noeuds
  168. ux1 = 'EXTR' lran 1 ;
  169. uy1 = 'EXTR' lran 2 ;
  170. uz1 = 'EXTR' lran 3 ;
  171. ux2 = 'EXTR' lran 4 ;
  172. uy2 = 'EXTR' lran 5 ;
  173. uz2 = 'EXTR' lran 6 ;
  174. rx1 = ('EXTR' lran 7) * pi ;
  175. ry1 = ('EXTR' lran 8) * pi ;
  176. rz1 = ('EXTR' lran 9) * pi ;
  177. rx2 = ('EXTR' lran 10) * pi ;
  178. ry2 = ('EXTR' lran 11) * pi ;
  179. rz2 = ('EXTR' lran 12) * pi ;
  180. * calcul de reference 1 : rotation du repere avec l'operateur TOUR
  181. * on calcule la rotation equivalente autour de l'axe (p1,p2)
  182. p1p2 = (p2 'MOIN' p1) ;
  183. p1p2 = p1p2 / ('NORM' p1p2) ;
  184. vrmoy = 0.5 * (180. / pi) * ((rx1 ry1 rz1) 'PLUS' (rx2 ry2 rz2)) ;
  185. w1 = vrmoy 'PSCA' p1p2 ;
  186. v1o = v1i 'TOUR' w1 p0 p1p2 ;
  187. v2o = v2i 'TOUR' w1 p0 p1p2 ;
  188. * calcul de reference 2 : rotation du repere avec l'operateur TOUR
  189. * on calcule la rotation equivalente a la translation du segment l1
  190. p11 = p1 'PLUS' (ux1 uy1 uz1) ;
  191. p22 = p2 'PLUS' (ux2 uy2 uz2) ;
  192. vr = (p2 'MOIN' p1) 'PVEC' (p22 'MOIN' p11) ;
  193. vr = vr / ('NORM' vr) ;
  194. cosw1 = (p2 'MOIN' p1) 'PSCA' (p22 'MOIN' p11) /
  195. (('NORM' (p2 'MOIN' p1)) * ('NORM' (p22 'MOIN' p11))) ;
  196. w1 = 'ACOS' cosw1 ;
  197. v1f = v1o 'TOUR' w1 p0 vr ;
  198. v2f = v2o 'TOUR' w1 p0 vr ;
  199. v1f = v1f / ('NORM' v1f) ;
  200. v2f = v2f / ('NORM' v2f) ;
  201. v1i = v1f 'PLUS' p0 ;
  202. v2i = v2f 'PLUS' p0 ;
  203. * application des ddl puis rotation du repere avec FORM
  204. bl1 = 'BLOQ' 'UX' p1 ;
  205. f1 = 'DEPI' bl1 ux1 ;
  206. bl2 = 'BLOQ' 'UX' p2 ;
  207. f2 = 'DEPI' bl2 ux2 ;
  208. bl3 = 'BLOQ' 'UY' p1 ;
  209. f3 = 'DEPI' bl3 uy1 ;
  210. bl4 = 'BLOQ' 'UY' p2 ;
  211. f4 = 'DEPI' bl4 uy2 ;
  212. bl5 = 'BLOQ' 'UZ' p1 ;
  213. f5 = 'DEPI' bl5 uz1 ;
  214. bl6 = 'BLOQ' 'UZ' p2 ;
  215. f6 = 'DEPI' bl6 uz2 ;
  216. bl7 = 'BLOQ' 'RX' p1 ;
  217. f7 = 'DEPI' bl7 rx1 ;
  218. bl8 = 'BLOQ' 'RX' p2 ;
  219. f8 = 'DEPI' bl8 rx2 ;
  220. bl9 = 'BLOQ' 'RY' p1 ;
  221. f9 = 'DEPI' bl9 ry1 ;
  222. bl10 = 'BLOQ' 'RY' p2 ;
  223. f10 = 'DEPI' bl10 ry2 ;
  224. bl11 = 'BLOQ' 'RZ' p1 ;
  225. f11 = 'DEPI' bl11 rz1 ;
  226. bl12 = 'BLOQ' 'RZ' p2 ;
  227. f12 = 'DEPI' bl12 rz2 ;
  228. u1 = 'RESO' (rig1 'ET' bl1 'ET' bl2 'ET' bl3 'ET'
  229. bl4 'ET' bl5 'ET' bl6 'ET'
  230. bl7 'ET' bl8 'ET' bl9 'ET'
  231. bl10 'ET' bl11 'ET' bl12)
  232. (f1 'ET' f2 'ET' f3 'ET' f4 'ET' f5 'ET' f6 'ET'
  233. f7 'ET' f8 'ET' f9 'ET' f10 'ET' f11 'ET' f12) ;
  234. conf1 ma1 = 'FORM' u1 mo ma1 ;
  235. r1 = ('EXTR' ma1 'V1X' 1 1 1) ('EXTR' ma1 'V1Y' 1 1 1)
  236. ('EXTR' ma1 'V1Z' 1 1 1) ;
  237. r2 = ('EXTR' ma1 'V2X' 1 1 1) ('EXTR' ma1 'V2Y' 1 1 1)
  238. ('EXTR' ma1 'V2Z' 1 1 1) ;
  239. * comparaison a la solution de reference
  240. 'MESS' (v1f 'COOR' 1) (r1 'COOR' 1) '| '
  241. (v2f 'COOR' 1) (r2 'COOR' 1) ;
  242. 'MESS' (v1f 'COOR' 2) (r1 'COOR' 2) '| '
  243. (v2f 'COOR' 2) (r2 'COOR' 2) ;
  244. 'MESS' (v1f 'COOR' 3) (r1 'COOR' 3) '| '
  245. (v2f 'COOR' 3) (r2 'COOR' 3) ;
  246. err1 = ('NORM' (v1f 'MOIN' r1)) / ('NORM' v1f) ;
  247. err2 = ('NORM' (v2f 'MOIN' r2)) / ('NORM' v2f) ;
  248. 'MESS' ' erreur = ' err1 ' | erreur = ' err2 ;
  249. 'MESS' '-------------------------------'
  250. '-------------------------------' ;
  251. * test sur l'erreur
  252. 'SI' ((('ABS' err1) > tol1) 'OU' (('ABS' err2) > tol1)) ;
  253. 'ERREUR' 5 ;
  254. 'FINS' ;
  255. 'FIN' b1 ;
  256.  
  257.  
  258. 'FIN' ;
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  

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