U n i v e r s i d a d d e N a v a r r a
N a f a r r o a k o U n i b e r t s i t a t e a
E s c u e l a S u p e r i o r d e I n g e n i e r o s
I n g e n i a r i e n G o i M a i l a k o E s k o l a
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]
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
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
C.1. Velocidad= 50km/h ...................................................................................... 2
C.2.Velocidad=150km/h ...................................................................................... 5
C.3.Velocidad=300km/h ...................................................................................... 8
II. 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. 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
III. 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
1
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:
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
2
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
ANEXO: Análisis resultados MODELO CFD
3
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
4
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
ANEXO: Análisis resultados MODELO CFD
5
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
6
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
ANEXO: Análisis resultados MODELO CFD
7
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
8
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
ANEXO: Análisis resultados MODELO CFD
9
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
10
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
ANEXO: Análisis resultados MODELO CFD
11
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
12
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
ANEXO: Análisis resultados OARIS
13
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
Ilustración II.1: Temperaturas de nodos (Ilustración II.3) para cada instante de tiempo del análisis
EB R 2x320MA
0
100
200
300
400
500
600
0 100 200 300 400 500 600 700 800
Tem
pe
ratu
re [
ºC]
t [s]
fric der (N22111)
aguj der (N21975)
contacto (N20138)
ch (N20967)
aguj tor fric dentroNT(21109)
aguj tor fric dentroNT(20584)
EB-R-320MA WMD
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
14
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
Ilustración II.3: Nodos elegidos para obtener la distribución de temperaturas y tensiones
0
100
200
300
400
500
600
700
800
0 100 200 300 400 500 600 700 800
Mis
es
stre
ss [
N/m
m2
]
t [s]
fric der (N22111)
aguj der (N21975)
contacto (N20138)
ch (N20967)
aguj tor fric dentroNT(21109)
aguj tor fric dentroNT(20584)
22111
21975
21096
21109
20584
20138
202967
ANEXO: Análisis resultados OARIS
15
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
16
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
ANEXO: Análisis resultados OARIS
17
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
18
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
ANEXO: Análisis resultados OARIS
19
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
20
B. EB R 2X320KM/H TA
B.1.Variación de temperatura y tensión
Ilustración II.12: Temperaturas de nodos (Ilustración II.14) para cada instante de tiempo del
análisis EB R 2x320 TA
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
0
50
100
150
200
250
300
350
400
450
500
0 100 200 300 400 500 600 700 800
Tem
pe
ratu
re [
ºC]
t [s]
fric der (N22111)
aguj der (N21975)
contacto (N20138)
ch (N20967)
aguj tor fric dentroNT(21109)
aguj tor fric dentroNT(20584)
EB-R-320TA WMD
0
100
200
300
400
500
600
700
0 100 200 300 400 500 600 700 800
Mis
es
stre
ss [
N/m
m2
]
t [s]
fric der (N22111)
aguj der (N21975)
contacto (N20138)
ch (N20967)
aguj tor fric dentroNT(21109)
aguj tor fric dentroNT(20584)
ANEXO: Análisis resultados OARIS
21
Ilustración II.14: Nodos elegidos para obtener la distribución de temperaturas y tensiones
22111
21975
21096
21109
20584
20138
202967
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
22
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
ANEXO: Análisis resultados OARIS
23
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
24
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
ANEXO: Análisis resultados OARIS
25
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
26
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
ANEXO: Análisis resultados OARIS
27
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
28
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
ANEXO: Análisis resultados OARIS
29
C. EB R 1X350KM/H MA
C.1.Variación de temperatura y tensión
Ilustración II.26: Temperaturas de nodos (Ilustración II.28) para cada instante de tiempo del
análisis EB R 1x350 MA
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
0
100
200
300
400
500
600
0 200 400 600 800
Tem
pe
ratu
re [
ºC]
t [s]
fric der (N22111)
aguj der (N21975)
contacto (N20138)
ch (N20967)
aguj tor fric dentroNT(21109)
aguj tor fric dentroNT(20584)
EB-R-350MA WMD
0
100
200
300
400
500
600
700
800
900
0 200 400 600 800
Mis
es
stre
ss [
N/m
m2
]
t [s]
fric der (N22111)
aguj der (N21975)
contacto (N20138)
ch (N20967)
aguj tor fric dentroNT(21109)
aguj tor fric dentroNT(20584)
EB-R-350MA WMD
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
30
Ilustración II.28: Nodos elegidos para obtener la distribución de temperaturas y tensiones
22111
21975
21096
21109
20584
20138
202967
ANEXO: Análisis resultados OARIS
31
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
32
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
ANEXO: Análisis resultados OARIS
33
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
34
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
ANEXO: Análisis resultados OARIS
35
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
36
Ilustración II.37: Análisis detallado 1 para el rango tensión>790MPa y T>300ºC del análisis EB R
1x350MA
ANEXO: Análisis resultados OARIS
37
Ilustración II.38: Análisis detallado 2 para el rango tensión>790MPa y T>300ºC del análisis EB R
1x350MA
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
38
ANEXO: Análisis resultados CIVITY
39
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
40
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
ANEXO: Análisis resultados CIVITY
41
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
42
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
ANEXO: Análisis resultados CIVITY
43
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
44
ANEXO: Fichero cálculo CFD
45
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
ANEXO: Fichero .inp cálculo térmico
46
V. ANEXO: FICHERO .INP CÁLCULO TÉRMICO
*INCLUDE,INPUT=Fichero_geometría_freno(.inp) *PHYSICAL CONSTANTS, ABSOLUTE ZERO=-273.15,STEFANBOLTZMANN=5.669e-14 *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
ANEXO: Fichero .inp cálculo mecánico
47
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
48
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
ANEXO: Fichero .inp cálculo mecánico
49
U, *ELEMENT OUTPUT, POSITION=NODES S, *ELEMENT OUTPUT PEEQ, *END STEP
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
50
ANEXO: Subrutina del módulo CFD
51
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]);
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
52
} if (direction == 3) { bcvals[i]=r[i]*w*cos(phi[i]); } if (direction == 2) { bcvals[i] = 0; } } }
ANEXO: Script de obtención del coeficiente de película
53
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()
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
54
IX. 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(averagingThreshold=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
ANEXO: Script para realizar report modelo mecánico
55
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-1-1 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()
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
56
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
ANEXO: MACRO de Excel para post-proceso
57
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
58
.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?"
ANEXO: MACRO de Excel para post-proceso
59
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
60
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"
ANEXO: MACRO de Excel para post-proceso
61
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"))
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
62
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
ANEXO: MACRO de Excel para post-proceso
63
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"
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
64
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
ANEXO: MACRO de Excel para post-proceso
65
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
Marta Usabiaga Urrestarazu Modelización Térmica de Discos de freno ferroviarios
66
'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)
ANEXO: MACRO de Excel para post-proceso
67
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