Full text
Proyecto Fin de Carrera Ingeniería de Telecomunicación Formato de Publicación de la Escuela Técnica Superior de Ingeniería Autor: F. Javier Payán Somet Tutor: Juan José Murillo Fuentes Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2013 Trabajo Fin de Máster Máster en Ingeniería Aeronáutica Implementación de un modelo de predicción de vida a fatiga en código libre Autor: Alejandro Quirós Rodríguez Tutor: Carlos Navarro Pintado Dpto. Ingeniería Mecánica y Fabricación Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019
Trabajo Fin de Máster Máster en Ingeniería Aeronáutica Implementación de un modelo de predicción de vida a fatiga en código libre Autor: Alejandro Quirós Rodríguez Tutor: Carlos Navarro Pintado Catedrático Dpto. Ingeniería Mecánica y Fabricación Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019
Trabajo Fin de Máster: Implementación de un modelo de predicción de vida a fatiga en código libre Autor: Alejandro Quirós Rodríguez Tutor: Carlos Navarro Pintado El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificación de: El Secretario del Tribunal Fecha:
Agradecimientos En primer lugar, agradecer a Carlos Navarro su ayuda para que este trabajo sea una realidad. También, agradecer a mi familia y amigos su apoyo durante estos dos años en Sevilla. I
Resumen La fatiga juega un papel relevante en muchos sectores industriales; especialmente en el aeronáutico, en el que ha sido causante de graves problemas cuando los diseños no han sido adecuados. Se produce en componentes sometidos a cargas fluctuantes en el tiempo, generándose grietas que pueden propagarse y llegar a producir el fallo de la pieza. Se puede ver perjudicada por la presencia de ciertos condicionantes que pueden facilitar su aparición y propagación, como pueden ser la entallas, que actúan como concentradores de tensiones. La fatiga presenta una alta dependencia, sobre todo en la fase inicial de la grieta, de la microestructura del material. Esto conlleva que el fallo en dos piezas producidas de la misma forma y con el mismo material, sometidas a los mismo esfuerzos se produzca en momentos diferentes. Por lo tanto, resulta imposible predecir con exactitud cuando fallará una pieza ya que la propia física del problema lo impide. Pese a esta dispersión de los resultados, es de vital importancia desarrollar modelos que tengan la capacidad de predecir cuando se va a producir el fallo; lo que permite el diseño de componentes mejores. En este trabajo se ha implementado un modelo de fatiga en Python que permite estimar la vida del componente, la duración de las distintas fases de vida de la grieta, cuando se produce la transición entre las fases y cual es la evolución de la longitud de la grieta en función de los ciclos de carga. Se ha organizado de la siguiente manera; en el Capítulo 2 se presenta el modelo de vida a fatiga en el que se ha basado este trabajo, mostrándose las distintas ecuaciones que serán necesarias para realizar los cálculos. En el Capítulo 3 se presentan los datos experimentales utilizados para realizar las simulaciones y validar el código, así como las propiedades del material empleado. En el Capítulo 4, en primer lugar, se detalla el funcionamiento general del código implementado; para posteriormente introducirse en las funciones de cada script para explicar su utilidad. Por último, en el Capítulo 5, se muestran los resultados obtenidos para la vida estimada y la evolución de la longitud de la grieta y se comparan con los resultados mostrados en el Capítulo 3. III
XÍndice de Figuras 5.19 Evolución de la tensión σxpara la combinación de cargas σ=150|N=1543|Q= 4217 sin tratamiento superficial 55 5.20 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=4217 sin tratamiento superficial 56 5.21 Evolución de la tensión σxpara la combinación de cargas σ=150|N=1543|Q= 5429 sin tratamiento superficial 56 5.22 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=5429 sin tratamiento superficial 56 5.23 Evolución de la tensión σxpara la combinación de cargas σ=150|N=2113|Q= 5429 sin tratamiento superficial 57 5.24 Curvas de vida estimada para la combinación de cargas σ=150|N=2113|Q=5429 sin tratamiento superficial 57 5.25 Evolución de la tensión σxpara la combinación de cargas σ=175|N=1543|Q= 5429 sin tratamiento superficial 57 5.26 Curvas de vida estimada para la combinación de cargas σ=175|N=1543|Q=5429 sin tratamiento superficial 58 5.27 Evolución de la tensión σxpara la combinación de cargas σ=70|N=971|Q=6629 con shot peening 58 5.28 Curvas de vida estimada para la combinación de cargas σ=70|N=971|Q=6629 con shot peening 58 5.29 Evolución de la tensión σxpara la combinación de cargas σ=110|N=1543|Q= 5429 con shot peening 59 5.30 Curvas de vida estimada para la combinación de cargas σ=110|N=1543|Q=5429 con shot peening 59 5.31 Evolución de la tensión σxpara la combinación de cargas σ=150|N=1543|Q= 3006 con shot peening 59 5.32 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=3006 con shot peening 60 5.33 Evolución de la tensión σxpara la combinación de cargas σ=150|N=1543|Q= 4217 con shot peening 60 5.34 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=4217 con shot peening 60 5.35 Evolución de la tensión σxpara la combinación de cargas σ=150|N=1543|Q= 5429 con shot peening 61 5.36 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=5429 con shot peening 61 5.37 Evolución de la tensión σxpara la combinación de cargas σ=150|N=2113|Q= 5429 con shot peening 61 5.38 Curvas de vida estimada para la combinación de cargas σ=150|N=2113|Q=5429 con shot peening 62 5.39 Evolución de la tensión σxpara la combinación de cargas σ=175|N=1543|Q= 5429 con shot peening 62 5.40 Curvas de vida estimada para la combinación de cargas σ=175|N=1543|Q=5429 con shot peening 62 5.41 Evolución de la tensión σxpara la combinación de cargas σ=70|N=971|Q=6629 con electroerosión 63 5.42 Curvas de vida estimada para la combinación de cargas σ=70|N=971|Q=6629 con electroerosión 63 5.43 Evolución de la tensión σxpara la combinación de cargas σ=150|N=2113|Q= 3006 con electroerosión 63
Índice de Figuras XI 5.44 Curvas de vida estimada para la combinación de cargas σ=150|N=2113|Q=3006 con electroerosión 64 5.45 Evolución de la tensión σxpara la combinación de cargas σ=150|N=2113|Q= 5429 con electroerosión 64 5.46 Curvas de vida estimada para la combinación de cargas σ=150|N=2113|Q=5429 con electroerosión 64 5.47 Evolución de la tensión σxpara la combinación de cargas σ=175|N=971|Q=3006 con electroerosión 65 5.48 Curvas de vida estimada para la combinación de cargas σ=175|N=971|Q=3006 con electroerosión 65 5.49 Evolución de la tensión σxpara la combinación de cargas σ=175|N=971|Q=5429 con electroerosión 65 5.50 Curvas de vida estimada para la combinación de cargas σ=175|N=971|Q=5429 con electroerosión 66 5.51 Evolución de la tensión σxpara la combinación de cargas σ=175|N=2113|Q= 3006 con electroerosión 66 5.52 Curvas de vida estimada para la combinación de cargas σ=175|N=2113|Q=3006 con electroerosión 66 5.53 Evolución de la tensión σxpara la combinación de cargas σ=175|N=2113|Q= 5429 con electroerosión 67 5.54 Curvas de vida estimada para la combinación de cargas σ=175|N=2113|Q=5429 con electroerosión 67 A.1 Evolución de la vida de iniciación, propagación y total para la combinación σ=70|N= 971|Q=6629 sin tratamiento superficial 71 A.2 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 971|Q=5429 sin tratamiento superficial 72 A.3 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 1257|Q=5429 sin tratamiento superficial 72 A.4 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 1543|Q=4217 sin tratamiento superficial 73 A.5 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 1543|Q=5429 sin tratamiento superficial 73 A.6 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 971|Q=3006 sin tratamiento superficial 74 A.7 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 971|Q=4217 sin tratamiento superficial 74 A.8 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 971|Q=5429 sin tratamiento superficial 75 A.9 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 1543|Q=3006 sin tratamiento superficial 75 A.10 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 1543|Q=4217 sin tratamiento superficial 76 A.11 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 1543|Q=5429 sin tratamiento superficial 76 A.12 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 2113|Q=3006 sin tratamiento superficial 77 A.13 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 2113|Q=4217 sin tratamiento superficial 77
XII Índice de Figuras A.14 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 2113|Q=5429 sin tratamiento superficial 78 A.15 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 971|Q=3006 sin tratamiento superficial 78 A.16 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 971|Q=4217 sin tratamiento superficial 79 A.17 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 971|Q=5429 sin tratamiento superficial 79 A.18 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 1543|Q=3006 sin tratamiento superficial 80 A.19 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 1543|Q=4217 sin tratamiento superficial 80 A.20 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 1543|Q=5429 sin tratamiento superficial 81 A.21 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 2113|Q=3006 sin tratamiento superficial 81 A.22 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 2113|Q=4217 sin tratamiento superficial 82 A.23 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 2113|Q=5429 sin tratamiento superficial 82 A.24 Evolución de la vida de iniciación, propagación y total para la combinación σ=70|N= 971|Q=6629 con shot peening 83 A.25 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 971|Q=5429 con shot peening 83 A.26 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 1257|Q=5429 con shot peening 84 A.27 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 1543|Q=4217 con shot peening 84 A.28 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 1543|Q=5429 con shot peening 85 A.29 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 971|Q=3006 con shot peening 85 A.30 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 971|Q=4217 con shot peening 86 A.31 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 971|Q=5429 con shot peening 86 A.32 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 1543|Q=3006 con shot peening 87 A.33 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 1543|Q=4217 con shot peening 87 A.34 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 1543|Q=5429 con shot peening 88 A.35 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 2113|Q=3006 con shot peening 88 A.36 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 2113|Q=4217 con shot peening 89 A.37 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 2113|Q=5429 con shot peening 89 A.38 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 971|Q=3006 con shot peening 90
Índice de Figuras XIII A.39 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 971|Q=4217 con shot peening 90 A.40 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 971|Q=5429 con shot peening 91 A.41 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 1543|Q=3006 con shot peening 91 A.42 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 1543|Q=4217 con shot peening 92 A.43 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 1543|Q=5429 con shot peening 92 A.44 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 2113|Q=3006 con shot peening 93 A.45 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 2113|Q=4217 con shot peening 93 A.46 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 2113|Q=5429 con shot peening 94 A.47 Evolución de la vida de iniciación, propagación y total para la combinación σ=70|N= 971|Q=6629 con electroerosión 94 A.48 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 2113|Q=3006 con electroerosión 95 A.49 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 2113|Q=5429 con electroerosión 95 A.50 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 971|Q=3006 con electroerosión 96 A.51 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 971|Q=5429 con electroerosión 96 A.52 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 2113|Q=3006 con electroerosión 97 A.53 Evolución de la vida de iniciación, propagación y total para la combinación σ=175|N= 2113|Q=5429 con electroerosión 97
Índice de Tablas 3.1 Vidas a fatiga experimentales [9] 10 3.2 Longitudes de grieta experimentales [9] 11 3.3 Propiedades aluminio 7075-T651 [10] 11 5.1 ¯x,ςxympara los grupos de ensayos juntos 47 5.2 ¯x,ςxympara cada grupo de ensayos por separado 48 XV
Índice de Códigos 4.1 Módulos importados en propagacion.py 14 4.2 Código de la función constantes_material() 14 4.3 Código de la función K_I() 16 4.4 Código de la función Phi() 17 4.5 Código de la función fase_propagacion() 18 4.6 Módulos importados en iniciacion.py 20 4.7 Código de la función ciclos_totales() 21 4.8 Código de la función fase_iniciacion() 22 4.9 Código de la función curvas_iniciacion() 23 4.10 Módulos importados en principal.py 25 4.11 Código de la función lectura_datos() 26 4.12 Código de la función indice_a() 27 4.13 Código de la función parametro() 27 4.14 Código de la función principal() 31 4.15 Módulos importados en graficas.py 36 4.16 Código de la función grafs_globales() 36 4.17 Código de la función error() 39 4.18 Código de la función grafs_long_grietas() 42 4.19 Código de la función grafs_vida_est() 43 B.1 Ejecución del script propagacion.py 99 B.2 Ejecución del script iniciacion.py 99 B.3 Ejecución del script principal.py 100 B.4 Ejecución del script graficas.py 100 XVII
1 Introducción La fatiga es un proceso de daño de material. Se produce cuando una pieza es sometida a una carga fluctuante en el tiempo y se caracteriza por la aparición de grietas que crecen desde la superficie hacia el interior. La importancia del estudio de la fatiga radica en el hecho de que la carga a la que se produce la rotura es inferior al límite de rotura del material. La fatiga por fretting es un caso especial de fatiga, en el que la pieza es sometida a una carga de contacto. Estas cargas de contacto producen un efecto similar al que provocaría un concentrador de tensiones, lo que se traduce en una reducción de la vida de la pieza. En el fretting, las piezas están sometidas a una carga de contacto normal N y una carga de contacto tangencial Q . Aparte, en la fatiga por fretting la pieza está sometida a una tensión global σfluctuante en el tiempo. Durante la vida de una grieta se encuentran dos fases diferenciadas. En la primera, conocida como fase de iniciación, la grieta crece formando un ángulo con la superficie. Cuando la misma alcanza una determinada longitud, gira para crecer perpendicularmente. A esta segunda fase se le conoce como fase de propagación. Para estudiar la iniciación de las grietas durante la fase de iniciación se puede hacer uso de la curva S-N, que se obtiene experimentalmente. Esta curva relaciona tensiones con número de ciclos para estados de carga uniaxiales. Sin embargo, la fatiga por fretting presenta un estado de tensiones multiaxial, además de un fuerte gradiente de tensiones cerca de la superficie; por lo que es necesario recurrir a criterios multiaxiales que tengan en cuenta estas características. Para estudiar la fase de propagación se recurre a la mecánica de la fractura, donde se hace uso del factor de intensidad de tensiones y una ley de crecimiento, como podría ser la Ley de Paris. A la hora de predecir la vida a fatiga existen modelos que suponen que toda la vida es iniciación, que toda la vida es propagación o que combinan ambas fases. Los modelos basados en la iniciación funcionan bien cuando la fase de iniciación es mayor que la de propagación. Aunque son sencillos de aplicar, no tienen en cuenta lo que ocurre fuera de la zona en la que se evalúan las tensiones. Los modelos basados en la propagación presentan la dificultad de tener que elegir una longitud a partir de la cual propagar la grieta. Esta longitud puede variar en gran medida dependiendo del tipo de ensayo o de la geometría, por lo que sería necesario basarse en algún parámetro para definirla correctamente. En cuanto a los modelos que combinan tanto la iniciación como la propagación, la principal dificultad vuelve a ser la elección de la longitud de la grieta a partir de la cual se pasa de la fase de iniciación a la fase de propagación, conocida como longitud de iniciación. Existen modelos en los que esta longitud es fija, dependiendo esta longitud del criterio del autor y modelos en los que es variable. El objetivo del presente trabajo es implementar en Python un modelo de predicción de vida a fatiga. En primer lugar se presentará el modelo utilizado, luego se realizará una descripción del código del 1
8Capítulo 2. Modelo de predicción de vida intervienen las tensiones máximas, ya que son estas las únicas que pueden provocar que la grieta se abra. da dN=C ∆Kn− ∆Kth∞· af af+af 0−lf 0!1/2f n (2.10) En esta ecuación C es el coeficiente de la ley de crecimiento; ∆K es el factor de intensidad de tensiones para las tensiones máximas, ya que como hemos mencionado anteriormente se va a considerar que la propagación solo depende de estas tensiones; n es el exponente de la ley de crecimiento; ∆Kth∞ es el umbral de crecimiento; f es un parámetro en aproximación al diagrama Kitagawa-Takahashi; a0 es el parámetro de El Haddad y l0 es la distancia a la primera barrera microestructural.
3 Datos experimentales Pa ra realizar la validación del código se compararán los resultados del modelo con los obtenidos experimentalmente por V. Martín [ 9 ], donde se analiza el tratamiento superficial de shot peening en fatiga por fretting. En concreto se compararán los resultados de vida a fatiga experimentales de tres grupos de ensayo distintos; un primer grupo de probetas sin tratamiento superficial, un segundo grupo de probetas sometido a shot peening y un tercero sometido a electroerosión. Los ensayos se han realizado para distintas combinaciones de tensiones axiales y cargas de contacto normales y tangenciales. A continuación, en la Tabla 3.1 se muestran los resultados obtenidos experimentalmente para los distintos grupos de ensayo. Se puede comprobar como las probetas sometidas a shot peening han aumentado en gran medida su vida a fatiga. Sin embargo, las sometidas a electroerosión la han visto reducida. Para cada uno de estos experimentos se tiene el tensor de tensiones y deformaciones a lo largo de una línea perpendicular a la superficie. En la Figura 3.1 se muestran las tensiones σx , tensiones normales máximas perpendiculares al plano de la grieta, a lo largo de dicha línea para dos combinaciones de carga distintas. En todos los ensayos, para profundidades grandes se puede comprobar como los valores de las tensiones tienden al valor de la tensión axial aplicada. Las diferencias en las distintas curvas se encuentran cerca de la superficie. En el caso de los ensayos sin tratamiento se produce una disminución exponencial de las tensiones. En el caso de los ensayos con electroerosión se puede comprobar como se han introducido tensiones residuales de tracción, aunque el comportamiento es muy similar a los casos sin ningún tipo de tratamiento. Por último, en los ensayos sometidos a shot peening se puede comprobar como existen tensiones residuales elevadas que modifican por completo el comportamiento de las curvas. A parte de los resultados experimentales de la vida a fatiga para las distintas combinaciones de carga y los tensores de tensiones y deformaciones en cada caso, se tienen longitudes de grieta experimentales para varios ensayos hechos para la combinación de cargas σ=110 | N=971 | Q=5429 sin tratamiento superficial. En concreto, se tienen las longitudes de grietas para dos ensayos interrumpidos y para dos ensayos llevados hasta el fallo, en el que se ha medido la longitud de la grieta secundaria. 9
10 Capítulo 3. Datos experimentales Tabla 3.1 Vidas a fatiga experimentales [9]. σ[MPa] N[N] Q[N] Sin tratamiento Con shot peening Con electroerosión 70 971 6629 165696 316603 5000000 a5000000 a148020 170073 110 971 5429 112165 126496 980678 1811104 - - 110 1257 5429 113799 120663 1649736 1941545 - - 110 1543 4217 88216 89376 1110174 1117513 - - 110 1543 5429 82559 87481 810402 1008310 - - 150 971 3006 59234 60040 231459 665167 - - 150 971 4217 60288 67776 634259 678676 - - 150 971 5429 47737 51574 631491 707514 - - 150 1543 3006 19223 39408 275417 198884 - - 150 1543 4217 50369 39001 234651 497260 - - 150 1543 5429 50268 39202 290460 482862 - - 150 2113 3006 34904 41002 140189 267873 14239 24875 150 2113 4217 34716 40004 166088 201105 - - 150 2113 5429 32339 36431 66564 190763 16783 19005 175 971 3006 26587 31815 364153 366164 19267 23803 175 971 4217 27724 32843 308455 235467 - - 175 971 5429 29100 35171 338774 413654 23591 25318 175 1543 3006 30154 31224 163474 164835 - - 175 1543 4217 34748 34930 164384 169382 - - 175 1543 5429 28005 33349 228379 231132 - - 175 2113 3006 21207 21669 68801 83544 16743 19173 175 2113 4217 26989 28595 121642 127770 - - 175 2113 5429 28112 28178 94741 146553 16543 16100 aEnsayos donde no se produjo rotura (a) Tensiones para la combinación σ=150 | N=2113 | Q=5429. (b) Tensiones para la combinación σ=175 | N=971 | Q=5429. Figura 3.1 Ejemplos de la evolución de las tensiones σx. 3.1 Aluminio 7075-T651 Los ensayos se realizaron en probetas de aluminio 7075-T651, por lo que serán las características de este material las incorporadas al programa. A continuación, en la Tabla 3.3 se muestran las
3.1 Aluminio 7075-T651 11 Tabla 3.2 Longitudes de grieta experimentales [9]. Ensayos interrumpidos Ensayos hasta rotura 40000 ciclos 93746 ciclos 112165 ciclos 126496 ciclos 0.23300 mm 0.21190 mm 0.50000 mm 0.38288 mm 0.57134 mm 0.55667 mm propiedades del material utilizadas, donde se distingue si las propiedades relacionadas con la fatiga son para R=0 o R=−1 , siendo R=σmin/σmax el cociente entre las tensiones mínimas y máximas. Tabla 3.3 Propiedades aluminio 7075-T651 [10]. Coeficiente de la ley de crecimiento (R=0)C8.83 ·10−11 Exponente de la ley de crecimiento (R=0)n3.322 Parámetro en aproximación al diagrama Kitagawa-Takahashi f2.5 Distancia de la superficie a la primera barrera microestructural l02.5·10−5m Umbral de crecimiento (R=0)∆Kth∞2.2MPa√m Tenacidad a fractura KIC 29 MPa√m Módulo de Young E71000 MPa Coeficiente de Poisson ν0.33 Límite elástico σy503 MPa Exponente de resistencia a fatiga (R=−1)b−0.1553 Coeficiente de resistencia a fatiga (R=−1)σ0 f1610 MPa Límite de fatiga (R=−1)∆σf l 169 MPa A parte de estas propiedades, será necesario conocer otras dos que se pueden obtener a partir de las anteriores. Por un lado se calculará el módulo de cizalladura, G . Este se puede obtener utilizando la Ecuación 3.1. G=E 2(1+ν)(3.1) Por otro lado será necesario calcular el parámetro de El Haddad, que en algunos modelos se utiliza para diferenciar la fase de iniciación de la fase de propagación. En la Ecuación 3.2 se muestra la definición del parámetro. a0=1 π∆Kth∞ ∆σf l 2 (3.2) Debido a que ∆Kth∞ y ∆σf l se han especificado para dos R distintos, se va a realizar la suposición de que ∆σf l para R=0 es el doble que para R=−1 , por lo que en esta expresión ∆σf l =2·169 =338 MPa.
4 Descripción del código El código se ha dividido en cuatro scripts, sirviendo cada uno a un propósito distinto. En primer lugar, en el script propagacion.py se han implementado las funciones necesarias para calcular los ciclos de propagación de una grieta, lo que será de utilidad tanto en la fase de propagación como en la fase de iniciación. En el script iniciacion.py están las funciones necesarias para obtener los ciclos de iniciación de una grieta. En el script principal.py se encuentran las funciones que permiten obtener las curvas de vida a partir de los datos experimentales necesarios. Por último, en el script graficas.py se incorpora lo necesario para realizar distintas gráficas que serán de utilidad para comprobar los resultados. El cálculo de los ciclos de vida de un experimento concreto mediante el modelo aquí implementado se puede dividir en dos fases, como ya se ha explicado anteriormente. El cálculo de los ciclos de iniciación se ha abordado de la siguiente manera. En primer lugar se obtienen para un material concreto las curvas de iniciación mediante el script iniciacion.py. Como se ha visto (veáse la Sección 2.1), estas curvas de iniciación solo dependen del parámetro usado y de las propiedades del material, por lo que este cálculo será necesario realizarlo una única vez para cada material y parámetro. Los resultados de las curvas de iniciación se guardarán en un archivo de texto al que habrá que acceder posteriormente para cada experimento. En dicho archivo se tiene una matriz con los ciclos de iniciación en función de la longitud de iniciación y el valor del parámetro. Una vez obtenidas las curvas de iniciación se pueden calcular las curvas de vida de iniciación, propagación y total para un experimento concreto. Teniéndose el tensor de tensiones y deformaciones a lo largo de una línea perpendicular a la superficie, se puede calcular el valor de los parámetros en cada uno de esos puntos. Si se calcula la media del parámetro desde la superficie hasta una longitud de iniciación, se pueden calcular los ciclos de iniciación interpolando en las curvas de iniciación. Aparte, con el tensor de tensiones se pueden calcular los ciclos de propagación propagando la grieta desde esa longitud de iniciación hasta el fallo utilizando el script propagacion.py. Todos estos cálculos se realizan dentro del script principal.py, llamando a las funciones requeridas del resto de scripts. En las Figuras 4.1 y 4.2 se muestran diagramas con el funcionamiento del programa. Cada bloque representa un script y las flechas indican las llamadas que se realizan entre las distintas funciones. Por un lado, para obtener las curvas de iniciación de un material se ejecuta la función curvas_iniciacion() dentro de iniciacion.py. Por otro lado, para obtener las curvas de vida y la estimación de la misma se ejecuta la función principal() dentro principal.py. En las siguientes secciones se comentará el funcionamiento interno de las distintas funciones. 13
14 Capítulo 4. Descripción del código Figura 4.1 Diagrama de ejecución de las curvas de iniciación. Figura 4.2 Diagrama de ejecución de las curvas de vida a fatiga. 4.1 Descripción del script propagacion.py Como ya se ha mencionado, dentro del script propagación.py se encuentran todas las funciones necesarias para realizar la integración de la propagación de una grieta. En la cabecera del mismo se importan los módulos math ynumpy, tal y como se muestra en el Código 4.1, que serán de utilidad a la hora de realizar los diferentes cálculos. Código 4.1 Módulos importados en propagacion.py. import math import numpy as np En el Código 4.2 se muestra el código de la función constantes_material(). En esta función se introducen y calculan todas las propiedades necesarias del material estudiado que se mostraron en la Sección 3.1. La función admite como entrada la variable “MAT”, que identifica al material que se quiere utilizar. Actualmente solo está el Aluminio 7075-T651, que utiliza el índice 0. Si se añadiera un nuevo material utilizaría el valor “MAT” = 1 y así sucesivamente con cada nuevo material añadido. La salida de la función es una lista con las propiedades necesarias del material. Código 4.2 Código de la función constantes_material().
4.1 Descripción del script propagacion.py 15 def constantes_material(MAT = 0): """Devuelve las propiedades del material. INPUT: MAT = indice asignado al material = 0 por defecto OUTPUTS: mat_props[C = coeficiente de la ley de crecimiento n = exponente de la ley de crecimiento f = parametro en aproximacion al diagrama Kitagawa-Takahashi l_0 = (m) distancia de la superficie a la primera barrera microestructural K_th = (MPa m^0.5) umbral de creciemiento de la grieta a_0 = (m) parametro de El Haddad K_IC = (MPa m^0.5) tenacidad a fractura sigma_y = (MPa) limite elastico sigma_f = (MPa) coeficiente de resistencia a fatiga E = (MPa) modulo de Young nu = coeficiente de Poisson b = exponente de resistencia a fatiga G = (MPa) modulo de cizalladura]""" #Constantes de los materiales C = [] n = [] f = [] l_0 = [] sigma_fl = [] K_th = [] a_0 = [] K_IC = [] sigma_y = [] sigma_f = [] E = [] nu = [] b = [] G = [] #Material 0: Aluminio 7075-T651 C.append(8.83e-11) n.append(3.322) f.append(2.5) l_0.append(25e-6) K_th.append(2.2) sigma_fl.append(169.0) K_IC.append(29.0) sigma_y.append(503.0) sigma_f.append(1610.0)
16 Capítulo 4. Descripción del código E.append(71000.0) nu.append(0.33) b.append(-0.1553) G.append(E[MAT]/(2.0*(1.0 + nu[MAT]))) #Material 1: # C.append() # n.append() # f.append() # l_0.append() # K_th.append() # sigma_fl.append() # K_IC.append() # sigma_y.append() # sigma_f.append() # E.append() # nu.append() # b.append() # G.append(E[MAT]/(2.0*(1.0 + nu[MAT]))) #Calculo del parametro de El Haddad y salida de las constantes a_0.append(1/math.pi*(K_th[MAT]/(2*sigma_fl[MAT]))**2.0) mat_props = [C[MAT], n[MAT], f[MAT], l_0[MAT], K_th[MAT], a_0[MAT], K_IC[MAT], sigma_y[MAT], sigma_f[MAT], E[MAT], nu[MAT], b[MAT], G[MAT]] return mat_props En el Código 4.3 se puede ver el código de la función K_I(), que se utiliza para calcular el factor de intensidad de tensiones de una grieta determinada. En esta función se han introducido las Ecuaciones 2.5 - 2.8. Como entrada recibe cuatro variables; “sigma”, la tensión perpendicular al plano de la grieta; “a”, la longitud de la grieta; “ds”, el paso de integración y “W”, la anchura del espécimen. La integral de la Ecuación 2.8 se ha dividido según el cálculo de la misma sea para la fase de iniciación o de propagación. En la fase de iniciación, la tensión será constante; mientras que en la fase de propagación la tensión variará con la profundidad; por lo que la variable “sigma” puede ser de tipo float o de tipo list. La salida de la función es el valor del factor de intensidad de tensiones “K_I”. Código 4.3 Código de la función K_I(). def K_I(sigma, a, ds, W): """Devuelve el factor de instensidad de tensiones para un tamaño de grieta determinado utilizando una función de peso propuesta por Bueckner. INPUTS: sigma = (MPa) tension perpendicular al plano de la grieta (float) --> fase de iniciación (list) --> fase de propagación a = (m) longitud de la grieta ds = (m) paso de longitudes de grieta
4.1 Descripción del script propagacion.py 17 W = (m) espesor del especimen OUTPUT: K_I = (MPa m^0.5) factor de intensidad de tensiones""" #Funciones de peso m1 = 0.6147 + 17.1844*(a/W)**2.0 + 8.7822*(a/W)**6.0 m2 = 0.2502 + 3.2889*(a/W)**2.0 + 70.0444*(a/W)**6.0 def integr_KI(s, sx): """Realiza el cálculo de la integral del FIT""" res = sx/s**0.5*(1.0 + m1*s/a + m2*(s/a)**2.0) return res #Si sigma es de tipo float, el cálculo es para la fase de iniciación if type(sigma) is not list: integral = 0.0 s = ds/2.0 N = int(round(a/ds, 8)) for i in range(N - 1): integral += integr_KI(s, sigma)*ds s += ds K_I = (2.0/math.pi)**0.5*integral #Si sigma es de tipo list, el cálculo es para la fase de propagación else: integral = 0.0 s = ds/2.0 for i in sigma[:-1]: j = sigma[sigma.index(i)+1] integral += integr_KI(s, (i+j)/2.0)*ds s += ds K_I = (2.0/math.pi)**0.5*integral return K_I En el Código 4.4 se muestra la función Phi() que permite calcular el factor Φ para una grieta elíptica, mostrado anteriormente en la Ecuación 2.9. Como entrada solo necesita la variable “ac” que representa la relación de aspecto de la grieta. Como salida devuelve la variable “Phi”. Código 4.4 Código de la función Phi(). def Phi(ac = 0.5):
24 Capítulo 4. Descripción del código v_sigma = [] #Vector de tensiones v_param = [] #Vector de Fatemi-Socie o Smith-Watson-Topper n_sigma = 45 #Discretizaciones de la curva de iniciacion sigma_max = 500.0 #(MPa) tension maxima sigma_min = 50.0 #(MPa) tension minima delta_sigma = (sigma_max - sigma_min)/n_sigma #Paso de tensiones #Cargamos propiedades del material sigma_y = constantes_material(MAT)[7] sigma_f = constantes_material(MAT)[8] k = sigma_y/sigma_f E = constantes_material(MAT)[9] G = constantes_material(MAT)[12] #Generamos el vector de Fatemi-Socie o Smith-Watson-Topper for i in range(n_sigma+1): sigma_i = sigma_min+i*delta_sigma def_i = sigma_i/E gamma_i = sigma_i/2.0/G v_sigma.append(sigma_i) if par == 'FS': v_param.append(gamma_i*(1.0+k*sigma_i/2.0/sigma_y)) elif par == 'SWT': v_param.append(sigma_i*def_i) m_N_i = [[], []] #Matriz para guardar ciclos y tensiones para #facilitar la generacion de las graficas v_a = [] #Vector de tamaños de grietas n_a = 120 #Número de curvas de iniciacion por material a_min = 5e-6 #Tamaño más pequeño grieta ex = 1.45 #Variable para controlar como crece la diferencia #entre longitudes de grieta for i in range(n_a): v_a.append(a_min*(i+1.0)**ex) archivo.write('{:.2e} '.format(v_a[-1])) #Creamos las curvas de iniciación en el archivo for i in range(len(v_param)): archivo.write('\n{:+.2e}'.format(v_param[i])) for j in v_a: N_i = fase_iniciacion(v_param[i], v_sigma[i], par, j, da, W, MAT) m_N_i[0].append(N_i) m_N_i[1].append(v_sigma[i]) archivo.write(' {:+.6e}'.format(N_i))
4.3 Descripción del script principal.py 25 #Pintamos en la consola el porcentaje realizado print '\r{:.2%} completado'.format((i+1.0)/len(v_param)), #Cerramos el archivo archivo.close() v_N_i = [] v_sigma2 = [] #Utilizando la matriz auxiliar m_N_i, creamos los vectores de ciclos de #iniciacion y tensiones en el formato adecuado para dibujar las curvas. for i in range(n_a): v_N_i.append([]) v_sigma2.append([]) for i in range(n_sigma): for j in range(n_a): v_N_i[j].append(m_N_i[0][j+i*n_a]) v_sigma2[j].append(m_N_i[1][j+i*n_a]) #Pintamos las curvas de iniciación plt.close('MAT_' + str(MAT) + '|crit_' + par) plt.figure('MAT_' + str(MAT) + '|crit_' + par) for i in range(n_a): plt.plot(v_N_i[i], v_sigma2[i]) plt.xlabel('Ciclos de iniciacion') plt.xscale('log') plt.show() #Guardamos la figura y la cerramos plt.savefig(ruta_fig + '/curvas_inic.png') plt.close('MAT_' + str(MAT) + '|crit_' + par) 4.3 Descripción del script principal.py En el script principal.py se coordina la generación de las curvas de vida de iniciación, de propagación y total, a partir de las cuales se puede obtener la vida a fatiga estimada, la longitud de iniciación de la grieta, la duración de las fases de iniciación y propagación o la evolución de la longitud de la grieta. En la cabecera, mostrada en el Código 4.10 se importan varios módulos ya mencionados anteriormente; os, math, numpy, matplotlib.pyplot y las funciones del script propagacion.py fase_- propagacion() y constantes_material(). Además de estas, se importan las funciones minimize() e interp2d del módulo scipy, que permiten optimizar una función e interpolar en una matriz de datos respectivamente. Código 4.10 Módulos importados en principal.py.
26 Capítulo 4. Descripción del código import os import math import numpy as np import matplotlib.pyplot as plt from scipy.optimize import minimize from scipy.interpolate import interp2d from propagacion import fase_propagacion from propagacion import constantes_material La función lectura_datos() del Código 4.11 permite cargar los datos experimentales con el tensor de tensiones y el tensor de deformaciones en cada punto. Recibe tres variables como entrada; “ruta”, la ruta en la que se encuentran los archivos; “exp_max”, el nombre del archivo con tensiones y deformaciones máximas y “exp_min”, el nombre del archivo con las tensiones y deformaciones mínimas. La salida de la función devuelve una lista con las distancias a la superficie a la que se tienen el resto de datos, las tensiones máximas perpendiculares al plano de la grieta, el tensor de tensiones máximas, el tensor de deformaciones máximas y el tensor de deformaciones mínimas. Código 4.11 Código de la función lectura_datos(). def lectura_datos(ruta, exp_max, exp_min): """Carga los datos experimentales. INPUT: ruta = ruta para cargar los datos experimentales exp_max = nombre del archivo con la tensiones y defs maximas exp_min = nombre del archivo con la tensiones y defs minimas OUTPUTS: x = (m) vector de distancias a la superficie de la grieta sxx_max = (MPa) vector de tensiones máximas en la direccion x s_max = (MPa) vector de tensiones máximas e_max = vector de deformaciones máximas e_min = vector de deformaciones minimas""" #Cargamos los datos de distancias. Cambiamos el vector para #que sea positivo y empiece en 0 x = np.loadtxt("{}/{}.dat".format(ruta, exp_max), skiprows = 1, usecols = (1,))*-1e-3 x = x.tolist() for i in x: x[x.index(i)] = i - 0.1 #Cargamos el resto de datos sxx_max = np.loadtxt("{}/{}.dat".format(ruta, exp_max), skiprows = 1, usecols = (2,)).tolist() s_max = np.loadtxt("{}/{}.dat".format(ruta, exp_max), skiprows = 1, usecols = (2, 3, 4, 5, 6, 7)).tolist()
4.3 Descripción del script principal.py 27 e_max = np.loadtxt("{}/{}.dat".format(ruta, exp_max), skiprows = 1, usecols = (8, 9, 10, 11, 12, 13)).tolist() e_min = np.loadtxt("{}/{}.dat".format(ruta, exp_min), skiprows = 1, usecols = (8, 9, 10, 11, 12, 13)).tolist() return x, sxx_max, s_max, e_max, e_min En el Código 4.12 se muestra la función indice_a(). Esta función relaciona una distancia con su índice correspondiente en el vector de distancias a la superficie. Como entrada recibe “a”, la distancia y “x”, el vector con distancias a la superficie. La salida de la función “ind_a” es el índice asociado. Código 4.12 Código de la función indice_a(). def indice_a(a, x): """Devuelve el indice asociado a una longitud de grieta. INPUT: a = longitud de grieta de iniciacion x = vector de distancias a la superficie OUTPUTS: ind_a = indice asociado a la longitud de grieta de iniciacion""" #Redondeamos a la 8 cifra para evitar errores numéricos a = round(a, 8) #Calculamos el índice para el cual tenemos esa longitud de grieta for i in x: i_round = round(i, 8) if i_round >= a: ind_a = x.index(i) break return ind_a La función parametro() del Código 4.13 calcula en cada punto el parámetro a partir del tensor de tensiones y deformaciones. Como entrada recibe seis variables; “par”, el nombre del criterio utilizado; “MAT”, el índice del material utilizado; “x”, el vector con distancias a la superficie; “s_max”, el tensor de tensiones máximas en cada punto; “e_max”, el tensor de deformaciones máximas en cada punto y “e_min”, el tensor de tensiones mínimas en cada punto. La salida de la función es una lista con el Fatemi-Socie o el Smith-Watson-Topper en cada punto. Internamente se utilizan dos funciones distintas, mediante las cuales se calcula la variable a optimizar en cada parámetro. En el caso de Fatemi-Socie es el incremento de deformaciones tangenciales, mientras que en el caso de Smith-Watson-Topper es el propio parámetro tal y como se puede ver en la definición de los mismos en las Ecuaciones 2.1 y 2.3. Tras definir estas dos funciones se recorre el vector de distancias a la superficie para calcular en cada punto el parámetro asociado. Para ello, se optimiza en cada punto la función interna descrita anteriormente. Código 4.13 Código de la función parametro().
28 Capítulo 4. Descripción del código def parametro(par, MAT, x, s_max, e_max, e_min): """Calcula el vector para el modelo de iniciacion asociado a un experimento. INPUT: par = parametro para el modelo de iniciacion MAT = indice asignado al material x = (m) vector de distancias a la superficie de la grieta s_max = (MPa) vector de tensiones máximas e_max = vector de deformaciones máximas e_min = vector de deformaciones minimas OUTPUTS: FS/SWT = vector con los Fatemi-Socie o Smith-Watson-Topper en cada punto""" def func_FS(alfa, j): """"Devuelve delta_gamma_max/2 en un punto concreto. Se utiliza en el calculo del Fatemi-Socie.""" R_x = np.array([[1.0, 0.0, 0.0], [0.0, math.cos(alfa[0]), -math.sin(alfa[0])], [0.0, math.sin(alfa[0]), math.cos(alfa[0])]]) R_x_T = np.transpose(R_x) R_y = np.array([[math.cos(alfa[1]), 0.0, -math.sin(alfa[1])], [0.0, 1.0, 0.0], [math.sin(alfa[1]), 0.0, math.cos(alfa[1])]]) R_y_T = np.transpose(R_y) R_z = np.array([[math.cos(alfa[2]), -math.sin(alfa[2]), 0.0], [math.sin(alfa[2]), math.cos(alfa[2]), 0.0], [0.0, 0.0, 1.0]]) R_z_T = np.transpose(R_z) E_xyz_max = np.array([[e_max[j][0], e_max[j][3], e_max[j][4]], [e_max[j][3], e_max[j][1], e_max[j][5]], [e_max[j][4], e_max[j][5], e_max[j][2]]]) E_xyz_min = np.array([[e_min[j][0], e_min[j][3], e_min[j][4]], [e_min[j][3], e_min[j][1], e_min[j][5]], [e_min[j][4], e_min[j][5], e_min[j][2]]]) E_max = np.dot(np.dot(np.dot(np.dot(R_x_T, np.dot(R_y_T, np.dot( R_z_T, E_xyz_max))), R_z), R_y), R_x).tolist() E_min = np.dot(np.dot(np.dot(np.dot(R_x_T, np.dot(R_y_T, np.dot( R_z_T, E_xyz_min))), R_z), R_y), R_x).tolist() #El signo negativo se debe a que la función minimiza en vez de
4.3 Descripción del script principal.py 29 #maximizar. return -(E_max[0][1] - E_min[0][1]) def func_SWT(alfa, j): """"Devuelve el Smith-Watson-Topper asociado a un punto.""" R_x = np.array([[1.0, 0.0, 0.0], [0.0, math.cos(alfa[0]), -math.sin(alfa[0])], [0.0, math.sin(alfa[0]), math.cos(alfa[0])]]) R_x_T = np.transpose(R_x) R_y = np.array([[math.cos(alfa[1]), 0.0, -math.sin(alfa[1])], [0.0, 1.0, 0.0], [math.sin(alfa[1]), 0.0, math.cos(alfa[1])]]) R_y_T = np.transpose(R_y) R_z = np.array([[math.cos(alfa[2]), -math.sin(alfa[2]), 0.0], [math.sin(alfa[2]), math.cos(alfa[2]), 0.0], [0.0, 0.0, 1.0]]) R_z_T = np.transpose(R_z) E_xyz_max = np.array([[e_max[j][0], e_max[j][3], e_max[j][4]], [e_max[j][3], e_max[j][1], e_max[j][5]], [e_max[j][4], e_max[j][5], e_max[j][2]]]) E_xyz_min = np.array([[e_min[j][0], e_min[j][3], e_min[j][4]], [e_min[j][3], e_min[j][1], e_min[j][5]], [e_min[j][4], e_min[j][5], e_min[j][2]]]) S_xyz_max = np.array([[s_max[j][0], s_max[j][3], s_max[j][4]], [s_max[j][3], s_max[j][1], s_max[j][5]], [s_max[j][4], s_max[j][5], s_max[j][2]]]) E_max = np.dot(np.dot(np.dot(np.dot(R_x_T, np.dot(R_y_T, np.dot( R_z_T, E_xyz_max))), R_z), R_y), R_x).tolist() E_min = np.dot(np.dot(np.dot(np.dot(R_x_T, np.dot(R_y_T, np.dot( R_z_T, E_xyz_min))), R_z), R_y), R_x).tolist() S_max = np.dot(np.dot(np.dot(np.dot(R_x_T, np.dot(R_y_T, np.dot( R_z_T, S_xyz_max))), R_z), R_y), R_x).tolist() #El signo negativo se debe a que la función minimiza en vez de #maximizar. return -(S_max[0][0]*(E_max[0][0]-E_min[0][0])/2.0) #Inicializamos variables alfa0 = [0.0, 0.0, 0.0] #Ángulo para primera iteracion de la funcion de #minimizacion #Limites para el angulo
30 Capítulo 4. Descripción del código bnds = ((-math.pi, math.pi), (-math.pi, math.pi), (-math.pi, math.pi )) sigma_y = constantes_material(MAT)[7] sigma_f = constantes_material(MAT)[8] k = sigma_y/sigma_f alfa = [] delta_gamma_max = [] s_norm = [] FS = [] SWT = [] #Calculamos en cada punto el Fatemi-Socie o el Smith-Watson-Topper asociado for j in range(len(x)): if par == 'FS': fs = minimize(func_FS, alfa0, bounds = bnds, args=(j), options={'disp': False}) alfa.append(fs.x.tolist()) delta_gamma_max.append(-func_FS(alfa[j], j)*2.0) R_x = np.array([[1.0, 0.0, 0.0], [0.0, math.cos(alfa[j][0]), -math.sin(alfa[j ][0])], [0.0, math.sin(alfa[j][0]), math.cos(alfa[j ][0])]]) R_x_T = np.transpose(R_x) R_y = np.array([[math.cos(alfa[j][1]), 0.0, -math.sin(alfa[ j][1])], [0.0, 1.0, 0.0], [math.sin(alfa[j][1]), 0.0, math.cos(alfa[j ][1])]]) R_y_T = np.transpose(R_y) R_z = np.array([[math.cos(alfa[j][2]), -math.sin(alfa[j][2]) , 0.0], [math.sin(alfa[j][2]), math.cos(alfa[j][2]), 0.0], [0.0, 0.0, 1.0]]) R_z_T = np.transpose(R_z) S_xyz_max = np.array([[s_max[j][0], s_max[j][3], s_max[j ][4]], [s_max[j][3], s_max[j][1], s_max[j][5]], [s_max[j][4], s_max[j][5], s_max[j][2]]]) S_max = np.dot(np.dot(np.dot(np.dot(R_x_T, np.dot(R_y_T, np.dot(R_z_T, S_xyz_max))), R_z), R_y), R_x). tolist() s_norm.append(S_max[2][2])
4.3 Descripción del script principal.py 31 FS.append(delta_gamma_max[j]/2.0*(1.0 + k*s_norm[j]/sigma_y)) elif par == 'SWT': swt = minimize(func_SWT, alfa0, bounds = bnds, args=(j), options={'disp': False}) alfa.append(swt.x.tolist()) SWT.append(-func_SWT(alfa[j], j)) if par == 'FS': return FS elif par == 'SWT': return SWT La función principal() mostrada en el Código 4.14 es la función desde la cual se coordina el resto de funciones. Como entrada recibe cinco variables; “par”, el nombre del criterio utilizado; “W”, la anchura del espécimen; “MAT”, el índice asignado al material; “exp_max”, el nombre del archivo con las tensiones y deformaciones máximas y “exp_min”, el nombre del archivo con las tensiones y deformaciones mínimas. Dentro de esta función, tras declarar las rutas de las distintas carpetas, se genera la función de interpolación para calcular los ciclos de la fase de iniciación. Después, se cargan los datos experimentales mediante la función lectura_datos() y se genera el vector del parámetro seleccionado utilizando la función parametro(). Tras inicializar variables, se recorre un vector de longitudes de iniciación calculándose en cada punto los ciclos de la fase de iniciación para iniciar la grieta hasta dicha longitud de iniciación y los ciclos de la fase de propagación para propagar la grieta desde la longitud de iniciación hasta el fallo. Los ciclos de vida totales son las suma de ambas fases. Por otro lado, tras obtener las curvas de vida se genera la curva con la evolución de la longitud de la grieta en función del número de ciclos. La obtención de esta curva se divide en dos partes. Hasta la longitud de iniciación, la grieta crece tal y como lo hace el número de ciclos de iniciación. A partir de esta longitud de grieta, la grieta crece según los ciclos de propagación de forma que para dos longitudes sucesivas en esta fase, el incremento en el número de ciclos de la curva es igual a la diferencia entre los ciclos de propagación de ambas longitudes. Como salida esta función genera archivos de texto con las curvas de vida a fatiga, la evolución de la longitud de la grieta y datos sobre el punto en el que se produce el mínimo de la curva de vida total, que se corresponde con la vida de la pieza. Código 4.14 Código de la función principal(). def principal(par, W, MAT, exp_max, exp_min): """Estima la vida a fatiga. INPUTS: par = parametro para el modelo de iniciacion W = (m) anchura del especimen MAT = indice asignado al material exp_max = nombre del archivo con la tensiones y defs maximas exp_min = nombre del archivo con la tensiones y defs minimas OUTPUTS: resultados.dat = actualiza el archivo de resultados con la
32 Capítulo 4. Descripción del código longitud de iniciacion y los ciclos de iniciacion, propagacion y total para que se produzca el fallo exp_id.dat = archivo con los datos de las curvas de vida """ print 'Datos Experimentales:\n {}.dat\n {}.dat\n'.format(exp_max, exp_min) #exp_id obtiene a partir del nombre del archivo con los datos un #identificador del experimento. Dependiendo del nombre del archivo debe #modificarse. exp_id = exp_max[16:] #Obtenemos las rutas a las carpetas necesarias para los calculos cwd = os.getcwd() ruta_exp = cwd + '/datos_exp' ruta_curvas = cwd + '/curvas_inic2' ruta_fig = cwd + '/resultados/grafs/' + par ruta_datos = cwd + '/resultados/datos/' + par #Cargamos los datos de las curvas de iniciación del material data_interp = np.loadtxt("{}/MAT{}_{}.dat".format(ruta_curvas, MAT, par)) #Separamos las curvas en las variables necesarias x_interp = data_interp[0][1:] #Eje x de la matriz de interpolación y_interp = [] #Eje y de la matriz de interpolación m_N_i = [] #Matriz con los ciclos de iniciación for i in data_interp[1:]: y_interp.append(i[0]) m_N_i.append(i[1:]) y_interp = np.array(y_interp) #Creamos la función de interpolación function_interp = interp2d(x_interp, y_interp, m_N_i, kind='quintic', bounds_error=False) #Cargamos los datos experimentales y generamos el vector de FS o SWT x, sxx_max, s_max, e_max, sxx_min, e_min = lectura_datos(ruta_exp, exp_max, exp_min) param = parametro(par, MAT, x, s_max, e_max, e_min) #Iniciamos variables v_ai = [] #Vector de longitudes de grieta en m v_ai_mm = [] #Vector de longitudes de grieta en mm
4.3 Descripción del script principal.py 33 N_i = [] #Vector de ciclos de iniciación N_p = [] #Vector de ciclos de propagación N_t = [] #Vector de ciclos totales a_i_min = round(x[1], 8) #Tamaño mínimo de longitud de grieta de #iniciacion. Redondeamos para evitar errores #numericos. a_i_max = round(x[-2], 8) #Tamaño máximo de longitud de grieta de iniciacion da = a_i_min #Paso entre longitudes de grietas N = int((a_i_max - a_i_min)/da)+1 #Número de grietas a calcular #Creamos el vector de longitudes de grieta de iniciacion a_i = a_i_min for i in range(N): v_ai.append(a_i + i*da) #Calculamos los ciclos de iniciación, de propagación y totales para cada #longitud de grieta de iniciacion for i in v_ai: ind_a = indice_a(i, x) #Indice asociado a esa longitud de grieta param_med = np.mean(param[:ind_a + 1]) #Valor medio del parametro para #realizar la interpolacion #Realizamos la interpolacion para calcular los ciclos de iniciacion n_i = function_interp(i, param_med)[0] #La interpolacion puede dar valores menores que 0 para ciclos muy bajos if n_i < 0: n_i = 0 #Calculamos los ciclos de propagacion n_p = fase_propagacion(sxx_max, sxx_min, ind_a, i, da, W, MAT) #Se añaden los datos calculados a las curvas N_i.append(n_i) N_p.append(n_p) N_t.append(n_i+n_p) v_ai_mm.append(i*1e3) #Pintamos los curvas de iniciación, de propagación y totales plt.close(exp_id + '_' + par) plt.figure(exp_id + '_' + par) plt.yscale('log') plt.xlabel('Longitud de iniciacion (mm)')
40 Capítulo 4. Descripción del código if par == crit: vida_est1[exp_id] = float(i[2]) vida_est1_log[exp_id] = math.log10(float(i[2])) if type(vida_exp2) is dict: for i in f2: exp_id = i[0] par = i[1] if par == crit: vida_est2[exp_id] = float(i[2]) vida_est2_log[exp_id] = math.log10(float(i[2])) if type(vida_exp3) is dict: for i in f3: exp_id = i[0] par = i[1] if par == crit: vida_est3[exp_id] = float(i[2]) vida_est3_log[exp_id] = math.log10(float(i[2])) #Calculamos el antilogaritmo de la media y la desviacion tipica del #logaritmo del cociente de la vida estimada y la vida experimental alpha = 0.0 sigma = 0.0 #Se descartan los resultados del experimento 6629_971_70 for i in vida_exp1: if i != '6629_971_70': alpha += math.log10(vida_est1[i]/vida_exp1[i][0]) alpha += math.log10(vida_est1[i]/vida_exp1[i][1]) if type(vida_exp2) is dict: for i in vida_exp2: if i != '6629_971_70': alpha += math.log10(vida_est2[i]/vida_exp2[i][0]) alpha += math.log10(vida_est2[i]/vida_exp2[i][1]) if type(vida_exp3) is dict: for i in vida_exp3: if i != '6629_971_70': alpha += math.log10(vida_est3[i]/vida_exp3[i][0]) alpha += math.log10(vida_est3[i]/vida_exp3[i][1]) alpha_m = alpha/(l1 + l2 + l3) for i in vida_exp1: if i != '6629_971_70': sigma += (math.log10(vida_est1[i]/vida_exp1[i][0])-alpha_m) **2.0
4.4 Descripción del script graficas.py 41 sigma += (math.log10(vida_est1[i]/vida_exp1[i][1])-alpha_m) **2.0 if type(vida_exp2) is dict: for i in vida_exp2: if i != '6629_971_70': sigma += (math.log10(vida_est2[i]/vida_exp2[i][0])- alpha_m)**2.0 sigma += (math.log10(vida_est2[i]/vida_exp2[i][1])- alpha_m)**2.0 if type(vida_exp3) is dict: for i in vida_exp3: if i != '6629_971_70': sigma += (math.log10(vida_est3[i]/vida_exp3[i][0])- alpha_m)**2.0 sigma += (math.log10(vida_est3[i]/vida_exp3[i][1])- alpha_m)**2.0 sigma_alpha = math.sqrt(sigma/(l1 + l2 + l3-1)) x = 10**alpha_m sigma_x = 10**sigma_alpha print '{}:\tx = {}'.format(crit, x) print '\tsigma_x = {}'.format(sigma_x) #Calculamos la pendiente de la recta de regresion y = [] x = [] #Se descartan los resultados del experimento 6629_971_70 for i in vida_exp1: if i != '6629_971_70': y.append(vida_est1_log[i]) y.append(vida_est1_log[i]) x.append(math.log10(vida_exp1[i][0])) x.append(math.log10(vida_exp1[i][1])) if type(vida_exp2) is dict: for i in vida_exp2: if i != '6629_971_70': y.append(vida_est2_log[i]) y.append(vida_est2_log[i]) x.append(math.log10(vida_exp2[i][0])) x.append(math.log10(vida_exp2[i][1])) if type(vida_exp3) is dict:
42 Capítulo 4. Descripción del código for i in vida_exp3: if i != '6629_971_70': y.append(vida_est3_log[i]) y.append(vida_est3_log[i]) x.append(math.log10(vida_exp3[i][0])) x.append(math.log10(vida_exp3[i][1])) y = np.array(y) x = np.array(x).reshape((-1, 1)) model = LinearRegression().fit(x, y) m = model.coef_[0] print '\tm = {}'.format(m) En el Código 4.18 se muestra la función grafs_long_grietas() en la que se realiza una gráfica con la evolución de la longitud de la grieta en función del número de ciclos de un experimento concreto. Esta gráfica ya se genera automáticamente al ejecutar la función principal() del script principal.py. Como entrada recibe dos variables; “exp”, que contiene en un string el identificador del experimento del que se quiere realizar la gráfica y “crit”, el nombre del criterio utilizado para conseguir los resultados. Código 4.18 Código de la función grafs_long_grietas(). def grafs_long_grieta(exp, crit): """Funcion para obtener las curvas con la evolución de la grieta en funcion del numero de ciclos.""" cwd = os.getcwd() ruta_datos = cwd + '/resultados/datos/{}/'.format(crit) f = np.loadtxt('{}{}.dat'.format(ruta_datos, exp), dtype = float, skiprows = 1) a_i = [] N_a = [] for i in f: a_i.append(i[0]) N_a.append(i[4]) plt.figure('Longitud de grieta') plt.xscale('log') plt.xlabel('Ciclos') plt.ylabel('Longitud de grieta (mm)') plt.plot(N_a, a_i, 'k') plt.xlim([5e2,1e8]) plt.show()
4.4 Descripción del script graficas.py 43 a_i = [] N_a = [] La función grafs_vida_est() del Código 4.19 realiza las gráficas con las curvas de vida de iniciación, propagación y total en función de la longitud de iniciación. Estas curvas también se obtienen al ejecutar la función principal() del script principal.py Como entrada recibe las mismas dos variables que la función anterior; “exp”, con el identificador del experimento y “crit” con el nombre del criterio utilizado. Código 4.19 Código de la función grafs_vida_est(). def grafs_vida_est(exp, crit): """Funcion para obtener las curvas de vida.""" cwd = os.getcwd() ruta_datos = cwd + '/resultados/datos/{}/'.format(crit) f = np.loadtxt('{}{}.dat'.format(ruta_datos, exp), dtype = float, skiprows = 1) a_i = [] N_t = [] N_i = [] N_p = [] for i in f: a_i.append(i[0]) N_t.append(i[1]) N_i.append(i[2]) N_p.append(i[3]) N_t_min = min(N_t) i_N_t_min = N_t.index(N_t_min) a_inic = a_i[i_N_t_min] plt.figure(exp + '_' + crit) plt.xlabel('Longitud de iniciacion (mm)') plt.ylabel('Ciclos') plt.yscale('log') plt.ylim([1e3,1e8]) plt.xlim([0.0,a_i[-1]]) plot_inic = [] plot_prop = [] plot_tot = [] plot_inic += plt.plot(a_i, N_i, 'b') plot_prop += plt.plot(a_i, N_p, 'k') plot_tot += plt.plot(a_i, N_t, 'r') #Pintamos el punto donde se da el minimo plt.plot(a_inic, N_t_min, 'ro') plt.legend([plot_inic[0], plot_prop[0], plot_tot[0]],
44 Capítulo 4. Descripción del código ['Vida de iniciacion', 'Vida de propagacion', 'Vida total' ], loc = 0) plt.show()
5 Resultados Pa ra validar el código se van a comparar los resultados obtenidos con los resultados experimentales mostrados en el Capítulo 3. Se han utilizado los dos parámetros descritos anteriormente, Fatemi-Socie y Smith-Watson-Topper. Para cada uno de estos parámetros se han realizado los cálculos considerando frentes de grieta elípticos, con una relación de aspecto Φ=0.5 y planos tanto en la fase de iniciación como en la fase de propagación. A continuación, en las Figuras 5.1-5.4 se muestran las vidas estimadas frente a las vidas experimentales para todos los casos. En estas figuras, las dos flechas indican que ese ensayo realmente son dos y que se interrumpió antes de ser finalizado, por lo que los puntos en realidad saldrían desplazados hacia la derecha. Para realizar una comparación cuantitativa se van a utilizar tres parámetros distintos. Por un lado, el antilogaritmo de la media ( ¯x ) y la desviación típica ( ςx ) de los logaritmos de los cocientes entre las vidas estimadas y las vidas experimentales. El cálculo de estos dos parámetros se muestra en las Ecuaciones 5.1 - 5.4. Por otro lado se va a realizar una regresión lineal de los resultados para obtener la pendiente m de la recta. ¯x indica la desviación media respecto a la recta que marca estimaciones perfectas, por lo que se va a utilizar como una medida de la subestimación o sobreestimación de las vidas. ςx se va a utilizar como una medida de la dispersión de los resultados. Por último, m va a reflejar si las estimaciones siguen la tendencia de los resultados experimentales. Si los tres parámetros fuesen igual a 1 significaría que la estimación de las vidas es perfecta; sin embargo, debido a la propia dispersión de los resultados experimentales nunca se van a llegar a obtener estos resultados. Por lo tanto, la mejor estimación es aquella en la que estos parámetros se aproximan más a 1. En la Tabla 5.1 se muestran los valores de los parámetros para los tres grupos de ensayo juntos. A la hora de obtener los parámetros se han obviado los resultados obtenidos para la combinación de cargas σ=70|N=971|Q=6629 ; ya que en todos los casos se sobrestima la vida en un número elevado de ciclos y provoca que los valores de los parámetros se alejen excesivamente de 1 y no permite una comparación útil. αi=log Nesti Nexpi (5.1) ¯ α=1 N N ∑ i=1 αi(5.2) ςα=s1 N−1 N ∑ i=1 (αi−¯ α)2(5.3) ¯x=10 ¯ α|ςx=10ςα(5.4) 45
46 Capítulo 5. Resultados (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.1 Vida estimada utilizando iniciación y propagación con grieta elíptica. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.2 Vida estimada utilizando iniciación con grieta elíptica y propagación con grieta plana. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.3 Vida estimada utilizando iniciación con grieta plana y propagación con grieta elíptica.
47 (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.4 Vida estimada utilizando iniciación y propagación con grieta plana. Tabla 5.1 ¯x,ςxympara los grupos de ensayos juntos. Iniciación plana Iniciación elíptica Prop. plana Prop. elíptica Prop. plana Prop. elíptica ¯xςxm¯xςxm¯xςxm¯xςxm FS 0.45 1.53 1.06 0.69 1.56 0.95 0.41 1.54 1.10 0.67 1.55 0.96 SWT 1.62 4.05 1.90 2.31 3.08 1.72 1.47 4.28 1.93 2.17 3.17 1.73 A partir de las gráficas y la tabla anterior se puede observar como el parámetro Fatemi-Socie obtiene mejores resultados que Smith-Watson-Topper utilizando este modelo. A partir del parámetro ¯x se puede comprobar como con Fatemi-Socie se subestiman las vidas mientras que con Smith- Watson-Topper se sobreestiman, siendo con Fatemi-Socie con el parámetro de fatiga multiaxial al que más se aproxima a 1. En cuanto a ςx , hay diferencias considerables entre ambos modelos, presentando Smith-Watson-Topper una dispersión mucho mayor de los resultados. Mirando los valores de la pendiente m se observa como nuevamente con Fatemi-Socie este parámetro se aproxima más a 1 que con Smith-Watson-Topper. Respecto a los diferentes frentes de grieta utilizados, las diferencias entre utilizar un frente de grieta elíptico o plano en la fase de iniciación son pequeñas, sobre todo para Fatemi-Socie. Por ello, a partir de este momento solo se utilizará frente de grieta elíptico en la fase de iniciación, ya que tiene más sentido que el frente de grieta durante esta fase sea así. Al utilizar frentes de grieta distintos durante la fase de propagación si aparecen mayores diferencias. Con Fatemi-Socie, ¯x se aproxima más a 1 utilizando frente de grieta elíptico; ςx apenas presenta variaciones entre ambos frentes de grieta y la pendiente pasa de ser superior a 1 para frente de grieta plano a menor que 1 para frente de grieta elíptico. En vista de esto, los mejores resultados se obtienen utilizando Fatemi-Socie con frente de grieta elíptico en la fase de propagación. En la Tabla 5.2 se muestran los resultados obtenidos para los tres parámetros para cada grupo de ensayos por separado utilizando siempre frente de grieta elíptico en la fase de iniciación y comparando entre los dos criterios de fatiga multiaxial y entre los dos tipos de frente de grieta. Se puede observar como tanto para el grupo de ensayos sin tratamiento superficial como para el grupo de ensayos con electroerosión apenas existen diferencias entre Fatemi-Socie y Smith-Watson- Topper. Es en el grupo de ensayos con shot peening donde aparecen diferencias significativas. Aunque la pendiente m es prácticamente la misma, ςx en menor medida y sobre todo ¯x son superiores en el
48 Capítulo 5. Resultados caso de Smith-Watson-Topper. En cuanto a las diferencias entre utilizar propagación con frente de grieta elíptico o plano, se puede observar como el único parámetro que varía significativamente es ¯x que se aproxima mucho más a 1 en el caso de propagación elíptica. Por último, se puede comprobar como el grupo de ensayos con el que el modelo obtiene mejores estimaciones es el grupo con electroerosión, seguido del grupo sin tratamiento superficial. El grupo de ensayos que obtiene peores resultados es el grupo sometido a shot peening. Se puede concluir a partir de estos resultados que el modelo parece obtener mejores resultados cuando las vidas son menores. Tabla 5.2 ¯x,ςxympara cada grupo de ensayos por separado. Sin tratamiento superficial Prop. plana Prop. elíptica ¯xςxm¯xςxm FS 0.40 1.40 1.30 0.77 1.41 1.32 SWT 0.43 1.40 1.29 0.83 1.40 1.30 Con shot peening Prop. plana Prop. elíptica ¯xςxm¯xςxm FS 0.43 1.71 1.29 0.56 1.64 1.24 SWT 7.05 1.83 1.28 7.13 1.83 1.27 Con electroerosión Prop. plana Prop. elíptica ¯xςxm¯xςxm FS 0.37 1.40 0.96 0.80 1.33 0.97 SWT 0.37 1.39 0.93 0.81 1.32 0.93 En la Figura 5.5 se muestra la proporción de vida dedicada a la iniciación en función de la vida estimada para FS y SWT utilizando propagación elíptica. Se puede ver como en términos generales, a mayor vida se obtienen mayores porcentajes de iniciación. Sin embargo, tanto en el grupo de ensayos sin tratamiento superficial como en el grupo de ensayos sometido a electroerosión la tendencia es la contraria; ya que el porcentaje de iniciación va disminuyendo. En cuanto a las diferencias entre los parámetros, utilizando SWT se obtienen mayores porcentajes de iniciación para vidas altas y menores para vidas bajas. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.5 Porcentaje de iniciación utilizando propagación con grieta elíptica.
49 En la Figura 5.6 se muestra la longitud de iniciación en función de la vida estimada para FS y SWT utilizando propagación elíptica. La tendencia de estas gráficas es la misma que la que se produce en las mencionadas anteriormente. En términos generales, la longitud de iniciación es mayor para vidas mayores. Sin embargo, en los grupos de ensayo sin tratamiento superficial y con electroerosión; la longitud de iniciación disminuye al aumentar la vida. Aparte, con SWT se obtienen mayores longitudes de iniciación para vidas altas y viceversa para vidas bajas. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.6 Longitud de iniciación utilizando propagación con grieta elíptica. En las Figuras 5.8 y 5.9 se muestra la evolución de la longitud de la grieta en función del número de ciclos para la combinación de cargas σ=110|N=971|Q=5429 sin tratamiento superficial y se compara con los resultados experimentales comentados en el Capítulo 3. La obtención de estas curvas se realiza a partir de las curvas de vida. Hasta la longitud de iniciación la evolución de la grieta está influenciada por la fase de iniciación. Por ello, entre dos longitudes de grieta sucesivas el número de ciclos necesario para propagar la grieta crece como la diferencia entre los ciclos de esos dos puntos de la curva de iniciación. A partir de la longitud de iniciación, la evolución de la grieta está influenciada por la fase de propagación. Debido a esto, entre dos longitudes de grieta sucesivas los ciclos necesarios para propagar la grieta serán la diferencia entre los ciclos de la curva de propagación entre esos dos puntos. En la Figura 5.7 se muestra como se debe hacer el cálculo tanto en puntos anteriores a la longitud de iniciación como en punto posteriores. Cabe destacar que debido a que la curva de propagación es decreciente, la longitud de la grieta va a presentar una asíntota; de forma que la grieta avanza muy rápido para un número pequeño de ciclos al final de la vida de la misma. Lo ideal sería que la curva se aproximase lo máximo posible a los resultados de los ensayos interrumpidos; mientras que debería sobrepasar los resultados de los ensayos hasta rotura. Esto se debe a que en los ensayos hasta rotura, lo que se ha medido es la grieta secundaria; mientras que la principal evidentemente habrá tenido una longitud superior. Se puede comprobar como nuevamente el modelo se aproxima más a los resultados experimentales utilizando el parámetro Fatemi-Socie y la propagación elíptica. En este caso, de todas formas, utilizando Smith-Watson-Topper junto con grieta elíptica también se obtienen resultados que siguen más o menos la tendencia real. En las Figuras 5.10 - 5.12 se muestra la evolución de la longitud de la grieta para todas las combinaciones de carga de los tres grupos de ensayo. Los casos mostrados se corresponden con los realizados utilizando el criterio de Fatemi-Socie junto con propagación elíptica, con la que se han obtenido los mejores resultados. Se puede comprobar como la evolución de las grietas sigue el mismo patrón en todos los casos. Para pocos ciclos de carga, durante la fase de iniciación, la grieta
56 Capítulo 5. Resultados (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.20 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=4217 sin tratamiento superficial. Figura 5.21 Evolución de la tensión σx para la combinación de cargas σ=150|N=1543|Q=5429 sin tratamiento superficial. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.22 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=5429 sin tratamiento superficial.
57 Figura 5.23 Evolución de la tensión σx para la combinación de cargas σ=150|N=2113|Q=5429 sin tratamiento superficial. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.24 Curvas de vida estimada para la combinación de cargas σ=150|N=2113|Q=5429 sin tratamiento superficial. Figura 5.25 Evolución de la tensión σx para la combinación de cargas σ=175|N=1543|Q=5429 sin tratamiento superficial.
58 Capítulo 5. Resultados (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.26 Curvas de vida estimada para la combinación de cargas σ=175|N=1543|Q=5429 sin tratamiento superficial. Figura 5.27 Evolución de la tensión σx para la combinación de cargas σ=70|N=971|Q=6629 con shot peening. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.28 Curvas de vida estimada para la combinación de cargas σ=70|N=971|Q=6629 con shot peening.
59 Figura 5.29 Evolución de la tensión σx para la combinación de cargas σ=110|N=1543|Q=5429 con shot peening. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.30 Curvas de vida estimada para la combinación de cargas σ=110|N=1543|Q=5429 con shot peening. Figura 5.31 Evolución de la tensión σx para la combinación de cargas σ=150|N=1543|Q=3006 con shot peening.
60 Capítulo 5. Resultados (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.32 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=3006 con shot peening. Figura 5.33 Evolución de la tensión σx para la combinación de cargas σ=150|N=1543|Q=4217 con shot peening. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.34 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=4217 con shot peening.
61 Figura 5.35 Evolución de la tensión σx para la combinación de cargas σ=150|N=1543|Q=5429 con shot peening. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.36 Curvas de vida estimada para la combinación de cargas σ=150|N=1543|Q=5429 con shot peening. Figura 5.37 Evolución de la tensión σx para la combinación de cargas σ=150|N=2113|Q=5429 con shot peening.
62 Capítulo 5. Resultados (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.38 Curvas de vida estimada para la combinación de cargas σ=150|N=2113|Q=5429 con shot peening. Figura 5.39 Evolución de la tensión σx para la combinación de cargas σ=175|N=1543|Q=5429 con shot peening. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.40 Curvas de vida estimada para la combinación de cargas σ=175|N=1543|Q=5429 con shot peening.
63 Figura 5.41 Evolución de la tensión σx para la combinación de cargas σ=70|N=971|Q=6629 con electroerosión. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.42 Curvas de vida estimada para la combinación de cargas σ=70|N=971|Q=6629 con electroerosión. Figura 5.43 Evolución de la tensión σx para la combinación de cargas σ=150|N=2113|Q=3006 con electroerosión.
64 Capítulo 5. Resultados (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.44 Curvas de vida estimada para la combinación de cargas σ=150|N=2113|Q=3006 con electroerosión. Figura 5.45 Evolución de la tensión σx para la combinación de cargas σ=150|N=2113|Q=5429 con electroerosión. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.46 Curvas de vida estimada para la combinación de cargas σ=150|N=2113|Q=5429 con electroerosión.
65 Figura 5.47 Evolución de la tensión σx para la combinación de cargas σ=175|N=971|Q=3006 con electroerosión. (a) Fatemi-Socie. (b) Smith-Watson-Topper. Figura 5.48 Curvas de vida estimada para la combinación de cargas σ=175|N=971|Q=3006 con electroerosión. Figura 5.49 Evolución de la tensión σx para la combinación de cargas σ=175|N=971|Q=5429 con electroerosión.
72 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.2 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 971|Q=5429 sin tratamiento superficial. Figura A.3 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 1257|Q=5429 sin tratamiento superficial.
A.1 Sin tratamiento superficial 73 Figura A.4 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 1543|Q=4217 sin tratamiento superficial. Figura A.5 Evolución de la vida de iniciación, propagación y total para la combinación σ=110|N= 1543|Q=5429 sin tratamiento superficial.
74 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.6 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 971|Q=3006 sin tratamiento superficial. Figura A.7 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 971|Q=4217 sin tratamiento superficial.
A.1 Sin tratamiento superficial 75 Figura A.8 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 971|Q=5429 sin tratamiento superficial. Figura A.9 Evolución de la vida de iniciación, propagación y total para la combinación σ=150|N= 1543|Q=3006 sin tratamiento superficial.
76 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.10 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=1543|Q=4217 sin tratamiento superficial. Figura A.11 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=1543|Q=5429 sin tratamiento superficial.
A.1 Sin tratamiento superficial 77 Figura A.12 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=2113|Q=3006 sin tratamiento superficial. Figura A.13 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=2113|Q=4217 sin tratamiento superficial.
78 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.14 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=2113|Q=5429 sin tratamiento superficial. Figura A.15 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=971|Q=3006 sin tratamiento superficial.
A.1 Sin tratamiento superficial 79 Figura A.16 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=971|Q=4217 sin tratamiento superficial. Figura A.17 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=971|Q=5429 sin tratamiento superficial.
80 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.18 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=1543|Q=3006 sin tratamiento superficial. Figura A.19 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=1543|Q=4217 sin tratamiento superficial.
A.1 Sin tratamiento superficial 81 Figura A.20 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=1543|Q=5429 sin tratamiento superficial. Figura A.21 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=2113|Q=3006 sin tratamiento superficial.
88 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.34 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=1543|Q=5429 con shot peening. Figura A.35 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=2113|Q=3006 con shot peening.
A.2 Con shot peening 89 Figura A.36 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=2113|Q=4217 con shot peening. Figura A.37 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=2113|Q=5429 con shot peening.
90 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.38 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=971|Q=3006 con shot peening. Figura A.39 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=971|Q=4217 con shot peening.
A.2 Con shot peening 91 Figura A.40 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=971|Q=5429 con shot peening. Figura A.41 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=1543|Q=3006 con shot peening.
92 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.42 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=1543|Q=4217 con shot peening. Figura A.43 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=1543|Q=5429 con shot peening.
A.2 Con shot peening 93 Figura A.44 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=2113|Q=3006 con shot peening. Figura A.45 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=2113|Q=4217 con shot peening.
94 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.46 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=2113|Q=5429 con shot peening. A.3 Con electroerosión Figura A.47 Evolución de la vida de iniciación, propagación y total para la combinación σ=70|N= 971|Q=6629 con electroerosión.
A.3 Con electroerosión 95 Figura A.48 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=2113|Q=3006 con electroerosión. Figura A.49 Evolución de la vida de iniciación, propagación y total para la combinación σ= 150|N=2113|Q=5429 con electroerosión.
96 Capítulo A. Curvas de vida para Fatemi-Socie Figura A.50 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=971|Q=3006 con electroerosión. Figura A.51 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=971|Q=5429 con electroerosión.
A.3 Con electroerosión 97 Figura A.52 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=2113|Q=3006 con electroerosión. Figura A.53 Evolución de la vida de iniciación, propagación y total para la combinación σ= 175|N=2113|Q=5429 con electroerosión.