Télécharger drx_flexion_elas.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : drx_flexion_elas.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *
  5. * Cas test de la procédure EXPLICIT
  6. *
  7. * Calcul de la réponse dynamique d'une plaque axisymétrqiue
  8. * à une force de type impact sur son centre
  9. *
  10. * La réponse est comparée à un calcul modale avec DYNE
  11. *
  12. * options de calcul:
  13. * linéaire,
  14. * petits déplacements,
  15. * axisymétrie,
  16. * éléments QUA4,TRI3 et COQ2,
  17. * conditions aux limites de déplacements nuls en 1 point.
  18. *
  19. *
  20. * maillage d'une plaque cylindrique
  21. * en beton avec ferraillage
  22. *
  23. * Diametre 20 m Epaisseur 1m
  24. * fer tous les metres
  25. *
  26. * axe de symétrie
  27. * \
  28. * \ Force sur r=1m
  29. * \ !!!!
  30. * ----------------------------
  31. * uz | beton |
  32. * |_ ur | + fer |\
  33. * O ---------------------------- \
  34. * blocage suivant z
  35. *
  36. graph = faux;
  37. opti echo 0;
  38.  
  39. *
  40. * MAILLAGE
  41. *
  42.  
  43. opti dime 2 mode axis ;
  44.  
  45. ep1 = 2. ;
  46. ray1 = 20. ;
  47. int1 = 2. ;
  48.  
  49. * parametre du nombre d'element sur la verticale
  50. n1 = 6 ;
  51. * paramètre du nombre d'élément sur l'horizontale
  52. n2 = 1;
  53.  
  54. pi1 = 0. 0 ;
  55. ps1 = 0. ep1 ;
  56.  
  57. opti elem seg2 ;
  58. lv1 = d pi1 n1 ps1 ;
  59.  
  60.  
  61. nfer = ( enti ray1 ) / ( enti int1 ) ;
  62. tabmail = table maillage ;
  63. tabmail . 1 = table ;
  64. tabmail . 1 . 'LVERT' = lv1 ;
  65.  
  66.  
  67. ln = lect 6 4 3 8 * 2 20 * 1 ;
  68.  
  69.  
  70. opti elem qua4 ;
  71. i = 1 ;
  72.  
  73. repeter bou1 nfer ;
  74.  
  75. ni = extr ln i ;
  76. tabmail . i . 'SU' = (tabmail . i . 'LVERT') trans
  77. ( ni * n2 ) ( int1 0. ) ;
  78. tabmail . i . 'LSUP' = cote 2 (tabmail . i . 'SU') ;
  79. tabmail . i . 'LINF' = cote 4 (tabmail . i . 'SU') ;
  80. i = i + 1;
  81. tabmail . i = table ;
  82. tabmail . i . 'LVERT' = inve (cote 3 (tabmail . (i - 1) . 'SU')) ;
  83.  
  84. si ( i ega 4 ) ;
  85. n1 = n1 / 2 ;
  86. d4 = int1 / ni / n2 ;
  87. pi4 = (2 * int1 + d4) 0. ;
  88. ps4 = (2 * int1 + d4) ep1 ;
  89. li4 = d pi4 n1 ps4 ;
  90. su4a = coutu (tabmail . (i - 1) . 'LVERT') li4 ;
  91. su4b = li4 trans ( ni * n2 - 1) ( (d4 * ( ni * n2 - 1)) 0.) ;
  92. tabmail . (i - 1) . 'SU' = su4a et su4b ;
  93. tabmail . (i - 1) . 'LSUP' = (cote 2 su4a) et (cote 2 su4b) ;
  94. tabmail . (i - 1) . 'LINF' = (cote 4 su4a) et (cote 4 su4b) ;
  95. tabmail . i . 'LVERT' = inve (cote 3 su4b ) ;
  96. finsi ;
  97.  
  98. si ( i ega 2 ) ;
  99. total1 = (tabmail . (i - 1 ) . 'SU') ;
  100. totsup1 = (tabmail . (i - 1 ) . LSUP ) ;
  101. totinf1 = (tabmail . (i - 1 ) . LINF ) ;
  102. totvert1 = (tabmail . i . LVERT ) ;
  103. sinon ;
  104. total2 = total1 et (tabmail . (i - 1) . 'SU') ;
  105. * detr total1 ;
  106. total1 = total2 ;
  107. totsup2 = totsup1 et (tabmail . (i - 1) . 'LSUP') ;
  108. * detr totsup1 ;
  109. totsup1 = totsup2 ;
  110. totinf2 = totinf1 et (tabmail . (i - 1) . 'LINF') ;
  111. * detr totinf1 ;
  112. totinf1 = totinf2 ;
  113. totvert2 = totvert1 et (tabmail . i . LVERT ) ;
  114. * detr totvert1 ;
  115. totvert1 = totvert2 ;
  116. finsi ;
  117. fin bou1 ;
  118.  
  119.  
  120. mailpres = ( elem ( tabmail . 1 . lsup ) 1 )
  121. et ( elem ( tabmail . 1 . lsup ) 2 )
  122. et ( elem ( tabmail . 1 . lsup ) 3 ) ;
  123.  
  124.  
  125. totvert1 = coul totvert1 vert ;
  126. totsup1 = coul totsup1 bleu ;
  127. totinf1 = coul totinf1 bleu ;
  128. total1 = coul total1 jaune ;
  129.  
  130. totfer = totvert1 et totsup1 et totinf1 ;
  131. *trac totfer titr 'Ferraillage' ecla ;
  132.  
  133. *trac ( total1 et totfer ) titr 'Ferraillage et Beton' ecla ;
  134.  
  135. opti echo 0 ;
  136. nelm = (nbelem total1) ;
  137. nnom = (nbno total1) ;
  138. nelc = ( nbelem totfer ) ;
  139. nnoc = (nbno totfer) ;
  140. nnddl = nnom * 2 + nnoc ;
  141.  
  142. sauter 1 ligne ;
  143. mess 'Nbre d element massifs' nelm 'soit' nnom;
  144. mess 'Nbre d element coque ' nelc 'soit' nnoc ;
  145. mess 'Total' ( nelm + nelc ) 'Elements' nnddl 'ddl' ;
  146. sauter 1 ligne ;
  147. opti echo 1 ;
  148.  
  149.  
  150. * determnation des distances minimales L
  151. * pour le calcul du pas de temps
  152.  
  153. *
  154. * MODELE ET MATERIAU
  155. *
  156.  
  157.  
  158. mobeto = mode total1 mecanique elastique ;
  159. mabeto = mate mobeto YOUN 40.d9 NU 0.2 RHO 2.4d3;
  160. mofer = mode totfer mecanique elastique coq2 ;
  161. mafer = mate mofer RHO 7.8d3 YOUN 210.d9 NU 0.3 ;
  162. carfer = cara mofer EPAI 12.d-3 ;
  163.  
  164. *
  165. * CONDITONS AUX LIMITES
  166. *
  167.  
  168. pext1 = total1 poin proc ( ray1 0. ) ;
  169. cl1 = bloq UZ pext1 ;
  170.  
  171.  
  172. *
  173. * CHARGEMENT SPATIAL
  174. *
  175. fpres = (PRESS COQU ( redu mofer mailpres) 1. NORM) / -3.14158 ;
  176. fpres = 'EXCO' fpres ( 'MOTS' 'FR' 'FZ' ) ;
  177. vpres = vect fpres FR FZ rouge 2.;
  178. titr 'Distribution spatiale du chargement (forces nodales equi.)' ;
  179. *trac vpres total1 ;
  180.  
  181. *
  182. * ANALYSE MODALE
  183. *
  184.  
  185.  
  186. rig1 = rigi ( mobeto et mofer ) (mabeto et mafer et carfer ) ;
  187.  
  188. mas1 = masse ( mobeto et mofer ) (mabeto et mafer et carfer ) ;
  189.  
  190. temps zero ;
  191. tbas1 = vibr 'INTERVALLE' 0. 300. basse 70 ( rig1 et cl1 ) mas1;
  192.  
  193. lfreq = prog ;
  194. i = 1 ;
  195. repeter bou1 ( (dime tbas1 . modes ) - 2);
  196. tabi = tbas1 . modes . i ;
  197. lfreq = lfreq et ( prog tabi .frequence ) ;
  198. * titr 'Frequence ' tabi .frequence ;
  199. * trac ( defo total1 tabi . deformee_modale ) ;
  200. i = i + 1 ;
  201. fin bou1 ;
  202.  
  203.  
  204. *
  205. * evolution temporelle force d'impact
  206. *
  207. evolp = evol manu
  208. ((prog 0. 10. 20. 30. 40. 50. 60. 70. 1000.)*1.d-3)
  209. ((prog 0. 55. 55. 110. 110. 55. 55. 0. 0.)*1.d6 / 3.) ;
  210.  
  211. *
  212. * réponse élastique de la structrue avec dyne
  213. *
  214.  
  215. tabchar = table chargement ;
  216. cha1 = char MECA evolp fpres ;
  217.  
  218. chaba1 = PJBA cha1 tbas1 ;
  219. tabchar . BASE_A = chaba1 ;
  220.  
  221. sol1 = 'PSMO' (rig1 et cl1 ) (tbas1 . 'MODES') fpres ;
  222. tbas1 . 'PSEUDO_MODES' = sol1 ;
  223.  
  224. fr1 = extr lfreq (dime lfreq ) ;
  225. w1 = 2 * pi * fr1 ;
  226. dt = 2 ** .5 * 2 / w1 / 10 ;
  227. npas = 'ENTI' ( 21.d-3 / dt) ; nins = 1 ;
  228. 'MESS' 'Nombre de pas : ' npas ;
  229. tbas1 = reac cl1 tbas1 ;
  230.  
  231. tabres = dyne de_vogelaere tbas1 tabchar npas dt nins ;
  232. TABTPS = TEMP 'NOEC';
  233. tdyn = TABTPS.'TEMPS_CPU'.'INITIAL' ;
  234.  
  235. evx = 'EVOL' 'RECO' tabres tbas1 cha1 'REAC' pext1 FZ ;
  236. evy = 'EVOL' 'RECO' tabres tbas1 cha1 DEPL pi1 UZ ;
  237.  
  238. *
  239. * calcul à l'aide de la procédure explicite
  240. *
  241.  
  242. * pas de temps minimum
  243. celbet = ( 37.d9 / 2.4d3 ) ** 0.5 ;
  244. celfer = ( 210.d9 / 7.8d3 ) ** 0.5 ;
  245.  
  246. lmin = int1 / 6. / n1 ;
  247. dtmin = lmin / ( maxi ( prog celfer celbet ) ) ;
  248.  
  249.  
  250. tab_in = TABLE ;
  251. tab_in .'CHARGEMENT' = cha1 ;
  252. tab_in .'LIAISONS' = cl1 ;
  253. tab_in .'MODELE' = mobeto et mofer;
  254. tab_in .'CARACTERISTIQUES' = mafer et mabeto et carfer ;
  255. tab_in .'PAS_TEMPS' = dtmin ;
  256. tab_in .'NPASMAX' = enti ( 20.87d-3 / dtmin ) ;
  257. tab_in .'TEMPS_SORTIE' = prog 0. PAS 2.5d-4 20.87d-3 ;
  258.  
  259. temps zero ;
  260. DREXUS tab_in ;
  261. TABTPS = TEMP 'NOEC';
  262. texpli = TABTPS.'TEMPS_CPU'.'INITIAL' ;
  263.  
  264. *
  265. * FORCE DE REACTION DU CADRE
  266. *
  267.  
  268. i = 1 ;
  269. lt = prog 0.;
  270. lz = prog 0. ;
  271. lzpi1 = prog 0. ;
  272.  
  273. repeter bou1 ( (dime tab_in . deplacements ) - 1) ;
  274.  
  275. lt = lt et ( prog tab_in . temps . i ) ;
  276. fex1 = tab_in . forces_exterieures . i;
  277. dep1 = tab_in . deplacements . i;
  278. fz = extr fex1 pext1 'FZ' ;
  279. lz = lz et ( prog fz ) ;
  280. lzpi1 = lzpi1 et ( prog ( extr dep1 pi1 UZ ) );
  281. i = i + 1 ;
  282.  
  283. fin bou1 ;
  284.  
  285. evfz = evol bleu manu 'Temps' lt 'Fz' lz ;
  286. evx = coul evx turq ;
  287.  
  288. tabgraf = table ;
  289. tabgraf . 1 = 'MARQ CROI ' ;
  290. tabgraf . 2 = 'MARQ PLUS ' ;
  291. tabgraf.'TITRE' = table ;
  292. tabgraf.'TITRE' . 1 = mot 'explicit' ;
  293. tabgraf.'TITRE' . 2 = mot 'base_modale' ;
  294. si graph;
  295. dess ( evfz et evx ) tabgraf lege xbor 0. 0.024 ;
  296. finsi;
  297. *
  298. * DEPLACEMENT VERTICAL AU DROIT DE LA FORCE
  299. *
  300.  
  301. evuz = evol bleu manu 'TEMPS' lt 'UZ' lzpi1 ;
  302. evy = coul evy turq ;
  303. tabgraf . 2 = 'MARQ PLUS ' ;
  304. tabgraf.'TITRE' . 2 = mot 'base_modale' ;
  305. si graph;
  306. dess ( evuz et evy ) tabgraf lege xbor 0. 0.024 ;
  307. finsi;
  308. *
  309. * TEST DE BON FONCTIONNEMENT
  310. *
  311.  
  312. lz2 = ipol lt ( extr evx 'ABSC' ) (extr evx 'ORDO' ) ;
  313. err1 = (maxi abs ( lz2 - lz )) / ( maxi abs lz2 );
  314. lerr1 = err1 >eg 0.15 ;
  315.  
  316. luz2 = ipol lt ( extr evy 'ABSC' ) (extr evy 'ORDO' ) ;
  317. err2 = (maxi abs ( lzpi1 - luz2 )) / ( maxi abs luz2 ) ;
  318. lerr2 = err2 >eg 0.05 ;
  319.  
  320. mess 'Erreur sur la force ' (err1 * 100. ) '%' ;
  321. mess 'Erreur sur le deplacement ' (err2 * 100. ) '%' ;
  322.  
  323. si (tdyn <eg 0) ;
  324. mess 'Rapport Tps Calcul EXPLICIT/DYNE =' texpli '/' tdyn ;
  325. sinon ;
  326. mess 'Rapport Tps Calcul EXPLICIT/DYNE =' (1. * texpli /tdyn) ;
  327. finsi ;
  328.  
  329. si (ou lerr2 lerr1) ;
  330. mess 'Erreur dans le cas test beton_elas' ;
  331. erreur 5 ;
  332. finsi ;
  333.  
  334. fin;
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  

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