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. * 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 1 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' bleu 'MANU' 'defo' epsp2 'sigm' Y1 ;
  397. lsm1 = y1 enle 1 ;
  398. lep1 = (epsp2 enle 1) - (lsm1 / youn0) ;
  399. evec = evol vert manu eps lep1 sig lsm1 ;
  400. 'SI' graph0 ;
  401. dess (trac0 et evec) titr ' Courbes de traction et d ecrouissage (vert)' ;
  402. 'FINSI' ;
  403. SIG00 = youn0 / 500. ;
  404.  
  405. * Fraction de cavités initiale
  406. inH0 = faux;
  407. fc0 = 0.10 ;
  408. 'SI' inH0;
  409. mod0 = 'MODE' vol1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
  410. 'PLASTIQUE_ENDOM' 'GURSON2' ;
  411. q00 = 'ZERO' mod0 'VARINTER' ;
  412. q01 = 'EXCO' q00 'VHWF';
  413. fc1 = 0.15 ;
  414. xLmin0 = 2.;
  415. xLmax0 = 3.;
  416. v01 = ('MASQ' ('COOR' 1 q01) 'INFERIEUR' xLmin0) * fc0 ;
  417. 'SI' graph0 ;
  418. 'TITR' ' v01';
  419. 'TRAC' v01 mod0 vol1;
  420. 'FINSI';
  421. v00 = 'MASQ' ('COOR' 1 q01) 'SUPERIEUR' xLmin0 ;
  422. v02 = ('MASQ' ('COOR' 1 q01) 'INFERIEUR' xLmax0) * v00 * fc1 ;
  423. 'SI' graph0 ;
  424. 'TITR' ' v02';
  425. 'TRAC' v02 mod0 vol1;
  426. 'FINSI';
  427. v03 = ('MASQ' ('COOR' 1 q01) 'SUPERIEUR' xLmax0) * fc0 ;
  428. 'SI' graph0 ;
  429. 'TITR' ' v03';
  430. 'TRAC' v03 mod0 vol1;
  431. 'FINSI';
  432. q01 = 'NOMC' (v01 + v02 + v03) 'VHWF';
  433. 'SINON';
  434. mod0 = 'MODE' vol1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
  435. 'PLASTIQUE_ENDOM' 'GURSON2' ;
  436. q00 = 'ZERO' mod0 'VARINTER' ;
  437. q01 = 'MANU' 'CHML' mod0 'VHWF' fc0 'TYPE' 'VARINTER' 'STRESSES';
  438. 'FINSI';
  439. 'SI' graph0 ;
  440. 'TITR' ' fraction de cavites initiales';
  441. 'TRAC' q01 mod0 vol1;
  442. 'FINSI';
  443. q02 = 'MANU' 'CHML' mod0 'RHOT' 1. 'TYPE' 'VARINTER' 'STRESSES';
  444. qq00 = q00 + q01 + q02;
  445. * Materiau
  446. mat0 = 'MATE' mod0 'YOUN' youn0 'NU' 0.3
  447. 'ECRO' evec 'Q' 1.5 'FU' ( 1. / 1.5 ) 'FF' 0.25 'FC' 0.15
  448. 'FNS0' 0.00 'FNE0' 0.0 'SNS' ( .1 * SIG00 ) 'SNE' .1
  449. 'SIGN' ( 2.2 * SIG00 ) 'EPSN' .8 'F0' q01 ;
  450. *
  451. * Conditions aux limites
  452. *
  453. cl1 = 'BLOQ' sur1 'UX' ;
  454. cl2 = 'BLOQ' sur2 'UX' ;
  455. cl3 = 'BLOQ' p1 'UX' 'UY' 'UZ' ;
  456. cl4 = 'BLOQ' p5 'UX' 'UY' ;
  457. cl5 = 'BLOQ' p4 'UX' 'UZ' ;
  458. cl0 = cl1 'ET' cl2 'ET' cl3 'ET' cl4 'ET' cl5 ;
  459. *
  460. * Temps du calcul
  461. *
  462. dt0 = 10. ;
  463. tfin0 = 1000. ;
  464. *
  465. * Chargement
  466. *
  467. dep1 = 'DEPI' cl2 depmax ;
  468. ev0 = 'EVOL' 'MANU' temps ( 'PROG' 0. tfin0 ) y ( 'PROG' 0. 1. ) ;
  469. cha0 = 'CHAR' 'DIMP' dep1 ev0 ;
  470. *
  471. *
  472. *
  473. * Resolution par PASAPAS
  474. *---------------------------------------
  475. *
  476. ta1 = 'TABLE' ;
  477. ta1 .'MODELE' = mod0 ;
  478. ta1 .'CARACTERISTIQUES' = mat0 ;
  479. ta1 .'BLOCAGES_MECANIQUES' = cl0 ;
  480. ta1 .'CHARGEMENT' = cha0 ;
  481. ta1 .'VARIABLES_INTERNES' = 'TABLE' ;
  482. ta1 .'VARIABLES_INTERNES'. 0 = qq00 ;
  483. ta1 .'TEMPS_CALCULES' = ( 'PROG' 0. 'PAS' dt0 tfin0) ;
  484. *
  485. TMASAU=table;
  486. ta1 . 'MES_SAUVEGARDES'=TMASAU;
  487. TMASAU .'DEFTO'=VRAI;
  488. TMASAU .'DEFIN'=VRAI;
  489. PASAPAS ta1 ;
  490. *
  491. *
  492. * Post-traitement
  493. *-----------------------------------------
  494. *
  495. * Quelques donnees du calcul
  496. *
  497. mat0 = ta1 .'CARACTERISTIQUES' ;
  498. youn1 = 'EXTR' ( 'EXCO' mat0 'YOUN' 'SCAL' ) 'SCAL' 1 1 1 ;
  499. xnu0 = 'EXTR' ( 'EXCO' mat0 'NU' 'SCAL' ) 'SCAL' 1 1 1 ;
  500. G0 = youn1 / ( 2. * ( 1. + xnu0 ) ) ;
  501. XQ0 = 'EXTR' ( 'EXCO' mat0 'Q' 'SCAL' ) 'SCAL' 1 1 1 ;
  502. XFC0 = 'EXTR' ( 'EXCO' mat0 'FC' 'SCAL' ) 'SCAL' 1 1 1 ;
  503. XFU0 = 'EXTR' ( 'EXCO' mat0 'FU' 'SCAL' ) 'SCAL' 1 1 1 ;
  504. XFF0 = 'EXTR' ( 'EXCO' mat0 'FF' 'SCAL' ) 'SCAL' 1 1 1 ;
  505. XSNS0 = 'EXTR' ( 'EXCO' mat0 'SNS' 'SCAL' ) 'SCAL' 1 1 1 ;
  506. XSNE0 = 'EXTR' ( 'EXCO' mat0 'SNE' 'SCAL' ) 'SCAL' 1 1 1 ;
  507. XGIG0 = 'EXTR' ( 'EXCO' mat0 'SIGN' 'SCAL' ) 'SCAL' 1 1 1 ;
  508. XEPS0 = 'EXTR' ( 'EXCO' mat0 'EPSN' 'SCAL' ) 'SCAL' 1 1 1 ;
  509. *
  510. * Post-traitement
  511. *-----------------------------------------
  512. *
  513. sigx1 = 'PROG' 0. ;
  514. sigx2 = 'PROG' 0. ;
  515. depx1 = 'PROG' 0. ;
  516. depx2 = 'PROG' 0. ;
  517. sig_1 = 'PROG' 0. ;
  518. def_1 = 'PROG' 0. ;
  519. bet_1 = 'PROG' fc0 ;
  520. eps_1 = 'PROG' 0. ;
  521. sig_th1 = 'PROG' 0. ;
  522. def_th1 = 'PROG' 0. ;
  523. bet_th1 = 'PROG' fc0 ;
  524. eps_th1 = 'PROG' 0. ;
  525. fra_th1 = 'PROG' fc0;
  526. err_s1 = 'PROG' 0. ;
  527. err_b1 = 'PROG' 0. ;
  528. err_e1 = 'PROG' 0. ;
  529. err_m1 = 'PROG' 0. ;
  530. sig1 = 0. ;
  531. def1 = 0. ;
  532. bet1 = 0. ;
  533. def01 = 0. ;
  534. *
  535. dim0 = 'DIME' ta1 .'TEMPS' - 1 ;
  536. mod0 = ta1 .'MODELE' ;
  537. eps_el0 = sig0 / youn1 ;
  538. mess ' eps_el0 = ' eps_el0 ;
  539. conf0 = 'FORM';
  540. 'REPETER' bloc1 dim0 ;
  541. i1 = &bloc1 ;
  542. temp0 = ta1 .'TEMPS'.i1 ;
  543. mat0 = ta1 .'CARACTERISTIQUES' ;
  544. depl0 = ta1 .'DEPLACEMENTS'.i1 ;
  545. sigm0 = ta1 .'CONTRAINTES'.i1 ;
  546. depeq0 = ta1 .'VARIABLES_INTERNES'.i1 ;
  547. def0 = ta1 .'DEFORMATIONS_INELASTIQUES'.i1 ;
  548. eps0 = ta1 .'DEFORMATIONS'. i1;
  549. sigx0 = 'MAXI' ( 'VMIS' mod0 sigm0 ) ;
  550. sigx00 = 'MINI' ( 'VMIS' mod0 sigm0 ) ;
  551. depx00 = 'MINI' ( 'EXCO' depeq0 'EPSE' 'SCAL' ) ;
  552. epsp0 = 'MAXI' ( 'EXCO' depeq0 'EPSE' 'SCAL' ) ;
  553. bet_0 = 'MAXI' ( 'EXCO' depeq0 'VHWF' 'SCAL' ) ;
  554. sig_00 = 'EXCO' sigm0 'SMXX' 'SCAL' ;
  555. sig_0 = 'EXTR' sig_00 'SCAL' 1 1 1 ;
  556. def_00 = 'EXCO' def0 'EIXX' 'SCAL' ;
  557. def_0 = 'EXTR' def_00 'SCAL' 1 1 1 ;
  558. eps_00 = 'EXCO' depeq0 'EPSM' 'SCAL' ;
  559. eps_0 = 'EXTR' eps_00 'SCAL' 1 1 1 ;
  560. *
  561. * trace de la deformation plastique
  562. *
  563. epp_x = ( 'EXCO' def0 'EIXX' 'SCAL' ) ;
  564. epp_y = ( 'EXCO' def0 'EIYY' 'SCAL' ) ;
  565. epp_z = ( 'EXCO' def0 'EIZZ' 'SCAL' ) ;
  566. trepp = epp_x + epp_y + epp_z ;
  567. trepp0 = 'MAXI' trepp ;
  568. *
  569. sigx1 = sigx1 'ET' ( 'PROG' sigx0 ) ;
  570. sigx2 = sigx2 'ET' ( 'PROG' sigx00 ) ;
  571. depx1 = depx1 'ET' ( 'PROG' epsp0 ) ;
  572. depx2 = depx2 'ET' ( 'PROG' depx00 ) ;
  573. sig_1 = sig_1 'ET' ( 'PROG' sig_0 ) ;
  574. def_1 = def_1 'ET' ( 'PROG' def_0 ) ;
  575. bet_1 = bet_1 'ET' ( 'PROG' bet_0 ) ;
  576. eps_1 = eps_1 'ET' ( 'PROG' eps_0 ) ;
  577. *
  578. * deformations totales
  579. *
  580. eps_x = 'MAXI' ( 'EXCO' eps0 'EPXX' ) ;
  581. eps_y = 'MAXI' ( 'EXCO' eps0 'EPYY' ) ;
  582. eps_z = 'MAXI' ( 'EXCO' eps0 'EPZZ' ) ;
  583. treps0 = eps_x + eps_y + eps_z;
  584. * Cavite calculee par la trace de la deformation
  585. fra0 = (1. - fc0) * ('EXP' (-1. * treps0));
  586. fra0 = 1. - fra0;
  587. 'SI' (fra0 '>' XFF0);
  588. fra0 = XFF0;
  589. 'FINSI';
  590. *
  591. * Calcul de la solution théorique
  592. *
  593. XFC0 = 'EXTR' ( 'EXCO' mat0 'FC' 'SCAL' ) 'SCAL' 1 1 1 ;
  594. XFU0 = 'EXTR' ( 'EXCO' mat0 'FU' 'SCAL' ) 'SCAL' 1 1 1 ;
  595. XFF0 = 'EXTR' ( 'EXCO' mat0 'FF' 'SCAL' ) 'SCAL' 1 1 1 ;
  596. del0 = ( XFU0 - XFC0 ) / ( XFF0 - XFC0 ) ;
  597. *
  598. yl0 = sig0 * ( ( 1. + ( beta0 * eps_0 ) ) ** xm ) ;
  599. 'SI' ( bet_0 '<' XFC0 ) ;
  600. f1 = bet_0 ;
  601. 'SINON' ;
  602. 'SI' (bet_0 '<' (XFF0 - 1.E-6));
  603. f1 = XFC0 + ( del0 * ( bet_0 - XFC0 ) ) ;
  604. 'SINON';
  605. f1 = XFF0;
  606. 'FINSI';
  607. 'FINSI' ;
  608. *gold = 2. * XQ0 * f1 * ( 'COSH' ( sig_0 / ( 2. * yl0 ) ) ) ;
  609. *gold = ( ( XQ0 * f1 ) * ( XQ0 * f1 ) ) - gold ;
  610. *gold = gold + 1. ;
  611. *
  612. sig_th0 def_th0 bet_th0 eps_th0 conv0 =
  613. PLGURS mat0 mod0 eps0 sig1 def1 eps_0 bet1
  614. beta0 sig0 xm fc0 trepp0 ;
  615. *
  616. 'SI' ( conv0 '<' 0. ) ;
  617. 'QUITTER' bloc1 ;
  618. 'FINSI' ;
  619. *
  620. sig1 = sig_th0 ;
  621. def1 = def_th0 ;
  622. bet1 = bet_th0 ;
  623. def01 = eps_th0 ;
  624. *
  625. yl0 = sig0 * ( ( 1. + ( beta0 * eps_th0 ) ) ** xm ) ;
  626. 'SI' ( bet_th0 '<' XFC0 ) ;
  627. f1 = bet_th0 ;
  628. 'SINON' ;
  629. f1 = XFC0 + ( del0 * ( bet_th0 - XFC0 ) ) ;
  630. 'FINSI' ;
  631. *gold = 2. * XQ0 * f1 * ( 'COSH' ( sig_th0 / ( 2. * yl0 ) ) ) ;
  632. *gold = ( ( XQ0 * f1 ) * ( XQ0 * f1 ) ) - gold ;
  633. *gold = gold + 1. ;
  634. *
  635. def_th1 = def_th1 'ET' ( 'PROG' def_th0 ) ;
  636. sig_th1 = sig_th1 'ET' ( 'PROG' sig_th0 ) ;
  637. bet_th1 = bet_th1 'ET' ( 'PROG' bet_th0 ) ;
  638. eps_th1 = eps_th1 'ET' ( 'PROG' eps_th0 ) ;
  639. fra_th1 = fra_th1 'ET' ( 'PROG' fra0);
  640. *
  641. 'SI' graph0 ;
  642. 'MESS' ' deformation totale imposee ' eps_x ;
  643. 'MESS' ' deformation plastique theorique' def_th0 ;
  644. 'MESS' ' deformation plastique calculee ' def_0 ;
  645. 'MESS' ' contrainte théorique ' sig_th0 ;
  646. 'MESS' ' contrainte calculee ' sig_0 ;
  647. 'MESS' ' Cavité théorique ' bet_th0 ;
  648. 'MESS' ' Cavité calcule ' bet_0 ;
  649. 'MESS' ' Cavite calculee par trace(EPS) ' fra0;
  650. 'FINSI' ;
  651. *
  652. * Calcul d'erreur
  653. *
  654. 'SI' ( def_0 '>' ( 1.E-1 * eps_el0 ) ) ;
  655. err_e0 = ( def_th0 - def_0 ) / def_0 ;
  656. err_e0 = 'ABS' err_e0 ;
  657. err_e0 = err_e0 * 100. ;
  658. 'SINON' ;
  659. err_e0 = 0. ;
  660. 'FINSI' ;
  661. 'SI' ( sig_0 '>' 0. ) ;
  662. err_s0 = ( sig_th0 - sig_0 ) / sig_0 ;
  663. err_s0 = 'ABS' err_s0 ;
  664. err_s0 = err_s0 * 100. ;
  665. 'SINON' ;
  666. err_s0 = 0. ;
  667. 'FINSI' ;
  668. 'SI' ( bet_0 '>' 1.E-5 ) ;
  669. err_b0 = ( bet_th0 - bet_0 ) / bet_0 ;
  670. err_b0 = 'ABS' err_b0 ;
  671. err_b0 = err_b0 * 100. ;
  672. 'SINON' ;
  673. err_b0 = 0. ;
  674. 'FINSI' ;
  675. 'SI' ( eps_0 '>' ( 1.E-1 * eps_el0 ) ) ;
  676. err_m0 = ( eps_th0 - eps_0 ) / eps_0 ;
  677. err_m0 = 'ABS' err_m0 ;
  678. err_m0 = err_m0 * 100. ;
  679. 'SINON' ;
  680. err_m0 = 0. ;
  681. 'FINSI' ;
  682. *
  683. * Gestion des erreurs
  684. *
  685. *'SI' ( err_e0 '>' 8.E-2 ) ;
  686. * 'MESS' ' Erreur sur la deformation = ' err_e0;
  687. * errt0 = vrai ;
  688. *'FINSI' ;
  689. 'SI' ( err_s0 '>' 1. ) ;
  690. 'MESS' ' Erreur sur la contrainte = ' err_s0;
  691. errt0 = vrai ;
  692. 'FINSI' ;
  693. 'SI' ( err_b0 '>' 4.E-2 ) ;
  694. 'MESS' ' Erreur sur la cavite = ' err_b0;
  695. errt0 = vrai ;
  696. 'FINSI' ;
  697. *'SI' ( err_m0 '>' 8.E-2 ) ;
  698. * errt0 = vrai ;
  699. *'FINSI' ;
  700. *
  701. err_e1 = err_e1 'ET' ( 'PROG' err_e0 ) ;
  702. err_s1 = err_s1 'ET' ( 'PROG' err_s0 ) ;
  703. err_b1 = err_b1 'ET' ( 'PROG' err_b0 ) ;
  704. err_m1 = err_m1 'ET' ( 'PROG' err_m0 ) ;
  705. *
  706. 'MESS' ' Fin du calcul de restitution, temps ' temp0 ;
  707. 'MESS' ' ' ;
  708. *
  709. 'FIN' bloc1 ;
  710. *
  711. * Trace
  712. *
  713. 'SI' graph0 ;
  714. trac1 = 'EVOL' 'ROUG' 'MANU' 'epsp' depx1 'sigm' sigx1 ;
  715. TAB = 'TABLE' ;
  716. TAB.1 = 'MARQ CARR REGU ' ;
  717. TAB.2 = 'MARQ TRIA ' ;
  718. TAB.'TITRE' = 'TABLE' ;
  719. TAB.'TITRE'. 1 = MOT 'CALC' ;
  720. TAB.'TITRE'. 2 = MOT 'TRACTION' ;
  721. 'DESSIN' ( trac1 'ET' trac00 )
  722. 'TITR' 'Contraintes - Deformation plastique'
  723. 'LEGE' TAB ;
  724. trac2 = 'EVOL' 'ROUG' 'MANU' 'epsp' depx2 'sigm' sigx2 ;
  725. TAB = 'TABLE' ;
  726. TAB.1 = 'MARQ CARR REGU ' ;
  727. TAB.2 = 'MARQ TRIA REGU ' ;
  728. TAB.'TITRE' = 'TABLE' ;
  729. TAB.'TITRE'. 1 = MOT 'MAXI' ;
  730. TAB.'TITRE'. 2 = MOT 'MINI' ;
  731. 'DESSIN' ( trac1 'ET' trac2 )
  732. 'TITR' 'Comparaison mini - maxi de la contrainte equivalente '
  733. 'LEGE' TAB ;
  734. trac3 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'sigm' sig_th1 ;
  735. trac4 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_1 'sigm' sig_1 ;
  736. TAB = 'TABLE' ;
  737. TAB.1 = 'MARQ CARR' ;
  738. TAB.2 = 'MARQ TRIA' ;
  739. TAB.'TITRE' = 'TABLE' ;
  740. TAB.'TITRE'. 1 = MOT 'THEORIE' ;
  741. TAB.'TITRE'. 2 = MOT 'CALCUL' ;
  742. 'DESSIN' ( trac3 'ET' trac4 )
  743. 'TITR' 'Comparaison calcul theorie '
  744. 'LEGE' TAB ;
  745. trac5 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'erreur%' err_s1 ;
  746. trac6 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'erreur%' err_e1 ;
  747. TAB = 'TABLE' ;
  748. TAB.1 = 'MARQ CARR REGU ' ;
  749. TAB.2 = 'MARQ TRIA REGU ' ;
  750. TAB.'TITRE' = 'TABLE' ;
  751. TAB.'TITRE'. 1 = MOT 'CONTRAINTE' ;
  752. TAB.'TITRE'. 2 = MOT 'DEFORMATION' ;
  753. 'DESSIN' ( trac5 'ET' trac6 )
  754. 'TITR' ' Evolution des erreurs '
  755. 'LEGE' TAB ;
  756. trac7 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'erreur%' err_b1 ;
  757. TAB = 'TABLE' ;
  758. TAB.1 = 'MARQ CARR REGU ' ;
  759. TAB.'TITRE' = 'TABLE' ;
  760. TAB.'TITRE'. 1 = MOT 'ENDOMMAGEMENT' ;
  761. 'DESSIN' trac7
  762. 'TITR' ' Evolution des erreurs '
  763. 'LEGE' TAB ;
  764. TAB = 'TABLE' ;
  765. TAB.1 = 'MARQ CARR REGU ' ;
  766. TAB.2 = 'MARQ TRIA ' ;
  767. TAB.'TITRE' = 'TABLE' ;
  768. TAB.'TITRE'. 1 = MOT 'THEORIE' ;
  769. TAB.'TITRE'. 2 = MOT 'TRACTION' ;
  770. 'DESSIN' ( trac3 'ET' trac00 )
  771. 'TITR' 'Comparaison theorie traction '
  772. 'LEGE' TAB ;
  773. *trac10 = 'EVOL' 'ROUG' 'MANU' 'epsp' depx1 'frac' bet_1 ;
  774. trac10 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'frac' bet_1 ;
  775. trac11 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'frac' bet_th1 ;
  776. trac12 = 'EVOL' 'ROUG' 'MANU' 'epsp' def_th1 'frac' fra_th1;
  777. TAB = 'TABLE' ;
  778. TAB.1 = 'MARQ CARR REGU ' ;
  779. TAB.2 = 'MARQ TRIA REGU ' ;
  780. TAB.3 = 'MARQ TRIB REGU ' ;
  781. TAB.'TITRE' = 'TABLE' ;
  782. TAB.'TITRE'. 1 = MOT 'CALCUL' ;
  783. TAB.'TITRE'. 2 = MOT 'THEORIE' ;
  784. TAB.'TITRE'. 3 = MOT 'TRACE(EPS)' ;
  785. 'DESSIN' ( trac10 'ET' trac11 'ET' trac12)
  786. 'TITR' 'Comparaison endommagement theorique et calcule '
  787. 'LEGE' TAB ;
  788. TAB = 'TABLE' ;
  789. TAB.1 = 'MARQ CARR REGU ' ;
  790. *TAB.2 = ' ' ;
  791. TAB.'TITRE' = 'TABLE' ;
  792. TAB.'TITRE'. 1 = MOT 'ENDOMMAGEE' ;
  793. *TAB.'TITRE'. 2 = MOT 'TRACTION' ;
  794. 'DESSIN' ( trac4 'ET' trac00 )
  795. 'TITR' 'Comparaison calcul traction '
  796. 'LEGE' TAB ;
  797. 'FINSI' ;
  798. *
  799. 'SI' errt0 ;
  800. 'ERRE' 5 ;
  801. 'SINON' ;
  802. 'ERRE' 0 ;
  803. 'FINSI' ;
  804. *
  805. 'FIN' ;
  806.  
  807.  
  808.  
  809.  
  810.  

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