Télécharger fatigue_BL.dgibi

Retour à la liste

Numérotation des lignes :

  1. *==========================================================
  2. *
  3. * Simulation de torsion et/ou traction d'un cylindre
  4. * en fatigue
  5. * stage Bowen LIU (ENSTAPARISTECH) ete 2022
  6. * revu jk148537 automne 2024
  7. *==========================================================
  8.  
  9. opti dime 3 elem cub8 echo 1;
  10. graph = faux ;
  11.  
  12. *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  13. * Fonctions personnalisées
  14. *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  15.  
  16. *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  17. * Indice du point de gauss qui a la valeur maximale pour
  18. * un critère :
  19. * indice = ind_max(mchaml de fatigue,
  20. * critère utilisé
  21. * nombre de points)
  22.  
  23. debp ind_max mc*mchaml critere*mot nbpt*entier ;
  24. * Position actuelle
  25. pos = 1 ;
  26. * Position où la valeur est maximale
  27. pos_max = 1 ;
  28. * Initialisation de la comparaison
  29. val_max = extr mc critere 1 1 1 ;
  30.  
  31. repeter etape nbpt ;
  32. * Valeur actuelle
  33. val = extr mc critere 1 1 pos ;
  34.  
  35. * Mettre à jour l'indice et la valeur si une plus
  36. * grande valeur est trouvée.
  37. si (val >eg val_max);
  38. pos_max = pos ;
  39. val_max = val ;
  40. finsi;
  41.  
  42. pos = pos + 1 ;
  43.  
  44. fin etape ;
  45.  
  46. finp pos_max ;
  47.  
  48.  
  49. *==========================================================
  50. * Construction de l'éprouvette
  51. *==========================================================
  52.  
  53. * Nombre d'éléments
  54. * Nombre circulaire
  55. nc = 20 ;
  56. * nc = 30 ;
  57. nc = 10 ;
  58.  
  59. * Nombre de hauteur
  60. nh = 100 ;
  61. nh = 50 ;
  62.  
  63. * Géométrie (en m)
  64. p0 = 0. 0. 0. ;
  65. p1 = 0.01 0. 0.;
  66. p2 = 0. 0.01 0. ;
  67. p3 = -0.01 0. 0. ;
  68. p4 = 0. -0.01 0. ;
  69. h = 0. 0. 0.2 ;
  70. r1 = 1.d-2 ;
  71.  
  72. * Arc "supérieure" passant par p1 p2 p3
  73. arc1 = cerc nc 'PASS' p1 p2 p3 ;
  74. * Arc "inférieure"
  75. arc2 = cerc nc 'PASS' p3 p4 p1 ;
  76. * Deux arcs pour former un cercle
  77. s = (arc1 et arc2) ;
  78.  
  79. * Section inférieure du cylindre
  80. * Plane : maillage d'une surface en cas de 3D
  81. sec_inf = surf plane s;
  82.  
  83. p00 = point sec_inf proc p0 ;
  84. depl p00 moins p00 ;
  85.  
  86. si (graph) ;
  87. trac sec_inf ;
  88. finsi ;
  89.  
  90. cylindre = sec_inf volu tran h nh;
  91.  
  92. si (graph) ;
  93. trac cach cylindre titr 'Cylindre' ;
  94. finsi ;
  95.  
  96. *==========================================================
  97. * Définition du matériau
  98. *==========================================================
  99.  
  100. * Comportement élastique linéaire isotrope
  101. mo1 = mode cylindre mecanique elastique isotrope ;
  102. ma1 = mate mo1 youn 2.e11 nu 0.3 ;
  103.  
  104. * Limite d'endurance en fatigue selon TD4
  105. * m1 = moins 1
  106. fm1 = 410.e6 ;
  107. *f0 = 376.e6 ;
  108. tm1 = 260.e6 ;
  109.  
  110. *==========================================================
  111. * Définition du chargement
  112. *==========================================================
  113.  
  114. *==========================================================
  115. * Conditions aux limites
  116.  
  117. * Points de la surface supérieure
  118. sec_sup = (cylindre coor 3) point maxi ;
  119.  
  120. * Conditions limites
  121.  
  122. * Mouvement selon uz de la surface inférieure
  123. cl_inf = bloq uz sec_inf ;
  124.  
  125. * Blocage de la surface supérieure
  126. p1h = point sec_sup proc (p1 plus h) ;
  127. p2h = point sec_sup proc (p2 plus h) ;
  128. p3h = point sec_sup proc (p3 plus h) ;
  129. p4h = point sec_sup proc (p4 plus h) ;
  130. cl_sup = bloq depl sec_sup ;
  131. cl_sup = (bloq uz sec_sup) et (bloq (p1h et p3h) uy) et
  132. (bloq (p2h et p4h) ux);
  133.  
  134. *==========================================================
  135. * Liste de chargement
  136.  
  137. * Angle de décalage entre la torsion et la traction
  138. * sig_xy(t) = Ta * cos(t)
  139. * sig_11(t) = Siga * cos(t + decalage)
  140. decalage = 90. ;
  141.  
  142. * Liste d'étape
  143. * Valeur d'abscisse initiale
  144. abs0 = prog -15. ;
  145.  
  146. * Amplitude initiale
  147. amp0 = prog 0. ;
  148.  
  149. * Axe x original (0 15 30 ... 360)
  150. abs1 = prog 0. pas 15. 360. ;
  151.  
  152. * Amplitude originale de la torsion
  153. amp_tor = cos abs1 ;
  154. amp_t2 = abs (amp_tor) ;
  155.  
  156. * Amplitude originale de la traction
  157. amp_tra = cos (abs1 + decalage) ;
  158.  
  159. * Ajout de l'étape initiale
  160. abs1 = abs0 et abs1 ;
  161. amp_tor = amp0 et amp_tor ; amp_t2 = amp0 et amp_t2 ;
  162. amp_tra = amp0 et amp_tra ;
  163.  
  164. *==========================================================
  165. * Torsion
  166.  
  167.  
  168.  
  169. t3 = acos (1. - 2.d-4) ; xt3 = r1 * (1. - (cos t3)) ; yt3 = r1 * (sin t3) ;
  170. mess 't3 : ' t3 ;
  171.  
  172. bl_P1_x = bloq p1 ux ; bl_P1_y = bloq P1 uy ;
  173. bl_P3_x = bloq p3 ux ; bl_P3_y = bloq P3 uy ;
  174.  
  175. ch_P1_x = depi bl_P1_x (xt3 * (-1.)) ; ch_P1_y = depi bl_P1_y yt3 ;
  176. ch_P3_x = depi bl_P3_x xt3 ; ch_P3_y = depi bl_P3_y (yt3 * (-1.)) ;
  177.  
  178. * Evolution des points x axe abs1 et y axe (prog...)
  179. ev_tor = evol manu abs1 amp_tor ;
  180. ev_t2 = evol manu abs1 amp_t2 ;
  181.  
  182. si (graph) ;
  183. titr 'Torsion' ;
  184. dess (ev_tor et (ev_t2 coul jaune)) ;
  185. finsi ;
  186.  
  187.  
  188.  
  189. *==========================================================
  190. * Traction
  191.  
  192. * Traction
  193.  
  194. bl_z = bloq sec_inf uz ;
  195. chp_inf = depi bl_z -2.e-4 ;
  196.  
  197. * Evolution des points x axe abs1 et y axe (prog...)
  198. ev_tra = evol manu abs1 amp_tra ;
  199.  
  200. si (graph) ;
  201. titr 'Traction' ;
  202. dess ev_tra ;
  203. finsi;
  204.  
  205. *==========================================================
  206. * Application du chargement
  207. *==========================================================
  208.  
  209. * Chargement de la torsion : amplitude * variation en temps
  210. ctor = (char dimp ev_t2 (ch_P1_x et ch_P3_x))
  211. et (char dimp ev_tor (ch_P1_y et ch_P3_y)) ;
  212.  
  213.  
  214. * Chargement de la traction
  215. ctra = char dimp ev_tra chp_inf ;
  216.  
  217. * Routine pas a pas
  218. trasi = table 'pasapas' ;
  219. trasi.modele = mo1 ;
  220. trasi.caracteristiques = ma1;
  221. trasi.blocages_mecaniques = cl_sup ;
  222. trasi.blocages_mecaniques = cl_sup et bl_z et bl_P1_x et bl_P3_x et bl_P1_y et bl_P3_y;
  223. trasi.chargement = ctor et ctra ;
  224. trasi.temps_calcules = abs1 ;
  225.  
  226. pasapas trasi ;
  227.  
  228. * Analyser graphiquement les résultats d'une table pasapas
  229. si (graph) ;
  230. titr 'Exploration' ;
  231. explorer trasi ;
  232. finsi;
  233. *==========================================================
  234. * Tableau de dessin pour Sines, Crossland et Deperrois
  235.  
  236. * Chargement en X
  237. tab_dess = 'TABLE' ;
  238. tab_dess.1 = mot 'MARQ CROI' ;
  239.  
  240. *==========================================================
  241. * Extraire l'élément à étudier
  242.  
  243. * Définir un point proche de la surface latérale
  244. mx = 1.1 * (coor 1 p1) ;
  245. mz = (coor 3 h) / 2. ;
  246. m = mx 0. mz ;
  247.  
  248. * Un point sur la surface du cylindre
  249. m_cylin = cylindre poin proc m ;
  250.  
  251. * Elément contenant ce point
  252. el_cylin = cylindre elem contenant m_cylin;
  253.  
  254. * Nombre de point de gauss de cet élément
  255. nbpg = nbno el_cylin ;
  256.  
  257. mo_el = redu mo1 el_cylin ;
  258.  
  259.  
  260. si (graph) ;
  261. titr 'Element choisi' ;
  262. trac el_cylin ;
  263. trac mo_el (redu trasi . contraintes . 2 mo_el) ;
  264. finsi;
  265.  
  266. *==========================================================
  267. * Comparaison avec les critères de fatigue
  268. *==========================================================
  269.  
  270. * Supprimer l'étape initiale
  271. * Nombre d'étapes "effectives" par DIMEsion d'une liste
  272. mess (dime trasi . contraintes) ;
  273. nb = (dime trasi . temps) - 1 ;
  274.  
  275. * Une boucle pour mettre à jour les deux listes
  276. * Position dans la liste destinataire
  277. pos_des = 0 ;
  278.  
  279. repeter etape nb ;
  280. * Position dans la liste originale
  281. pos_ori = pos_des + 1 ;
  282.  
  283. * Décalage d'une étape vers l'arrière
  284. trasi.temps.pos_des = trasi.temps.pos_ori ;
  285. trasi.contraintes.pos_des = redu trasi.contraintes.pos_ori mo_el;
  286.  
  287. * Prochaine position
  288. pos_des = pos_des + 1 ;
  289.  
  290. fin etape ;
  291.  
  292. * CHargement SImple 1
  293. chasi1 = char trasi.temps trasi.contraintes ;
  294. *graph = vrai ;
  295. *==========================================================
  296. * Critère de Dang Van
  297.  
  298. beta_dv = tm1 ;
  299. alpha_dv = (tm1 - (fm1 / 2)) / (fm1 / 3) ;
  300.  
  301. * alpha = alpha_dv beta = beta_dv
  302. cafa_dv = manu chml mo_el 'ADVK' (-1. * alpha_dv) 'BDVK' beta_dv
  303. type 'caracteristiques' stresses ;
  304. * CHargement FAtigue Dang Van
  305. chfa_dv = FATI mo_el chasi1 cafa_dv 'DVKP' ;
  306. * Réduire le résultat au élément à étudier
  307. chfa_dv = redu chfa_dv el_cylin ;
  308. * Indice où la valeur est maximale
  309. ind_dv = ind_max chfa_dv dvkp nbpg;
  310. * VALeur de Dang Van
  311. val_dv = extr chfa_dv dvkp 1 1 ind_dv ;
  312. * TRAJectoir Dang Van
  313. traj_dv = extr chfa_dv 'PTAU' 1 1 ind_dv ;
  314.  
  315. opti echo 0 ;
  316. mess ' ' ;
  317. mess '##################################################' ;
  318. mess '# Critère de Dang Van :' ;
  319. mess '# alpha = ' alpha_dv ' beta = ' beta_dv ;
  320. mess '# Cast3m donne : ' val_dv ;
  321. mess '##################################################' ;
  322. mess ' ' ;
  323. opti echo 1 ;
  324.  
  325. si (graph) ;
  326. titr 'Dang Van' ;
  327. dess traj_dv posx 'EXCE' posy 'EXCE' ;
  328. finsi;
  329.  
  330. * 11/2024 Cast3m donne :
  331. v0_dv = 1.16725E-02 ;
  332. er1 = abs((v0_dv - val_dv)/v0_dv) ;
  333. *==========================================================
  334. * Critère de Papadopoulos
  335.  
  336. beta_pa = tm1 ;
  337. alpha_pa = (tm1 - (fm1 / 1.732)) / (fm1 / 3) ;
  338.  
  339. cafa_pa = manu chml mo_el 'APAP' (-1. * alpha_pa) 'BPAP' beta_pa
  340. type 'caracteristiques' stresses ;
  341.  
  342. chfa_pa = FATI mo_el chasi1 cafa_pa 'PAPA';
  343.  
  344. chfa_pa = redu chfa_pa el_cylin ;
  345.  
  346. ind_pa = ind_max chfa_pa papa nbpg;
  347.  
  348. val_pa = extr chfa_pa papa 1 1 ind_pa ;
  349. traj_pa = extr chfa_pa ptau 1 1 ind_pa ;
  350.  
  351. opti echo 0 ;
  352. mess ' ' ;
  353. mess '##################################################' ;
  354. mess '# Critère de Papadopoulos :' ;
  355. mess '# alpha = ' alpha_pa ' beta = ' beta_pa ;
  356. mess '# Cast3m donne : ' val_pa ;
  357. mess '##################################################' ;
  358. mess ' ' ;
  359. opti echo 1 ;
  360. * 11/2024 v0_pa = 6.26156E-03
  361. si (graph) ;
  362. titr 'Papadopoulos' ;
  363. dess traj_pa posx 'EXCE' posy 'EXCE' ;
  364. finsi;
  365.  
  366. *==========================================================
  367. * Critère de Sines
  368.  
  369. * Détermination de f0 à partir de tm1 et fm1 par Dang Van
  370. f0 = (2 * tm1 * fm1) / (4 * tm1 - fm1) ;
  371.  
  372. beta_si = tm1 ;
  373. alpha_si = (tm1 - (f0 / 1.732)) / (f0 / 3) ;
  374.  
  375. cafa_si = manu chml mo_el 'ASIN' (-1. * alpha_si) 'BSIN' beta_si
  376. type 'caracteristiques' stresses ;
  377.  
  378. chfa_si = FATI mo_el chasi1 cafa_si 'SINE' ;
  379.  
  380. chfa_si = redu chfa_si el_cylin ;
  381.  
  382. ind_si = ind_max chfa_si sine nbpg;
  383.  
  384. val_si = extr chfa_si sine 1 1 ind_si ;
  385. traj_si = extr chfa_si ptau 1 1 ind_si ;
  386.  
  387. si (graph) ;
  388. titr 'Sines' ;
  389. dess traj_si tab_dess posx 'EXCE' posy 'EXCE' ;
  390. finsi ;
  391.  
  392. opti echo 0 ;
  393. mess ' ' ;
  394. mess '##################################################' ;
  395. mess '# Critère de Sines :' ;
  396. mess '# Attention ! ' ;
  397. mess '# - f0 est ici est approximé à partir des ' ;
  398. mess '# coefficients du critère de Dang Van !' ;
  399. mess '# ' ;
  400. mess '# alpha = ' alpha_si ' beta = ' beta_si ;
  401. mess '# Cast3m donne : ' val_si ;
  402. mess '##################################################' ;
  403. mess ' ' ;
  404. opti echo 1 ;
  405. * 11/2024 v0_si = -6.76817E-02
  406. *==========================================================
  407. * Critère de Crossland
  408.  
  409. beta_cr = tm1 ;
  410. alpha_cr = (tm1 - (fm1 / 1.732)) / (fm1 / 3) ;
  411.  
  412. cafa_cr = manu chml mo_el 'ACRO' (-1. * alpha_cr) 'BCRO' beta_cr
  413. type 'caracteristiques' stresses ;
  414.  
  415. chfa_cr = FATI mo_el chasi1 cafa_cr 'CROS' ;
  416.  
  417. chfa_cr = redu chfa_cr el_cylin ;
  418.  
  419. ind_cr = ind_max chfa_cr cros nbpg;
  420.  
  421. val_cr = extr chfa_cr cros 1 1 ind_cr ;
  422. traj_cr = extr chfa_cr ptau 1 1 ind_cr ;
  423.  
  424. si (graph) ;
  425. titr 'Crossland' ;
  426. dess traj_cr tab_dess posx 'EXCE' posy 'EXCE' ;
  427. finsi ;
  428.  
  429. opti echo 0 ;
  430. mess ' ' ;
  431. mess '##################################################' ;
  432. mess '# Critère de Crossland :' ;
  433. mess '# alpha = ' alpha_cr ' beta = ' beta_cr ;
  434. mess '# Cast3m donne : ' val_cr ;
  435. mess '##################################################' ;
  436. mess ' ' ;
  437. opti echo 1 ;
  438. * 11/2024 v0_cr = 6.26156E-03
  439. *==========================================================
  440. * Critère de Deperrois (à vérifier s'il existe)
  441.  
  442. beta_dc = tm1 ;
  443. alpha_dc = (tm1 - (fm1 / 1.732)) / (fm1 / 3) ;
  444.  
  445. cafa_dc = manu chml mo_el 'A_DC' (-1. * alpha_dc) 'B_DC' beta_dc
  446. type 'caracteristiques' stresses ;
  447.  
  448. chfa_dc = FATI mo_el chasi1 cafa_dc 'DC' ;
  449.  
  450. chfa_dc = redu chfa_dc el_cylin ;
  451.  
  452. ind_dc = ind_max chfa_dc dc nbpg;
  453.  
  454. val_dc = extr chfa_dc dc 1 1 ind_dc ;
  455. traj_dc = extr chfa_dc ptau 1 1 ind_dc ;
  456.  
  457. si (graph) ;
  458. titr 'Deperrois' ;
  459. dess traj_dc tab_dess posx 'EXCE' posy 'EXCE' ;
  460. finsi ;
  461.  
  462. opti echo 0 ;
  463. mess ' ' ;
  464. mess '##################################################' ;
  465. mess '# Critère de Deperrois :' ;
  466. mess '# alpha = ' alpha_dc ' beta = ' beta_dc ;
  467. mess '# Cast3m donne : ' val_dc ;
  468. mess '##################################################' ;
  469. mess ' ' ;
  470. opti echo 1 ;
  471.  
  472. * 11/2024 Cast3m donne :
  473. v0_dc = 9.69946E-02 ;
  474. er5 = abs((v0_dc - val_dc)/v0_dc) ;
  475. si ((er1 < 0.05 ) et (er5 < 0.05)) ;
  476. erre 0 ;
  477. sinon ;
  478. erre 5 ;
  479. finsi ;
  480.  
  481.  
  482. *opti donn 5 ;
  483.  
  484.  
  485. fin;
  486.  
  487.  
  488.  
  489.  
  490.  

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