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

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