Télécharger joi1_lie_1.dgibi

Retour à la liste

Numérotation des lignes :

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

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