Universidad de Navarra Escuela Superior de Ingenieros Nafarroako Unibertsitatea Ingeniarien Goi Mailako Eskola Proyecto Fin de Máster INGENIERO INDUSTRIAL MODELIZACIÓN TÉRMICA DE DISCOS DE FRENO FERROVIARIOS Documento nº2: ANEXOS La alumna: Marta Usabiaga Urrestarazu San Sebastián, enero de 2015 CAMPUS TECNOLÓGICO DE LA UNIVERSIDAD DE NAVARRA. NAFARROAKO UNIBERTSITATEKO CAMPUS TEKNOLOGIKOA Paseo de Manuel Lardizábal 13. 20018 Donostia-San Sebastián. Tel.: 943 219 877 Fax: 943 311 442 www.tecnun.es [email protected] I. ANEXO: Análisis resultados MODELO CFD .......................................................................... 1 A. Gráfico de convergencia ........................................................................................ 1 B. Elección de elementos para obtener resultados ..................................................... 1 C. Resultados de distribuciones .............................................................................. 2 II. C.1. Velocidad= 50km/h...................................................................................... 2 C.2.Velocidad=150km/h...................................................................................... 5 C.3.Velocidad=300km/h...................................................................................... 8 ANEXO: Análisis resultados OARIS ..................................................................................... 13 A. EB R2x320km/h MA ..............................................................................................13 A.1.Variación de temperatura y tensión .............................................................13 A.2 Análisis del diagrama fatiga-fractura............................................................15 B. EB R 2x320km/h TA ..............................................................................................20 B.1.Variación de temperatura y tensión .............................................................20 B.2 Análisis del diagrama fatiga-fractura............................................................22 C. III. EB R 1x350km/h MA .........................................................................................29 C.1.Variación de temperatura y tensión .............................................................29 C.2 Análisis del diagrama fatiga-fractura ...........................................................31 ANEXO: Análisis resultados CIVITY ..................................................................................... 39 A. EB R 2x160km/h TA ..............................................................................................39 A.1. Análisis del diagrama fatiga-fractura...........................................................39 IV. ANEXO: Fichero cálculo CFD ................................................................................................ 45 V. ANEXO: Fichero .inp cálculo térmico................................................................................... 46 VI. ANEXO: Fichero .inp cálculo mecánico ............................................................................... 47 VII. ANEXO: Subrutina del módulo CFD ..................................................................................... 51 VIII. ANEXO: Script de obtención del coeficiente de película ................................................... 53 IX. ANEXO: Script para realizar report modelo mecánico ....................................................... 54 X. ANEXO: MACRO de Excel para post-proceso ..................................................................... 56 ANEXO: Análisis resultados MODELO CFD I. ANEXO: ANÁLISIS RESULTADOS MODELO CFD En este anexo se muestran los resultados obtenidos del estudio realizado del modelo CFD en Abaqus. A. GRÁFICO DE CONVERGENCIA Con objeto de analizar la convergencia del modelo CFD realizado, se ha simulado el caso de velocidad del vehículo de 150km/h con un número alto de iteraciones. De esta manera se estudia el tiempo necesario de análisis para lograr resultados estacionarios. Una vez analizado un caso, se ha aplicado este parámetro a las demás simulaciones. Ilustración I.1: Representación de convergencia del coeficiente de convección del caso de v=150km/h para distintos radios del disco de freno B. ELECCIÓN DE ELEMENTOS PARA OBTENER RESULTADOS Los resultados obtenidos en base al radio del disco, se han extraído de los siguientes elementos elegidos: 1 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración I.2: Elementos seleccionados para realizar el análisis de los coeficientes de convección a diferentes radios del disco de freno C. RESULTADOS DE DISTRIBUCIONES Se muestran a continuación todos los contornos de coeficiente de convección, flujo de calor, presión, temperatura, velocidad e y+ para los tres casos de estudio: velocidad de 50km/h, 150km/h y 300km/h. C.1. Velocidad= 50km/h Ilustración I.3: Distribución de coeficientes de convección para el caso v=50km/h 2 ANEXO: Análisis resultados MODELO CFD Ilustración I.4: Distribución de flujo de calor para el caso v=50km/h Ilustración I.5: Distribución de presión para el caso v=50km/h 3 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración I.6: Distribución de temperatura para el caso v=50km/h Ilustración I.7: Distribución de velocidad para el caso v=50km/h 4 ANEXO: Análisis resultados MODELO CFD Ilustración I.8: Distribución de y+ para el caso v=50km/h C.2.Velocidad=150km/h Ilustración I.9: Distribución de coeficientes de convección para el caso v=150km/h 5 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración I.10: Distribución de flujo de calor para el caso v=150km/h Ilustración I.11: Distribución de coeficientes de presión para el caso v=150km/h 6 ANEXO: Análisis resultados MODELO CFD Ilustración I.12: Distribución de temperatura para el caso v=150km/h Ilustración I.13: Distribución de velocidad para el caso v=150km/h 7 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración I.14: Distribución de y+ para el caso v=150km/h C.3.Velocidad=300km/h Ilustración I.15: Distribución de coeficientes de convección para el caso v=300km/h 8 ANEXO: Análisis resultados MODELO CFD Ilustración I.16: Distribución de flujo de calor para el caso v=300km/h Ilustración I.17: Distribución de presión para el caso v=300km/h 9 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración I.18: Distribución de temperatura para el caso v=300km/h Ilustración I.19: Distribución de velocidad para el caso v=300km/h 10 ANEXO: Análisis resultados MODELO CFD Ilustración I.20: Distribución de y+ para el caso v=300km/h D. RESULTADOS DE DISTRIBUCIONES DE COEFICIENTES DE PELÍCULA Ilustración I.21: Distribución de vectores de coeficiente de película para una velocidad de 50km/h 11 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración I.22: Distribución de vectores de coeficiente de película para una velocidad de 150km/h Ilustración I.23: Distribución de vectores de coeficiente de película para una velocidad de 300km/h 12 ANEXO: Análisis resultados OARIS II. ANEXO: ANÁLISIS RESULTADOS OARIS En este anexo, se muestran los resultados obtenidos de la aplicación de la metodología en el disco de freno montado sobre rueda del vehículo Oaris. Se presentan, para cada secuencia de frenado analizada, la variación de temperatura y la tensión de von Mises en función del tiempo de distintos nodos, así como los rangos de análisis del diagrama fractura-fatiga. Para cada rango analizado mediante la Macro a su vez, se representa el gráfico temperatura-tensión, los resultados obtenidos de validez y las distribuciones de tensión y temperatura. A. EB R2X320KM/H MA A.1.Variación de temperatura y tensión 600 fric der (N22111) Temperature [ºC] 500 aguj der (N21975) 400 contacto (N20138) 300 ch (N20967) 200 100 0 0 100 200 300 400 500 600 700 800 aguj tor fric dentro NT(21109) aguj tor fric dentro NT(20584) EB-R-320MA WMD t [s] Ilustración II.1: Temperaturas de nodos (Ilustración II.3) para cada instante de tiempo del análisis EB R 2x320MA 13 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios 800 fric der (N22111) Mises stress [N/mm2] 700 600 aguj der (N21975) 500 contacto (N20138) 400 300 ch (N20967) 200 aguj tor fric dentro NT(21109) 100 0 0 100 200 300 400 500 600 700 800 t [s] aguj tor fric dentro NT(20584) Ilustración II.2: Tensiones de von Mises de nodos (Ilustración II.3) para cada instante de tiempo del análisis EB R 2x320MA 21109 21975 20584 202967 22111 21096 20138 Ilustración II.3: Nodos elegidos para obtener la distribución de temperaturas y tensiones 14 ANEXO: Análisis resultados OARIS A.2Análisis del diagrama fractura-fatiga Rango: tensión>850MPa, T>50ºC Ilustración II.4: Diagrama incremento de temperatura-tensión térmica para el rango tensión>850MPa y T>50ºC del análisis EB R 2x320MA Ilustración II.5:Resultados de la Macro de temperatura-tensión térmica para el rango tensión>850MPa y T>50ºC del análisis EB R 2x320MA 15 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración II.6: Distribución de tensión y temperatura en instante de tiempo 67.78s para el rango tensión>850MPa y T>50ºC del análisis EB R 2x320MA Ilustración II.7: Distribución de tensión y temperatura en instante de tiempo 687.8s para el rango tensión>850MPa y T>50ºC del análisis EB R 2x320MA 16 ANEXO: Análisis resultados OARIS Rango: tensión>750MPa, T>250ºC Ilustración II.8: Diagrama incremento de temperatura-tensión térmica para el rango tensión>750MPa y T>250ºC del análisis EB R 2x320MA 17 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración II.9: Resultados de la Macro de temperatura-tensión térmica para el rango tensión>750MPa y T>250ºC del análisis EB R 2x320MA Ilustración II.10: Distribución de tensión y temperatura en instante de tiempo 57.78s para el rango tensión>750MPa y T>250ºC del análisis EB R 2x320MA 18 ANEXO: Análisis resultados OARIS Ilustración II.11: Distribución de tensión y temperatura en instante de tiempo 687.8s para el rango tensión>750MPa y T>250ºC del análisis EB R 2x320MA 19 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios B. EB R 2X320KM/H TA B.1.Variación de temperatura y tensión 500 fric der (N22111) 450 Temperature [ºC] 400 aguj der (N21975) 350 300 contacto (N20138) 250 ch (N20967) 200 150 100 50 0 0 100 200 300 400 500 600 700 800 aguj tor fric dentro NT(21109) aguj tor fric dentro NT(20584) EB-R-320TA WMD t [s] Ilustración II.12: Temperaturas de nodos (Ilustración II.14) para cada instante de tiempo del análisis EB R 2x320 TA 700 fric der (N22111) Mises stress [N/mm2] 600 500 aguj der (N21975) 400 contacto (N20138) 300 ch (N20967) 200 100 aguj tor fric dentro NT(21109) 0 0 100 200 300 400 500 600 700 800 t [s] aguj tor fric dentro NT(20584) Ilustración II.13: Tensiones de von Mises de nodos (Ilustración II.14) para cada instante de tiempo del análisis EB R 2x320 TA 20 ANEXO: Análisis resultados OARIS 21109 21975 20584 202967 22111 21096 20138 Ilustración II.14: Nodos elegidos para obtener la distribución de temperaturas y tensiones 21 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios B.2Análisis del diagrama fractura-fatiga Rango: tensión> 700MPa, T>50ºC Ilustración II.15: Diagrama incremento de temperatura-tensión térmica para el rango tensión>700MPa y T>250ºC del análisis EB R 2x320 TA Ilustración II.16: Resultados de la Macro de temperatura-tensión térmica para el rango tensión>700MPa y T>50ºC del análisis EB R 2x320 TA 22 ANEXO: Análisis resultados OARIS Ilustración II.17: Distribución de tensión y temperatura en instante de tiempo 71.3s para el rango tensión>700MPa y T>50ºC del análisis EB R 2x320 TA lustración II.18: Distribución de tensión y temperatura en instante de tiempo 621.3s para el rango tensión>700MPa y T>50ºC del análisis EB R 2x320 TA 23 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración II.19: Distribución de tensión y temperatura en instante de tiempo 631.3s para el rango tensión>700MPa y T>50ºC del análisis EB R 2x320 TA 24 ANEXO: Análisis resultados OARIS Rango: tensión> 350MPa, T>400ºC Ilustración II.20: Diagrama incremento de temperatura-tensión térmica para el rango tensión>350MPa y T>400ºC del análisis EB R 2x320 TA 25 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración II.21: Resultados de la Macro de temperatura-tensión térmica para el rango tensión>350MPa y T>400ºC del análisis EB R 2x320 TA Ilustración II.22: Distribución de tensión y temperatura en instante de tiempo 621.3s para el rango tensión>350MPa y T>400ºC del análisis EB R 2x320 TA 26 ANEXO: Análisis resultados OARIS Rango: tensión> 600MPa, T>220ºC Ilustración II.23: Diagrama incremento de temperatura-tensión térmica para el rango tensión>600MPa y T>220ºC del análisis EB R 2x320 TA Ilustración II.24: Resultados de la Macro de temperatura-tensión térmica para el rango tensión>600MPa y T>220ºC del análisis EB R 2x320 TA 27 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración II.25: Distribución de tensión y temperatura en instante de tiempo 621.3s para el rango tensión>600MPa y T>220ºC del análisis EB R 2x320 TA 28 ANEXO: Análisis resultados OARIS C. EB R 1X350KM/H MA C.1.Variación de temperatura y tensión 600 fric der (N22111) Temperature [ºC] 500 aguj der (N21975) 400 contacto (N20138) 300 ch (N20967) 200 100 0 0 200 400 600 800 aguj tor fric dentro NT(21109) aguj tor fric dentro NT(20584) EB-R-350MA WMD t [s] Ilustración II.26: Temperaturas de nodos (Ilustración II.28) para cada instante de tiempo del análisis EB R 1x350 MA 900 fric der (N22111) Mises stress [N/mm2] 800 700 aguj der (N21975) 600 500 contacto (N20138) 400 ch (N20967) 300 200 aguj tor fric dentro NT(21109) 100 0 0 200 400 600 800 t [s] aguj tor fric dentro NT(20584) EB-R-350MA WMD Ilustración II.27: Tensiones de von Mises de nodos(Ilustración II.28) para cada instante de tiempo del análisis EB R 1x350 MA 29 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios 21109 21975 20584 202967 22111 21096 20138 Ilustración II.28: Nodos elegidos para obtener la distribución de temperaturas y tensiones 30 ANEXO: Análisis resultados OARIS C.2 Análisis del diagrama fractura-fatiga En la presente simulación, se obtienen valores elevados de tensión-temperatura. Por esta razón, se presentan además los resultados logrados del análisis detallado (tercera alternativa de la Macro) de los ficheros de soluciones de Abaqus. Por tanto, se muestra la variación del diagrama incremento de temperatura- tensión térmica para los nodos del rango representado y la relación de la tensión térmica y tensión de fluencia para cada instante del análisis, seguidos de la leyenda de los nodos. Rango: tensión> 900MPa, T>40ºC Ilustración II.29: Diagrama incremento de temperatura-tensión térmica para el rango tensión>900MPa y T>40ºC del análisis EB R 1x350 MA 31 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración II.30: Resultados de la Macro de temperatura-tensión térmica para el rango tensión>900MPa y T>40ºC del análisis EB R 1x350 MA Ilustración II.31: Distribución de tensión y temperatura en instante de tiempo 54.78s para el rango tensión>900MPa y T>40ºC del análisis EB R 1x350 MA 32 ANEXO: Análisis resultados OARIS Ilustración II.32: Distribución de tensión y temperatura en instante de tiempo 64.78s para el rango tensión>900MPa y T>40ºC del análisis EB R 1x350 MA Ilustración II.33: Distribución de tensión y temperatura en instante de tiempo 74.78s para el rango tensión>900MPa y T>40ºC del análisis EB R 1x350 MA 33 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Rango: tensión>790MPa, T>300ºC Ilustración II.34: Diagrama incremento de temperatura-tensión térmica para el rango tensión>790MPa y T>300ºC del análisis EB R 1x350 MA Ilustración II.35: Resultados de la Macro de temperatura-tensión térmica para el rango tensión>790MPa y T>300ºC del análisis EB R 1x350 MA 34 ANEXO: Análisis resultados OARIS IlustraciónII.36: Distribución de tensión y temperatura en instante de tiempo 54.78s para el rango tensión>790MPa y T>300ºC del análisis EB R 1x350 MA 35 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración II.37: Análisis detallado 1 para el rango tensión>790MPa y T>300ºC del análisis EB R 1x350MA 36 ANEXO: Análisis resultados OARIS Ilustración II.38: Análisis detallado 2 para el rango tensión>790MPa y T>300ºC del análisis EB R 1x350MA 37 Marta Usabiaga Urrestarazu 38 Modelización Térmica de Discos de freno ferroviarios ANEXO: Análisis resultados CIVITY III. ANEXO: ANÁLISIS RESULTADOS CIVITY En este anexo se exponen los resultados obtenidos de la aplicación de la metodología en el disco de freno del vehículo Civity. Se muestran para cada secuencia analizada los rangos de análisis del diagrama fractura-fatiga. Para cada rango estudiado mediante la Macro a su vez, se representa el gráfico temperatura-tensión, los resultados obtenidos de validez y las distribuciones de tensión y temperatura. A. EB R 2X160KM/H TA A.1. Análisis del diagrama fractura-fatiga Rango: tensión>1100MPa, T>50ºC Ilustración III.1: Diagrama incremento de temperatura-tensión térmica para el rango tensión>1100MPa y T>50ºC del análisis EB R 2x160 TA 39 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Ilustración III.2: Resultados de la Macro de temperatura-tensión térmica para el rango tensión>11000MPa y T>50ºC del análisis EB R 2x160 TA Ilustración III.3: Distribución de tensión y temperatura en instante de tiempo 195.6s para el rango tensión>1100MPa y T>50ºC del análisis EB R 2x160 TA 40 ANEXO: Análisis resultados CIVITY Ilustración III.4: Distribución de tensión y temperatura en instante de tiempo 200.6s para el rango tensión>1100MPa y T>50ºC del análisis EB R 2x160 TA Ilustración III.5: Distribución de tensión y temperatura en instante de tiempo 205.6s para el rango tensión>1100MPa y T>50ºC del análisis EB R 2x160 TA 41 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Rango:tensión> 700MPa, T>300ºC Ilustración III.6: Diagrama incremento de temperatura-tensión térmica para el rango tensión>700MPa y T>300ºC del análisis EB R 2x160 TA Ilustración III.7: Resultados de la Macro de temperatura-tensión térmica para el rango tensión>700MPa y T>300ºC del análisis EB R 2x160 TA 42 ANEXO: Análisis resultados CIVITY Ilustración III.8: Distribución de tensión y temperatura en instante de tiempo 195.6s para el rango tensión>700MPa y T>300ºC del análisis EB R 2x160 TA Ilustración III.9: Distribución de tensión y temperatura en instante de tiempo 205.6s para el rango tensión>700MPa y T>300ºC del análisis EB R 2x160 TA 43 Marta Usabiaga Urrestarazu 44 Modelización Térmica de Discos de freno ferroviarios ANEXO: Fichero cálculo CFD IV. ANEXO: FICHERO CÁLCULO CFD *INCLUDE, INPUT=Fichero_geometría_aire(.inp) *MATERIAL, NAME=Aire *CONDUCTIVITY, TYPE=ISO valor_conductividad [kgmm/s3ºK] *SPECIFIC HEAT, TYPE=CONSTANTPRESSURE valor_calorespecifico[mm2/s2ºK] *DENSITY valor_densidad[kg/mm3] *VISCOSITY valor_viscosidad[kg/mm s] *AMPLITUDE, NAME=w, DEFINITION=TABULAR,TIME=TOTAL TIME,VALUE=RELATIVE t0, v0 tfin,vfin *INITIAL CONDITIONS, TYPE=TEMPERATURE,Element Average Aire, Temperatura_inial *INITIAL CONDITIONS, TYPE=DENSITY,Element Average Aire, densidad_inicial *INITIAL CONDITIONS, TYPE=TURBNU,Element Average Aire,viscosidadturbulenta_inicial *STEP, NAME=Conv *CFD, INCOMPRESSIBLE NAVIER STOKES, ENERGY EQUATION=TEMPERATURE ∆t inicial, t_analisis, *TURBULENCE MODEL, TYPE=SPALART ALLMARAS *MOMENTUM EQUATION SOLVER *PRESSURE EQUATION SOLVER *TRANSPORT EQUATION SOLVER *FLUID BOUNDARY, TYPE=SURFACE s_arco, P, 0. s_lat, P, 0. s_central,VELY,0. *FLUID BOUNDARY,TYPE=SURFACE,AMPLITUDE=w s_disco,VELXNU s_disco,VELZNU s_disco,VELYNU *FLUID BOUNDARY,TYPE=SURFACE s_disco,TEMP,valor_temperatura s_disco,TURBNU,0. s_disco,DIST,0. *OUTPUT, FIELD, VARIABLE=PRESELECT,FREQUENCY=100 *SURFACE OUTPUT,SURFACE=s_disco HFL,YPLUS *NODE OUTPUT TURBNU,VORTICITY *ELEMENT OUTPUT TURBNU,VORTICITY *OUTPUT, HISTORY, FREQUENCY=0 *END STEP 45 ANEXO: Fichero .inp cálculo térmico V. ANEXO: FICHERO .INP CÁLCULO TÉRMICO *INCLUDE,INPUT=Fichero_geometría_freno(.inp) *PHYSICAL CONSTANTS, ABSOLUTE ZERO=-273.15,STEFANBOLTZMANN=5.669e14 *MATERIAL,NAME=nombre_material *CONDUCTIVITY,TYPE=ISO Conductividad [WmmK],Temperatura [ºC] *SPECIFIC HEAT Calor específico [J/kgK],Temperatura [ºC] *DENSITY Densidad [kg/mm3] *INITIAL CONDITIONS,TYPE=TEMPERATURE NALL,temperatura_inicial *AMPLITUDE,NAME=nombre_tabla_ flujodecalor, DEFINITION=TABULAR, VALUE=RELATIVE, TIME=TOTAL TIME tiempo,valor,etc. **Para cada superficie se genera una tabla de coeficiente de película *AMPLITUDE,NAME=nombre_tabla_ coeficientesdepelícula, DEFINITION=TABULAR, VALUE=RELATIVE, TIME=TOTAL TIME tiempo,valor,etc. **Para cada superficie se genera una tabla de emisividad *AMPLITUDE,NAME=nombre_tabla_ coeficientesdeemisividad, DEFINITION=TABULAR, VALUE=RELATIVE, TIME=TOTAL TIME tiempo,valor,etc. *STEP, AMPLITUDE=STEP,INC=2000 Secuencia de frenada *HEAT TRANSFER,DELTMX=maximo_incrementoT,END=PERIOD ∆t inicial, t_analisis **Para cada superficie se aplica estas condiciones de convección y radiación *FILM,FILM AMPLITUDE=nombre_tabla_coeficientesdepelícula elemento,F_Número de cara del elemento, Temperatura ambiente, <valor_referencia_coeficientesdepelícula> *RADIATE,AMPLITUDE=nombre_tabla_coeficientesdeemisividad elemento,R_Número de cara del elemento, Temperatura ambiente, <valor_referencia_coeficientesdeemisividad> *DFLUX,AMPLITUDE=nombre_tabla_flujodecalor elemento,S_Número de cara del elemento,<valor_referenciaflujodecalor> *OUTPUT,FIELD,FREQUENCY=1 *NODE OUTPUT NT11 (variable de temperatura de nodo) *END STEP ********************** *STEP,AMPLITUDE=STEP,INC=2000 Enfriamiento restante *HEAT TRANSFER,DELTMX=maximo_incrementoT,END=PERIOD ∆t inicial, t_enfriamiento *END STEP 46 ANEXO: Fichero .inp cálculo mecánico VI. ANEXO: FICHERO .INP CÁLCULO MECÁNICO *INCLUDE,INPUT=Fichero_geometría_freno(.inp) *MATERIAL,NAME=nombre_material *DENSITY Densidad [kg/mm3] *ELASTIC E, v,T *PLASTIC, HARDENING=KINEMATIC 𝜎𝑟𝑒𝑎𝑙 , 𝜀𝑝𝑙á𝑠𝑡𝑖𝑐𝑜 *EXPANSION,TYPE=ISO, ZERO=20.0 Coeficiente_expansion,T *CLEARANCE,MASTER= superficie_eje,SLAVE=Superficie_rueda,VALUE=valor_distancia *INITIAL CONDITIONS,TYPE=TEMPERATURE NALL, temperatura_inicial *BOUNDARY Nodo_ligadura, gradodelibertad_fijo *PRE-TENSION SECTION,SURFACE=superficie_seccion,NODE=nodo_precarga *STEP 1. Interferencia *STATIC *CONTACT INTERFERENCE,SHRINK,TYPE=CONTACT PAIR Superficie_rueda, superficie_eje *OUTPUT,FIELD,FREQ=100 *NODE OUTPUT U, *ELEMENT OUTPUT,POSITION=NODES S, *END STEP ********************** *STEP 2. Friccion *STATIC *CHANGE FRICTION,INTERACTION=nombre_interacción *FRICTION Valor_fricción *END STEP ********************** *STEP 3. Cambio ligaduras *STATIC *BOUNDARY,OP=NEW Nodo_ligadura, gradodelibertad_fijo *END STEP ********************** *STEP 4. Precarga tornillo *STATIC *CLOAD,OP=NEW 47 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios nodo_precarga, 1, valor_precarga *END STEP ********************** *STEP 5. Precarga_2 *STATIC *BOUNDARY, FIXED nodo_precarga, 1, 1, 1 *OUTPUT, FIELD *NODE OUTPUT U, *ELEMENT OUTPUT, POSITION=NODES S, *END STEP ********************** *STEP, INC=1000 6. Secuencia de frenado *STATIC ∆t inicial, t_analisis *TEMPERATURE, FILE=nombre_archivo_odb,BSTEP=1,ESTEP=1,MIDSIDE ** Nombre del fichero sin la extension .fil *OUTPUT, FIELD, FREQ=1 *NODE OUTPUT U, *ELEMENT OUTPUT, POSITION=NODES S, ** *END STEP ********************** *STEP,INC=1000 7. Enfriamiento *STATIC ∆t inicial, t_enfriamiento *TEMPERATURE, FILE=Oaris_termicoR_1x350TA,BSTEP=2,ESTEP=2,MIDSIDE ** Nombre del fichero sin la extension .fil *OUTPUT, FIELD, FREQ=1 *NODE OUTPUT U, *ELEMENT OUTPUT, POSITION=NODES S, *END STEP ********************** *STEP, INC=1000 8. Enfriamiento directo a temperatura ambiente *STATIC , <t_subi>, ** Tiempo para que resulte un total de 50000 seg *TEMPERATURE NALL, temperatura_ambiente *OUTPUT, FIELD, FREQ=1 *NODE OUTPUT 48 ANEXO: Fichero .inp cálculo mecánico U, *ELEMENT OUTPUT, POSITION=NODES S, *ELEMENT OUTPUT PEEQ, *END STEP 49 Marta Usabiaga Urrestarazu 50 Modelización Térmica de Discos de freno ferroviarios ANEXO: Subrutina del módulo CFD VII. ANEXO: SUBRUTINA DEL MÓDULO CFD #include "SMACfdUserSubroutines.h" #include "aba_for_c.h" #include <math.h> voidSMACfdUserVelocityBC (int nfacets, int direction, const int* labels, const int* sides, const int* instances, char** instanceNames, const double* xc, const double* yc, const double* zc, double amp, double totalTime, double stepTime, const char* surfaceName, double* bcvals) { int i; double vel,r_rueda,w; double* r; double* phi; r=new double[nfacets]; phi=new double[nfacets]; r_rueda=valor_radio(mm); vel=amp*(1000/3.6); //mm/s w=vel/r_rueda; //rad/s for (i = 0; i<nfacets; i++) { r[i]=pow((pow(xc[i],2.0)+pow(zc[i],2.0)),0.5); if (zc[i]<0) { if (xc[i]<0) { phi[i]=atan(zc[i]/xc[i])+3.141592654; } else { phi[i]=6.283185307-atan(-zc[i]/xc[i]); } } else { if (xc[i]<0) { phi[i]=3.141592654-atan(-zc[i]/xc[i]); } else { phi[i]=atan(zc[i]/xc[i]); } } if (direction == 1) { bcvals[i]=-r[i]*w*sin(phi[i]); 51 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios } if (direction == 3) { bcvals[i]=r[i]*w*cos(phi[i]); } if (direction == 2) { bcvals[i] = 0; } } } 52 ANEXO: Script de obtención del coeficiente de película VIII. ANEXO: SCRIPT DE OBTENCIÓN DEL COEFICIENTE DE PELÍCULA from abaqus import * from odbAccess import * from abaqusConstants import * from odbMaterial import * from odbSection import * from math import* import visualization odb = openOdb(path=‘Fichero_resultados_CFD.odb’) #Abrir el último y primer frame del Step primero lastFrame = odb.steps[‘nombre_step’'].frames[-1] firstFrame=odb.steps[‘nombre_step’'].frames[1] #Leer la variable de salida de HFL y TEMP heatransfer = lastFrame.fieldOutputs['HFL'] temp = firstFrame.fieldOutputs['TEMP'] #Cálculo del coeficiente de convección hcoef=heatransfer/(300.-40.) #Guardar valores de hcoef en el fichero de resultados newStep = odb.Step(name='Nuevo', description='Nuevosresultados', domain=TIME, timePeriod=1.0) newFrame = newStep.Frame(frameId=0, frameValue=0.0, description='Session Frame for odb1') newField = newFrame.FieldOutput(name='Hcoef', description='convection coefficient',type=VECTOR) newField.addData(field=hcoef) odb.save() odb.close() 53 Marta Usabiaga Urrestarazu IX. Modelización Térmica de Discos de freno ferroviarios ANEXO: SCRIPT PARA REALIZAR REPORT MODELO MECÁNICO from abaqus import * from odbAccess import * from abaqusConstants import * from odbMaterial import * from odbSection import * from math import* from viewerModules import * import visualization #Abrir fichero que contiene los resultados o1= openOdb(path= ‘Fichero_resultados_mecanico.odb’, readOnly=False) #Número máximo de nodos n_max=1000 #Crear nodeset de los nodos que se quiere extraer información nodeset='ndiscoA' #Abrir viewport y activar step de interes session.viewports['Viewport: 1'].setValues(displayedObject=o1) odbName=session.viewports[session.currentViewportName].odbDisplay.name session.odbData[odbName].setValues(activeFrames=(('Step-6', ('0:31', '67:86', )), )) #Aplicar porcentaje de averaging threshold session.viewports[session.currentViewportName].odbDisplay.basicOptions.setValues( averageElementOutput=True) session.viewports[session.currentViewportName].odbDisplay.basicOptions.setValues(ave ragingThreshold=100) #Elegir las variables para XY odb = session.odbs[‘Fichero_resultados_mecanico.odb’] session.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=(('NT11', NODAL), ('S', ELEMENT_NODAL, ((INVARIANT, 'Mises'), )), ), nodeSets=( 'PART-1-1.ndiscoA', )) #Calcular número de nodos del nodeset n_nodos=len(o1.rootAssembly.instances['PART-1-1'].nodeSets[nodeset].nodes) #Definicion de variables x_result=[] a=1 cont=1 #Modificar precisión datos de salida session.xyReportOptions.setValues(numDigits=4,numberFormat=SCIENTIFIC) #Crear XY report 54 ANEXO: Script para realizar report modelo mecánico ifn_nodos<=n_max: for n in o1.rootAssembly.instances['PART-1-1'].nodeSets[nodeset].nodes: x_result.append(session.xyDataObjects['NT11 PI: PART-1-1 N: '+str(n.label)]) x_result.append(session.xyDataObjects['S:Mises (Avg: 100%) PI: PART-11 N: '+str(n.label)]) session.writeXYReport(fileName='Report_0.rpt',xyData=x_result) x_result=[] elifn_nodos>n_max: forna in o1.rootAssembly.instances['PART-1-1'].nodeSets[nodeset].nodes: ifcont%n_max!=0: x_result.append(session.xyDataObjects['NT11 PI: PART-1-1 N: '+str(na.label)]) x_result.append(session.xyDataObjects['S:Mises (Avg: 100%) PI: PART-1-1 N: '+str(na.label)]) ifcont==n_nodos: a=n_nodos//n_max session.xyReportOptions.setValues(numDigits=4,numberFormat=SCIENTIFIC) session.writeXYReport(fileName= ('Report_'+str(a)+'.rpt'),xyData=x_result) x_result=[] else: a=cont/n_max session.writeXYReport(fileName= ('Report_'+str(a)+'.rpt'),xyData=x_result) x_result=[] cont=cont+1 #o1.save() o1.close() 55 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios X. ANEXO: MACRO DE EXCEL PARA POST-PROCESO A. OPCIÓN 1: VALIDACIÓN GENERAL Sub Report_General(n_hojas As Integer) Dim longitud As Integer, Columnas As Integer, n_graph As Integer, p As String, b As Integer, cnt As Long, cnt_end As Long 'n_hojas = Sheets("Material").Cells(3, 6).Value b = Sheets.Count i=1 cnt = 3 Do While (i< b) p = Sheets(i).Name If (p = "Material") Or (p = "Hoja3") Then Else Sheets(i).Delete b=b-1 i=i-1 End If i=i+1 Loop Sheets.Add Before:=Sheets("Material") ActiveSheet.Name = "Report_validation" Sheets("Report_validation").Cells(2, 2).Value = "NT11 - 40" Sheets("Report_validation").Cells(2, 3).Value = "Mises*1.2" Sheets("Report_validation").Cells(2, 4).Value = "t" Sheets("Report_validation").Cells(2, 5).Value = "n_nodo" Sheets("Report_validation").Cells(2, 6).Value = "X500" Sheets("Report_validation").Cells(2, 7).Value = "Y500" Sheets("Report_validation").Cells(2, 8).Value = "dist_500" Sheets("Report_validation").Cells(2, 9).Value = "X50000" Sheets("Report_validation").Cells(2, 10).Value = "Y50000" Sheets("Report_validation").Cells(2, 11).Value = "dist_50000" Sheets("Report_validation").Cells(2, 12).Value = "¿Admisible?" For n = 1 Ton_hojas Sheets.Add After:=Sheets("Material") ActiveSheet.Name = "Report" + Str(n) 'ImportTextFile ImportTextFileWithout Columnas = (Sheets("Report" + Str(n)).Range("B5").End(xlToRight).Column - 2) / 2 longitud = Sheets("Report" + Str(n)).Range("B7").End(xlDown).Row ReDimdatos_serie_x(Columnas) ReDimdatos_serie_y(Columnas) ReDimnombre_serie(Columnas) Sheets("Report" + Str(n)).Copy After:=Sheets("Report" + Str(n)) ActiveSheet.Name = "Report" + Str(n) + "_copy" For k = 1 ToColumnas 56 ANEXO: MACRO de Excel para post-proceso For Each Celda In Sheets("Report" + Str(n) + "_copy").Range(Sheets("Report" + Str(n) + "_copy").Cells(7, 2 * k + 1), Sheets("Report" + Str(n) + "_copy").Cells(longitud, 2 * k + 1)) Celda.Value = Celda.Value - 40 Next Celda For Each Celda2 In Sheets("Report" + Str(n) + "_copy").Range(Sheets("Report" + Str(n) + "_copy").Cells(7, 2 * k + 2), Sheets("Report" + Str(n) + "_copy").Cells(longitud, 2 * k + 2)) Celda2.Value = Celda2.Value * 1.2 Next Celda2 'Copiartemperaturas Sheets("Report_validation").Range(Sheets("Report_validation").Cells(cnt, 2), Sheets("Report_validation").Cells(cnt + longitud - 7, 2)).Value = Sheets("Report" + Str(n) + "_copy").Range(Sheets("Report" + Str(n) + "_copy").Cells(7, 2 * k + 1), Sheets("Report" + Str(n) + "_copy").Cells(longitud, 2 * k + 1)).Value 'Copiartensiones Sheets("Report_validation").Range(Sheets("Report_validation").Cells(cnt, 3), Sheets("Report_validation").Cells(cnt + longitud - 7, 3)).Value = Sheets("Report" + Str(n) + "_copy").Range(Sheets("Report" + Str(n) + "_copy").Cells(7, 2 * k + 2), Sheets("Report" + Str(n) + "_copy").Cells(longitud, 2 * k + 2)).Value 'Copiartiempo Sheets("Report_validation").Range(Sheets("Report_validation").Cells(cnt, 4), Sheets("Report_validation").Cells(cnt + longitud - 7, 4)).Value = Sheets("Report" + Str(n) + "_copy").Range(Sheets("Report" + Str(n) + "_copy").Cells(7, 2), Sheets("Report" + Str(n) + "_copy").Cells(longitud, 2)).Value 'Copiarnodo Sheets("Report_validation").Range(Sheets("Report_validation").Cells(cnt, 5), Sheets("Report_validation").Cells(cnt + longitud - 7, 5)).Value = Sheets("Report" + Str(n) + "_copy").Cells(5, 2 * k + 1).Value cnt = 1 + Sheets("Report_validation").Range("B2").End(xlDown).Row Next k Next n Dim grafico As Chart Sheets("Hoja3").Activate Set grafico = Charts.Add With grafico .Name = "GraficoValidación" .ChartType = xlXYScatter End With 'Nombre eje x Withgrafico.Axes(xlCategory) .HasTitle = True .AxisTitle.Text = "Thermal Stress [kN/mm2]" End With 'Nombre eje y With grafico.Axes(xlValue) .HasTitle = True 57 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios .AxisTitle.Text = "Temperature increase [K]" End With cnt_end = 1 + Sheets("Report_validation").Range("B2").End(xlDown).Row ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = Sheets("Report_validation").Range(Sheets("Report_validation").Cells(3, 3), Sheets("Report_validation").Cells(cnt_end, 3)) ActiveChart.SeriesCollection(1).Values = Sheets("Report_validation").Range(Sheets("Report_validation").Cells(3, 2), Sheets("Report_validation").Cells(cnt_end, 2)) ActiveChart.SeriesCollection(1).Name = "Report_Validation" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).ChartType = xlXYScatterLines ActiveChart.SeriesCollection(2).XValues = Sheets("Material").Range(Sheets("Material").Cells(11, 9), Sheets("Material").Cells(14, 9)) ActiveChart.SeriesCollection(2).Values = Sheets("Material").Range(Sheets("Material").Cells(11, 11), Sheets("Material").Cells(14, 11)) ActiveChart.SeriesCollection(2).Name = "Ciclo=500" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(3).ChartType = xlXYScatterLines ActiveChart.SeriesCollection(3).Name = "Ciclo=50000" ActiveChart.SeriesCollection(3).XValues = Sheets("Material").Range(Sheets("Material").Cells(4, 9), Sheets("Material").Cells(12, 9)) ActiveChart.SeriesCollection(3).Values = Sheets("Material").Range(Sheets("Material").Cells(4, 10), Sheets("Material").Cells(12, 10)) End Sub B. OPCIÓN 2: ANÁLISIS VALIDACIÓN GENERAL Sub Analisis_Report_General(NTref As Double, MIref As Double) Dim b As Integer, exi As Boolean b = Sheets.Count exi = False For i = 1 To b p = Sheets(i).Name If (p = "Report_validation") Then exi = True End If Next i If exi = True Then cant = Sheets("Report_validation").Range("B2").End(xlDown).Row Sheets("Report_validation").Cells(2, 6).Value = "X500" Sheets("Report_validation").Cells(2, 7).Value = "Y500" Sheets("Report_validation").Cells(2, 8).Value = "dist_500" Sheets("Report_validation").Cells(2, 9).Value = "X50000" Sheets("Report_validation").Cells(2, 10).Value = "Y50000" Sheets("Report_validation").Cells(2, 11).Value = "dist_50000" Sheets("Report_validation").Cells(2, 12).Value = "¿Admisible?" 58 ANEXO: MACRO de Excel para post-proceso For j = 3 To cant If (NTref<Sheets("Report_validation").Cells(j, 2).Value) And (MIref< Sheets("Report_validation").Cells(j, 3).Value) Then Px = Sheets("Report_validation").Cells(j, 3).Address Py = Sheets("Report_validation").Cells(j, 2).Address x1 = Sheets("Report_validation").Cells(j, 6).Address y1 = Sheets("Report_validation").Cells(j, 7).Address Sheets("Report_validation").Cells(j, 7).FormulaLocal = "=-0.00000225459*" & x1 & "^3+0.00179304*" & x1 & "^2-0.328822*" & x1 & "+675.36 " Sheets("Report_validation").Cells(j, 8).FormulaLocal = "=RAIZ((" & x1 & "-" &Px& ")^2+(" & y1 & "-" &Py& ")^2)" Sheets("Report_validation").Activate Call Distancia(Sheets("Report_validation").Range("F" & j).Address, Sheets("Report_validation").Range("G" & j).Address, Sheets("Report_validation").Range("H" & j).Address) distancia500 = Sheets("Report_validation").Cells(j, 8).Value x2 = Sheets("Report_validation").Cells(j, 9).Address y2 = Sheets("Report_validation").Cells(j, 10).Address Sheets("Report_validation").Cells(j, 10).FormulaLocal = "=-0.00000243503*" & x2 & "^3+0.0013136*" & x2 & "^2-0.41823*" & x2 & "+508.6868" Sheets("Report_validation").Cells(j, 11).FormulaLocal = "=RAIZ((" & x2 & "-" &Px& ")^2+(" & y2 & "-" &Py& ")^2)" Sheets("Report_validation").Activate Call Distancia(Sheets("Report_validation").Range("I" & j).Address, Sheets("Report_validation").Range("J" & j).Address, Sheets("Report_validation").Range("K" & j).Address) distancia50000 = Sheets("Report_validation").Cells(j, 11).Value If Sheets("Report_validation").Cells(j, 3).Value < Sheets("Report_validation").Cells(j, 6).Value Then If Sheets("Report_validation").Cells(j, 2).Value < Sheets("Report_validation").Cells(j, 7).Value Then Sheets("Report_validation").Cells(j, 12).Value = "SI" Else Sheets("Report_validation").Cells(j, 12).Value = "NO" End If Else If Sheets("Report_validation").Cells(j, 2).Value < Sheets("Report_validation").Cells(j, 7).Value Then Sheets("Report_validation").Cells(j, 12).Value = "SI" Else Sheets("Report_validation").Cells(j, 12).Value = "NO" EndIf EndIf 'Aplicar etiquetas de datos al grafico Charts("GraficoValidación").Activate 59 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios pa = " N= " + Str(Sheets("Report_validation").Cells(j, 5).Value) + " t= " + Str(Sheets("Report_validation").Cells(j, 4).Value) ActiveChart.SeriesCollection(1).Points(j).HasDataLabel = True ActiveChart.SeriesCollection(1).Points(j).DataLabel.Text = pa End If Next j End If End Sub C. OPCIÓN 3: ANÁLISIS DETALLADO REPORT Sub Analisis_Detallado_Report(nreport As Integer, stress As String) Dim longitud As Integer, Columnas As Integer, p As Double, nodos As Integer, frames As Integer, k As Integer, b As Integer, pa As String Dim datos_serie_x() As String Dim datos_serie_y() As String Dim nombre_serie() As String Dim datos_serie_x2() As String Dim datos_serie_y2() As String Dim nombre_serie2() As String b = Sheets.Count i=1 Do While (i< b) pa = Sheets(i).Name If (pa = "Material") Or (pa = "Hoja3") Or (pa = "GraficoValidación") Then Else Sheets(i).Delete b=b-1 i=i-1 End If i=i+1 Loop For n = 1 Tonreport Sheets.Add After:=Sheets("Material") ActiveSheet.Name = "Report" + Str(n) 'ImportTextFile ImportTextFileWithout Columnas = (Sheets("Report" + Str(n)).Range("B5").End(xlToRight).Column - 2) / 2 longitud = Sheets("Report" + Str(n)).Range("B7").End(xlDown).Row ReDimdatos_serie_x(Columnas) ReDimdatos_serie_y(Columnas) ReDimnombre_serie(Columnas) Sheets("Report" + Str(n)).Copy After:=Sheets("Report" + Str(n)) ActiveSheet.Name = "Report" + Str(n) + "_copy" If stress = "SI" Then Sheets.Add After:=Sheets("Report" + Str(n) + "_copy") ActiveSheet.Name = "Report" + Str(n) + "_Stress_ref" 60 ANEXO: MACRO de Excel para post-proceso ReDim datos_serie_x2(Columnas) ReDim datos_serie_y2(Columnas) ReDim nombre_serie2(Columnas) EndIf For k = 1 ToColumnas For Each Celda In Sheets("Report" + Str(n) + "_copy").Range(Sheets("Report" + Str(n) + "_copy").Cells(7, 2 * k + 1), Sheets("Report" + Str(n) + "_copy").Cells(longitud, 2 * k + 1)) Celda.Value = Celda.Value - 40 Next Celda For Each Celda2 In Sheets("Report" + Str(n) + "_copy").Range(Sheets("Report" + Str(n) + "_copy").Cells(7, 2 * k + 2), Sheets("Report" + Str(n) + "_copy").Cells(longitud, 2 * k + 2)) Celda2.Value = Celda2.Value * 1.2 Next Celda2 nombre_serie(k - 1) = Sheets("Report" + Str(n) + "_copy").Cells(5, 2 * k + 1) datos_serie_x(k - 1) = Sheets("Report" + Str(n) + "_copy").Range(Sheets("Report" + Str(n) + "_copy").Cells(7, 2 * k + 2), Sheets("Report" + Str(n) + "_copy").Cells(longitud, 2 * k + 2)).Address datos_serie_y(k - 1) = Sheets("Report" + Str(n) + "_copy").Range(Sheets("Report" + Str(n) + "_copy").Cells(7, 2 * k + 1), Sheets("Report" + Str(n) + "_copy").Cells(longitud, 2 * k + 1)).Address If stress = "SI" Then 'Copiamos los nombres de nodos Sheets("Report" + Str(n) + "_Stress_ref").Range(Sheets("Report" + Str(n) + "_Stress_ref").Cells(1, 1), Sheets("Report" + Str(n) + "_Stress_ref").Cells(5, Columnas * 2 + 1)).Value = Sheets("Report" + Str(n)).Range(Sheets("Report" + Str(n)).Cells(5, 2), Sheets("Report" + Str(n)).Cells(5, Columnas * 2 + 2)).Value 'Copiamos los instantes de t Sheets("Report" + Str(n) + "_Stress_ref").Range(Sheets("Report" + Str(n) + "_Stress_ref").Cells(2, 1), Sheets("Report" + Str(n) + "_Stress_ref").Cells(longitud + 6, 1)).Value = Sheets("Report" + Str(n)).Range(Sheets("Report" + Str(n)).Cells(7, 2), Sheets("Report" + Str(n)).Cells(longitud, 2)).Value datos_serie_x2(k - 1) = Sheets("Report" + Str(n) + "_Stress_ref").Range(Sheets("Report" + Str(n) + "_Stress_ref").Cells(6, 1), Sheets("Report" + Str(n) + "_Stress_ref").Cells(longitud + 6, 1)).Address nombre_serie2(k - 1) = Sheets("Report" + Str(n) + "_Stress_ref").Cells(4, 2 * k) datos_serie_y2(k - 1) = Sheets("Report" + Str(n) + "_Stress_ref").Range(Sheets("Report" + Str(n) + "_Stress_ref").Cells(6, 2 * k + 1), Sheets("Report" + Str(n) + "_Stress_ref").Cells(longitud + 6, 2 * k + 1)).Address End If Next k If stress = "SI" Then For f = 1 ToColumnas For c = 1 Tolongitud p = interpol(Sheets("Report" + Str(n)).Cells(c + 5, 2 * f).Value, Sheets("Material").Range("B3", "C10")) 61 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios Sheets("Report" + Str(n) + "_Stress_ref").Cells(c + 5, 2 * f + 1).Value = Sheets("Report" + Str(n) + "_copy").Cells(c + 5, 2 * f + 1) / p Next c Next f End If n_graph = 1 For k = 1 ToColumnas If k = 1 Then Dim grafico As Chart Sheets("Hoja3").Activate Set grafico = Charts.Add With grafico .Name = "Grafico" + Str(n) + "_" + Str(k) .ChartType = xlXYScatterLinesNoMarkers End With 'grafico.HasTitle = True 'Nombre eje x With grafico.Axes(xlCategory) .HasTitle = True .AxisTitle.Text = "Thermal Stress [kN/mm2]" End With 'Nombre eje y With grafico.Axes(xlValue) .HasTitle = True .AxisTitle.Text = "Temperature increase [K]" End With ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k).XValues = Sheets("Report" + Str(n) + "_copy").Range(datos_serie_x(k - 1)) ActiveChart.SeriesCollection(k).Values = Sheets("Report" + Str(n) + "_copy").Range(datos_serie_y(k - 1)) ActiveChart.SeriesCollection(k).Name = nombre_serie(k - 1) ElseIf k Mod 220 = 0 Then ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).XValues = Sheets("Report" + Str(n) + "_copy").Range(datos_serie_x(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Values = Sheets("Report" + Str(n) + "_copy").Range(datos_serie_y(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Name = nombre_serie(k - 1) ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 1).Name = "Ciclo=50000" ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 1).XValues = Sheets("Material").Range(Sheets("Material").Cells(4, 10), Sheets("Material").Cells(12, 10)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 1).Values = Sheets("Material").Range(Sheets("Material").Cells(4, 9), Sheets("Material").Cells(12, 9)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 1).Interior.Color = RGB(255, 255, 255) ActiveChart.SeriesCollection.NewSeries 62 ANEXO: MACRO de Excel para post-proceso ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 2).XValues = Sheets("Material").Range(Sheets("Material").Cells(11, 11), Sheets("Material").Cells(14, 11)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 2).Values = Sheets("Material").Range(Sheets("Material").Cells(11, 9), Sheets("Material").Cells(14, 9)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 2).Name = "Ciclo=500" ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 2).Interior.Color = RGB(255, 255, 255) n_graph = (k / 220) + 1 Sheets("Hoja3").Activate Set grafico = Charts.Add With grafico .Name = "Grafico" + Str(n) + "_" + Str(n_graph) .ChartType = xlXYScatterLinesNoMarkers End With 'grafico.HasTitle = True 'Nombre eje x Withgrafico.Axes(xlCategory) .HasTitle = True .AxisTitle.Text = "Thermal Stress [kN/mm2]" End With 'Nombre eje y With grafico.Axes(xlValue) .HasTitle = True .AxisTitle.Text = "Temperature increase [K]" End With ElseIf k = Columnas Then ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).XValues = Sheets("Report" + Str(n) + "_copy").Range(datos_serie_x(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Values = Sheets("Report" + Str(n) + "_copy").Range(datos_serie_y(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Name = nombre_serie(k - 1) ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 1).Name = "Ciclo=50000" ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 1).XValues = Sheets("Material").Range(Sheets("Material").Cells(4, 10), Sheets("Material").Cells(12, 10)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 1).Values = Sheets("Material").Range(Sheets("Material").Cells(4, 9), Sheets("Material").Cells(12, 9)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 1).Interior.Color = RGB(255, 255, 255) ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 2).XValues = Sheets("Material").Range(Sheets("Material").Cells(11, 11), Sheets("Material").Cells(14, 11)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 2).Values = Sheets("Material").Range(Sheets("Material").Cells(11, 9), Sheets("Material").Cells(14, 9)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 2).Name = "Ciclo=500" 63 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios ActiveChart.SeriesCollection(k - 220 * (n_graph - 1) + 2).Interior.Color = RGB(255, 255, 255) Else ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).XValues = Sheets("Report" + Str(n) + "_copy").Range(datos_serie_x(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Values = Sheets("Report" + Str(n) + "_copy").Range(datos_serie_y(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Name = nombre_serie(k - 1) End If Next k n_graph = 1 If stress = "SI" Then For k = 1 ToColumnas If k = 1 Then Dim grafico2 As Chart Sheets("Hoja3").Activate Set grafico2 = Charts.Add With grafico2 .Name = "Grafico_stress" + Str(n) + "_" + Str(k) .ChartType = xlXYScatterLinesNoMarkers End With 'grafico.HasTitle = True 'Nombre eje x Withgrafico2.Axes(xlCategory) .HasTitle = True .AxisTitle.Text = "t [s]" End With 'Nombre eje y With grafico2.Axes(xlValue) .HasTitle = True .AxisTitle.Text = "Thermal Stress/Yield" End With ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k).XValues = Sheets("Report" + Str(n) + "_Stress_ref").Range(datos_serie_x2(k - 1)) ActiveChart.SeriesCollection(k).Values = Sheets("Report" + Str(n) + "_Stress_ref").Range(datos_serie_y2(k - 1)) ActiveChart.SeriesCollection(k).Name = nombre_serie2(k - 1) ElseIf k Mod 220 = 0 Then ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).XValues = Sheets("Report" + Str(n) + "_Stress_ref").Range(datos_serie_x2(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Values = Sheets("Report" + Str(n) + "_Stress_ref").Range(datos_serie_y2(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Name = nombre_serie2(k - 1) n_graph = (k / 220) + 1 Sheets("Hoja3").Activate Set grafico2 = Charts.Add 64 ANEXO: MACRO de Excel para post-proceso With grafico2 .Name = "Grafico_stress" + Str(n) + "_" + Str(n_graph) .ChartType = xlXYScatterLinesNoMarkers End With 'grafico.HasTitle = True 'Nombre eje x Withgrafico2.Axes(xlCategory) .HasTitle = True .AxisTitle.Text = "t [s]" End With 'Nombre eje y With grafico2.Axes(xlValue) .HasTitle = True .AxisTitle.Text = "Thermal Stress/Yield" End With ElseIf k = Columnas Then ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).XValues = Sheets("Report" + Str(n) + "_Stress_ref").Range(datos_serie_x2(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Values = Sheets("Report" + Str(n) + "_Stress_ref").Range(datos_serie_y2(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Name = nombre_serie2(k - 1) Else ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).XValues = Sheets("Report" + Str(n) + "_Stress_ref").Range(datos_serie_x2(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Values = Sheets("Report" + Str(n) + "_Stress_ref").Range(datos_serie_y2(k - 1)) ActiveChart.SeriesCollection(k - 220 * (n_graph - 1)).Name = nombre_serie2(k - 1) End If Next k End If Next n End Sub D. FUNCIÓN 1: IMPORTAR FICHERO DE TEXTO A EXCEL Sub ImportTextFileWithout() Dim MiArchivoAs Variant Dim DestBookAs Workbook, SourceBook As Workbook Dim DestCellAs Range Dim RetValAs Boolean 'Apagar actualización del screen Application.ScreenUpdating = False 65 Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios 'Define los objetos de variable al libro y la celda activa Set DestBook = ActiveWorkbook Set DestCell = ActiveCell 'Pregunta al usuario el nombre del archivo que desea abrir MiArchivo = Application.GetOpenFilename 'Comprueba el botón Cancelar If MiArchivo = False Then Exit Sub 'Abre el archivo de texto con el método Workbooks.OpenText Filename:=MiArchivo, Origin:=xlWindows, StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Space:=True, FieldInfo:=Array(1, 1) Set SourceBook = ActiveWorkbook 'Copiar el contenido de toda la hoja que contiene el fichero Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Copy 'Activar el workbook de destino y realizar un pegado especial de los valores desde el ‘fichero de texto DestBook.Activate DestCell.PasteSpecial Paste:=xlValues 'Cells.Replace What:=".", Replacement:="," 'Cerrar el libro que contiene el fichero de texto SourceBook.Close False End Sub E. FUNCIÓN 2: INTERPOLAR VALORES Function interpol(x As Double, xy As Range) As Double Dim n As Integer, c As Integer n = xy(1, 1).End(xlDown).Row c = xy(1, 1).End(xlToRight).Column n=n-2 c=c-3 For k = 1 To n If x >= xy(k, 1) And k < n And x <xy(k + 1, 1) Then interpol = xy(k, 2).Value + (xy(k + 1, 2).Value - xy(k, 2).Value) * (x - xy(k, 1).Value) / (xy(k + 1, 1).Value - xy(k, 1).Value) ElseIf x >= xy(k, 1) And k = n Then interpol = xy(k - 1, 2).Value + (xy(k, 2).Value - xy(k - 1, 2).Value) * (x - xy(k - 1, 1).Value) / (xy(k, 1).Value - xy(k - 1, 1).Value) 66 ANEXO: MACRO de Excel para post-proceso End If Next k End Function F. FUNCIÓN 3: CALCULAR DISTANCIA MÍNIMA CON SOLVER Sub Distancia(xa As String, ya As String, di As String) SolverReset ‘Calcular distancia mínima a curva N=500 SolverOKSetCell:=di, MaxMinVal:=2, ByChange:=xa SolverAddCellRef:=xa, Relation:=3, FormulaText:="0.00" SolverAddCellRef:=ya, Relation:=3, FormulaText:="0.00" ‘Calcular sin asistente SolverSolve (True) ‘Mantener resultados finales SolverFinishKeepFinal:=1 End Sub 67