Télécharger preston2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : preston2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. complet = faux;
  5. *
  6. *************************************************
  7. * pour calcul complet mettre complet à : vrai;
  8. *************************************************
  9. **************************************************
  10. * *
  11. * TEST DE VALIDATION D'UNE LOI DE COMPORTEMENT *
  12. * -------------------------------------------- *
  13. * DE MATERIAU *
  14. * ----------- *
  15. * *
  16. * LOI DE COMPORTEMENT DE: *
  17. * PRESTON TONKS WALLACE *
  18. * CAS NON CUBIQUE CENTRE ( NON C.C. ) *
  19. * *
  20. * MAILLAGE: *
  21. * UNE BARRE DE SECTION CARREE *
  22. * LONGUEUR L=.5 M *
  23. * LARGEUR l=.001 M *
  24. * *
  25. * CHARGEMENT: *
  26. * ESSAI DE TRACTION *
  27. * DEPLACEMENTS IMPOSES *
  28. * *
  29. **************************************************
  30. *
  31. opti echo 0 dime 3 elem cub8 ;
  32. *
  33. *
  34. * Maillage
  35. *
  36. l1 = .5 ;
  37. l2 = .001 ;
  38. l3 = .001 ;
  39. si complet;
  40. n1 = 50 ;
  41. sinon;
  42. n1=5;
  43. finsi;
  44. n2 = 1 ;
  45. n3 = 1 ;
  46. p1 = 0. 0. 0. ;
  47. p2 = l1 0. 0. ;
  48. p3 = l1 l2 0. ;
  49. p4 = 0. l2 0. ;
  50. p5 = 0. 0. l3 ;
  51. p6 = l1 0. l3 ;
  52. p7 = l1 l2 l3 ;
  53. p8 = 0. l2 l3 ;
  54. d1 = d p1 n3 p5 ;
  55. d2 = d p5 n2 p8 ;
  56. d3 = d p8 n3 p4 ;
  57. d4 = d p4 n2 p1 ;
  58. sur1 = 'DALL' d1 d2 d3 d4 ;
  59. d5 = d p2 n3 p6 ;
  60. d6 = d p6 n2 p7 ;
  61. d7 = d p7 n3 p3 ;
  62. d8 = d p3 n2 p2 ;
  63. sur2 = 'DALL' d5 d6 d7 d8 ;
  64. vol1 = sur1 'VOLU' n1 sur2 ;
  65. *
  66. * Modele de calcul
  67. *
  68. mod0 = 'MODE' vol1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
  69. 'PLASTIQUE' 'PRESTON' ;
  70. mat0 = 'MATE' mod0 'YOUN' 2.1E11 'NU' 0.3
  71. 'RHO' 7.8E3 'TAU' 0.025
  72. 'P' 2. 'S0' 0.0085 'SINF' 0.00055
  73. 'K' 0. 'G' 0.00001
  74. 'Y0' 0.0001 'YINF' 0.0001 'Y1' 0.094 'Y2' 0.575
  75. 'BETA' 0.25 'GP' 3.00 'GT' 0. 'MU' 1.97
  76. 'TMO' 1220. ;
  77. *
  78. * Conditions aux limites
  79. *
  80. cl1 = 'BLOQ' sur1 'UX' ;
  81. cl2 = 'BLOQ' sur2 'UX' ;
  82. cl3 = 'BLOQ' p1 'UX' 'UY' 'UZ' ;
  83. cl4 = 'BLOQ' p5 'UX' 'UY' ;
  84. cl0 = cl1 'ET' cl2 'ET' cl3 'ET' cl4 ;
  85. *
  86. * Chargement
  87. *
  88. dep1 = 'DEPI' cl2 .1 ;
  89. ev0 = 'EVOL' 'MANU' temps ( 'PROG' 0. 5.E-4 ) y ( 'PROG' 0. 1. ) ;
  90. cha0 = 'CHAR' 'DIMP' dep1 ev0 ;
  91. *
  92. * Temps du calcul
  93. *
  94. dt0 = 1.E-5 ;
  95. si complet;
  96. tfin0 = 5.E-4 ;
  97. sinon;
  98. tfin0 = 5.e-5;
  99. finsi;
  100. *
  101. *
  102. * Resolution par PASAPAS
  103. *---------------------------------------
  104. *
  105. ta1 = 'TABLE' ;
  106. ta1 .'MODELE' = mod0 ;
  107. ta1 .'CARACTERISTIQUES' = mat0 ;
  108. ta1 .'BLOCAGES_MECANIQUES' = cl0 ;
  109. ta1 .'CHARGEMENT' = cha0 ;
  110. *ta1 .'PRECISION' = 1.E-8 ;
  111. ta1 .'TEMPS_CALCULES' = 'PROG' 0. 'PAS' dt0 tfin0 ;
  112. ta1 .'HYPOTHESE_DEFORMATIONS'='LINEAIRE' ;
  113. *
  114. TMASAU=table;
  115. ta1 . 'MES_SAUVEGARDES'=TMASAU;
  116. TMASAU .'DEFTO'=VRAI;
  117. TMASAU .'DEFIN'=VRAI;
  118. PASAPAS ta1 ;
  119. *
  120. *
  121. * Post-traitement
  122. *-----------------------------------------
  123. *
  124. sig_3dy = 'PROG' 0. ;
  125. sig_3dz = 'PROG' 0. ;
  126. sigx1 = 'PROG' 0. ;
  127. sigx2 = 'PROG' 0. ;
  128. depx1 = 'PROG' 0. ;
  129. depx2 = 'PROG' 0. ;
  130. sig_1 = 'PROG' 0. ;
  131. def_1 = 'PROG' 0. ;
  132. epsp1 = 'PROG' 0. ;
  133. err1 = 'PROG' 0. ;
  134. err2 = 'PROG' 0. ;
  135. sig1 = 'PROG' 0. ;
  136. temp1 = 'PROG' 0. ;
  137. epst1 = 'PROG' 0. ;
  138. dim0 = 'DIME' ta1 .'TEMPS' - 1 ;
  139. mod0 = ta1 .'MODELE' ;
  140. YOUNG0 = 'EXCO' mat0 'YOUN' 'SCAL' ;
  141. YOUNG1 = 'MAXI' YOUNG0 ;
  142. XNU0 = 'EXCO' mat0 'NU' 'SCAL' ;
  143. XNU1 = 'MAXI' XNU0 ;
  144. RHO0 = 'MAXI' ( 'EXCO' mat0 'RHO' 'SCAL' ) ;
  145. TAU0 = 'EXCO' mat0 'TAU' 'SCAL' ;
  146. TAU1 = 'MAXI' TAU0 ;
  147. P1 = 'EXCO' mat0 'P' 'SCAL' ;
  148. P11 = 'MAXI' P1 ;
  149. S0 = 'EXCO' mat0 'S0' 'SCAL' ;
  150. S01 = 'MAXI' S0 ;
  151. SINF0 = 'EXCO' mat0 'SINF' 'SCAL' ;
  152. SINF1 = 'MAXI' SINF0 ;
  153. K0 = 'EXCO' mat0 'K' 'SCAL' ;
  154. K1 = 'MAXI' K0 ;
  155. G0 = 'EXCO' mat0 'G' 'SCAL' ;
  156. G1 = 'MAXI' G0 ;
  157. Y00 = 'EXCO' mat0 'Y0' 'SCAL' ;
  158. Y01 = 'MAXI' Y00 ;
  159. YINF0 = 'EXCO' mat0 'YINF' 'SCAL' ;
  160. YINF1 = 'MAXI' YINF0 ;
  161. Y10 = 'EXCO' mat0 'Y1' 'SCAL' ;
  162. Y11 = 'MAXI' Y10 ;
  163. Y20 = 'EXCO' mat0 'Y2' 'SCAL' ;
  164. Y21 = 'MAXI' Y20 ;
  165. BETA0 = 'EXCO' mat0 'BETA' 'SCAL' ;
  166. BETA1 = 'MAXI' BETA0 ;
  167. GP0 = 'EXTR' ( 'EXCO' mat0 'GP' 'SCAL' ) 'SCAL' 1 1 1 ;
  168. GT0 = 'EXTR' ( 'EXCO' mat0 'GT' 'SCAL' ) 'SCAL' 1 1 1 ;
  169. A1 = 2. * ( 1. + XNU1 ) ;
  170. B1 = A1 / ( 3. * ( 1. - ( 2. * XNU1 ) ) ) ;
  171. 'REPETER' bloc1 dim0 ;
  172. i1 = &bloc1 ;
  173. depl0 = ta1 .'DEPLACEMENTS'.i1 ;
  174. temp0 = ta1 .'TEMPS'.i1 ;
  175. temp1 = temp1 'ET' ( 'PROG' temp0 ) ;
  176. dex1 = 'EXCO' depl0 'UX' 'SCAL' ;
  177. dex0 = 'EXCO' ta1 .'DEPLACEMENTS'.( i1 - 1 ) 'UX' 'SCAL' ;
  178. reac0 = ta1 .'REACTIONS'.i1 ;
  179. reac1 = 'MAXI' ( 'EXCO' reac0 'FX' 'SCAL' ) ;
  180. dep0 = 'MAXI' dex0 ;
  181. dep1 = 'MAXI' dex1 ;
  182. eps1 = 'EPSI' mod0 depl0 'LINE' ;
  183. epsx1 = 'EXCO' eps1 'EPXX' 'SCAL' ;
  184. epsy1 = 'EXCO' eps1 'EPYY' 'SCAL' ;
  185. epsz1 = 'EXCO' eps1 'EPZZ' 'SCAL' ;
  186. treps0 = 'MAXI' ( epsx1 + epsy1 + epsz1 ) ;
  187. epsx10 = 'MAXI' epsx1 ;
  188. sigm0 = ta1 .'CONTRAINTES'.i1 ;
  189. depeq0 = ta1 .'VARIABLES_INTERNES'.i1 ;
  190. def0 = ta1 .'DEFORMATIONS_INELASTIQUES'.i1 ;
  191. t1 = ta1 .'TEMPS'.i1 ;
  192. t0 = ta1 .'TEMPS'.(i1 - 1) ;
  193. dt0 = t1 - t0 ;
  194. dt0 = 0. ;
  195. 'SI' ( ( 'ABS' dt0 ) < 1.E-10 ) ;
  196. deps0 = 0. ;
  197. 'SINON' ;
  198. deps0 = ( dep1 - dep0 ) / ( dt0 * l1 ) ;
  199. 'FINSI' ;
  200. *
  201. sigx0 = 'MAXI' ( 'VMIS' mod0 sigm0 ) ;
  202. sigx00 = 'MINI' ( 'VMIS' mod0 sigm0 ) ;
  203. depx0 = 'MAXI' ( 'EXCO' depeq0 'EPSE' 'SCAL' ) ;
  204. depx00 = 'MINI' ( 'EXCO' depeq0 'EPSE' 'SCAL' ) ;
  205. sig_00 = 'EXCO' sigm0 'SMXX' 'SCAL' ;
  206. sig_0 = 'MAXI' sig_00 ;
  207. eps_el0 = sig_0 / YOUNG1 ;
  208. sig_y = 'MAXI' ( 'EXCO' sigm0 'SMYY' 'SCAL' ) ;
  209. sig_z = 'MAXI' ( 'EXCO' sigm0 'SMZZ' 'SCAL' ) ;
  210. def_00 = 'EXCO' def0 'EIXX' ;
  211. def_0 = 'MAXI' def_00 ;
  212. def1 = 'MAXI' ( 'EXCO' def0 'EIXX' ) ;
  213. def2 = 'MAXI' ( 'EXCO' def0 'EIYY' ) ;
  214. def3 = 'MAXI' ( 'EXCO' def0 'EIZZ' ) ;
  215. def4 = 'MAXI' ( 'EXCO' def0 'GIXY' ) ;
  216. def5 = 'MAXI' ( 'EXCO' def0 'GIXZ' ) ;
  217. def6 = 'MAXI' ( 'EXCO' def0 'GIYZ' ) ;
  218. defp1 = ( def1 * def1 ) + ( def2 * def2 ) + ( def3 * def3 ) ;
  219. defp1 = defp1 - ( def1 * def2 ) - ( def2 * def3 ) -
  220. ( def1 * def3 ) ;
  221. defp2 = ( def4 * def4 ) + ( def5 * def5 ) + ( def6 * def6 ) ;
  222. defp0 = defp1 + ( 3. * defp2 ) ;
  223. defp0 = ( defp0 ** .5 ) * 2. / 3. ;
  224. sigx1 = sigx1 'ET' ( 'PROG' sigx0 ) ;
  225. sigx2 = sigx2 'ET' ( 'PROG' sigx00 ) ;
  226. depx1 = depx1 'ET' ( 'PROG' depx0 ) ;
  227. depx2 = depx2 'ET' ( 'PROG' depx00 ) ;
  228. sig_1 = sig_1 'ET' ( 'PROG' sig_0 ) ;
  229. def_1 = def_1 'ET' ( 'PROG' def_0 ) ;
  230. sig_3dy = sig_3dy 'ET' ( 'PROG' ( sig_y / sig_0 ) ) ;
  231. sig_3dz = sig_3dz 'ET' ( 'PROG' ( sig_y / sig_0 ) ) ;
  232. epst1 = epst1 'ET' ( 'PROG' epsx10 ) ;
  233. *
  234. * Densite RHO1
  235. *
  236. RHO1 = RHO0 / ( 1. + treps0 ) ;
  237. eta = RHO1 / RHO0 ;
  238. *
  239. * Module de cisaillement G00
  240. *
  241. G00 = YOUNG1 / ( 2. * ( 1. + XNU1 ) ) ;
  242. *
  243. * Pulsation de Debye W0
  244. *
  245. W0 = ( G00 / RHO1 ) ** ( .5 ) ;
  246. DTETA0 = ( 4. / 3.1416 ) ** ( .5 ) ;
  247. DTETA0 = DTETA0 * W0 / 6. ;
  248. DTETA0 = deps0 / DTETA0 ;
  249. *
  250. * Contrainte de saturation
  251. *
  252. 'SI' ( ( 'ABS' dt0 ) < 1.E-10 ) ;
  253. YS1 = SINF1 ;
  254. 'SINON' ;
  255. YS1 = 'ERF' ( K1 * ( 'LOG' ( G1 / DTETA0 ) ) ) ;
  256. YS1 = S01 - ( ( S01 - SINF1 ) * YS1 ) ;
  257. 'FINSI' ;
  258. YS2 = S01 * ( ( DTETA0 / G1 ) ** ( BETA1 ) ) ;
  259. YS0 = ( 'ABS' ( YS1 - YS2 ) ) + YS1 + YS2 ;
  260. YS0 = YS0 / 2. ;
  261. *
  262. * Limite d'élasticité
  263. *
  264. 'SI' ( ( 'ABS' dt0 ) < 1.E-10 ) ;
  265. YL1 = YINF1 ;
  266. 'SINON' ;
  267. YL1 = 'ERF' ( K1 * ( 'LOG' ( G1 / DTETA0 ) ) ) ;
  268. YL1 = Y01 - ( ( Y01 - YINF1 ) * YL1 ) ;
  269. 'FINSI' ;
  270. YL2 = Y11 * ( ( DTETA0 / G1 ) ** ( Y21 ) ) ;
  271. YL3 = ( 'ABS' ( YL2 - YS2 ) ) - YL2 - YS2 ;
  272. YL3 = -1. * YL3 / 2. ;
  273. YL0 = ( 'ABS' ( YL1 - YL3 ) ) + YL1 + YL3 ;
  274. YL0 = YL0 / 2. ;
  275. *
  276. 'SI' ( sig_0 '>' ( YL0 * G00 ) ) ;
  277. *
  278. * Materiau C.C.
  279. *
  280. 'SI' ( P11 'EGA' 0. ) ;
  281. *
  282. x0 = 0. ;
  283. x2 = x0 ;
  284. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) / ( 3. * B1 ) ) ;
  285. tr1 = tr1 / 3. ;
  286. y2 = 'EXP' ( -1. * TAU1 * ( x2 - tr1 ) / ( YS0 - YL0 ) ) ;
  287. y2 = YS0 - ( ( YS0 - YL0 ) * y2 ) ;
  288. y2 = y2 * G00 ;
  289. y2 = y2 + ( YOUNG1 * x2 ) ;
  290. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  291. *
  292. x1 = epsx10 ;
  293. x2 = x1 ;
  294. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) / ( 3. * B1 ) ) ;
  295. tr1 = tr1 / 3. ;
  296. y2 = 'EXP' ( -1. * TAU1 * ( x2 - tr1 ) / ( YS0 - YL0 ) ) ;
  297. y2 = YS0 - ( ( YS0 - YL0 ) * y2 ) ;
  298. y2 = y2 * G00 ;
  299. y2 = y2 + ( YOUNG1 * x2 ) ;
  300. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  301. *
  302. 'REPETER' bloc2 ;
  303. x2 = ( x1 + x0 ) / 2. ;
  304. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) / ( 3. * B1 ) ) ;
  305. tr1 = tr1 / 3. ;
  306. y2 = 'EXP' ( -1. * TAU1 * ( x2 - tr1 ) / ( YS0 - YL0 ) ) ;
  307. y2 = YS0 - ( ( YS0 - YL0 ) * y2 ) ;
  308. y2 = y2 * G00 ;
  309. y2 = y2 + ( YOUNG1 * x2 ) ;
  310. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  311. *
  312. 'SI' ( y2 > 1.E-5 ) ;
  313. x1 = x2 ;
  314. 'SINON' ;
  315. 'SI' ( y2 < -1.E-5 ) ;
  316. x0 = x2 ;
  317. 'SINON' ;
  318. epsp0 = x2 ;
  319. epsp1 = epsp1 'ET' ( 'PROG' epsp0 ) ;
  320. den0 = A1 * GP0 * ( epsx10 - x2 ) / 3. ;
  321. den0 = den0 / ( eta ** ( 1. / 3. ) ) ;
  322. sup0 = A1 * ( G00 + GT0 ) * ( epsx10 - x2 ) ;
  323. sig0 = sup0 / ( 1. + den0 ) ;
  324. sig1 = sig1 'ET' ( 'PROG' sig0 ) ;
  325. 'QUITTER' bloc2 ;
  326. 'FINSI' ;
  327. 'FINSI' ;
  328. 'FIN' bloc2 ;
  329. *
  330. 'SINON' ;
  331. *
  332. * autres materiaux
  333. *
  334. x0 = 0. ;
  335. x2 = x0 ;
  336. ex0 = P11 * ( YS0 - YL0 ) / ( S01 - YL0 ) ;
  337. ex1 = ( S01 - YL0 ) * ( ( 'EXP' ex0 ) - 1. ) ;
  338. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) / ( 3. * B1 ) ) ;
  339. tr1 = tr1 / 3. ;
  340. y2 = 'EXP' ( -1. * P11 * TAU1 * ( x2 - tr1 ) / ex1 ) ;
  341. y2 = ( 1. - ( 'EXP' ( -1. * ex0 ) ) ) * y2 ;
  342. y2 = 'LOG' ( 1. - y2 ) ;
  343. y2 = ( ( S01 - YL0 ) * y2 / P11 ) + YS0 ;
  344. y2 = y2 * G00 ;
  345. y2 = y2 + ( YOUNG1 * x2 ) ;
  346. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  347. y0 = y2 ;
  348. *
  349. x1 = epsx10 ;
  350. x2 = x1 ;
  351. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) / ( 3. * B1 ) ) ;
  352. tr1 = tr1 / 3. ;
  353. y2 = 'EXP' ( -1. * P11 * TAU1 * ( x2 - tr1 ) / ex1 ) ;
  354. y2 = ( 1. - ( 'EXP' ( -1. * ex0 ) ) ) * y2 ;
  355. y2 = 'LOG' ( 1. - y2 ) ;
  356. y2 = ( ( S01 - YL0 ) * y2 / P11 ) + YS0 ;
  357. y2 = y2 * G00 ;
  358. y2 = y2 + ( YOUNG1 * x2 ) ;
  359. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  360. y1 = y2 ;
  361. *
  362. 'REPETER' bloc2 ;
  363. x2 = ( x0 + x1 ) / 2. ;
  364. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) / ( 3. * B1 ) ) ;
  365. tr1 = tr1 / 3. ;
  366. y2 = 'EXP' ( -1. * P11 * TAU1 * ( x2 - tr1 ) / ex1 ) ;
  367. y2 = ( 1. - ( 'EXP' ( -1. * ex0 ) ) ) * y2 ;
  368. y2 = 'LOG' ( 1. - y2 ) ;
  369. y2 = ( ( S01 - YL0 ) * y2 / P11 ) + YS0 ;
  370. y2 = y2 * G00 ;
  371. y2 = y2 + ( YOUNG1 * x2 ) ;
  372. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  373. *
  374. 'SI' ( y2 > ( 1.E-8 * ( 'ABS' ( y1 - y0 ) ) ) ) ;
  375. x1 = x2 ;
  376. 'SINON' ;
  377. 'SI' ( y2 < ( -1.E-8 * ( 'ABS' ( y0 - y1 ) ) ) ) ;
  378. x0 = x2 ;
  379. 'SINON' ;
  380. epsp0 = x2 ;
  381. epsp1 = epsp1 'ET' ( 'PROG' epsp0 ) ;
  382. den0 = A1 * GP0 * ( epsx10 - x2 ) / 3. ;
  383. den0 = den0 / ( eta ** ( 1. / 3. ) ) ;
  384. sup0 = A1 * ( G00 + GT0 ) * ( epsx10 - x2 ) ;
  385. sig0 = sup0 / ( 1. + den0 ) ;
  386. sig1 = sig1 'ET' ( 'PROG' sig0 ) ;
  387. 'QUITTER' bloc2 ;
  388. 'FINSI' ;
  389. 'FINSI' ;
  390. 'FIN' bloc2 ;
  391. 'FINSI' ;
  392. *
  393. 'SINON' ;
  394. epsp0 = 0. ;
  395. epsp1 = epsp1 'ET' ( 'PROG' epsp0 ) ;
  396. sig0 = sig_0 ;
  397. sig1 = sig1 'ET' ( 'PROG' sig0 ) ;
  398. 'FINSI' ;
  399. *
  400. err_s0 = 'ABS' ( sig0 - sig_0 ) ;
  401. err_s0 = err_s0 / sig0 ;
  402. err_s0 = err_s0 * 100. ;
  403. err1 = err1 'ET' ( 'PROG' err_s0 ) ;
  404. err_e0 = 'ABS' ( epsp0 - def_0 ) ;
  405. 'SI' (def_0 '>' ( 1.E-1 * eps_el0 ) ) ;
  406. err_e0 = err_e0 / def_0 ;
  407. 'SINON' ;
  408. err_e0 = 0. ;
  409. 'FINSI' ;
  410. err_e0 = err_e0 * 100. ;
  411. 'SI' ( err_e0 '>' 5.E-2 ) ;
  412. 'ERRE' 5 ;
  413. 'FINSI' ;
  414. 'SI' ( err_s0 '>' 5.E-2 ) ;
  415. 'ERRE' 5 ;
  416. 'FINSI' ;
  417. err2 = err2 'ET' ( 'PROG' err_e0 ) ;
  418. *
  419. 'FIN' bloc1 ;
  420. *
  421. *
  422. 'FIN' ;
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  

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