Télécharger preston1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : preston1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. * Test Preston1.dgibi: Jeux de données *
  5. * ------------------------------------ *
  6. * *
  7. complet = faux;
  8. *
  9. *************************************************
  10. * pour calcul complet mettre complet à : vrai;
  11. *************************************************
  12. **************************************************
  13. * *
  14. * TEST DE VALIDATION D'UNE LOI DE COMPORTEMENT *
  15. * -------------------------------------------- *
  16. * DE MATERIAU *
  17. * ----------- *
  18. * *
  19. * LOI DE COMPORTEMENT DE: *
  20. * PRESTON TONKS WALLACE *
  21. * CAS CUBIQUE CENTRE ( C.C. ) *
  22. * *
  23. * MAILLAGE: *
  24. * UNE BARRE DE SECTION CARREE *
  25. * LONGUEUR L=.5 M *
  26. * LARGEUR l=.001 M *
  27. * *
  28. * CHARGEMENT: *
  29. * ESSAI DE TRACTION *
  30. * DEPLACEMENTS IMPOSES *
  31. * *
  32. **************************************************
  33. *
  34. opti echo 0 dime 3 elem cub8 ;
  35. *
  36. *
  37. * Maillage
  38. *
  39. l1 = .5 ;
  40. l2 = .001 ;
  41. l3 = .001 ;
  42. n1 = 50 ;
  43. n2 = 1 ;
  44. n3 = 1 ;
  45. p1 = 0. 0. 0. ;
  46. p2 = l1 0. 0. ;
  47. p3 = l1 l2 0. ;
  48. p4 = 0. l2 0. ;
  49. p5 = 0. 0. l3 ;
  50. p6 = l1 0. l3 ;
  51. p7 = l1 l2 l3 ;
  52. p8 = 0. l2 l3 ;
  53. d1 = d p1 n3 p5 ;
  54. d2 = d p5 n2 p8 ;
  55. d3 = d p8 n3 p4 ;
  56. d4 = d p4 n2 p1 ;
  57. sur1 = 'DALL' d1 d2 d3 d4 ;
  58. d5 = d p2 n3 p6 ;
  59. d6 = d p6 n2 p7 ;
  60. d7 = d p7 n3 p3 ;
  61. d8 = d p3 n2 p2 ;
  62. sur2 = 'DALL' d5 d6 d7 d8 ;
  63. vol1 = sur1 'VOLU' n1 sur2 ;
  64. *
  65. * Modele de calcul
  66. *
  67. mod0 = 'MODE' vol1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
  68. 'PLASTIQUE' 'PRESTON' ;
  69. mat0 = 'MATE' mod0 'YOUN' 2.1E11 'NU' 0.3
  70. 'RHO' 7.8E3 'TAU' 0.025
  71. 'P' 0. 'S0' 0.0085 'SINF' 0.00055
  72. 'K' 0. 'G' 0.00001
  73. 'Y0' 0.0001 'YINF' 0.0001 'Y1' 0.094 'Y2' 0.575
  74. 'BETA' 0.25 'GP' 3.00 'GT' 0. 'MU' 1.97
  75. 'TMO' 1220. ;
  76. *
  77. * Conditions aux limites
  78. *
  79. cl1 = 'BLOQ' sur1 'UX' ;
  80. cl2 = 'BLOQ' sur2 'UX' ;
  81. cl3 = 'BLOQ' p1 'UX' 'UY' 'UZ' ;
  82. cl4 = 'BLOQ' p5 'UX' 'UY' ;
  83. cl0 = cl1 'ET' cl2 'ET' cl3 'ET' cl4 ;
  84. *
  85. * Chargement
  86. *
  87. dep1 = 'DEPI' cl2 .1 ;
  88. ev0 = 'EVOL' 'MANU' temps ( 'PROG' 0. 5.E-4 ) y
  89. ( '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 = 4.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. ta1.'PROCESSEURS' = 'MOT' 'COMPORTEMENT';
  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 'YOUN' '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 )
  179. 'UX' 'SCAL' ;
  180. reac0 = ta1 .'REACTIONS'.i1 ;
  181. reac1 = 'MAXI' ( 'EXCO' reac0 'FX' 'SCAL' ) ;
  182. dep0 = 'MAXI' dex0 ;
  183. dep1 = 'MAXI' dex1 ;
  184. eps1 = 'EPSI' mod0 depl0 'LINE' ;
  185. epsx1 = 'EXCO' eps1 'EPXX' 'SCAL' ;
  186. epsy1 = 'EXCO' eps1 'EPYY' 'SCAL' ;
  187. epsz1 = 'EXCO' eps1 'EPZZ' 'SCAL' ;
  188. treps0 = 'MAXI' ( epsx1 + epsy1 + epsz1 ) ;
  189. epsx10 = 'MAXI' epsx1 ;
  190. sigm0 = ta1 .'CONTRAINTES'.i1 ;
  191. depeq0 = ta1 .'VARIABLES_INTERNES'.i1 ;
  192. def0 = ta1 .'DEFORMATIONS_INELASTIQUES'.i1 ;
  193. t1 = ta1 .'TEMPS'.i1 ;
  194. t0 = ta1 .'TEMPS'.(i1 - 1) ;
  195. dt0 = t1 - t0 ;
  196. dt0 = 0. ;
  197. 'SI' ( ( 'ABS' dt0 ) < 1.E-10 ) ;
  198. deps0 = 0. ;
  199. 'SINON' ;
  200. deps0 = ( dep1 - dep0 ) / ( dt0 * l1 ) ;
  201. 'FINSI' ;
  202. *
  203. sigx0 = 'MAXI' ( 'VMIS' mod0 sigm0 ) ;
  204. sigx00 = 'MINI' ( 'VMIS' mod0 sigm0 ) ;
  205. depx0 = 'MAXI' ( 'EXCO' depeq0 'EPSE' 'SCAL' ) ;
  206. depx00 = 'MINI' ( 'EXCO' depeq0 'EPSE' 'SCAL' ) ;
  207. sig_00 = 'EXCO' sigm0 'SMXX' 'SCAL' ;
  208. sig_0 = 'MAXI' sig_00 ;
  209. eps_el0 = sig_0 / YOUNG1 ;
  210. sig_y = 'MAXI' ( 'EXCO' sigm0 'SMYY' 'SCAL' ) ;
  211. sig_z = 'MAXI' ( 'EXCO' sigm0 'SMZZ' 'SCAL' ) ;
  212. def_00 = 'EXCO' def0 'EIXX' ;
  213. def_0 = 'MAXI' def_00 ;
  214. def1 = 'MAXI' ( 'EXCO' def0 'EIXX' ) ;
  215. def2 = 'MAXI' ( 'EXCO' def0 'EIYY' ) ;
  216. def3 = 'MAXI' ( 'EXCO' def0 'EIZZ' ) ;
  217. def4 = 'MAXI' ( 'EXCO' def0 'GIXY' ) ;
  218. def5 = 'MAXI' ( 'EXCO' def0 'GIXZ' ) ;
  219. def6 = 'MAXI' ( 'EXCO' def0 'GIYZ' ) ;
  220. defp1 = ( def1 * def1 ) + ( def2 * def2 ) +
  221. ( def3 * def3 ) ;
  222. defp1 = defp1 - ( def1 * def2 ) - ( def2 * def3 ) -
  223. ( def1 * def3 ) ;
  224. defp2 = ( def4 * def4 ) + ( def5 * def5 ) +
  225. ( def6 * def6 ) ;
  226. defp0 = defp1 + ( 3. * defp2 ) ;
  227. defp0 = ( defp0 ** .5 ) * 2. / 3. ;
  228. sigx1 = sigx1 'ET' ( 'PROG' sigx0 ) ;
  229. sigx2 = sigx2 'ET' ( 'PROG' sigx00 ) ;
  230. depx1 = depx1 'ET' ( 'PROG' depx0 ) ;
  231. depx2 = depx2 'ET' ( 'PROG' depx00 ) ;
  232. sig_1 = sig_1 'ET' ( 'PROG' sig_0 ) ;
  233. def_1 = def_1 'ET' ( 'PROG' def_0 ) ;
  234. sig_3dy = sig_3dy 'ET' ( 'PROG' ( sig_y / sig_0 ) ) ;
  235. sig_3dz = sig_3dz 'ET' ( 'PROG' ( sig_y / sig_0 ) ) ;
  236. epst1 = epst1 'ET' ( 'PROG' epsx10 ) ;
  237. *
  238. * Densite RHO1
  239. *
  240. RHO1 = RHO0 / ( 1. + treps0 ) ;
  241. eta = RHO1 / RHO0 ;
  242. *
  243. * Module de cisaillement G00
  244. *
  245. G00 = YOUNG1 / ( 2. * ( 1. + XNU1 ) ) ;
  246. *
  247. * Pulsation de Debye W0
  248. *
  249. W0 = ( G00 / RHO1 ) ** ( .5 ) ;
  250. DTETA0 = ( 4. / 3.1416 ) ** ( .5 ) ;
  251. DTETA0 = DTETA0 * W0 / 6. ;
  252. DTETA0 = deps0 / DTETA0 ;
  253. *
  254. * Contrainte de saturation
  255. *
  256. 'SI' ( ( 'ABS' dt0 ) < 1.E-10 ) ;
  257. YS1 = SINF1 ;
  258. 'SINON' ;
  259. YS1 = 'ERF' ( K1 * ( 'LOG' ( G1 / DTETA0 ) ) ) ;
  260. YS1 = S01 - ( ( S01 - SINF1 ) * YS1 ) ;
  261. 'FINSI' ;
  262. YS2 = S01 * ( ( DTETA0 / G1 ) ** ( BETA1 ) ) ;
  263. YS0 = ( 'ABS' ( YS1 - YS2 ) ) + YS1 + YS2 ;
  264. YS0 = YS0 / 2. ;
  265. *
  266. * Limite d'élasticité
  267. *
  268. 'SI' ( ( 'ABS' dt0 ) < 1.E-10 ) ;
  269. YL1 = YINF1 ;
  270. 'SINON' ;
  271. YL1 = 'ERF' ( K1 * ( 'LOG' ( G1 / DTETA0 ) ) ) ;
  272. YL1 = Y01 - ( ( Y01 - YINF1 ) * YL1 ) ;
  273. 'FINSI' ;
  274. YL2 = Y11 * ( ( DTETA0 / G1 ) ** ( Y21 ) ) ;
  275. YL3 = ( 'ABS' ( YL2 - YS2 ) ) - YL2 - YS2 ;
  276. YL3 = -1. * YL3 / 2. ;
  277. YL0 = ( 'ABS' ( YL1 - YL3 ) ) + YL1 + YL3 ;
  278. YL0 = YL0 / 2. ;
  279. *
  280. 'SI' ( sig_0 '>' ( YL0 * G00 ) ) ;
  281. *
  282. * Materiau C.C.
  283. *
  284. 'SI' ( P11 'EGA' 0. ) ;
  285. *
  286. x0 = 0. ;
  287. x2 = x0 ;
  288. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) /
  289. ( 3. * B1 ) ) ;
  290. tr1 = tr1 / 3. ;
  291. y2 = 'EXP' ( -1. * TAU1 * ( x2 - tr1 ) /
  292. ( YS0 - YL0 ) ) ;
  293. y2 = YS0 - ( ( YS0 - YL0 ) * y2 ) ;
  294. y2 = y2 * G00 ;
  295. y2 = y2 + ( YOUNG1 * x2 ) ;
  296. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  297. *
  298. x1 = epsx10 ;
  299. x2 = x1 ;
  300. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) /
  301. ( 3. * B1 ) ) ;
  302. tr1 = tr1 / 3. ;
  303. y2 = 'EXP' ( -1. * TAU1 * ( x2 - tr1 ) /
  304. ( YS0 - YL0 ) ) ;
  305. y2 = YS0 - ( ( YS0 - YL0 ) * y2 ) ;
  306. y2 = y2 * G00 ;
  307. y2 = y2 + ( YOUNG1 * x2 ) ;
  308. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  309. *
  310. 'REPETER' bloc2 ;
  311. x2 = ( x1 + x0 ) / 2. ;
  312. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) /
  313. ( 3. * B1 ) ) ;
  314. tr1 = tr1 / 3. ;
  315. y2 = 'EXP' ( -1. * TAU1 * ( x2 - tr1 ) /
  316. ( YS0 - YL0 ) ) ;
  317. y2 = YS0 - ( ( YS0 - YL0 ) * y2 ) ;
  318. y2 = y2 * G00 ;
  319. y2 = y2 + ( YOUNG1 * x2 ) ;
  320. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  321. *
  322. 'SI' ( y2 > 1.E-5 ) ;
  323. x1 = x2 ;
  324. 'SINON' ;
  325. 'SI' ( y2 < -1.E-5 ) ;
  326. x0 = x2 ;
  327. 'SINON' ;
  328. epsp0 = x2 ;
  329. epsp1 = epsp1 'ET' ( 'PROG' epsp0 ) ;
  330. den0 = A1 * GP0 * ( epsx10 - x2 ) / 3. ;
  331. den0 = den0 / ( eta ** ( 1. / 3. ) ) ;
  332. sup0 = A1 * ( G00 + GT0 ) *
  333. ( epsx10 - x2 ) ;
  334. sig0 = sup0 / ( 1. + den0 ) ;
  335. sig1 = sig1 'ET' ( 'PROG' sig0 ) ;
  336. 'QUITTER' bloc2 ;
  337. 'FINSI' ;
  338. 'FINSI' ;
  339. 'FIN' bloc2 ;
  340. *
  341. 'SINON' ;
  342. *
  343. * autres materiaux
  344. *
  345. x0 = 0. ;
  346. x2 = x0 ;
  347. ex0 = P11 * ( YS0 - YL0 ) / ( S01 - YL0 ) ;
  348. ex1 = ( S01 - YL0 ) * ( ( 'EXP' ex0 ) - 1. ) ;
  349. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) /
  350. ( 3. * B1 ) ) ;
  351. tr1 = tr1 / 3. ;
  352. y2 = 'EXP' ( -1. * P11 * TAU1 *
  353. ( 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. y0 = y2 ;
  361. *
  362. x1 = epsx10 ;
  363. x2 = x1 ;
  364. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) /
  365. ( 3. * B1 ) ) ;
  366. tr1 = tr1 / 3. ;
  367. y2 = 'EXP' ( -1. * P11 * TAU1 *
  368. ( x2 - tr1 ) / ex1 ) ;
  369. y2 = ( 1. - ( 'EXP' ( -1. * ex0 ) ) ) * y2 ;
  370. y2 = 'LOG' ( 1. - y2 ) ;
  371. y2 = ( ( S01 - YL0 ) * y2 / P11 ) + YS0 ;
  372. y2 = y2 * G00 ;
  373. y2 = y2 + ( YOUNG1 * x2 ) ;
  374. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  375. y1 = y2 ;
  376. *
  377. 'REPETER' bloc2 ;
  378. x2 = ( x0 + x1 ) / 2. ;
  379. tr1 = treps0 - ( A1 * ( epsx10 - x2 ) /
  380. ( 3. * B1 ) ) ;
  381. tr1 = tr1 / 3. ;
  382. y2 = 'EXP' ( -1. * P11 * TAU1 *
  383. ( x2 - tr1 ) / ex1 ) ;
  384. y2 = ( 1. - ( 'EXP' ( -1. * ex0 ) ) ) * y2 ;
  385. y2 = 'LOG' ( 1. - y2 ) ;
  386. y2 = ( ( S01 - YL0 ) * y2 / P11 ) + YS0 ;
  387. y2 = y2 * G00 ;
  388. y2 = y2 + ( YOUNG1 * x2 ) ;
  389. y2 = y2 - ( YOUNG1 * epsx10 ) ;
  390. *
  391. 'SI' ( y2 > ( 1.E-8 * ( 'ABS' ( y1 - y0 ))));
  392. x1 = x2 ;
  393. 'SINON' ;
  394. 'SI' (y2 < ( -1.E-8 * ('ABS'( y0 - y1 ))));
  395. x0 = x2 ;
  396. 'SINON' ;
  397. epsp0 = x2 ;
  398. epsp1 = epsp1 'ET' ( 'PROG' epsp0 ) ;
  399. den0 = A1 * GP0 * ( epsx10 - x2 ) / 3. ;
  400. den0 = den0 / ( eta ** ( 1. / 3. ) ) ;
  401. sup0 = A1 * ( G00 + GT0 ) *
  402. ( epsx10 - x2 ) ;
  403. sig0 = sup0 / ( 1. + den0 ) ;
  404. sig1 = sig1 'ET' ( 'PROG' sig0 ) ;
  405. 'QUITTER' bloc2 ;
  406. 'FINSI' ;
  407. 'FINSI' ;
  408. 'FIN' bloc2 ;
  409. 'FINSI' ;
  410. *
  411. 'SINON' ;
  412. epsp0 = 0. ;
  413. epsp1 = epsp1 'ET' ( 'PROG' epsp0 ) ;
  414. sig0 = sig_0 ;
  415. sig1 = sig1 'ET' ( 'PROG' sig0 ) ;
  416. 'FINSI' ;
  417. *
  418. err_s0 = 'ABS' ( sig0 - sig_0 ) ;
  419. err_s0 = err_s0 / sig0 ;
  420. err_s0 = err_s0 * 100. ;
  421. err1 = err1 'ET' ( 'PROG' err_s0 ) ;
  422. err_e0 = 'ABS' ( epsp0 - def_0 ) ;
  423. 'SI' (def_0 '>' ( 1.E-1 * eps_el0 ) ) ;
  424. err_e0 = err_e0 / def_0 ;
  425. 'SINON' ;
  426. err_e0 = 0. ;
  427. 'FINSI' ;
  428. err_e0 = err_e0 * 100. ;
  429. 'SI' ( err_e0 '>' 5.E-2 ) ;
  430. 'ERRE' 5 ;
  431. 'FINSI' ;
  432. 'SI' ( err_s0 '>' 5.E-2 ) ;
  433. 'ERRE' 5 ;
  434. 'FINSI' ;
  435. err2 = err2 'ET' ( 'PROG' err_e0 ) ;
  436. *
  437. 'FIN' bloc1 ;
  438. *
  439. *
  440. 'FIN' ;
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  

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