Télécharger onera1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : onera1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *
  5. complet = faux;
  6. *
  7. *************************************************
  8. * pour calcul complet mettre complet à : vrai;
  9. ***************************************************
  10. **************************************************
  11. * *
  12. * TEST DE VALIDATION D'UNE LOI DE COMPORTEMENT *
  13. * -------------------------------------------- *
  14. * DE MATERIAU *
  15. * ----------- *
  16. * *
  17. * LOI DE COMPORTEMENT VISCOPLASTIQUE DE: *
  18. * ONERA (CHABOCHE unifie) *
  19. * *
  20. * TEST POUR DES ELEMENTS MASSIFS *
  21. * ------------------------------ *
  22. * *
  23. * MAILLAGE: *
  24. * UNE BARRE DE SECTION CARREE *
  25. * LONGUEUR L=.5 M *
  26. * LARGEUR l=.01 M *
  27. * *
  28. * CHARGEMENT: *
  29. * ESSAI DE TRACTION *
  30. * DEPLACEMENTS IMPOSES *
  31. * *
  32. **************************************************
  33. *
  34. 'DEBPROC' VISOHNO ta1*'TABLE' i0*'ENTIER'
  35. sigx01*'FLOTTANT' eps0*'FLOTTANT'
  36. R01*'FLOTTANT'
  37. epsx01*'FLOTTANT'
  38. Xx11*'FLOTTANT'
  39. Xx21*'FLOTTANT' ;
  40. *
  41. * Résolution des lois viscoplastiques de ONERA dans
  42. * le cas unidirectionnel
  43. *
  44. mat0 = ta1 .'CARACTERISTIQUES' ;
  45. mod0 = ta1 .'MODELE' ;
  46. *q00 = 'MAXI' ( ta1 .'QQ' ) ;
  47. q00 = 0. ;
  48. *
  49. youn0 = 'MAXI' ( 'EXCO' mat0 'YOUN' ) ;
  50. n0 = 'MAXI' ( 'EXCO' mat0 'N' ) ;
  51. kk0 = 'MAXI' ( 'EXCO' mat0 'KK' ) ;
  52. k00 = 'MAXI' ( 'EXCO' mat0 'K0' ) ;
  53. alfk0 = 'MAXI' ( 'EXCO' mat0 'ALFK' ) ;
  54. alfr0 = 'MAXI' ( 'EXCO' mat0 'ALFR' ) ;
  55. alf0 = 'MAXI' ( 'EXCO' mat0 'ALF' ) ;
  56. a10 = 'MAXI' ( 'EXCO' mat0 'A1' ) ;
  57. c10 = 'MAXI' ( 'EXCO' mat0 'C1' ) ;
  58. bet10 = 'MAXI' ( 'EXCO' mat0 'BET1' ) ;
  59. r10 = 'MAXI' ( 'EXCO' mat0 'R1' ) ;
  60. a20 = 'MAXI' ( 'EXCO' mat0 'A2' ) ;
  61. c20 = 'MAXI' ( 'EXCO' mat0 'C2' ) ;
  62. bet20 = 'MAXI' ( 'EXCO' mat0 'BET2' ) ;
  63. r20 = 'MAXI' ( 'EXCO' mat0 'R2' ) ;
  64. phi0 = 'MAXI' ( 'EXCO' mat0 'PHI' ) ;
  65. b0 = 'MAXI' ( 'EXCO' mat0 'B' ) ;
  66. gama0 = 'MAXI' ( 'EXCO' mat0 'GAMA' ) ;
  67. m0 = 'MAXI' ( 'EXCO' mat0 'M' ) ;
  68. qmax0 = 'MAXI' ( 'EXCO' mat0 'QMAX' ) ;
  69. qsta0 = 'MAXI' ( 'EXCO' mat0 'QSTA' ) ;
  70. mu0 = 'MAXI' ( 'EXCO' mat0 'MU' ) ;
  71. eta0 = 'MAXI' ( 'EXCO' mat0 'ETA' ) ;
  72. *exp10= 'MAXI' ( 'EXCO' mat0 'EXP1' ) ;
  73. *exp20= 'MAXI' ( 'EXCO' mat0 'EXP2' ) ;
  74. *
  75. depl0 = ta1 .'DEPLACEMENTS'.( i0 - 1 ) ;
  76. temp1 = ta1 .'TEMPS'.i0 ;
  77. temp0 = ta1 .'TEMPS'.( i0 - 1 ) ;
  78. temp01 = temp0 ;
  79. eps_old = 'MAXI' ( 'EXCO' ( 'EPSI' mod0 depl0 'LINE' ) 'EPXX' ) ;
  80. *
  81. niter0 = 50 ;
  82. dt0 = ( temp1 - temp0 ) / niter0 ;
  83. sigx00 = sigx01 ;
  84. R00 = R01 ;
  85. epsx00 = epsx01 ;
  86. Xx10 = Xx11 ;
  87. Xx20 = Xx21 ;
  88. *
  89. * Incrément de contrainte test
  90. *
  91. spt0 = youn0 * ( eps0 - eps_old ) / ( temp1 - temp0 ) ;
  92. *mess ' sigx00 R00 epsx00 Xx10 Xx20=' sigx00 R00 epsx00 Xx10 Xx20 ;
  93. *
  94. 'REPETER' bloc0 niter0 ;
  95. *
  96. * Initialisation du calcul pour un pas de temps
  97. *
  98. temp01 = temp01 + dt0 ;
  99. depsx9 = 0. ;
  100. dXx8 = 0. ;
  101. dXx9 = 0. ;
  102. dr9 = 0. ;
  103. sigx0 = sigx00 ;
  104. R0 = R00 ;
  105. epsx0 = epsx00 ;
  106. Xx1 = Xx10 ;
  107. Xx2 = Xx20 ;
  108. *
  109. 'REPETER' bloc1 2 ;
  110. i1 = &bloc1 ;
  111. *
  112. * Memoire en déformation inélastique
  113. *
  114. qq = eta0 * epsx0 ;
  115. Q0 = qmax0 -
  116. ( ( qmax0 - q00 ) * ( 'EXP' ( -2. * mu0 * eta0 * epsx0 ) ) ) ;
  117. YX0 = ( 1. - eta0 ) * epsx0 ;
  118. QR = Q0 - ( qsta0 * ( 1. - ( ( ( qmax0 - Q0 ) / qmax0 ) ** 2. ) ) ) ;
  119. RR0 = alfr0 * R0 ;
  120. KR0 = k00 + ( alfk0 * R0 ) ;
  121. * mess ' qq, Q0, YX0, QR, RR0, KR0=' qq Q0 YX0 QR RR0 KR0 ;
  122. *
  123. * Critère
  124. *
  125. Xx0 = Xx1 + Xx2 ;
  126. F0 = sigx0 - ( 3. * Xx0 / 2. ) - RR0 - kk0 ;
  127. *
  128. * Ecrouissages
  129. *
  130. 'SI' ( F0 '>' 0. ) ;
  131. depsx0 = ( F0 / KR0 ) ** ( n0 ) ;
  132. depsx1 = alf0 * ( ( F0 / KR0 ) ** ( n0 + 1. ) ) ;
  133. depsx1 = 'EXP' ( depsx1 ) ;
  134. depsx0 = depsx0 * depsx1 * dt0 ;
  135. 'SINON' ;
  136. depsx0 = 0. ;
  137. 'FINSI' ;
  138. * mess ' depsx0 F0 = ' depsx0 F0 ;
  139. dr0 = b0 * ( Q0 - R0 ) * depsx0 ;
  140. dr1 = gama0 * ( ( 'ABS' ( QR - R0 ) ) ** ( m0 - 1. ) ) ;
  141. dr1 = dr1 * ( QR - R0 ) ;
  142. dr0 = dr0 + ( dr1 * dt0 ) ;
  143. phi = phi0 + ( ( 1. - phi0 ) * ( 'EXP' ( -1. * b0 * epsx0 ) ) ) ;
  144. dXx1 = 2. * a10 * c10 * depsx0 / 3. ;
  145. dXx1 = dXx1 - ( c10 * Xx1 * depsx0 * phi ) ;
  146. dXx1 = dXx1 -
  147. ( ( ( 3. * Xx1 / ( 2. * bet10 ) ) ** ( r10 - 1. ) ) * Xx1 * dt0 ) ;
  148. dXx2 = 2. * a20 * c20 * depsx0 / 3. ;
  149. dXx2 = dXx2 - ( c20 * Xx2 * depsx0 * phi ) ;
  150. dXx2 = dXx2 -
  151. ( ( ( 3. * Xx2 / ( 2. * bet20 ) ) ** ( r20 - 1. ) ) * Xx2 * dt0 ) ;
  152. * mess ' dr0 phi dXx1 dXx2 i1 =' dr0 phi dXx1 dXx2 i1 ;
  153. *
  154. * Somme ( Runge-Kutta )
  155. *
  156. dr0 = ( dr0 + dr9 ) / i1 ;
  157. depsx0 = ( depsx0 + depsx9 ) / i1 ;
  158. dXx1 = ( dXx1 + dXx8 ) / i1 ;
  159. dXx2 = ( dXx2 + dXx9 ) / i1 ;
  160. dr9 = dr0 ;
  161. depsx9 = depsx0 ;
  162. dXx8 = dXx1 ;
  163. dXx9 = dXx2 ;
  164. * mess ' dr0 depsx0 dXx1 dXx2 i1 =' dr0 depsx0 dXx1 dXx2 i1 ;
  165. *
  166. * Calcul des grandeurs actuelles
  167. *
  168. R0 = R00 + dr0 ;
  169. epsx0 = epsx00 + depsx0 ;
  170. Xx1 = Xx10 + dXx1 ;
  171. Xx2 = Xx20 + dXx2 ;
  172. sigx0 = sigx00 + ( dt0 * spt0 )
  173. - ( youn0 * depsx0 ) ;
  174. * mess ' R00 epsx00 Xx10 Xx20 sigx00 =' R00 epsx00 Xx10 Xx20 sigx00 ;
  175. * mess ' R0 epsx0 Xx1 Xx2 sigx0 =' R0 epsx0 Xx1 Xx2 sigx0 ;
  176. *
  177. 'FIN' bloc1 ;
  178. *
  179. * Mise à jour des valeurs
  180. *
  181. R00 = R0 ;
  182. epsx00 = epsx0 ;
  183. Xx10 = Xx1 ;
  184. Xx20 = Xx2 ;
  185. sigx00 = sigx0 ;
  186. *
  187. 'FIN' bloc0 ;
  188. *
  189. 'MESS' ' Temps final ' temp01 temp1 ;
  190. *
  191. 'FINP' sigx00 R00
  192. epsx0 Xx10 Xx20 ;
  193. *
  194. *---------------------------------------------------------------
  195. opti dime 3 elem cub8 ;
  196. *
  197. *
  198. * Maillage
  199. *
  200. l1 = .5 ;
  201. l2 = .01 ;
  202. l3 = .01 ;
  203. n1 = 50 ;
  204. n2 = 1 ;
  205. n3 = 1 ;
  206. p1 = 0. 0. 0. ;
  207. p2 = l1 0. 0. ;
  208. p3 = l1 l2 0. ;
  209. p4 = 0. l2 0. ;
  210. p5 = 0. 0. l3 ;
  211. p6 = l1 0. l3 ;
  212. p7 = l1 l2 l3 ;
  213. p8 = 0. l2 l3 ;
  214. d1 = d p1 n3 p5 ;
  215. d2 = d p5 n2 p8 ;
  216. d3 = d p8 n3 p4 ;
  217. d4 = d p4 n2 p1 ;
  218. sur1 = 'DALL' d1 d2 d3 d4 ;
  219. d5 = d p2 n3 p6 ;
  220. d6 = d p6 n2 p7 ;
  221. d7 = d p7 n3 p3 ;
  222. d8 = d p3 n2 p2 ;
  223. sur2 = 'DALL' d5 d6 d7 d8 ;
  224. vol1 = sur1 'VOLU' n1 sur2 ;
  225. *
  226. * Modele de calcul
  227. *
  228. mod0 = 'MODE' vol1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
  229. 'VISCOPLASTIQUE' 'ONERA' ;
  230. mat0 = 'MATE' mod0 'YOUN' 7.34E10 'NU' 0.33
  231. 'RHO' 7.8E3 'ALPHA' 1.E-5 'N' 24
  232. 'KK' 10.E6 'K0' 116.E6 'ALFK' 1.5 'ALFR' 0.35 'ALF' 2.E6
  233. 'A1' 67.5E6 'C1' 1300 'BET1' 4807.E6 'R1' 4
  234. 'A2' 80.E6 'C2' 45 'BET2' 58480.E6 'R2' 4 'PHI' 1.
  235. 'B' 12 'GAMA' 2.E-7 'M' 2
  236. 'QMAX' 455.E6 'QSTA' 200.E6 'MU' 19 'ETA' 0.06 ;
  237. * 'EXP1' 2. 'EXP2' 2. ;
  238. *q00 = 'MANU' 'CHML' vol1 'QQ' 30.E6 ;
  239. *
  240. * Conditions aux limites
  241. *
  242. cl1 = 'BLOQ' sur1 'UX' ;
  243. cl2 = 'BLOQ' sur2 'UX' ;
  244. cl3 = 'BLOQ' p1 'UX' 'UY' 'UZ' ;
  245. cl4 = 'BLOQ' p5 'UX' 'UY' ;
  246. cl0 = cl1 'ET' cl2 'ET' cl3 'ET' cl4 ;
  247. *
  248. * Chargement
  249. *
  250. dep1 = 'DEPI' cl2 .02 ;
  251. ev0 = 'EVOL' 'MANU' temps ( 'PROG' 0. 10000. ) y ( 'PROG' 0. 1. ) ;
  252. cha0 = 'CHAR' 'DIMP' dep1 ev0 ;
  253. *
  254. * Temps du calcul
  255. *
  256. dt0 = 50. ;
  257. si complet;
  258. tfin0 = 1000. ;
  259. sinon;
  260. tfin0 = 300 ;
  261. finsi;
  262. *
  263. *
  264. * Resolution par PASAPAS
  265. *---------------------------------------
  266. *
  267. ta1 = 'TABLE' ;
  268. *ta1 .'QQ' = 'TABLE' ;
  269. ta1 .'MODELE' = mod0 ;
  270. ta1 .'CARACTERISTIQUES' = mat0 ;
  271. ta1 .'BLOCAGES_MECANIQUES' = cl0 ;
  272. ta1 .'CHARGEMENT' = cha0 ;
  273. *ta1 .'QQ'. 0 = q00 ;
  274. ta1 .'TEMPS_CALCULES' = 'PROG' 0. 'PAS' dt0 tfin0 ;
  275. *
  276. TMASAU=table;
  277. ta1 . 'MES_SAUVEGARDES'=TMASAU;
  278. TMASAU .'DEFTO'=VRAI;
  279. TMASAU .'DEFIN'=VRAI;
  280. ta1 .'HYPOTHESE_DEFORMATIONS'='LINEAIRE' ;
  281. PASAPAS ta1 ;
  282. *
  283. mat0 = ta1 .'CARACTERISTIQUES' ;
  284. mod0 = ta1 .'MODELE' ;
  285. *q00 = ta1 .'QQ' ;
  286. q00 = 0. ;
  287. *
  288. n0 = 'MAXI' ( 'EXCO' mat0 'N' ) ;
  289. kk0 = 'MAXI' ( 'EXCO' mat0 'KK' ) ;
  290. k00 = 'MAXI' ( 'EXCO' mat0 'K0' ) ;
  291. alfk0 = 'MAXI' ( 'EXCO' mat0 'ALFK' ) ;
  292. alfr0 = 'MAXI' ( 'EXCO' mat0 'ALFR' ) ;
  293. alf0 = 'MAXI' ( 'EXCO' mat0 'ALF' ) ;
  294. a10 = 'MAXI' ( 'EXCO' mat0 'A1' ) ;
  295. c10 = 'MAXI' ( 'EXCO' mat0 'C1' ) ;
  296. bet10 = 'MAXI' ( 'EXCO' mat0 'BET1' ) ;
  297. r10 = 'MAXI' ( 'EXCO' mat0 'R1' ) ;
  298. a20 = 'MAXI' ( 'EXCO' mat0 'A2' ) ;
  299. c20 = 'MAXI' ( 'EXCO' mat0 'C2' ) ;
  300. bet20 = 'MAXI' ( 'EXCO' mat0 'BET2' ) ;
  301. r20 = 'MAXI' ( 'EXCO' mat0 'R2' ) ;
  302. phi0 = 'MAXI' ( 'EXCO' mat0 'PHI' ) ;
  303. b0 = 'MAXI' ( 'EXCO' mat0 'B' ) ;
  304. gama0 = 'MAXI' ( 'EXCO' mat0 'GAMA' ) ;
  305. m0 = 'MAXI' ( 'EXCO' mat0 'M' ) ;
  306. qmax0 = 'MAXI' ( 'EXCO' mat0 'QMAX' ) ;
  307. qsta0 = 'MAXI' ( 'EXCO' mat0 'QSTA' ) ;
  308. mu0 = 'MAXI' ( 'EXCO' mat0 'MU' ) ;
  309. eta0 = 'MAXI' ( 'EXCO' mat0 'ETA' ) ;
  310. *exp10= 'MAXI' ( 'EXCO' mat0 'EXP1' ) ;
  311. *exp20= 'MAXI' ( 'EXCO' mat0 'EXP2' ) ;
  312. *
  313. dim0 = 'DIME' ta1 .'TEMPS' ;
  314. *
  315. sig_th0 = 0. ;
  316. r_th0 = 0. ;
  317. eps_th0 = 0. ;
  318. xx_th10 = 0. ;
  319. xx_th20 = 0. ;
  320. sig_th1 = 'PROG' 0.; r_th1 = 'PROG' 0. ;eps_th1 = 'PROG' 0.;
  321. si ( non complet);
  322. sig_th1 = 'PROG' 0.
  323. 1.46800E+07 2.93600E+07 4.40400E+07 5.87196E+07 7.30534E+07
  324. 8.18875E+07 8.94690E+07 9.66012E+07 1.03261E+08
  325. 1.09429E+08 1.15090E+08 1.20240E+08 1.24881E+08 1.29026E+08
  326. 1.32697E+08 1.35925E+08 1.38748E+08 1.41209E+08 1.43350E+08
  327. 1.45216E+08;
  328. r_th1 = 'PROG' 0.
  329. -1.97215E-20 -3.94430E-20 7.95615E-15 5.98126E-07 .42434
  330. 374.04 2920.8 8804.9 17897.
  331. 29519. 43036. 58025. 74244. 91553.
  332. 1.09868E+05 1.29116E+05 1.49232E+05 1.70143E+05 1.91771E+05
  333. 2.14038E+05;
  334. eps_th1 = 'PROG' 0.
  335. 2.62535E-34 5.81971E-19 7.73859E-13 6.03725E-09 4.72243E-06
  336. 8.43662E-05 1.81076E-04 2.83907E-04 3.93175E-04
  337. 5.09147E-04 6.32012E-04 7.61849E-04 8.98620E-04 1.04215E-03
  338. 1.19214E-03 1.34816E-03 1.50969E-03 1.67618E-03 1.84700E-03
  339. 2.02158E-03;
  340. finsi;
  341. *
  342. 'REPETER' bloc0 ( dim0 - 1 ) ;
  343. i0 = &bloc0 ;
  344. depl0 = ta1 .'DEPLACEMENTS'.i0 ;
  345. sigm0 = ta1 .'CONTRAINTES'.i0 ;
  346. var0 = ta1 .'VARIABLES_INTERNES'.i0 ;
  347. def0 = ta1 .'DEFORMATIONS_INELASTIQUES'.i0 ;
  348. temp0 = ta1 .'TEMPS'.i0 ;
  349. eps0 = 'MAXI' ( 'EXCO' ( 'EPSI' mod0 depl0 'LINE' ) 'EPXX' ) ;
  350. *
  351. * Contraintes et déformations inélastiques équivalentes
  352. *
  353. vm0 = 'MAXI' ( 'VMIS' sigm0 mod0 ) ;
  354. epsp0 = 'MAXI' ( 'EXCO' var0 'EPSE' ) ;
  355. *
  356. * Déformation totale et inélastique suivant x
  357. *
  358. epst0 = 'MAXI' ( 'EXCO' ( 'EPSI' depl0 mod0 'LINE' ) 'EPXX' ) ;
  359. epsx0 = 'MAXI' ( 'EXCO' def0 'EIXX' ) ;
  360. *
  361. * Contraintes suivant x
  362. *
  363. sigx0 = 'MAXI' ( 'EXCO' sigm0 'SMXX' ) ;
  364. *
  365. * Calcul theorique
  366. *
  367. si complet;
  368. sig_th00 r_th00 eps_th00 xx_th1 xx_th2 = VISOHNO ta1 i0 sig_th0
  369. eps0 r_th0 eps_th0 xx_th10 xx_th20 ;
  370. *
  371. sig_th0 = sig_th00 ;
  372. r_th0 = r_th00 ;
  373. eps_th0 = eps_th00 ;
  374. xx_th10 = xx_th1 ;
  375. xx_th20 = xx_th2 ;
  376. sig_th1 = sig_th1 'ET' ( 'PROG' sig_th0 ) ;
  377. r_th1 = r_th1 'ET' ( 'PROG' r_th0 ) ;
  378. eps_th1 = eps_th1 'ET' ( 'PROG' eps_th0 ) ;
  379. sinon;
  380. sig_th00 = extr sig_th1 ( i0 + 1);
  381. r_th00 = extr r_th1 ( i0 + 1);
  382. eps_th00= extr eps_th1 ( i0 + 1);
  383. finsi;
  384. *
  385. * Calcul d'erreur
  386. *
  387. 'SI' ( epsx0 '<' ( 1.E-2 * eps0) ) ;
  388. err_e0 = 0. ;
  389. 'SINON' ;
  390. err_e0 = ( 'ABS' ( eps_th00 - epsx0 ) ) / epsx0 ;
  391. err_e0 = err_e0 * 100. ;
  392. 'FINSI' ;
  393. 'SI' ( sigx0 'EGA' 0. ) ;
  394. err_s0 = 0. ;
  395. 'SINON' ;
  396. err_s0 = ( 'ABS' ( sig_th00 - sigx0 ) ) / sigx0 ;
  397. err_s0 = err_s0 * 100. ;
  398. 'FINSI' ;
  399. *
  400. 'SI' ( (err_e0 '>' 1.E-1) 'OU' (err_s0 '>' 1.E-1 ) ) ;
  401. prob0 = vrai ;
  402. 'SINON' ;
  403. prob0 = faux ;
  404. 'FINSI' ;
  405. 'MESS' ' Fin du calcul de restitution au temps:' temp0 ;
  406. *
  407. 'FIN' bloc0 ;
  408. *
  409. 'SI' ( prob0 'EGA' vrai ) ;
  410. 'ERRE' 5 ;
  411. 'SINON' ;
  412. 'ERRE' 0 ;
  413. 'FINSI' ;
  414. *
  415. 'FIN' ;
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  

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