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

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