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

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