Télécharger psury.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : psury.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *****************************************************
  5. * *
  6. * TEST DE VALIDATION DE LA LOI *
  7. * D'ENDOMMAGEMENT TRIAXIAL P/Y *
  8. * *
  9. * TEST: *
  10. * UN BARREAU EST CHARGE EN TRACTION *
  11. * LE CHARGEMENT EST DES DEPLACEMENTS IMPOSES *
  12. * CALCUL EN MASSIF 3D *
  13. * *
  14. * MAILLAGE: *
  15. * UN BARREAU DE SECTION CARREE DE .5 M SUR .01 M *
  16. * 50 ELEMENTS *
  17. * *
  18. *****************************************************
  19. opti echo 0 dime 3 elem cub8 ;
  20. *
  21. *
  22. * Maillage
  23. *
  24. l1 = .5 ;
  25. l2 = .01 ;
  26. l3 = .01 ;
  27. n1 = 50 ;
  28. n2 = 1 ;
  29. n3 = 1 ;
  30. p1 = 0. 0. 0. ;
  31. p2 = l1 0. 0. ;
  32. p3 = l1 l2 0. ;
  33. p4 = 0. l2 0. ;
  34. p5 = 0. 0. l3 ;
  35. p6 = l1 0. l3 ;
  36. p7 = l1 l2 l3 ;
  37. p8 = 0. l2 l3 ;
  38. d1 = d p1 n3 p5 ;
  39. d2 = d p5 n2 p8 ;
  40. d3 = d p8 n3 p4 ;
  41. d4 = d p4 n2 p1 ;
  42. sur1 = 'DALL' d1 d2 d3 d4 ;
  43. d5 = d p2 n3 p6 ;
  44. d6 = d p6 n2 p7 ;
  45. d7 = d p7 n3 p3 ;
  46. d8 = d p3 n2 p2 ;
  47. sur2 = 'DALL' d5 d6 d7 d8 ;
  48. vol1 = sur1 'VOLU' n1 sur2 ;
  49. *
  50. * Deplacement maximal
  51. *
  52. depmax = .1 ;
  53. *
  54. * Courbe d'ecrouissage
  55. *
  56. beta0 = 125. ;
  57. sig0 = 410.E6 ;
  58. xm = .1 ;
  59. youn0 = 2.1E11 ;
  60. epsp0 = 'PROG' 0. ;
  61. deb0 = 'PROG' 0. ;
  62. epsmax0 = depmax / l1 ;
  63. pas0 = epsmax0 / 50 ;
  64. epsp1 = 'PROG' 0. 'PAS' pas0 epsmax0 ;
  65. dim00 = 'DIME' epsp1 ;
  66. un = 'PROG' dim00 '*' 1. ;
  67. Y0 = sig0 ;
  68. epsp2 = beta0 * epsp1 ;
  69. epsp3 = epsp2 + un ;
  70. epsp31 = log epsp3 ;
  71. epsp32 = epsp31 * xm ;
  72. epsp4 = exp epsp32 ;
  73. Y1 = Y0 * epsp4 ;
  74. *
  75. epsp1 = epsp0 'ET' epsp1 ;
  76. Y1 = deb0 'ET' Y1 ;
  77. epsp2 = epsp1 + ( Y1 / youn0 ) ;
  78. *
  79. * Courbe d'evolution de l'endommagement
  80. *
  81. n10 = 5. ;
  82. alp0 = 'PROG' 0. 'PAS' .01 1. ;
  83. *dd10 = 'SIN' ( 90. * alp0 ) ;
  84. dd10 = ( alp0 ) ** ( 1. / n10 ) ;
  85. evol0 = 'EVOL' 'MANU' 'defo' alp0 'sigm' dd10 ;
  86. *
  87. * Modele de calcul
  88. *
  89. trac0 = 'EVOL' 'MANU' 'defo' epsp2 'sigm' Y1 ;
  90. endo0 = 'EVOL' 'MANU' 'defo' ( 'PROG' .05 .1 .25 .5 )
  91. 'sigm' ( 'PROG' .6 .3 .15 .1 ) ;
  92. mod0 = 'MODE' vol1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
  93. 'PLASTIQUE_ENDOM' 'PSURY' ;
  94. mat0 = 'MATE' mod0 'YOUN' youn0 'NU' 0.3 'RHO' 7800.
  95. 'TRAC' trac0 'EVOL' endo0 'COMP' evol0 ;
  96. *
  97. * Conditions aux limites
  98. *
  99. cl1 = 'BLOQ' sur1 'UX' ;
  100. cl2 = 'BLOQ' sur2 'UX' ;
  101. cl3 = 'BLOQ' p1 'UX' 'UY' 'UZ' ;
  102. cl4 = 'BLOQ' p5 'UX' 'UY' ;
  103. cl5 = 'BLOQ' p4 'UX' 'UZ' ;
  104. cl0 = cl1 'ET' cl2 'ET' cl3 'ET' cl4 'ET' cl5 ;
  105. *
  106. * Chargement
  107. *
  108. dep1 = 'DEPI' cl2 depmax ;
  109. ev0 = 'EVOL' 'MANU' temps ( 'PROG' 0. 10. ) y ( 'PROG' 0. 1. ) ;
  110. cha0 = 'CHAR' 'DIMP' dep1 ev0 ;
  111. *
  112. * Temps du calcul
  113. *
  114. dt0 = 1. ;
  115. tfin0 = 10. ;
  116. *
  117. *
  118. * Resolution par PASAPAS
  119. *---------------------------------------
  120. *
  121. ta1 = 'TABLE' ;
  122. ta1 .'MODELE' = mod0 ;
  123. ta1 .'CARACTERISTIQUES' = mat0 ;
  124. ta1 .'BLOCAGES_MECANIQUES' = cl0 ;
  125. ta1 .'CHARGEMENT' = cha0 ;
  126. ta1 .'TEMPS_CALCULES' = 'PROG' 0. 'PAS' dt0 tfin0 ;
  127. ta1 .'HYPOTHESE_DEFORMATIONS'='LINEAIRE' ;
  128. *
  129. TMASAU=table;
  130. ta1 . 'MES_SAUVEGARDES'=TMASAU;
  131. TMASAU .'DEFTO'=VRAI;
  132. TMASAU .'DEFIN'=VRAI;
  133. PASAPAS ta1 ;
  134. *
  135. *
  136. * Post-traitement
  137. *-----------------------------------------
  138. *
  139. err = faux ;
  140. coeff = 1. ;
  141. rho_thf = 0. ;
  142. epsp1 = 'PROG' 0. ;
  143. epst_x1 = 'PROG' 0. ;
  144. def_1 = 'PROG' 0. ;
  145. sig1 = 'PROG' 0. ;
  146. sig_x1 = 'PROG' 0. ;
  147. eps_th1 = 'PROG' 0. ;
  148. con_th1 = 'PROG' 0. ;
  149. err_e1 = 'PROG' 0. ;
  150. err_s1 = 'PROG' 0. ;
  151. err_g1 = 'PROG' 0. ;
  152. g1 = 'PROG' 1. ;
  153. g_th1 = 'PROG' 1. ;
  154. eps_th0 = 0. ;
  155. dim0 = 'DIME' ta1 .'TEMPS' - 1 ;
  156. mod0 = ta1 .'MODELE' ;
  157. 'REPETER' bloc1 dim0 ;
  158. i1 = &bloc1 ;
  159. *
  160. mat0 = ta1 .'CARACTERISTIQUES' ;
  161. youn0 = 'MAXI' ( 'EXCO' mat0 'YOUN' ) ;
  162. rho0 = 'MAXI' ( 'EXCO' mat0 'RHO' ) ;
  163. depl0 = ta1 .'DEPLACEMENTS'.i1 ;
  164. sigm0 = ta1 .'CONTRAINTES'.i1 ;
  165. depeq0 = ta1 .'VARIABLES_INTERNES'.i1 ;
  166. def0 = ta1 .'DEFORMATIONS_INELASTIQUES'.i1 ;
  167. eps0 = 'EPSI' mod0 depl0 'LINE' ;
  168. *
  169. def_0 = 'MAXI' ( 'EXCO' def0 'EIXX' 'SCAL' ) ;
  170. g0 = 'MAXI' ( 'EXCO' depeq0 'VHWG' 'SCAL' ) ;
  171. epsp0 = 'MAXI' ( 'EXCO' depeq0 'EPSE' 'SCAL' ) ;
  172. rho1 = 'MAXI' ( 'EXCO' depeq0 'VHHO' 'SCAL' ) ;
  173. rho_f = 'MAXI' ( 'EXCO' depeq0 'VHOF' 'SCAL' ) ;
  174. sig_0 = 'MAXI' ( 'VMIS' mod0 sigm0 ) ;
  175. sig_x0 = 'MAXI' ( 'EXCO' sigm0 'SMXX' 'SCAL' ) ;
  176. epst_x0 = 'MAXI' ( 'EXCO' eps0 'EPXX' 'SCAL' ) ;
  177. epst_y0 = 'MAXI' ( 'EXCO' eps0 'EPYY' 'SCAL' ) ;
  178. epst_z0 = 'MAXI' ( 'EXCO' eps0 'EPZZ' 'SCAL' ) ;
  179. tr_eps0 = epst_x0 + epst_y0 + epst_z0 ;
  180. *
  181. *
  182. * Endommagement theorique
  183. *--------------------------------------
  184. *
  185. * Calcul de la densite rho
  186. *
  187. rho = rho0 / ( 1. + tr_eps0 ) ;
  188. *
  189. * deformation plastique de debut d'endommagement
  190. *
  191. absc0 = 'EXTR' endo0 'ABSC' ;
  192. ordo0 = 'EXTR' endo0 'ORDO' ;
  193. 'REPETER' bloc00 ( 'DIME' absc0 ) ;
  194. i00 = &bloc00 ;
  195. ab1 = 'EXTR' absc0 i00 ;
  196. or1 = 'EXTR' ordo0 i00 ;
  197. 'SI' ( i00 'EGA' ( 'DIME' absc0 ) ) ;
  198. eps1 = ab1 ;
  199. 'SINON' ;
  200. ab2 = 'EXTR' absc0 ( i00 + 1 ) ;
  201. or2 = 'EXTR' ordo0 ( i00 + 1 ) ;
  202. 'SI' ( ( or1 '>EG' ( 1. / 3. ) ) 'ET'
  203. ( or2 '<' ( 1. / 3. ) ) ) ;
  204. eps1 = ( ab2 - ab1 ) / ( or2 - or1 ) ;
  205. eps1 = eps1 * ( ( 1. / 3. ) - or1 ) ;
  206. eps1 = eps1 + ab1 ;
  207. 'QUITTER' bloc00 ;
  208. 'FINSI' ;
  209. 'FINSI' ;
  210. 'FIN' bloc00 ;
  211. *
  212. *
  213. * Courbe theorique
  214. *--------------------------------------
  215. *
  216. m0 = xm ;
  217. 'SI' ( ( youn0 * epst_x0 ) '>EG' sig0 ) ;
  218. x0 = 0. ;
  219. x2 = x0 ;
  220. y2 = ( sig0 * ( ( 1 + ( beta0 * x2 ) ) ** m0 ) ) ;
  221. y2 = y2 + ( youn0 * x2 ) ;
  222. y2 = y2 - ( youn0 * epst_x0 ) ;
  223. *
  224. x1 = epst_x0 ;
  225. x2 = x1 ;
  226. y2 = ( sig0 * ( ( 1 + ( beta0 * x2 ) ) ** m0 ) ) ;
  227. y2 = y2 + ( youn0 * x2 ) ;
  228. y2 = y2 - ( youn0 * epst_x0 ) ;
  229. *
  230. 'REPETER' bloc2 ;
  231. *
  232. x2 = ( x0 + x1 ) / 2. ;
  233. y2 = ( sig0 * ( ( 1 + ( beta0 * x2 ) ) ** m0 ) ) ;
  234. y2 = y2 + ( youn0 * x2 ) ;
  235. y2 = y2 - ( youn0 * epst_x0 ) ;
  236. *
  237. 'SI' ( y2 > 1.E-4 ) ;
  238. x1 = x2 ;
  239. 'SINON' ;
  240. 'SI' ( y2 < -1.E-4 ) ;
  241. x0 = x2 ;
  242. 'SINON' ;
  243. eps_th0 = x2 ;
  244. con_th0 = youn0 * ( epst_x0 - x2 ) ;
  245. 'QUITTER' bloc2 ;
  246. 'FINSI' ;
  247. 'FINSI' ;
  248. *
  249. 'FIN' bloc2 ;
  250. *
  251. 'SINON' ;
  252. eps_th0 = 0. ;
  253. con_th0 = youn0 * epst_x0 ;
  254. 'FINSI' ;
  255. *
  256. 'SI' ( eps_th0 '>EG' eps1 ) ;
  257. *
  258. * Calcul de rho_thf ( debut d'endommagement)
  259. *
  260. 'SI' ( rho_thf '&lt;EG' 0. ) ;
  261. tr_f = tr_eps0 ;
  262. sig_f = ( 1. + ( beta0 * eps1 ) ) ** ( m0 ) ;
  263. sig_f = sig0 * sig_f ;
  264. tr_f = sig_f / ( 3. * 1.75E11 ) ;
  265. rho_thf = rho0 / ( 1. + tr_f ) ;
  266. err_rho = ( 'ABS' ( rho_f - rho_thf ) ) / rho_thf ;
  267. err_rho = err_rho * 100. ;
  268. 'SI' ( err_rho '>' 1.E-3 ) ;
  269. err = vrai ;
  270. 'FINSI' ;
  271. 'FINSI' ;
  272. *
  273. alpha = 1. - ( rho / rho_f ) ;
  274. absc0 = 'EXTR' evol0 'ABSC' ;
  275. ordo0 = 'EXTR' evol0 'ORDO' ;
  276. 'REPETER' bloc01 ( 'DIME' absc0 ) ;
  277. i01 = &bloc01 ;
  278. ab1 = 'EXTR' absc0 i01 ;
  279. or1 = 'EXTR' ordo0 i01 ;
  280. 'SI' ( i01 'EGA' ( 'DIME' absc0 ) ) ;
  281. eps1 = ab1 ;
  282. 'SINON' ;
  283. ab2 = 'EXTR' absc0 ( i01 + 1 ) ;
  284. or2 = 'EXTR' ordo0 ( i01 + 1 ) ;
  285. 'SI' ( ( alpha '>EG' or1 ) 'ET'
  286. ( alpha '<' or2 ) ) ;
  287. D_end0 = ( or2 - or1 ) / ( ab2 - ab1 ) ;
  288. D_end0 = D_end0 * ( alpha - ab1 ) ;
  289. D_end0 = D_end0 + or1 ;
  290. 'QUITTER' bloc01 ;
  291. 'FINSI' ;
  292. 'FINSI' ;
  293. 'FIN' bloc01 ;
  294. *
  295. g_th0 = 1. - D_end0 ;
  296. 'SINON' ;
  297. g_th0 = 1. ;
  298. 'FINSI' ;
  299. *
  300. * Calcul des contraintes endommagées
  301. *
  302. con_th0 = con_th0 * g_th0 ;
  303. *
  304. * 'MESS' ' Fin du calcul de restitution pour le pas' ta1 .'TEMPS'.i1 ;
  305. max0 = ( 'ABS' ( con_th0 - sig_x0 ) + con_th0 + sig_x0 ) ;
  306. max0 = 0.5 * max0 ;
  307. max1 = ( 'ABS' ( eps_th0 - def_0 ) + eps_th0 + def_0 ) ;
  308. max1 = 0.5 * max1 ;
  309. max2 = ( 'ABS' ( g_th0 - g0 ) + g_th0 + g0 ) ;
  310. max2 = 0.5 * max2 ;
  311. 'SI' ( ( 'ABS' max0 ) > 0. ) ;
  312. err_s0 = ( 'ABS' ( con_th0 - sig_x0 ) ) / max0 ;
  313. err_s0 = err_s0 * 100. ;
  314. 'SINON' ;
  315. err_s0 = 0. ;
  316. 'FINSI' ;
  317. 'SI' ( ( 'ABS' max1 ) > 0. ) ;
  318. err_e0 = ( 'ABS' ( eps_th0 - def_0 ) ) / max1 ;
  319. err_e0 = err_e0 * 100. ;
  320. 'SINON' ;
  321. err_e0 = 0. ;
  322. 'FINSI' ;
  323. 'SI' ( ( 'ABS' max2 ) > 0. ) ;
  324. err_g0 = ( 'ABS' ( g_th0 - g0 ) ) / max2 ;
  325. err_g0 = err_g0 * 100. ;
  326. 'SINON' ;
  327. err_g0 = 0. ;
  328. 'FINSI' ;
  329. 'SI' ( ( err_s0 '>' .5 ) 'OU' ( err_e0 '>' .5 ) 'OU'
  330. ( err_g0 '>' 1.E-2 ) ) ;
  331. err = vrai ;
  332. 'FINSI' ;
  333. *
  334. *
  335. 'FIN' bloc1 ;
  336. *
  337. 'SI' ( err ) ;
  338. 'ERRE' 5 ;
  339. 'SINON' ;
  340. 'ERRE' 0 ;
  341. 'FINSI' ;
  342. *
  343. *
  344. 'FIN' ;
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  

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