Télécharger gurson2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : gurson2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *****************************************************
  5. * *
  6. * TEST DE VALIDATION DE LA LOI *
  7. * D'ENDOMMAGEMENT DUCTILE DE *
  8. * GURSON TVERGAARD *
  9. * *
  10. * TEST: *
  11. * UN BARREAU EST CHARGE EN TRACTION *
  12. * LE CHARGEMENT EST DES DEPLACEMENTS IMPOSES *
  13. * CALCUL EN MASSIF 3D *
  14. * *
  15. * MAILLAGE: *
  16. * UN BARREAU DE SECTION CARREE DE .5 M SUR .01 M *
  17. * 50 ELEMENTS *
  18. * *
  19. *****************************************************
  20. *
  21. opti echo 0 ;
  22. * ajout de option epsilon lineaire pour la precision des test!
  23. OPTION epsilon lineaire;
  24. *
  25.  
  26. 'DEBPROC' PLGURS mat0*'MCHAML' mod0*'MMODEL' eps0*'MCHAML'
  27. sig0*'FLOTTANT' def0*'FLOTTANT'
  28. def00*'FLOTTANT'
  29. bet0*'FLOTTANT' beta0*'FLOTTANT'
  30. sig00*'FLOTTANT' xm0*'FLOTTANT'
  31. fc0*'FLOTTANT' trepp*'FLOTTANT' ;
  32.  
  33. youn1 = 'EXTR' ( 'EXCO' mat0 'YOUN' 'SCAL' ) 'SCAL' 1 1 1 ;
  34. xnu0 = 'EXTR' ( 'EXCO' mat0 'NU' 'SCAL' ) 'SCAL' 1 1 1 ;
  35. XG0 = youn1 / ( 2. * ( 1. + xnu0 ) ) ;
  36. XK0 = youn1 / ( 3. * ( 1. - ( 2. * xnu0 ) ) ) ;
  37. XQ0 = 'EXTR' ( 'EXCO' mat0 'Q' 'SCAL' ) 'SCAL' 1 1 1 ;
  38. XFC0 = 'EXTR' ( 'EXCO' mat0 'FC' 'SCAL' ) 'SCAL' 1 1 1 ;
  39. XFU0 = 'EXTR' ( 'EXCO' mat0 'FU' 'SCAL' ) 'SCAL' 1 1 1 ;
  40. XFF0 = 'EXTR' ( 'EXCO' mat0 'FF' 'SCAL' ) 'SCAL' 1 1 1 ;
  41. XSNS0 = 'EXTR' ( 'EXCO' mat0 'SNS' 'SCAL' ) 'SCAL' 1 1 1 ;
  42. XSNE0 = 'EXTR' ( 'EXCO' mat0 'SNE' 'SCAL' ) 'SCAL' 1 1 1 ;
  43. XGIG0 = 'EXTR' ( 'EXCO' mat0 'SIGN' 'SCAL' ) 'SCAL' 1 1 1 ;
  44. XEPS0 = 'EXTR' ( 'EXCO' mat0 'EPSN' 'SCAL' ) 'SCAL' 1 1 1 ;
  45. *
  46. * CAS NON ROMPU
  47. 'SI' (bet1 '<' (0.99 * XFF0));
  48. *
  49. * Résolution par dichotomie
  50. *
  51. eps_x = ( 'MAXI' ( 'EXCO' eps0 'EPXX' ) ) ;
  52. eps_y = ( 'MAXI' ( 'EXCO' eps0 'EPYY' ) ) ;
  53. eps_z = ( 'MAXI' ( 'EXCO' eps0 'EPZZ' ) ) ;
  54. treps0 = eps_x + eps_y + eps_z ;
  55. * Correction SEMI: Mars 2017: le rapport de densite est exprime en deformation logarithmique
  56. *rho = 1. / ( 1. + treps0 ) ;
  57. rho = 'EXP' (-1. * treps0);
  58. * Fin Correction SEMI: Mars 2017
  59. *
  60. del0 = ( XFU0 - XFC0 ) / ( XFF0 - XFC0 ) ;
  61. 'MESS' ' del0=' del0;
  62. *
  63. conv0 = 1. ;
  64. eps_x = eps_x - ( treps0 / 3. ) ;
  65. sigt0 = 2. * XG0 * eps_x ;
  66. *sigt0 = sigt0 + ( ( 1. - fc0 ) * XK0 * treps0 ) ;
  67. sigt0 = sigt0 + ( ( 1. - bet0) * XK0 * treps0 ) ;
  68. *
  69. 'SI' ( fc0 'EGA' 0. ) ;
  70. nmax0 = 1 ;
  71. 'SINON' ;
  72. nmax0 = 1000 ;
  73. 'FINSI' ;
  74. *
  75. 'SI' ( sigt0 '>' sig00 ) ;
  76. *
  77. * On plastifie
  78. *
  79. x0 = treps0 ;
  80. x2 = x0 ;
  81. exp0 = ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  82. sm0 = exp0 * XK0 * ( (( 'EXP' ( -1. * x2 ) ) / rho ) - 1. ) ;
  83. sx0 = 2. * sm0 ;
  84. f0 = 1. - ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  85. 'SI' ( f0 '<' XFC0 ) ;
  86. 'MESS' ' Avant coalescence';
  87. f1 = f0 ;
  88. 'SINON' ;
  89. 'MESS' ' Apres coalescence';
  90. f1 = XFC0 + ( del0 * ( f0 - XFC0 ) ) ;
  91. 'FINSI' ;
  92. x20 = def00 ;
  93. yl0 = sig00 * ( ( 1. + ( beta0 * x20 ) ) ** xm0 ) ;
  94. g0 = 2. * XQ0 * f1 * ( 'COSH' ( 3. * sx0 / ( 4. * yl0 ) ) ) ;
  95. g0 = 1. + ( XQ0 * XQ0 * f1 * f1 ) - g0 ;
  96. y2 = ( sx0 * sx0 * 9. / 4. ) ;
  97. y2 = y2 - ( yl0 * yl0 * g0 ) ;
  98. y0 = y2 ;
  99. 'SI' ( y0 '>' 0. ) ;
  100. *
  101. x0 = trepp ;
  102. x2 = x0 ;
  103. exp0 = ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  104. sm0 = exp0 * XK0 * ( (( 'EXP' ( -1. * x2 ) ) / rho ) - 1. ) ;
  105. sx0 = 2. * sm0 ;
  106. f0 = 1. - ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  107. 'SI' ( f0 '<' XFC0 ) ;
  108. f1 = f0 ;
  109. 'SINON' ;
  110. f1 = XFC0 + ( del0 * ( f0 - XFC0 ) ) ;
  111. 'FINSI' ;
  112. x20 = def00 ;
  113. yl0 = sig00 * ( ( 1. + ( beta0 * x20 ) ) ** xm0 ) ;
  114. g0 = 2. * XQ0 * f1 * ( 'COSH' ( 3. * sx0 / ( 4. * yl0 ) ) ) ;
  115. g0 = 1. + ( XQ0 * XQ0 * f1 * f1 ) - g0 ;
  116. y2 = ( sx0 * sx0 * 9. / 4. ) ;
  117. y2 = y2 - ( yl0 * yl0 * g0 ) ;
  118. y0 = y2 ;
  119. *
  120. 'SI' ( y0 '>' 0. ) ;
  121. 'REPETER' bloc01 ;
  122. i01 = &bloc01 ;
  123. x0 = x0 * ( 1. - 1.E-5 ) ;
  124. x2 = x0 ;
  125. exp0 = ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  126. sm0 = exp0 * XK0 * ( (( 'EXP' ( -1. * x2 ) ) / rho ) - 1. ) ;
  127. sx0 = 2. * sm0 ;
  128. f0 = 1. - ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  129. 'SI' ( f0 '<' XFC0 ) ;
  130. f1 = f0 ;
  131. 'SINON' ;
  132. f1 = XFC0 + ( del0 * ( f0 - XFC0 ) ) ;
  133. 'FINSI' ;
  134. x20 = def00 ;
  135. yl0 = sig00 * ( ( 1. + ( beta0 * x20 ) ) ** xm0 ) ;
  136. g0 = 2. * XQ0 * f1 * ( 'COSH' ( 3. * sx0 / ( 4. * yl0 ) ) ) ;
  137. g0 = 1. + ( XQ0 * XQ0 * f1 * f1 ) - g0 ;
  138. y2 = ( sx0 * sx0 * 9. / 4. ) ;
  139. y2 = y2 - ( yl0 * yl0 * g0 ) ;
  140. y0 = y2 ;
  141. *
  142. 'SI' ( y0 '<' 0. ) ;
  143. 'QUITTER' bloc01 ;
  144. 'FINSI' ;
  145. 'SI' ( i01 '>' 100000 ) ;
  146. 'MESS' ' Inversion necessaire non realisee ' ;
  147. 'QUITTER' bloc01 ;
  148. 'FINSI' ;
  149. *
  150. 'FIN' bloc01 ;
  151. 'FINSI' ;
  152. *
  153. 'MESS' ' Inversion d origine ' i01 ;
  154. *
  155. 'FINSI' ;
  156. *
  157. x1 = 'LOG' ( ( 1. - fc0 ) / ( 1. - bet0 ) ) ;
  158. x1 = ( ( 'ABS' x1 ) + x1 ) / 2. ;
  159. x2 = x1 ;
  160. exp0 = ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  161. sm0 = exp0 * XK0 * ( (( 'EXP' ( -1. * x2 ) ) / rho ) - 1. ) ;
  162. sx0 = 2. * sm0 ;
  163. f0 = 1. - ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  164. 'SI' ( f0 '<' XFC0 ) ;
  165. f1 = f0 ;
  166. 'SINON' ;
  167. f1 = XFC0 + ( del0 * ( f0 - XFC0 ) ) ;
  168. 'FINSI' ;
  169. x20 = def00 ;
  170. yl0 = sig00 * ( ( 1. + ( beta0 * x20 ) ) ** xm0 ) ;
  171. g0 = 2. * XQ0 * f1 * ( 'COSH' ( 3. * sx0 / ( 4. * yl0 ) ) ) ;
  172. g0 = 1. + ( XQ0 * XQ0 * f1 * f1 ) - g0 ;
  173. y2 = ( sx0 * sx0 * 9. / 4. ) ;
  174. y2 = y2 - ( yl0 * yl0 * g0 ) ;
  175. y1 = y2 ;
  176. *
  177. *
  178. err0 = ( 'ABS' ( y1 - y0 ) ) * 1.E-10 ;
  179. *'SI' (err0 '<' 1.E5);
  180. * err0 = 1.E5;
  181. *'FINSI';
  182. *mess ' err0 y0 y1 = ' err0 y0 y1 ;
  183. *mess ' x0 x1 = ' x0 x1 ;
  184. iter0 = 0 ;
  185. *
  186. 'REPETER' bloc00 ;
  187. *
  188. iter0 = iter0 + 1 ;
  189. x2 = ( x0 + x1 ) / 2. ;
  190. exp0 = ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  191. *exp0 = exp0 * XK0 / XG0 * ( treps0 - x2 ) ;
  192. sm0 = exp0 * XK0 * ( (( 'EXP' ( -1. * x2 ) ) / rho ) - 1. ) ;
  193. sx0 = 2. * sm0 ;
  194. *exp0 = exp0 * XK0 / XG0 * ( (( 'EXP' ( -1. * x2 ) ) / rho ) - 1. ) ;
  195. *exp0 = eps_x - exp0 ;
  196. *sx0 = 2. * XG0 * ( eps_x - exp0 ) ;
  197. f0 = 1. - ( ( 1. - fc0 ) * ( 'EXP' ( -1. * x2 ) ) ) ;
  198. 'SI' ( f0 '<' XFC0 ) ;
  199. f1 = f0 ;
  200. 'SINON' ;
  201. f1 = XFC0 + ( del0 * ( f0 - XFC0 ) ) ;
  202. 'FINSI' ;
  203. x20 = def00 ;
  204. yl0 = sig00 * ( ( 1. + ( beta0 * x20 ) ) ** xm0 ) ;
  205. g0 = 2. * XQ0 * f1 * ( 'COSH' ( 3. * sx0 / ( 4. * yl0 ) ) ) ;
  206. g0 = 1. + ( XQ0 * XQ0 * f1 * f1 ) - g0 ;
  207. y2 = ( sx0 * sx0 * 9. / 4. ) ;
  208. y2 = y2 - ( yl0 * yl0 * g0 ) ;
  209. *
  210. *
  211. 'SI' ( y2 '>' err0 ) ;
  212. x1 = x2 ;
  213. 'SINON' ;
  214. 'SI' ( y2 '<' ( -1. * err0 ) ) ;
  215. x0 = x2 ;
  216. 'SINON' ;
  217. *
  218. * On a gagné
  219. *
  220. sig1 = 3. * sm0 ;
  221. * epsp_x = eps_x - ( sig1 / ( 2. * XG0 ) ) ;
  222. epsp_x = eps_x - ( sx0 / ( 2. * XG0 ) ) ;
  223. def1 = ( x2 / 3. ) + epsp_x ;
  224. recal0 = faux ;
  225. 'SI' recal0 ;
  226. *
  227. * Calcul de la def. plast.
  228. *
  229. x0 = eps_x ;
  230. x3 = x0 ;
  231. sx0 = 2. * XG0 * ( eps_x - x3 ) ;
  232. sig_x = 3. * sx0 / 2. ;
  233. g0 = 2. * XQ0 * f1 * ( 'COSH' ( sig_x / ( 2. * yl0 ) ) ) ;
  234. g0 = 1. + ( XQ0 * XQ0 * f1 * f1 ) - g0 ;
  235. y2 = sig_x - yl0 * ( g0 ** .5 ) ;
  236. y0 = y2 ;
  237. *
  238. x1 = 0. ;
  239. x3 = x1 ;
  240. sx0 = 2. * XG0 * ( eps_x - x3 ) ;
  241. sig_x = 3. * sx0 / 2. ;
  242. g0 = 2. * XQ0 * f1 * ( 'COSH' ( sig_x / ( 2. * yl0 ) ) ) ;
  243. g0 = 1. + ( XQ0 * XQ0 * f1 * f1 ) - g0 ;
  244. y2 = sig_x - yl0 * ( g0 ** .5 ) ;
  245. y1 = y2 ;
  246. *
  247. err1 = 'ABS' ( y0 - y1 ) * 1.E-6 ;
  248. 'REPETER' bloc02 ;
  249. i02 = &bloc02 ;
  250. x3 = ( x1 + x0 ) / 2. ;
  251. sx0 = 2. * XG0 * ( eps_x - x3 ) ;
  252. sig_x = 3. * sx0 / 2. ;
  253. g0 = 2. * XQ0 * f1 * ( 'COSH' ( sig_x / ( 2. * yl0 ) ) ) ;
  254. g0 = 1. + ( XQ0 * XQ0 * f1 * f1 ) - g0 ;
  255. y2 = sig_x - yl0 * ( g0 ** .5 ) ;
  256. 'SI' ( y2 '>' err1 ) ;
  257. x1 = x3 ;
  258. 'SINON' ;
  259. 'SI' ( y2 '<' err1 ) ;
  260. x0 = x3 ;
  261. 'SINON' ;
  262. def1 = x3 + ( x2 / 3. ) ;
  263. sig1 = sig_x;
  264. 'QUITTER' bloc02 ;
  265. 'FINSI' ;
  266. 'FINSI' ;
  267. *
  268. 'SI' ( i02 '>' 100000 ) ;
  269. 'MESS' ' Mauvais calcul de la def. plast. ' ;
  270. 'QUITTER' bloc02 ;
  271. 'FINSI' ;
  272. *
  273. 'FIN' bloc02 ;
  274. 'FINSI' ;
  275. bet1 = f0 ;
  276. def01 = x20 ;
  277. 'MESS' ' Dichotomie converge:' iter0 ' itérations ' ;
  278. 'QUITTER' bloc00 ;
  279. *
  280. 'FINSI' ;
  281. 'FINSI' ;
  282. *
  283. 'SI' ( iter0 '>' nmax0 ) ;
  284. 'MESS' ' Pas de convergence dans la dichotomie ' ;
  285. mess ' err0 y0 y1 = ' err0 y0 y1 ;
  286. conv0 = -1. ;
  287. bet1 = f0 ;
  288. def01 = x20 ;
  289. 'QUITTER' bloc00 ;
  290. 'FINSI' ;
  291. *
  292. 'FIN' bloc00 ;
  293. *
  294. 'SINON' ;
  295. *
  296. * On reste élastique
  297. *
  298. sig1 = sigt0 ;
  299. def1 = 0. ;
  300. bet1 = fc0 ;
  301. def01 = 0. ;
  302. 'FINSI';
  303. *
  304. * CAS ROMPU
  305. 'SINON';
  306. bet1 = XFF0;
  307. sig1 = 0.;
  308. def1 = ( 'MAXI' ( 'EXCO' eps0 'EPXX' ) ) ;
  309. def01 = ( 'MAXI' ( 'EXCO' eps0 'EPXX' ) ) ;
  310. 'FINSI';
  311. 'SI' (bet1 '>' XFF0);
  312. bet1 = XFF0;
  313. sig1 = 0.;
  314. 'FINSI';
  315.  
  316. *
  317. 'FINPROC' sig1 def1 bet1 def01 conv0 ;
  318. *
  319. *
  320. *================================================================
  321. *
  322. *
  323. opti echo 0 dime 3 elem cub8 ;
  324. graph0 = faux ;
  325. errt0 = faux ;
  326. *
  327. *
  328. * Maillage
  329. *
  330. l1 = .5 ;
  331. l2 = .01 ;
  332. l3 = .01 ;
  333. n1 = 50 ;
  334. n2 = 1 ;
  335. n3 = 1 ;
  336. p1 = 0. 0. 0. ;
  337. p2 = l1 0. 0. ;
  338. p3 = l1 l2 0. ;
  339. p4 = 0. l2 0. ;
  340. p5 = 0. 0. l3 ;
  341. p6 = l1 0. l3 ;
  342. p7 = l1 l2 l3 ;
  343. p8 = 0. l2 l3 ;
  344. d1 = d p1 n3 p5 ;
  345. d2 = d p5 n2 p8 ;
  346. d3 = d p8 n3 p4 ;
  347. d4 = d p4 n2 p1 ;
  348. sur1 = 'DALL' d1 d2 d3 d4 ;
  349. d5 = d p2 n3 p6 ;
  350. d6 = d p6 n2 p7 ;
  351. d7 = d p7 n3 p3 ;
  352. d8 = d p3 n2 p2 ;
  353. sur2 = 'DALL' d5 d6 d7 d8 ;
  354. vol1 = sur1 'VOLU' n1 sur2 ;
  355. 'SI' graph0 ;
  356. 'TITR' ' Maillage du test de validation' ;
  357. 'TRAC' vol1 ;
  358. 'FINSI' ;
  359. *
  360. * Deplacement maximal
  361. *
  362. depmax = l1 / 1. ;
  363. *
  364. * Courbe d'ecrouissage
  365. *
  366. beta0 = 125. ;
  367. sig0 = 410.E6 ;
  368. xm = .1 ;
  369. youn0 = 2.1E11 ;
  370. epsp0 = 'PROG' 0. ;
  371. deb0 = 'PROG' 0. ;
  372. epsmax0 = 2. * depmax / l1 ;
  373. pas0 = epsmax0 / 50 ;
  374. pas1 = pas0 / 10. ;
  375. epsmax1 = ( epsmax0 / 10. ) ;
  376. epsp1 = ( 'PROG' 0. 'PAS' pas1 epsmax1 ) 'ET'
  377. ( 'PROG' ( epsmax1 + pas0 ) 'PAS' pas0 epsmax0 ) ;
  378. *epsp1 = 'PROG' 0. 'PAS' pas0 epsmax0 ;
  379. dim00 = 'DIME' epsp1 ;
  380. un = 'PROG' dim00 '*' 1. ;
  381. Y0 = sig0 ;
  382. epsp2 = beta0 * epsp1 ;
  383. epsp3 = epsp2 + un ;
  384. epsp31 = log epsp3 ;
  385. epsp32 = epsp31 * xm ;
  386. epsp4 = exp epsp32 ;
  387. Y1 = Y0 * epsp4 ;
  388. *
  389. epsp1 = epsp0 'ET' epsp1 ;
  390. Y1 = deb0 'ET' Y1 ;
  391. epsp2 = epsp1 + ( Y1 / youn0 ) ;
  392. trac00 = 'EVOL' 'MANU' 'defo' epsp1 'sigm' Y1 ;
  393. *
  394. * Modele de calcul
  395. *
  396. trac0 = 'EVOL' 'MANU' 'defo' epsp2 'sigm' Y1 ;
  397. 'SI' graph0 ;
  398. 'DESS' trac0 'TITR' ' Courbe de traction' ;
  399. 'FINSI' ;
  400. SIG00 = youn0 / 500. ;
  401.  
  402. * Fraction de cavités initiale
  403. inH0 = faux;
  404. fc0 = 0.10 ;
  405. 'SI' inH0;
  406. mod0 = 'MODE' vol1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
  407. 'PLASTIQUE_ENDOM' 'GURSON2' ;
  408. q00 = 'ZERO' mod0 'VARINTER' ;
  409. q01 = 'EXCO' q00 'VHWF';
  410. fc1 = 0.15 ;
  411. xLmin0 = 2.;
  412. xLmax0 = 3.;
  413. v01 = ('MASQ' ('COOR' 1 q01) 'INFERIEUR' xLmin0) * fc0 ;
  414. 'SI' graph0 ;
  415. 'TITR' ' v01';
  416. 'TRAC' v01 mod0 vol1;
  417. 'FINSI';
  418. v00 = 'MASQ' ('COOR' 1 q01) 'SUPERIEUR' xLmin0 ;
  419. v02 = ('MASQ' ('COOR' 1 q01) 'INFERIEUR' xLmax0) * v00 * fc1 ;
  420. 'SI' graph0 ;
  421. 'TITR' ' v02';
  422. 'TRAC' v02 mod0 vol1;
  423. 'FINSI';
  424. v03 = ('MASQ' ('COOR' 1 q01) 'SUPERIEUR' xLmax0) * fc0 ;
  425. 'SI' graph0 ;
  426. 'TITR' ' v03';
  427. 'TRAC' v03 mod0 vol1;
  428. 'FINSI';
  429. q01 = 'NOMC' (v01 + v02 + v03) 'VHWF';
  430. 'SINON';
  431. mod0 = 'MODE' vol1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
  432. 'PLASTIQUE_ENDOM' 'GURSON2' ;
  433. q00 = 'ZERO' mod0 'VARINTER' ;
  434. q01 = 'MANU' 'CHML' mod0 'VHWF' fc0 'TYPE' 'VARINTER' 'STRESSES';
  435. 'FINSI';
  436. 'SI' graph0 ;
  437. 'TITR' ' fraction de cavites initiales';
  438. 'TRAC' q01 mod0 vol1;
  439. 'FINSI';
  440. q02 = 'MANU' 'CHML' mod0 'RHOT' 1. 'TYPE' 'VARINTER' 'STRESSES';
  441. qq00 = q00 + q01 + q02;
  442. * Materiau
  443. mat0 = 'MATE' mod0 'YOUN' youn0 'NU' 0.3
  444. 'TRAC' trac0 'Q' 1.5 'FU' ( 1. / 1.5 ) 'FF' 0.25 'FC' 0.15
  445. 'FNS0' 0.00 'FNE0' 0.0 'SNS' ( .1 * SIG00 ) 'SNE' .1
  446. 'SIGN' ( 2.2 * SIG00 ) 'EPSN' .8 'F0' q01 ;
  447. *
  448. * Conditions aux limites
  449. *
  450. cl1 = 'BLOQ' sur1 'UX' ;
  451. cl2 = 'BLOQ' sur2 'UX' ;
  452. cl3 = 'BLOQ' p1 'UX' 'UY' 'UZ' ;
  453. cl4 = 'BLOQ' p5 'UX' 'UY' ;
  454. cl5 = 'BLOQ' p4 'UX' 'UZ' ;
  455. cl0 = cl1 'ET' cl2 'ET' cl3 'ET' cl4 'ET' cl5 ;
  456. *
  457. * Temps du calcul
  458. *
  459. dt0 = 10. ;
  460. tfin0 = 1000. ;
  461. *
  462. * Chargement
  463. *
  464. dep1 = 'DEPI' cl2 depmax ;
  465. ev0 = 'EVOL' 'MANU' temps ( 'PROG' 0. tfin0 ) y ( 'PROG' 0. 1. ) ;
  466. cha0 = 'CHAR' 'DIMP' dep1 ev0 ;
  467. *
  468. *
  469. *
  470. * Resolution par PASAPAS
  471. *---------------------------------------
  472. *
  473. ta1 = 'TABLE' ;
  474. ta1 .'MODELE' = mod0 ;
  475. ta1 .'CARACTERISTIQUES' = mat0 ;
  476. ta1 .'BLOCAGES_MECANIQUES' = cl0 ;
  477. ta1 .'CHARGEMENT' = cha0 ;
  478. ta1 .'VARIABLES_INTERNES' = 'TABLE' ;
  479. ta1 .'VARIABLES_INTERNES'. 0 = qq00 ;
  480. ta1 .'TEMPS_CALCULES' = ( 'PROG' 0. 'PAS' dt0 tfin0) ;
  481. *
  482. TMASAU=table;
  483. ta1 . 'MES_SAUVEGARDES'=TMASAU;
  484. TMASAU .'DEFTO'=VRAI;
  485. TMASAU .'DEFIN'=VRAI;
  486. PASAPAS ta1 ;
  487. *
  488. *
  489. * Post-traitement
  490. *-----------------------------------------
  491. *
  492. * Quelques donnees du calcul
  493. *
  494. mat0 = ta1 .'CARACTERISTIQUES' ;
  495. youn1 = 'EXTR' ( 'EXCO' mat0 'YOUN' 'SCAL' ) 'SCAL' 1 1 1 ;
  496. xnu0 = 'EXTR' ( 'EXCO' mat0 'NU' 'SCAL' ) 'SCAL' 1 1 1 ;
  497. G0 = youn1 / ( 2. * ( 1. + xnu0 ) ) ;
  498. XQ0 = 'EXTR' ( 'EXCO' mat0 'Q' 'SCAL' ) 'SCAL' 1 1 1 ;
  499. XFC0 = 'EXTR' ( 'EXCO' mat0 'FC' 'SCAL' ) 'SCAL' 1 1 1 ;
  500. XFU0 = 'EXTR' ( 'EXCO' mat0 'FU' 'SCAL' ) 'SCAL' 1 1 1 ;
  501. XFF0 = 'EXTR' ( 'EXCO' mat0 'FF' 'SCAL' ) 'SCAL' 1 1 1 ;
  502. XSNS0 = 'EXTR' ( 'EXCO' mat0 'SNS' 'SCAL' ) 'SCAL' 1 1 1 ;
  503. XSNE0 = 'EXTR' ( 'EXCO' mat0 'SNE' 'SCAL' ) 'SCAL' 1 1 1 ;
  504. XGIG0 = 'EXTR' ( 'EXCO' mat0 'SIGN' 'SCAL' ) 'SCAL' 1 1 1 ;
  505. XEPS0 = 'EXTR' ( 'EXCO' mat0 'EPSN' 'SCAL' ) 'SCAL' 1 1 1 ;
  506. *
  507. * Post-traitement
  508. *-----------------------------------------
  509. *
  510. sigx1 = 'PROG' 0. ;
  511. sigx2 = 'PROG' 0. ;
  512. depx1 = 'PROG' 0. ;
  513. depx2 = 'PROG' 0. ;
  514. sig_1 = 'PROG' 0. ;
  515. def_1 = 'PROG' 0. ;
  516. bet_1 = 'PROG' fc0 ;
  517. eps_1 = 'PROG' 0. ;
  518. sig_th1 = 'PROG' 0. ;
  519. def_th1 = 'PROG' 0. ;
  520. bet_th1 = 'PROG' fc0 ;
  521. eps_th1 = 'PROG' 0. ;
  522. fra_th1 = 'PROG' fc0;
  523. err_s1 = 'PROG' 0. ;
  524. err_b1 = 'PROG' 0. ;
  525. err_e1 = 'PROG' 0. ;
  526. err_m1 = 'PROG' 0. ;
  527. sig1 = 0. ;
  528. def1 = 0. ;
  529. bet1 = 0. ;
  530. def01 = 0. ;
  531. *
  532. dim0 = 'DIME' ta1 .'TEMPS' - 1 ;
  533. mod0 = ta1 .'MODELE' ;
  534. eps_el0 = sig0 / youn1 ;
  535. mess ' eps_el0 = ' eps_el0 ;
  536. conf0 = 'FORM';
  537. 'REPETER' bloc1 dim0 ;
  538. i1 = &bloc1 ;
  539. temp0 = ta1 .'TEMPS'.i1 ;
  540. mat0 = ta1 .'CARACTERISTIQUES' ;
  541. depl0 = ta1 .'DEPLACEMENTS'.i1 ;
  542. sigm0 = ta1 .'CONTRAINTES'.i1 ;
  543. depeq0 = ta1 .'VARIABLES_INTERNES'.i1 ;
  544. def0 = ta1 .'DEFORMATIONS_INELASTIQUES'.i1 ;
  545. eps0 = ta1 .'DEFORMATIONS'. i1;
  546. sigx0 = 'MAXI' ( 'VMIS' mod0 sigm0 ) ;
  547. sigx00 = 'MINI' ( 'VMIS' mod0 sigm0 ) ;
  548. depx00 = 'MINI' ( 'EXCO' depeq0 'EPSE' 'SCAL' ) ;
  549. epsp0 = 'MAXI' ( 'EXCO' depeq0 'EPSE' 'SCAL' ) ;
  550. bet_0 = 'MAXI' ( 'EXCO' depeq0 'VHWF' 'SCAL' ) ;
  551. sig_00 = 'EXCO' sigm0 'SMXX' 'SCAL' ;
  552. sig_0 = 'EXTR' sig_00 'SCAL' 1 1 1 ;
  553. def_00 = 'EXCO' def0 'EIXX' 'SCAL' ;
  554. def_0 = 'EXTR' def_00 'SCAL' 1 1 1 ;
  555. eps_00 = 'EXCO' depeq0 'EPSM' 'SCAL' ;
  556. eps_0 = 'EXTR' eps_00 'SCAL' 1 1 1 ;
  557. *
  558. * trace de la deformation plastique
  559. *
  560. epp_x = ( 'EXCO' def0 'EIXX' 'SCAL' ) ;
  561. epp_y = ( 'EXCO' def0 'EIYY' 'SCAL' ) ;
  562. epp_z = ( 'EXCO' def0 'EIZZ' 'SCAL' ) ;
  563. trepp = epp_x + epp_y + epp_z ;
  564. trepp0 = 'MAXI' trepp ;
  565. *
  566. sigx1 = sigx1 'ET' ( 'PROG' sigx0 ) ;
  567. sigx2 = sigx2 'ET' ( 'PROG' sigx00 ) ;
  568. depx1 = depx1 'ET' ( 'PROG' epsp0 ) ;
  569. depx2 = depx2 'ET' ( 'PROG' depx00 ) ;
  570. sig_1 = sig_1 'ET' ( 'PROG' sig_0 ) ;
  571. def_1 = def_1 'ET' ( 'PROG' def_0 ) ;
  572. bet_1 = bet_1 'ET' ( 'PROG' bet_0 ) ;
  573. eps_1 = eps_1 'ET' ( 'PROG' eps_0 ) ;
  574. *
  575. * deformations totales
  576. *
  577. eps_x = 'MAXI' ( 'EXCO' eps0 'EPXX' ) ;
  578. eps_y = 'MAXI' ( 'EXCO' eps0 'EPYY' ) ;
  579. eps_z = 'MAXI' ( 'EXCO' eps0 'EPZZ' ) ;
  580. treps0 = eps_x + eps_y + eps_z;
  581. * Cavite calculee par la trace de la deformation
  582. fra0 = (1. - fc0) * ('EXP' (-1. * treps0));
  583. fra0 = 1. - fra0;
  584. 'SI' (fra0 '>' XFF0);
  585. fra0 = XFF0;
  586. 'FINSI';
  587. *
  588. * Calcul de la solution théorique
  589. *
  590. XFC0 = 'EXTR' ( 'EXCO' mat0 'FC' 'SCAL' ) 'SCAL' 1 1 1 ;
  591. XFU0 = 'EXTR' ( 'EXCO' mat0 'FU' 'SCAL' ) 'SCAL' 1 1 1 ;
  592. XFF0 = 'EXTR' ( 'EXCO' mat0 'FF' 'SCAL' ) 'SCAL' 1 1 1 ;
  593. del0 = ( XFU0 - XFC0 ) / ( XFF0 - XFC0 ) ;
  594. *
  595. yl0 = sig0 * ( ( 1. + ( beta0 * eps_0 ) ) ** xm ) ;
  596. 'SI' ( bet_0 '<' XFC0 ) ;
  597. f1 = bet_0 ;
  598. 'SINON' ;
  599. 'SI' (bet_0 '<' (XFF0 - 1.E-6));
  600. f1 = XFC0 + ( del0 * ( bet_0 - XFC0 ) ) ;
  601. 'SINON';
  602. f1 = XFF0;
  603. 'FINSI';
  604. 'FINSI' ;
  605. *gold = 2. * XQ0 * f1 * ( 'COSH' ( sig_0 / ( 2. * yl0 ) ) ) ;
  606. *gold = ( ( XQ0 * f1 ) * ( XQ0 * f1 ) ) - gold ;
  607. *gold = gold + 1. ;
  608. *
  609. sig_th0 def_th0 bet_th0 eps_th0 conv0 =
  610. PLGURS mat0 mod0 eps0 sig1 def1 eps_0 bet1
  611. beta0 sig0 xm fc0 trepp0 ;
  612. *
  613. 'SI' ( conv0 '<' 0. ) ;
  614. 'QUITTER' bloc1 ;
  615. 'FINSI' ;
  616. *
  617. sig1 = sig_th0 ;
  618. def1 = def_th0 ;
  619. bet1 = bet_th0 ;
  620. def01 = eps_th0 ;
  621. *
  622. yl0 = sig0 * ( ( 1. + ( beta0 * eps_th0 ) ) ** xm ) ;
  623. 'SI' ( bet_th0 '<' XFC0 ) ;
  624. f1 = bet_th0 ;
  625. 'SINON' ;
  626. f1 = XFC0 + ( del0 * ( bet_th0 - XFC0 ) ) ;
  627. 'FINSI' ;
  628. *gold = 2. * XQ0 * f1 * ( 'COSH' ( sig_th0 / ( 2. * yl0 ) ) ) ;
  629. *gold = ( ( XQ0 * f1 ) * ( XQ0 * f1 ) ) - gold ;
  630. *gold = gold + 1. ;
  631. *
  632. def_th1 = def_th1 'ET' ( 'PROG' def_th0 ) ;
  633. sig_th1 = sig_th1 'ET' ( 'PROG' sig_th0 ) ;
  634. bet_th1 = bet_th1 'ET' ( 'PROG' bet_th0 ) ;
  635. eps_th1 = eps_th1 'ET' ( 'PROG' eps_th0 ) ;
  636. fra_th1 = fra_th1 'ET' ( 'PROG' fra0);
  637. *
  638. 'SI' graph0 ;
  639. 'MESS' ' deformation totale imposee ' eps_x ;
  640. 'MESS' ' deformation plastique theorique' def_th0 ;
  641. 'MESS' ' deformation plastique calculee ' def_0 ;
  642. 'MESS' ' contrainte théorique ' sig_th0 ;
  643. 'MESS' ' contrainte calculee ' sig_0 ;
  644. 'MESS' ' Cavité théorique ' bet_th0 ;
  645. 'MESS' ' Cavité calcule ' bet_0 ;
  646. 'MESS' ' Cavite calculee par trace(EPS) ' fra0;
  647. 'FINSI' ;
  648. *
  649. * Calcul d'erreur
  650. *
  651. 'SI' ( def_0 '>' ( 1.E-1 * eps_el0 ) ) ;
  652. err_e0 = ( def_th0 - def_0 ) / def_0 ;
  653. err_e0 = 'ABS' err_e0 ;
  654. err_e0 = err_e0 * 100. ;
  655. 'SINON' ;
  656. err_e0 = 0. ;
  657. 'FINSI' ;
  658. 'SI' ( sig_0 '>' 0. ) ;
  659. err_s0 = ( sig_th0 - sig_0 ) / sig_0 ;
  660. err_s0 = 'ABS' err_s0 ;
  661. err_s0 = err_s0 * 100. ;
  662. 'SINON' ;
  663. err_s0 = 0. ;
  664. 'FINSI' ;
  665. 'SI' ( bet_0 '>' 1.E-5 ) ;
  666. err_b0 = ( bet_th0 - bet_0 ) / bet_0 ;
  667. err_b0 = 'ABS' err_b0 ;
  668. err_b0 = err_b0 * 100. ;
  669. 'SINON' ;
  670. err_b0 = 0. ;
  671. 'FINSI' ;
  672. 'SI' ( eps_0 '>' ( 1.E-1 * eps_el0 ) ) ;
  673. err_m0 = ( eps_th0 - eps_0 ) / eps_0 ;
  674. err_m0 = 'ABS' err_m0 ;
  675. err_m0 = err_m0 * 100. ;
  676. 'SINON' ;
  677. err_m0 = 0. ;
  678. 'FINSI' ;
  679. *
  680. * Gestion des erreurs
  681. *
  682. *'SI' ( err_e0 '>' 8.E-2 ) ;
  683. * 'MESS' ' Erreur sur la deformation = ' err_e0;
  684. * errt0 = vrai ;
  685. *'FINSI' ;
  686. 'SI' ( err_s0 '>' 1. ) ;
  687. 'MESS' ' Erreur sur la contrainte = ' err_s0;
  688. errt0 = vrai ;
  689. 'FINSI' ;
  690. 'SI' ( err_b0 '>' 4.E-2 ) ;
  691. 'MESS' ' Erreur sur la cavite = ' err_b0;
  692. errt0 = vrai ;
  693. 'FINSI' ;
  694. *'SI' ( err_m0 '>' 8.E-2 ) ;
  695. * errt0 = vrai ;
  696. *'FINSI' ;
  697. *
  698. err_e1 = err_e1 'ET' ( 'PROG' err_e0 ) ;
  699. err_s1 = err_s1 'ET' ( 'PROG' err_s0 ) ;
  700. err_b1 = err_b1 'ET' ( 'PROG' err_b0 ) ;
  701. err_m1 = err_m1 'ET' ( 'PROG' err_m0 ) ;
  702. *
  703. 'MESS' ' Fin du calcul de restitution, temps ' temp0 ;
  704. 'MESS' ' ' ;
  705. *
  706. 'FIN' bloc1 ;
  707. *
  708. * Trace
  709. *
  710. 'SI' graph0 ;
  711. trac1 = 'EVOL' 'ROUG' 'MANU' 'epsp' depx1 'sigm' sigx1 ;
  712. TAB = 'TABLE' ;
  713. TAB.1 = 'MARQ CARR REGU ' ;
  714. TAB.2 = 'MARQ TRIA ' ;
  715. TAB.'TITRE' = 'TABLE' ;
  716. TAB.'TITRE'. 1 = MOT 'CALC' ;
  717. TAB.'TITRE'. 2 = MOT 'TRACTION' ;
  718. 'DESSIN' ( trac1 'ET' trac00 )
  719. 'TITR' 'Contraintes - Deformation plastique'
  720. 'LEGE' TAB ;
  721. trac2 = 'EVOL' 'ROUG' 'MANU' 'epsp' depx2 'sigm' sigx2 ;
  722. TAB = 'TABLE' ;
  723. TAB.1 = 'MARQ CARR REGU ' ;
  724. TAB.2 = 'MARQ TRIA REGU ' ;
  725. TAB.'TITRE' = 'TABLE' ;
  726. TAB.'TITRE'. 1 = MOT 'MAXI' ;
  727. TAB.'TITRE'. 2 = MOT 'MINI' ;
  728. 'DESSIN' ( trac1 'ET' trac2 )
  729. 'TITR' 'Comparaison mini - maxi de la contrainte equivalente '
  730. 'LEGE' TAB ;
  731. trac3 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'sigm' sig_th1 ;
  732. trac4 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_1 'sigm' sig_1 ;
  733. TAB = 'TABLE' ;
  734. TAB.1 = 'MARQ CARR' ;
  735. TAB.2 = 'MARQ TRIA' ;
  736. TAB.'TITRE' = 'TABLE' ;
  737. TAB.'TITRE'. 1 = MOT 'THEORIE' ;
  738. TAB.'TITRE'. 2 = MOT 'CALCUL' ;
  739. 'DESSIN' ( trac3 'ET' trac4 )
  740. 'TITR' 'Comparaison calcul theorie '
  741. 'LEGE' TAB ;
  742. trac5 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'erreur%' err_s1 ;
  743. trac6 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'erreur%' err_e1 ;
  744. TAB = 'TABLE' ;
  745. TAB.1 = 'MARQ CARR REGU ' ;
  746. TAB.2 = 'MARQ TRIA REGU ' ;
  747. TAB.'TITRE' = 'TABLE' ;
  748. TAB.'TITRE'. 1 = MOT 'CONTRAINTE' ;
  749. TAB.'TITRE'. 2 = MOT 'DEFORMATION' ;
  750. 'DESSIN' ( trac5 'ET' trac6 )
  751. 'TITR' ' Evolution des erreurs '
  752. 'LEGE' TAB ;
  753. trac7 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'erreur%' err_b1 ;
  754. TAB = 'TABLE' ;
  755. TAB.1 = 'MARQ CARR REGU ' ;
  756. TAB.'TITRE' = 'TABLE' ;
  757. TAB.'TITRE'. 1 = MOT 'ENDOMMAGEMENT' ;
  758. 'DESSIN' trac7
  759. 'TITR' ' Evolution des erreurs '
  760. 'LEGE' TAB ;
  761. TAB = 'TABLE' ;
  762. TAB.1 = 'MARQ CARR REGU ' ;
  763. TAB.2 = 'MARQ TRIA ' ;
  764. TAB.'TITRE' = 'TABLE' ;
  765. TAB.'TITRE'. 1 = MOT 'THEORIE' ;
  766. TAB.'TITRE'. 2 = MOT 'TRACTION' ;
  767. 'DESSIN' ( trac3 'ET' trac00 )
  768. 'TITR' 'Comparaison theorie traction '
  769. 'LEGE' TAB ;
  770. *trac10 = 'EVOL' 'ROUG' 'MANU' 'epsp' depx1 'frac' bet_1 ;
  771. trac10 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'frac' bet_1 ;
  772. trac11 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'frac' bet_th1 ;
  773. trac12 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'frac' fra_th1;
  774. TAB = 'TABLE' ;
  775. TAB.1 = 'MARQ CARR REGU ' ;
  776. TAB.2 = 'MARQ TRIA REGU ' ;
  777. TAB.3 = 'MARQ TRIB REGU ' ;
  778. TAB.'TITRE' = 'TABLE' ;
  779. TAB.'TITRE'. 1 = MOT 'CALCUL' ;
  780. TAB.'TITRE'. 2 = MOT 'THEORIE' ;
  781. TAB.'TITRE'. 3 = MOT 'TRACE(EPS)' ;
  782. 'DESSIN' ( trac10 'ET' trac11 'ET' trac12)
  783. 'TITR' 'Comparaison endommagement theorique et calcule '
  784. 'LEGE' TAB ;
  785. TAB = 'TABLE' ;
  786. TAB.1 = 'MARQ CARR REGU ' ;
  787. *TAB.2 = ' ' ;
  788. TAB.'TITRE' = 'TABLE' ;
  789. TAB.'TITRE'. 1 = MOT 'ENDOMMAGEE' ;
  790. *TAB.'TITRE'. 2 = MOT 'TRACTION' ;
  791. 'DESSIN' ( trac4 'ET' trac00 )
  792. 'TITR' 'Comparaison calcul traction '
  793. 'LEGE' TAB ;
  794. 'FINSI' ;
  795. *
  796. 'SI' errt0 ;
  797. 'ERRE' 5 ;
  798. 'SINON' ;
  799. 'ERRE' 0 ;
  800. 'FINSI' ;
  801. *
  802. 'FIN' ;
  803.  
  804.  
  805.  

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