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

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