TFG Joaquin Corredoyra Alcaraz
TFG Joaquin Corredoyra Alcaraz
TFG Joaquin Corredoyra Alcaraz
CICLOS COMBINADOS Y
Joaquín Corredoyra Alcaraz
JULIO 2016
2016
Índice general
1. Introducción 1
1.1. Introducción a los Ciclos Combinados como medio para la producción de Energía Eléctrica
en Plantas de Potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Ciclos Combinados de Turbinas de Gas y Vapor: Principios Termodinámicos . . . . . . . . 2
1.2.1. Ciclo de Carnot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2. Rendimiento de un Ciclo Combinado . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3. Ciclo del Gas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.3.1. Rendimiento de la Turbina de Gas . . . . . . . . . . . . . . . . . . . . . . 6
1.2.4. Ciclo del Vapor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.4.1. Rendimiento de la Turbina de Vapor . . . . . . . . . . . . . . . . . . . . . 10
1.2.5. Caldera de Recuperación de Calor . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Introducción a los Algoritmos Genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.1. Algoritmos Evolutivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.2. Algoritmos Genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.2.1. Terminología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.2.2. Ventajas del uso de AG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.2.3. Limitaciones del uso de AG . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.3. Diseño Básico de un Algoritmo Genético . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.3.1. Función Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.3.2. Individuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3.3.3. Creación de una nueva Población . . . . . . . . . . . . . . . . . . . . . . . 22
1.3.3.4. Proceso de Selección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3.3.5. Proceso de Reproduccioón, Recombinación o Cruce . . . . . . . . . . . . 26
1.3.3.6. Proceso de Mutación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.3.3.7. Proceso de Reemplazamiento: . . . . . . . . . . . . . . . . . . . . . . . . 29
1.3.3.8. Finalización de la Búsqueda: Criterio de Convergencia . . . . . . . . . . . 29
1.3.3.9. Funciones con Restricciones: . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.4. Herramientas Utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.4.1. Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.4.2. Tablas de Janaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.4.3. Diagrama de Mollier: función XSTEAM . . . . . . . . . . . . . . . . . . . . . . . . 32
1.5. Justificación del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.6. Objetivos del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.7. Metodoligía seguida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4. Resultados 163
4.1. Resultados obtenidos con los programas de simulación . . . . . . . . . . . . . . . . . . . . 163
4.1.1. Resultados obtenidos con CicloVap_1P_SinDesg . . . . . . . . . . . . . . . . . . . 163
4.1.1.1. Aclaración de las diferencias entre simulaciones subcríticas y supercríticas 163
4.1.1.2. Análisis paramétrico de las variables de diseño . . . . . . . . . . . . . . . 164
4.1.1.3. Efecto de la variación conjunta de la presión de línea y el Pinch Point . . 169
4.1.2. Resultados obtenidos con CicloVap_1P_ConDesg . . . . . . . . . . . . . . . . . . 172
4.1.2.1. Análisis paramétrico del efecto de la presión de extracción . . . . . . . . 172
4.1.2.2. Efecto de la variación conjunta de la presión de línea y la presión de
extracción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
4.1.3. Resultados obtenidos para los programas 2P sin recalentamiento . . . . . . . . . . 177
4.1.4. Resultados obtenidos para los programas 2P con recalentamiento . . . . . . . . . . 181
4.2. Resultados de los Algoritmos Genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Bibliografía 194
2.1. Diagrama T s de la TG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.2. Detalle de los puntos 1 y 1p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3. Diagrama hs: Ejemplo de Simulación CicloGas . . . . . . . . . . . . . . . . . . . . . . . . 46
2.4. Diagrama T s: Ejemplo de Simulación CicloGas . . . . . . . . . . . . . . . . . . . . . . . . 46
2.5. Configuración del Ciclo de Vapor y la CRC para Un Nivel de Presión Simple Subcrítico . 48
2.6. Diagrama T s del Ciclo de Vapor 1P Sin Desgasificador Subcrítico . . . . . . . . . . . . . . 48
2.7. Diagrama T q de la CRC de un Ciclo de Vapor 1P Sin Desgasificador . . . . . . . . . . . . 49
2.8. Detalle del proceso de compresión entre 7 y 1 . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.9. Diagrama T s del Ciclo de Vapor 1P Sin Desgasificador Supercrítico . . . . . . . . . . . . 51
2.10. Diagrama T q de la CRC de un Ciclo de Vapor 1P Sin Desgasificador Supercrítico . . . . . 51
2.11. Detalle de Ciclo Imposible, con t5 > t1g . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.12. Detalle de Ciclo Supercrítico Imposible, con tagua > tgases comb . . . . . . . . . . . . . . . 62
2.13. Diagrama h s: Ejemplo de Simulación CicloVap_1P_SinDesg en un Ciclo Subcrítico . . . 66
2.14. Diagrama T s: Ejemplo de Simulación CicloVap_1P_SinDesg en un Ciclo Subcrítico . . . 66
2.15. Diagrama T q: Ejemplo de Simulación CicloVap_1P_SinDesg en un Ciclo Subcrítico . . . 67
2.16. Diagrama h s: Ejemplo de Simulación CicloVap_1P_SinDesg en un Ciclo Supercrítico . . 69
2.17. Diagrama T s: Ejemplo de Simulación CicloVap_1P_SinDesg en un Ciclo Supercrítico . . 69
2.18. Diagrama T q: Ejemplo de Simulación CicloVap_1P_SinDesg en un Ciclo Supercrítico . . 69
2.19. Configuración del Ciclo de Vapor y la CRC 1P Subcrítico con Desgasificador . . . . . . . 70
2.20. Diagrama T s del Ciclo de Vapor Subcrítico 1P Con Desgasificador . . . . . . . . . . . . . 71
2.21. Detalle del proceso de compresión entre 7 y 1 . . . . . . . . . . . . . . . . . . . . . . . . . 72
2.22. Diagrama h s: Ejemplo de Simulación CicloVap_1P_ConDesg en un ciclo Subcrítico . . . 76
2.23. Diagrama T s: Ejemplo de simulación CicloVap_1P_ConDesg en un ciclo subcrítico . . . 76
2.24. Diagrama T q: Ejemplo de Simulación CicloVap_1P_SinDesg en un ciclo supercrítico . . 77
4.42. Efecto de la modificación de las presiones de línea sobre qcaldera en un ciclo 2P con reca-
lentamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
4.43. Efecto de la modificación de las presiones de línea sobre xext en un ciclo 2P con recalenta-
miento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
4.44. Efecto de la modificación de las presiones de línea sobre el rendimiento de un ciclo combi-
nado 2P con recalentamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
4.45. Comparación de los resultados obtenidos en AG_1P_SinDesg_sub para distinto número
de individuos en cada población . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
4.46. Evolución de los fitness máximo y medio de cada población durante las iteraciones . . . . 185
Palabras Clave: ciclo combinado, ciclos termodinámicos, ciclos combinados, turbina de gas, turbina
de vapor, optimización.
Introducción
Este Capítulo se dedica a explicar los principios tecnológicos y teóricos utilizados para la realización
de este Trabajo de Fin de Grado, así como las distintas herramientas utilizadas durante el desarrollo del
mismo, los objetivos buscados y la estructura del trabajo.
de calidad, gozan de estas ventajas, lo que las convierte en una opción viable para la generación masiva
de energía eléctrica, además de ser posible su instalación cerca de centros de consumo.
En términos de eficiencia y costes, las centrales de ciclo combinado de gas natural alcanzaban en 2006
un rendimiento bruto cercano al 59 % a plena carga y un coste de 500e/kW , mientras que las plantas de
carbón, incluso con las últimas mejoras tecnológicas como calderas supercríticas y sistemas de depuración
de gases de combustión, solo alcanzan un rendimiento bruto cercano al 45 %, con un coste de inversión
de unos 1000e/kW (también en 2006). Esto no implica la desaparición de las plantas de carbón, el cual
se prevé que mantenga un papel importante dada la seguridad de abastecimiento que proporciona. De
hecho, su importancia aumentará si se desarrollan nuevas tecnologías económicamente viables de captura,
confinamiento y valoración del CO2 [García and Muñoz, 2006].
Figura 1.1: Ciclo Combinado de un nivel de presión con desgasificador (Elaboración propia)
Como su propio nombre indica, un Ciclo Combinado (CC) es, en su visión más generalizada, la combina-
ción de dos ciclos termodinámicos con el objetivo final de obtener de energía eléctrica. Esta combinación
de ciclos tiene por fin aumentar el rendimiento que conseguiría cada ciclo individualmente. Más concreta-
mente, el presente Trabajo se basa en la definición más comúnmente utilizada de CC, que se refiere a un
ciclo en el que se implementan conjuntamente una Turbina de Gas (TG) y una Turbina de Vapor (TV),
conectadas a través de una Caldera de Recuperación de Calor (CRC). De esta forma, se consigue un
aumento del rendimiento global del proceso de obtención de energía al aprovechar el calor sobrante de los
gases de combustión provenientes de la TG en el ciclo de la TV, que de otra manera sería desaprovechado
en el ambiente. En la figura (1.1) puede apreciarse el esquema de una de las configuraciones más típicas
de un Ciclo Combinado, comprendiendo: una turbina de gas que consta de un compresor, una cámara
de combustión y la propia TG; una turbina de vapor que incluye las bombas necesarias para mantener
el flujo de agua líquida, un condensador a la salida de la turbina, un desgasificador, un calderín y la
TV. Ambos ciclos se combinan mediante la CRC, como puede apreciarse en la imagen. Más adelante se
realizará una explicación de los elementos de cada ciclo con más detenimiento. A continuación se procede
a explicar más detalladamente los fundamentos termodinámicos de los ciclos en los cuales se basa el CC:
Dado que del Segundo Principio de la Termodinámica se desprende que no puede alcanzarse un
rendimiento del 100 % en una máquina térmica, es conveniente tener una idea cuantitativa del rendimiento
máximo que podría obtenerse, así como de las variables de las que éste depende. Dentro de este marco,
Nicolas Léonard Sadi Carnot (1796 - 1832) planteó su conocido Ciclo de Carnot, que consta de las
siguientes etapas:
Uno de los principales corolarios que se desprenden de este ciclo ideal es el siguiente teorema:
"No puede existir una máquina térmica que funcionando entre dos fuentes térmicas dadas tenga mayor
rendimiento que una de Carnot que funcione entre esas mismas fuentes térmicas", siendo una Máquina
de Carnot aquella que trabaja según el Ciclo de Carnot. A partir de la definición de entropía podemos
calcular el calor aportado en el foco y el cedido al foco:
QC = TC · ∆S3−2
QF = TF · ∆S4−1
Por otra parte, el trabajo producido por la máquina es la diferencia entre ambos calores, lo que
equivale al área encerrada en el ciclo de la figura (1.2); WCarnot = QC − QF
Teniendo esto en cuenta:
WCarnot QC − QF QF TF · ∆S4−1 TF
ηCarnot = = =1− =1− =1− (1.1)
QC QC QC TC · ∆S3−2 TC
Por tanto, a pesar de que nunca se llegará a alcanzar el rendimiento predicho por la ecuación (1.1),
queda evidenciado que el rendimiento de una máquina será tanto mayor cuanto más grande sea la dife-
rencia entre las temperaturas de los focos (que equivaldrán en un proceso real a las temperaturas máxima
y mínima del emisor y del receptor de calor, respectivamente). Algunos de los principales motivos por los
que no es posible alcanzar este rendimiento son las pérdidas de calor y las debidas a la diferencia de T al
intercambiar calor.
En un Ciclo Combinado de gas y vapor se busca obtener una planta de generación de energía con un
rendimiento superior al que tendrían independientemente una central térmica convencional de gas y otra
de vapor, integrando éstas en un mismo proceso.
Por un lado las turbinas de gas actuales rara vez llegan a obtener un rendimiento superior al 35 %,
con un rendimiento máximo de Carnot del 45 % (por ejemplo, alcanzando unas temperaturas de unos
1260◦ C, y expulsando el gas expansionado a 500-600◦ C se llega a un ηC = 43 %). En el caso del ciclo de
vapor, no es común que sobrepasen el 40 % de rendimiento, para un valor máximo de ηC ≈ 0,55 %. Por
tanto, ninguno de los ciclos individuales alcanzarán el 40 %, mientras que si los complementamos entre
ellos, se pueden alcanzar unos valores máximos de más del 55 %, ampliamente superiores.
No obstante, estos rendimientos son inferiores a los que se obtendrían si existiese un ciclo único que
trabajara entre las mismas temperaturas medias máxima y mínima, dado que se eliminarían las pérdidas
debidas al acoplamiento de ambos procesos.
El rendimiento del ciclo global, suponiendo que no haya pérdidas de calor al realizar los gases de
combustión la cesión de energía al agua, puede calcularse apoyándose en la figura (1.3). Siendo: QC el
calor tomado del foco caliente; QI el calor sobrante del ciclo del gas; QF el calor cedido al foco frío; Wg
la potencia útil generada por la TG y Wv la de la TV; y ηg y ηv los rendimientos del ciclo de gas y de
vapor respectivamente, tenemos que:
Wg = ηg · QC ; (1.2)
Wv = ηv · QI = ηv · (1 − ηg ) · QC ; (1.3)
Wg +Wv
Sumando las ecuaciones (1.2) y (1.3), y teniendo en cuenta que ηCC = QC , llegamos a la siguiente
expresión el rendimiento del ciclo global;
ηCC = ηg + ηv − ηg · ηv (1.4)
Para ejemplificar la mejora que supone el uso de este tipo de ciclos, se particulariza con los valores
ηg = 0,35 y ηv = 0,4 en la ecuación (1.4), que resulta: ηCC = 0,4 + 0,35 − 0,4 · 0,35 = 0,61.
Estos niveles de eficiencia no se alcanzan en la realidad debido principalmente a los siguientes motivos
[Rapún, 1999]:
• El cambiador de calor (la Caldera de Recuperación de Calor) no puede hacerse de área infinita
por motivos económicos. Por tanto, hay que buscar una solución de compromiso entre el precio del
cambiador y las temperaturas que se alcanzarán en el mismo.
• Debido a esto, la transferencia de calor va a realizarse con diferencias de temperatura entre los gases
de combustión y el agua, lo que provocará pérdidas exergéticas.
• Debido al cambio de estado a temperatura constante que sufre el agua no se alcanzará la temperatura
que se desearía , dado que durante la evaporización el calor cedido al agua no se traducirá en un
aumento de su temperatura.
• La temperatura de los gases de combustión no podrá bajar bajo ninguna circunstancia de cierto
valor límite para prevenir problemas de corrosión.
De entre estos motivos, uno de los que más reducen el rendimiento es el de la diferencia de temperaturas al
realizar la cesión de calor. Las pérdidas exergéticas generadas debido a esta situación se pueden expresar
según la siguiente expresión:
ZB
1 1
IQ = To · − ·dQ̇ (1.5)
TV TG
A
En las siguientes secciones se analizan en detalle los ciclos individuales y el cambiador de calor, además de
las mejoras más usadas para incrementar sus respectivos rendimientos, que van encaminadas a aumentar
las temperaturas máximas y reducir las mínimas en los ciclos, ademas de intentar conseguir minimizar
las diferencias de temperatura en la CRC.
El ciclo más simple que puede seguir el gas a lo largo de la TG es conocido como ciclo Brayton, y se
escenifica en las siguientes figuras:
(a) Esquema del Ciclo (Elaboración propia) (b) Diagrama del Ciclo, con una relación de compre-
sión=16 y 1750 K de temperatura de los gases de com-
bustión a la entrada de la TG (Elaboración propia)
En esta figura se ha reflejado el montaje en eje simple, que es el más elemental de los actualmente
existentes. Como puede observarse, el ciclo es de tipo abierto y consta de las siguientes etapas:
(1) Etapa de compresión, en la cual se eleva la presión del fluido de combustión después de filtrado.
Tiene lugar en la máquina térmica conocida como compresor, la cual se define principalmente por
su rendimiento 1 y por su relación de compresión, que es la relación entre las presiones de entrada
·
y de salida del fluido. En esta etapa se introduce generalmente un caudal aire (ma ) en condiciones
ambientales.
(2) Etapa de aportación de calor a presión constante. Esta aportación suele ser mediante la combustión
·
del fluido presurizado y de un combustible, líquido o gaseoso (mf ) que se introduce normalmente
directamente en la cámara de combustión. Al ser un ciclo de combustión interna, el fluido motor
(aquél encargado de transformar la energía térmica en mecánica, que en este caso no es otro que
los gases de combustión) sufre un proceso químico irreversible que imposibilita la reutilización del
mismo en el ciclo. Por el mismo motivo, es imprescindible que el combustible utilizado sea de calidad
a fin de prolongar la vida útil de los componentes de la planta, en especial de la turbina de gas.
Los combustibles usados pueden ser gaseosos (gas natural, propano o hidrógeno) o líquidos (gasóleos,
gasolinas, GLP, etc.).
Otras formas de introducir calor evitando la combustión sería aportando gas a altas temperatura
y presión, obtenido de procesos externos como pueden ser la gasificación del carbón, o mediante
lechos fluidos presurizados.
(3) Etapa de expansión por parte de los gases resultantes de la combustión previa, en una turbina
de gas, la cual transforma en energía mecánica la energía contenida en los gases de combustión
(GG.CC.) en forma de presión y temperatura. Esta energía mecánica se utiliza para accionar el
compresor y para generar energía eléctrica a través del alternador.
(4) Etapa de cesión de calor. Al salir de la TG, los GG.CC. aún disponen de una temperatura elevada
que puede ser aprovechada. En el caso de un CC, esta temperatura se utilizará para generar vapor
en la caldera de recuperación de calor.
De forma análoga al Ciclo de Carnot y teniendo en cuenta que en este caso las temperaturas no se
mantienen constantes durante los procesos de aportación y cesión de calor:
Z3
T · dS = T C · ∆S3−2
QC =
2
Z4
QF = T · dS = T F · ∆S4−1
1
Siendo T C y T F las temperaturas medias de foco caliente y frío, respectivamente, que son aquellas a las
cuales la aportación o cesión de calor es la misma que para el proceso real, para una misma variación de
entropiá. De esta forma, llegamos a la primera expresión del rendimiento del ciclo de gas, análoga a la
expresión de la ecuación (1.1):
TF
ηC = 1 − (1.6)
TC
Como ya se ha visto, el rendimiento será mayor cuanto mayor sea T C o menor sea T F , por lo que
se intentará aumentar la temperatura media de foco caliente y minimizar la de foco frío. La T C será
mayor cuanto mayor sean la relación de compresión ( ρCC )y la temperatura de salida de la cámara de
combustión. Sin embargo, un aumento de la relación de compresión es contraproducente para el ciclo de
vapor dado que la temperatura de salida de la turbina de gas de los GG.CC., disminuye, como puede
apreciarse en la figura (1.5a), por lo que, a pesar de aumentar el rendimiento de la planta, disminuye la
1 Tanto los compresores como las turbinas pueden definirse por su rendimiento iséntrópico o politrópico, sobre los que se
producción de vapor de agua al poder aportar menos calor, y disminuye la potencia que la central puede
proporcionar.
(a) Variación de ρCC (Elaboración propia) (b) Variación de Tsal (Elaboración propia)
Por otra parte, aumentando la temperatura de salida de los gases de combustión de la cámara de com-
bustión (Tsal ) se consigue aumentar tanto T C como la temperatura con la que los GG.CC. saldrán de la
turbina para entrar en la CRC, por lo que es recomendable buscar este incremento. El límite máximo de
temperatura alcanzable lo sitúan los materiales de ciertos componentes como la cámara de combustión
o los álabes de la TG, dado que a partir de cierta temperatura su tiempo de vida pasa a ser demasiado
corto y no compensa económicamente.
En la figura 1.6 se pueden observar las distintas mejoras introducidas y sus efectos sobre la temperatura
de admisión de gases en la TG. Puede apreciarse que la introducción de distintas técnicas como el film
cooling, que consiste en realizar pequeños orificios realizados en los álabes para permitir una refrigeración
por aire [Bogard, 2006] (fig. 1.7a) o la implementación en los álabes de Thermal Barrier Coatings, o TBC
[Karaoglanli et al., 2013] (fig. 1.7b), que se basa en proteger los mismos con un revestimiento que actúa
como una de barrera térmica aislante, han permitido aumentar en el pasado esta temperatura hasta los
1500 ◦ C. También es común utilizar álabes monocristales y/o solidificados direccionalmente en función
de la dirección con que se enfrenten al flujo.
Figura 1.6: Evolución de la temperatura de entrada a las TG([Wadley Research Group, 2013])
En los últimos años se ha logrado acrecentar aún más esta temperatura mediante la introducción del
closed-loop cooling o refrigeración por lazo cerrado, que aprovecha el vapor producido en la CRC para
refrigerar los álabes [Mod].
(a) Film Cooling ([Bogard, 2006]) (b) Thermal Barrier Cooling ([Karaoglanli et al., 2013])
Figura 1.7: Evolución del incremento de Tentrada turbina y distintas técnicas utilizadas para ello
Figura 1.8: Contenido de humedad en el aire en función de la temperatura del punto de rocío (1013 mbar)
Fuente: [Jecht, 2004]
(a) Esquema de una TG de Combustión Secuencial (Elaboración propia) (b) Diagrama de una TG de Combus-
tión Secuencial (Elaboración propia)
Existen gran cantidad de ciclos que puede seguir el agua a lo largo de una TV. Entre ellos, el más
sencillo es conocido como ciclo Rankine, que es la aplicación tecnológica del ciclo de Carnot en el caso
de que el fluido motor sea condensable. En la actualidad no se utiliza este ciclo, si no que el más básico
empleado es el mostrado en la figura (1.10). Este ciclo se diferencia del de Rankine en que cuenta con un
sobrecalentamiento, para obtener un mayor salto entálpico.
En este ciclo básico, la evolución del fluido sigue las distintas etapas:
(1) Etapa de aportación de calor a presión constante a través de la caldera de recuperación de calor,
exceptuando las pérdidas de carga, que suelen estar en el orden de decenas de mbar. En la CRC, el
fluido sufre un proceso de calentamiento hasta el punto de inicio del cambio de fase. Se completa
2 La entalpía de parada es un concepto que se utiliza cuando la velocidad del fluido estudiado no es despreciable, y se
v2
h0 = h + 2
(a) Esquema ciclo de vapor simple (b) Diagrama T s Ciclo de vapor simple (Elaboración propia)
(Elaboración propia)
De forma similar al procedimiento seguido para la TG, y recordando que la cesión de calor tiene lugar
a presión constante, obtenemos la expresión del rendimiento de la TV en función de las temperaturas
medias de los focos frío y caliente:
TF
ηC = 1 − (1.8)
TC
También puede calcularse el rendimiento en función de los saltos de entalpías del fluido en el ciclo, que
teniendo en cuenta que se trata de una motor de combustión externa (MCE) queda:
· · · ·
WT − WB mv (h2 − h3 ) − mv (h1 − h4 )
ηT G = · = · (1.9)
QC QC
En el caso de las TV, el fluido motor no alcanza temperaturas tan extremas como en las TG, por
lo que no existe el problema de la compatibilidad entre la temperatura de entrada a la turbina y la
fiabilidad de los materiales. Para conseguir aumentar el rendimiento del ciclo de vapor existen múltiples
variaciones posibles sobre el ciclo Rankine de la figura (1.10). Entre estas variaciones, las más utilizadas
son las siguientes;
3 De ser dicho título de vapor mayor de 0.85, los efectos de cavitación de las gotas de fluido condensado sobre los álabes
provocará que estos se erosionen a un nivel por encima de lo recomendado por los fabricantes [Rapún, 1999].
Ciclos regenerativos (fig. 1.11): Es una de las modificaciones más frecuentes.. La variación consiste
en que se extrae parte del vapor de la turbina antes de que complete su expansión. Este vapor se lleva
a un desgasificador al cual irá a parar el líquido condensado, precalentándolo antes de introducirlo a la
CRC. Aunque la extracción aumenta el rendimiento de la TV, disminuye el rendimiento global del CC
dado que existe una menor diferencia entre la temperatura del agua de aporte a la CRC y los gases de
combustión, podiendo obtener por tanto un menor salto de entalpías4 . Por tanto, en ciclos combinados,
la funcón de las extracciones no es tanto modificar el ciclo termodinámico como eliminar el oxígeno y
otros gases disueltos en el agua [García and Muñoz, 2006].
(a) Esquema Ciclo Regenerativo (b) Diagrama T s Ciclo Regenerativo (Elaboración propia)
(Elaboración propia)
Ciclos con recalentamientos intermedios (fig. 1.12): El recalentamiento del vapor consiste en
realizar una primera expansión de vapor en la turbina hasta cierta presión (mayor que la final a la que
se va a condensar el fluido), tras la cual se extrae el vapor de la TV para volver a introducirlo en la
CRC y calentarlo, pero esta vez a una presión menor. Tras este recalentamiento se reintroduce el vapor
en la turbina y completa la expansión. La finalidad de este proceso es aumentar el título de vapor que
tendrá el agua al final de la compresión, dado que, para una temperatura fija, cuanto menor sea la presión
desde la que se expansiona mayor será el título de vapor. En el caso de las CC, se suele introducir un
recalentamiento intermedio solo en el caso de que compense económicamente, dado que supone complicar
la instalación y por tanto a incrementar el precio de la planta.
4 No sucede lo mismo con el rendimiento exergético del ciclo, que, como veremos más adelante, aumenta cuanto menor
(a) Esquema Ciclo con Recalenta- (b) Diagrama T s Ciclo Regenerativo (Elaboración pro-
miento (Elaboración propia) pia)
Ciclos supercríticos (fig. 1.13): Como se ha dicho anteriormente, elevar la presión de trabajo
significa un incremento de la temperatura media de aportación de calor, con el consiguiente aumento de
rendimiento.Además, si este aumento de presión implica el paso a trabajar con presiones supercríticas,
esto va a significar, como veremos más adelante, un incremento significativo del rendimiento exergético
ya que al eliminar el cambio de fase que cualquier aportación de calor conducirá a un aumento de tem-
peratura.
La principal inconveniencia de trabajar con estos niveles de presión radica en los problemas construc-
tivos y de materiales, inherentes a este tipo de ciclos, tales como las altas tensiones que tienen que
soportar las tuberías o los problemas por cavitación debido al alto contenido de humedad en los últimos
escalonamientos de la TV.
Ciclos con varios niveles de presión (fig. 1.14): En los ciclos combinados es habitual ver ciclos
de dos o tres niveles de presión, con los que se consigue un mejor aprovechamiento e la energía disponible
en los GGCC y un aumento del rendimiento. Los plantas con varios niveles de presión pueden tener
distintos ciclos de vapor en función de la CRC elegida, como se verá en la sección 1.2.5.
Por supuesto, las distintas configuraciones explicadas no tienen por qué aplicarse individualmente, si no
que pueden combinarse de ser requerido, como puede verse en la siguiente figura:
(a) Esquema Ciclo con Regeneración, Recalentamien- (b) Diagrama T s Ciclo con Regeneración, Recalentamiento y
to y dos niveles de presión (Elaboración propia) dos niveles de presión (Elaboración propia)
Figura 1.14: Ciclo con Regeneración, Recalentamiento Intermedio y dos niveles de presión
La Caldera de Recuperación de Calor es el lugar donde se acoplan los dos ciclos ya analizados en las
secciones 1.2.3 y 1.2.4. Se trata de un cambiador de calor de flujo a contracorriente (para disminuir el
choque térmico), en el que entran los gases de combustión calientes provenientes de la TG y ceden calor
al agua de alimentación del ciclo de vapor. El intercambio de calor se produce de forma convectiva (lo que
las distingue de las calderas convencionales, en las que la transferencia de calor por radiación juega un
papel importante), y la circulación suele ser forzada en las plantas europeas y natural en las americanas
[J.Rovira, 2004].
Este elemento puede tener diversas configuraciones, en función de cómo sea el ciclo del vapor, siendo la
confiuración convencional la de la figura (1.15). En general, y exceptuando las calderas que trabajan con
presiones supercríticas, todas las calderas cuentan con las siguientes partes:
(a) (b)
Como se puede apreciar en la figura (1.16), una de las caracterśticas más llamativas de este diagrama
es la aparición de una meseta durante la evolución de la temperatura del agua, la cual se debe a que
el cambio de fase se produce a una temperatura constante. Este fenómeno provoca una disminución del
rendimiento del ciclo dado que el calor invertido en ese tramo no se traduce en un aumento de temperatura
del fluido motor.
Además, dentro de la CRC, las diferencias de temperaturas señaladas suelen ser, a excepción de la
Diferencia Inicial de Temperaturas (D.I. de T.), parámetros de diseño de la caldera y por tanto el propio
ciclo combinado, siempre y cuando se trate de un con ciclo subcrítico. Estos parámetros son:
• Approach Point (AP): Esta variable ya se ha comentado previamente. Cabe añadir que el límite
superior del valor que puede tener se debe al choque térmico que recibiría el calderín y a la menor
cantidad de vapor producido5 , ni tampoco un valor muy bajo, dado que aumentariía mucho la
superficie total de intercambio de calor en el economizador.
• Pinch Point (PP): Es la diferencia mínima de temperaturas entre los GGCC y el agua en la zona
del evaporador. Cuanto menor es el PP, mayor es la cantidad de vapor producido y el rendimiento
exergético pero mayor es también la superficie total de intercambio necesaria en el evaporador y
el sobrecalentador. Esto obliga a buscar un valor óptimo de PP, que garantice cierta cantidad de
caudal de vapor sin aumentar demasiado el coste de la caldera. Este valor suele estar entre los 5 y
10 ◦ C [García and Muñoz, 2006].
• Diferencia terminal de temperaturas (DT): Se trata de la diferencia de temperaturas entre
los gases de escape de la turbina de gas y el vapor al salir de la caldera. A pesar de que suele ser
un parámetro de diseño debido a la limitación por parte de los fabricantes de TV a la temperatura
de entrada del vapor a las turbinas, no se ha tomado como tal en el diseño de los programas de
simulación desarrollados, como se verá más adelante.
Como se ha indicado en la ecuación (1.4) (sección 1.2.2), uno de los principales factores que determi-
nan las pérdidas de rendimiento es la diferencia de temperatura a la que se produce el intercambio de
calor entre los gases de combustión y el agua. Para disminuir este tipo de pérdidas existen multitud de
configuraciones posibles de ciclos de agua y de CRC, la cual se adapta a la planta que se quiere diseñar
y no está estandarizada.
A continuación se presentan algunos ejemplos de posibles disposiciones de calderas que además han
sido modelados:
Ciclos con varios niveles de presión (fig. 1.17): la existencia de más de un nivel de presión
permite acercar la curva de evolución de temperaturas del agua a la de los GGCC. Es común encontrarse
calderas de dos y tres niveles de presiones, dentro de las cuales también puede haber distintas clasifi-
caciones en función de si economizador y sobrecalentador están situados en cascada (el economizador
o el sobrecalentador de uno de los niveles de presión se sitúa a continuación del otro)o en paralelo (los
intercambiadores ocupan el mismo espacio en la caldera). En la figura (1.17) se puede observar cómo en
una configuración de dos niveles de presión colocados en paralelo entran a la CRC ambas líneas y sufren
el precalentamiento al mismo tiempo. La línea de baja presión, que es la de color azul más oscuro, llega
antes a condiciones de evaporación, mientras que el vapor a presión mayor, representado de color azul
cielo, aún necesita más energía para llegar a dicho punto, por lo que esta línea divide su economizador
en dos partes; la primera en paralelo con el economizador de baja y la segunda en paralelo con el so-
brecalentador de baja. En la figura (1.17b) se puede apreciar que la existencia dos zonas de evaporación
separadas permite adaptar las curvas mejor que si solo hubiera una.
Ciclos con niveles de presión supercríticos (fig. 1.18): Como ya se ha comentado, la existencia
de presiones supercríticas reduce de manera muy significativa las pérdidas exergéticas, y puede resultar
beneficioso a pesar de los problemas técnicos y de diseño que conlleva trabajar con presiones tan elevadas.
En la figura (1.18) se puede apreciar claramente que para una misma temperatura de salida, la curva
supercrítica se acerca mucho más a la curva de los gases de combustión.
Ciclos con recalentamiento (fig. 1.19): Uno de los principales problemas de trabajar con presiones
altas radica en la mayor cantidad de humedad que se obtendrá en los últimos escalonamientos de la TV.
Para paliar esto se puede optar por introducir un recalentamiento, que como ya hemos visto, consiste en
expansionar la línea de alta presión hasta la presión de otra de las líneas, tras lo cual se recalienta este
vapor y se introduce en la turbina de dicha línea. De esta manera se consigue elevar el título de vapor
obtenido a la salida de la turbina. La línea de sobrecalentamiento puede estar en paralelo o en cascada
con respecto al sobrecalentador de baja. En la figura (1.19) se muestra un ejemplo en el que están en
paralelo, siendo la línea de recalentamiento la representada en verde.
5 Serecuerda que la potencia obtenida en el eje de una turbina, ya sea de gas o de vapor, se calcula con la expresión
·
P (kW ) = m( kg
s
) · ∆h( kJ
kg
), por lo que para obtener conseguir la mayor cantidad de potencia posible hay que buscar
maximizar tanto el salto entálpico del fluido motor a su paso por la turbina como el caudal de dicho fluido que la atraviesa.
(a) Esquema Ciclo (Elaboración propia) (b) Diagrama T − Q del Ciclo (Elaboración propia)
Figura 1.18: Comparación CRC Ciclo sub y super crítico (Elaboración propia)
Figura 1.19: Diagrama T − Q de una CRC de 2P y Ciclo con Recalentamiento (Elaboración propia)
Durante las décadas de 1950 y 1960, diversos científicos estudiaron de forma independiente distintos
sistemas evolutivos, aplicando la idea de que la evolución podía ser usada como una herramienta de
optimización con aplicaciones en la ingeniería [Mitchell, 1999]. Esta teoría fue propuesta por primera
vez Charles Robert Darwin en su célebre obra El origen de las especies, publicada en 1859. En ella, se
defiende que la biodiversidad existente en la actualidad es resultado de la evolución durante millones de
años de las distintas formas de vida, que han ido avanzando con el fin de adaptarse a su hábitat de la
mejor forma posible. En la obra se exponen dos fenómenos de acuerdo a los cuales habría discurrido esta
evolución:
• Selección natural: Dentro de cada especie, serán los individuos que mejor se adapten a su entorno
los que tengan más probabilidades de tener más descendencia y transmitir sus genes a las siguientes
generaciones. Debido a esto, a lo largo de un espacio lo bastante extenso de tiempo en el cual
los individuos que no se adaptan suficientemente bien tienen menos descendencia que los mejor
adaptados, la especie mejora sus características dado que provienen de la descendencia de los mejores
individuos.
• Mutación: Tiene lugar de forma aleatoria y en una pequeña proporción de la población de una
especie, y propician diferencias en los individuos que de otra forma no se habrían dado. Estas muta-
ciones pueden ser beneficiosas para el individuo, en cuyo caso mejorará su capacidad de adaptación
y pasará la característica a más población, o será perniciosa para el individuo, provocando que
tenga menos descendencia, de acorde con la Selección Natural.
Aplicando estos principios se desarrollaron una serie de técnicas de optimización caracterizados por:
• El trabajo con una gran cantidad de posibles soluciones, llamadas generación, en cada iteración.
• Las soluciones existentes se combinan entre sí con el fin de encontrar la combinación de genes
(variables) que propician un mejor resultado.
• Para los procesos de selección se aplica la idea de la selección natural, utilizando operadores que
escogen una cantidad determinada de individuos, elegidos en función de la bondad de la solución o
fitness que proponen.
Estas caracteríticas convierten a los Algoritmos Genéticos en una herramienta ideal para encontrar
máximos absulotes de funciones en las que por la cantidad de variables existe un gran número de máximos
locales. Siguiendo las ideas mencionadas se desarrollaron un conjunto de algoritmos de optimización
conocidos como Algoritmos Evolutivos, dentro de los cuales podemos diferenciar cuatro tipos de algoritmos
principales, cuyo uso se extendió y generalizó en mayor medida que el resto:
i) Algoritmos Genéticos: Es la técnica de optimización evolutiva más extendida, gracias a sus bue-
nos resultados y sencillez conceptual. Tradicionalmente se representan los individuos mediante una
cadena de bits con una longitud definida (aunque también pueden usarse números reales), en los
que cada posición representa una caracerística del individuo (una variable), y su valor el cómo esa
variable se expresa en la solución. Este tipo de representación es una clara analogía de los genes
de los organismos biológicos, siendo estos los equivalentes de las variables de una solución. Gene-
ralmente estos genes se evalúan de forma independiente del resto. La forma de operar más común
consiste en crear una población inicial a partir de la cual se seleccionan N individuos de manera
probabilística que ejercerán de progenitores, dando lugar a una descendencia con N soluciones que
reemplazarán a los padres, habiendo también procesos de mutación por los que algunas variables se
alteran aleatoriamente. Estos y otros principios básicos de los Algoritmos Genéticos (AGs) fueron
propuestos por John Henry Holland en [Holland, 1992]. Para llevar a cabo los procesos antes descri-
tos, utilizan operadores de selección, recombinación, mutación y reemplazamiento, que explicaremos
más adelante.
ii) Programación Genética: Esta técnica está ganando popularidad gracias a que es capaz de re-
solver problemas reales con más exactitud incluso que los métodos analíticos. Se basan en una
representación de árboles genealógicos, siendo el árbol una única función que debe ser evaluada y
las hojas distintas soluciones, que en vez de ser cadenas de bits o de números reales con una longitud
fija, son programas o autómatas de tamaño variable. John R. Koza fue el creador de esta técnica
en 1992 con su obra [Koza, 1992], tras estudiar los AGs en busca de una forma de mejorarlos.
iii) Estrategias Evolutivas: su objetivo es resolver problemas experimentales complicados trabajando
con cadenas de números reales y desviaciones estándar para codificar las posibles soluciones. Esta
técnica fue desarrollada en la década de 1970 y se basaba principalmente en dos normas [Beyer and
Schwefel, 2002]:
· Cambiar todas las variables a la vez, preferentemente de forma aleatoria.
Los algoritmos genéticos por tanto se diferencian del resto de técnicas de algoritmos evolutivos y otros
métodos de optimización convencionales principalmente por las siguientes características [Sivanandam
and Deepa, 2007]:
• En cada iteración realizada no se trabaja con una única posible solución si no que se trabaja con una
población o generación entera de soluciones para el problema que se quiere resolver, representado
por una función objetivo.
• Los algoritmos genéticosse centran en modificar la codificación de las soluciones (sus cromosomas)
para conseguir individuos nuevas y evaluar su bondad.
• Los cambios que se producen de una generación a otra no van dirigidos a un objetivo predeterminado,
si no que los cambios producidos son aleatorios. Por tanto, los AG avanzan con métodos estocásticos
y no deterministas.
• Los AG trabajan con valores de la propia función a optimizar, no con derivadas de la misma. Esto
permite trabajar con funciones con discontinuidades y/o no derivables.
• La función objetivo puede ser evaluada por una persona que asigne el fitness a cada solución en
lugar de un ordenador. Esto se utiliza, por ejemplo, al realizar retratos robots.
1.3.2.1. Terminología
Un elemento clave que debe ser tenido en cuenta a la hora de dise´ nar un AG es el espacio de búsqueda,
que es el conjunto de todas las posibles soluciones, y dentro del cual estará por tanto la solución óptima.
En la figura (1.20) se representa parte del espacio de bśqueda del más sencillo de los AG desarrollados,
en el cual se optimiza únicamente el PP y la presión de línea en un Ciclo Combinado de un nivel de presión
subcrítico.
Evaluar un individuo consiste en asignarle un fitness, lo cual se realiza introduciendo sus variables
en la función objetivo. Es importante, sobre todo cuando el espacio de búsqueda es muy amplio, que el
AG sea robusto, lo que significa que sea capaz de evaluar individuos con todo tipo de combinación de
variables, aunque fuera imposible que se dieran en la realidad, sin pararse o dar errores.
Como se ha podido observar durante la introducción realizada, la utilización de paralelismos con la
teoría de la evolución y la naturaleza es frecuente a la hora de denominar ciertos términos. De esta forma,
se facilita la asimilación de los conceptos utilizados. A continuación se recopilan y explican los términos
más relevantes utilizados:
Evolución orgánica Equivalente en Algoritmos Genéticos
Individuo Posible solución para el problema
Gen Variable de la función objetivo
Genotipo Conjunto de todas las variables de las que depende la cunción
Cromosoma Cadena de valores que contiene las representaciones (en bits o números reales)
de cada gen, representando así al individuo
Población Conjunto de las soluciones posible
Generación Parte de la población evaluada en una iteración en concreto
Adaptabilidad al medio Fitness o bondad de la solución para el problema en cuestión
Selección natural Función objetivo
Antes de pasar a explicar las ventajas y limitaciones (sección (1.3.2.3)) es conveniente presentar el
flujograma general de un AG a fin de terminar de comprender el funcionamiento de esta técnica 6 :
Teniendo ya una visión más amplia de lo que implica operar con un AG, pasamos a presentar las
ventajas más destacadas que ofrecen:
Paralelismo: Es sin duda una de las características más importantes y que más aportan al método
de los AG. Esto permite acelerar el proceso de búsqueda de una solución óptima al avanzar en más de
una dirección, al contrario que los métodos convencionales, que solo avanzan en una. Por tanto, si la
dirección en la que se está avanzando por un método convencional es errónea y no aporta una solución
’optima, habrá que reiniciar el proceso, mientras que si alguna de las direcciones por las que avanza un
AG no es la mejor, automáticamente dejará de desarrollarse y se tenderá a potenciar otras que aporten
mejores resultados.
Facilidad para encontrar máximo global: Gracias al paralelismo y a trabajar con grandes
poblaciones, un AG es capaz de encontrar máximos globales incluso en funciones con mucho ruido (con
muchos máximos locales). De otra forma, la optimización podría encallarse en un máximo local.
Simplicidad conceptual: Como se ha podido ver, los conceptos por los que se rige un AG y el flujo
de trabajo que sigue no son complicados de entender. Por tanto, por complicado que sea el problema, de
forma relativamente sencilla puede realizarse una optimización del mismo mediante AG.
6 Los principios básicos de funcionamiento se explicarán más detenidamente en la sección (1.3.3)
Robustez: Un buen AG está caracterizado por su robustez. Esta característica implica que es capaz
de evaluar cualquier individuo, por peculiares que sean sus genes. Gracias a esto y al paralelismo, un AG
es un método de optimización muy utilizado cuando no se conoce con certeza qué implicaciones tiene la
variación de alguna o algunas de las variables, debido a la longitud del cromosoma de los individuos o a
la correlación entre distintos genes.
A pesar de las grandes y obvias bondades que aporta este método, también cuenta con algunas
limitaciones importantes. En [Sivanandam and Deepa, 2007] se recomienda expresamente no utilizar este
método si puede hallarse la solución óptima analíticamente de manera sencilla, realizando una analogía a
lo que conocemos coloquialmente como "matar moscas aa cañonazos". Entre las principales limitaciones
se encontran las siguientes:
Dificultad de asignar fitness: No en todos los problemas es sencillo asignar una bondad a una
solución en particular. Este problema no se atañe a nuestro caso, dado que nuestro fitness no será otro
que el rendimiento del Ciclo Combinado.
Representación del problema: Al igual que sucede con el fitness, en ocasiones es complicado
escoger los genes con los que se compondrán los genotipos o cómo se van a codificar y modificar dichos
genes. Otro problema derivado del realizar un AG con escaso conocimiento de lo anteriormente comentado
reside en la elección de los distintos métodos (de selección, de reproducción, etc) o los valores asignados
a distintos parámetros que definen el algoritmo, como la cantidad de individuos que componen una
generación, la tasa de mutación, etc7 .
Tiempo de cálculo: A pesar de que no es necesario tener bastos conocimientos sobre algoritmos
genéticos ni dominar el efecto de las distintas variables sobre la solución para desarrollar un AG, hacerlo
en estas condiciones puede conllevar a que el algoritmo tarde demasiado tiempo en encontrar la solución
óptima e incluso que no llegue a ella.
Convergencia prematura: Puede suceder que un individuo sea sustancialmente mejor que el resto
de soluciones, de tal forma que su ratio de descendencia es mucho mayor que el del resto de miembros
de la población, provocando a lo largo de pocas iteraciones que toda la población sea semejante a este
individuo, provocando la finalización del algoritmo sin haber dado tiempo a que se produzcan suficientes
mutaciones o reproducciones con valores diferentes, y por tanto obteniendo una solución que puede ser
peor que la que se habría obtenido si el proceso se hubiese prolongado más.
Funciones planas: La situación opuesta a la anterior también es indeseable; una población cuyos
fitness no se diferencien lo suficiente entre ellos puede provocar que al algoritmo le cueste distinguir cuál
es la dirección que optimiza el resultado. Por otra parte, si se da este caso en nuestro problema, esto
significará que el resultado que obtendremos tras finalizar el algoritmo tendrá un fitness muy similar al de
la mejor solución posible, por lo que puede no ser una desventaja extremadamente grande. Una posible
solución si se da este caso sería redefinir la función objetivo de forma que se acentúen los máximos.
En esta sección vamos a realizar una explicación más detallada de las distintas partes que conforman
un Algoritmo Genético y de las diferentes opciones que existen para confeccionar un algoritmo de este
tipo.
1.3.3.2. Individuos
Un individuo o cromosoma es un vector de valores utilizado para representar una solución en particular.
Cada uno de estos valores que conforman al individuo son los genes. Por tanto, codificar un cromosoma
implica elegir las variables del problema que van a optimizarse. Esta codificación es de crucial importancia
para el éxito del proceso, y debe satisfacer las siguientes necesidades [Sivanandam and Deepa, 2007]:
i) Cada posible solución del espacio de búsqueda tiene que estar codificada mediante un cromosoma.
ii) Toda codificación debe de representar una solución posible.Estos dos criterios tienen que ver con la
robustez del algoritmo.
iii) Debe evitarse la redundancia; cada codificación debe desembocar en una solución, aunque dicha
solución (ese fitness) sí que puede ser alcanzada por distintos individuos.
Una de las primeras decisiones que hay que tomar al diseñar un AG es la codificación con la que vamos
a trabajar. Como se ha comentado, esta puede realizarse de distintas formas; mediante números reales,
lenguajes binario, octal o hexadecimal, o de cualquier otra forma que se desee y ajuste al problema
tratado.
En el cuadro (??) se puede ver cómo un mismo cromosoma puede representarse de distintas formas.
En este caso, se trata de un individuo con cuatro genes o variables, que serían, aplicando el tema del
trabajo, de izquierda a derecha: presión de la línea de baja presión, presión de la de alta, PP de baja y
PP de alta.
El uso del lenguaje binario para codificar las distintas variables ofrece una gran variedad de cromo-
somas y es el lenguaje más usado al desarrollar AG. Por contra, este lenguaje no es natural para muchos
problemas y suele ser necesario realizar correcciones al terminar el proceso. Otra desventaja del uso de
lenguaje binario es que la precisión de las variables dependerá de la longitud de los genes correspondien-
tes; cuando mayor sea el número de bits que codifiquen una variable, con más precisión se representará.
El uso de octal y hexadecimal está menos extendido, y es similar al binario.
Otro parámetro que hay que tener en cuenta, relacionado con los individuos, es el número de indivi-
duos, N , con el que se trabajará en cada iteración. Es decir, el tamaño de la población que se manejará.
Este parámetro está relacionado con la cantidad de variables de las que depende la función objetivo;
cuanto mayor sea el número de genes, mayor será la cantidad de individuos necesaria para asegurar que
se exploran todas las posibilidades y combinaciones. Para dar una idea aproximada del orden de mag-
nitud utilizado, en [Sivanandam and Deepa, 2007] se indica que para un problema con seis variables, es
recomendable utilizar una población de alrededor de cien individuos. Si se cree que se pueden utilizar
menos individuos, o que por contra se deberían utilizar más, se recoienda hacer pruebas con cantidades
distintas de población para un mismo caso, y observar cuál es la solución obtenida y el tiempo que se ha
tardado en alcanzarla.
Es el encargado de que la población mejore con cada iteración que pase, ya que, como se ha comentado,
tanto el proceso de reproducción como el de mutación tienen que producir modificaciones aleatorias sin
tener un objetivo predefinido. Será por tanto mediante los algoritmos de selección como iremos escogiendo
los individuos más fuertes para formar parte de la recombinación, mutación, y reemplazamiento de la
población anterior, con la esperanza de que esta nueva generación mejore con respecto a la anterior. No
se debe olvidar tampoco que el proceso de selección debe ser estocástico y no determinista. Por tanto,
estará marcado por coeficientes de probabilidad que darán prioridad a los individuos más fuertes pero
que permitirán que exista la posibilidad de que todo individuo, por débil que sea, pueda ser elegido.
Esto se representa en el código mediante la presión de selección, que es un parámetro cuyo valor determina
cuánto se favorecerá la elección de individuos con mayores fitness en detrimento del resto. Una baja presión
de seleción aumentará la probabilidad de que se escojan individuos con menor fitness, pero seguirá estando
favorecida la selección de los más fuertes. Un incremento de este parámetro también provoca que el proceso
converja antes, por lo que no es recomendable que sea demasiado alto, a fin de que el AG pueda realizar
las modificaciones suficientes y explorar todas las soluciones posibles. De la misma forma, si la presión
de selección es muy baja, el algoritmo tardará un tiempo excesivo en converger.
Se pueden clasificar los distintos métodos de selección en dos grupos. Por una parte, aquellos que se
basan en el valor absoluto del fitness de cada individuo, y por la otra, aquellos en los que se compara
el fitness de un individuo en particular con el del resto de la población a la hora de seleccionar. Este
segundo método se utiliza cuando los fitness de los distintos cromosomas de población se mueven en un
rango muy estrecho, siendo entonces conveniente pasar dichos fitness a valores relativos comprendidos
entre 0 y 1, que harán que la selección sea más efectiva.
A continuación se detallan los métodos de selección más utilizados para desarrollar AGs:
Este método, aunque fácil de implementar, no es del todo recomendable, dado que de haber un individuo
con un fitness mucho mayor que el resto, copará la mayoría de las plazas disponibles, con las consecuencias
negativas que esto tiene.
Selección Aleatoria:
Esta técnica selecciona los progenitores de forma completamente aleatoria, por lo que no se favorece la
elección de los individuos más fuertes.
Método 2:
Seleción Boltzmann:
Este método proviene de una técnica de optimización llamada "de recocido", enfiamiento utilizada para
simular el enfriamiento lento de un metal fundido.
Se introduce el concepto de temperatura, que comienza alta, implicando una presión de selección baja, y va
disminuyendo con el paso del tiempo a la vez que aumenta la presión de selección. Por tanto, al principio
del proceso, los individuos fuertes están poco favorecidos, lo cual va cambiando conforme avanzan las
iteraciones. Esto permite explorar al principio un gran número de posibilidades distintas, y con el avance
del proceso ir enfocando más la búsqueda en la dirección que mejores resultados aporta.
En este proceso, se selecciona automáticamente el cromosoma con mayor fitness, y al resto se le asigna
una probabilidad P de acuerdo con la expresión :
−(fmáx − fi )
P = exp (1.10)
T
Elitismo:
No es un tanto un método de selección como una posibilidad que se puede implementar y conjuntar con
otros métodos. Consiste en reservar uno o varios espacios para los mejores individuos de la generación,
eliminando así la posibilidad existente de que no sean elegidos si el proceso se deja enteramente en manos
de la probabilidad. Implementar el elitismo mejora el funcionamiento de un AG, pero si se reservan dema-
siados espacios puede llevar a disminuir en exceso la diversidad, provocando una convergencia prematura
[Sivanandam and Deepa, 2007].
N=5;
rends=[0.5, 0.4, 0.3, 0.75, 0.65, 0.68, 0.3, 0.9, 0.92, 0.6];
rends_ord=sort(rends, 'descend');
suma_rends=zeros([1, length(rends)+1]);
suma_rends(1)=0;
for i=2:1:length(rends)+1
suma_rends(i)=suma_rends(i-1)+rends_ord(i-1);
end
S=0;
for i=1:1:10
S=S+rends(i);
end
intervalo=S/N;
punteros = zeros([1,5]);
punteros(1)=rand*intervalo;
for i=2:1:N
punteros(i)=punteros(i-1)+intervalo;
end
figure(1); hold all;
plot(suma_rends, ones([1, length(rends)+1]));
scatter(punteros, ones([1, N])*1.1);
En este ejemplo, en el que buscamos seleccionar 5 individuos de entre una población de 10. En
dicha figura, los marcadores en forma de cruz roja sobre la línea contínua azul representan los distintos
rendimientos uno a continuación de otro, ordenados de mayor a menor. El segmento contenido entre
las dos primeras cruces pertenece al individuo de fitness máximo, el individuo 1, el siguiente segmento
al individuo 2, y así sucesivamente. Los marcadores en forma de aspa verde indican la posición de los
punteros. Por tanto, en este caso se seleccionarán los individuos 1, 3, 4, 6, y 9.
Son los procesos por los que se obtiene la descendencia a partir de dos progenitores obtenidos de
un grupo de posibles padres conocida como "mating pool", previamente seleccionados mediante uno de
los métodos ya explicados. Por tanto, hacen referencia a la forma de intercambiar información entre los
distintos cromosomas de los padres, de manera que se obtienen individuos nuevos. La estructura básica
que siguen los operadores de recombinación es la que sigue:
Cruce monopunto:
Es el utilizado tradicionalmente, y el más sencillo de los que se van a discutir. Se genera una posición
aleatoria en los progenitores (la misma en ambos), a partir de la cual los genes se intercambian, dando
lugar a dos hijos: el primero con la primera parte del progenitor1 y la segunda del progenitor2, y el
segundo hijo con la primera parte del progenitor2 y la seguna parte del progenitor1.
En el cuadro, se puede observar cómo dos progenitores dan lugar a dos descendientes, siendo la doble
línea vertical la representación de la posición a partir de la cual se realiza el intercambio de genes.
Cruce multipunto:
Sigue la misma filosofía que el mt́odo anterior, pero permite un mayor intercambio al posibilitar que haya
varios puntos de cruce. Esto implica una pérdida de rendimiento del AG, pero permite explorar el espacio
de búsqueda más a fondo Sivanandam and Deepa [2007]. Generalmente, se da por hecho que el cruce de
dos puntos produce mejores resultados que el mono punto. La eficiencia de un cruce de N -puntos depende
de la posición de los genes en el cromosoma.
Cruce Uniforme:
Este método difiere bastante del cruce multipunto, debido al procedimiento utilizado. El proceso de selec-
ción se realiza mediante un vector máscara, que se trata de un vector de igual longitud que un individuo,
es decir, con tantas componentes como genes existan, pero caracterizado porque cada componente es
binaria; puede valer 0 ó 1. Este vector se genera aleatoriamente para cada cruce que se quiera realizar. El
cruce se basa en que el descendiente1 heredará aquellos genes del progenitor1 en cuya posición el vector
máscara tenga un 1, y heredará los genes del progenitor2 en cuya posición el vector máscara tenga un 0.
El descendiente2 se formará por tanto del modo contrario, como puede verse en el siguiente ejemplo: Hay
que tomar la precaución de evitar la posibilidad de que el vector máscara tome todos los valores nulos o
unos, puesto que esto desembocaría en que no se daría ningún cruce.
Cruce Barajado: Se selecciona un punto de cruce, como en Cruce Monopunto, pero antes de realizar
el intercambio de variables, estas se barajan. Tras esto, se intercambian y se reordenan, deshaciendo el
baraje realizado. Este método elimina todo sesgo posicional, al ser aleatoria la forma en que se barajan
las variables.
Es conveniente resaltar que de los métodos vistos, sólo tiene sentido aplicar a a una codificación con
números reales la de Cruce Uniforme.
Progenitor1 Inicial 1 2 3 4 5
Progenitor2 Inicial 6 7 8 9 10
Progenitor1 Barajado 3 1 5 2 4
Progenitor2 Barajado 8 6 10 7 9
Descendiente1 Barajado 3 1 10 7 9
Descendiente2 Barajado 8 6 5 2 4
Descendiente1 Final 1 7 3 9 10
Descendiente2 Final 6 2 8 4 5
Probabilidad de Cruce
No se trata de un método de recombinación, si no que es un importante parámetro que suele implementarse
en estos operadores. Indica qué cantidad de los descendientes de una generación está formada a partir
de operaciones de cruce, y cuánta es simplemente individuos de la generación previa. Por tanto, una
probabilidad de cruce del 100 % significará que toda la descendencia será resultado de un cruce entre dos
progenitores de la población anterior, mientras que una probabilidad de cruce del 0 % conlleva que no se
de reproducción, y la población se mantenga. Esta última opción no excluye que existan las mutaciones
programadas. Es común dar un valor del 100 % a la probabilidad de cruce, pero es conveniente conservar
parte de la población anterior [Sivanandam and Deepa, 2007].
Progenitor 1 0 0 1 1
Descendiente Mutado 1 1 0 1 0
Progenitor 1 0 0 1 1
Vector Máscara 1 0 1 0 0
Descendiente Mutado 0 0 1 1 1
Este proceso supone el paso final de la creación de una nueva generación. Como se puede deducir
de lo explicado hasta el momento, al llegar a este punto se tiene una publación total mayor que la
inicialmente deseada, N . Esta nueva población está compuesta de: la generación anterior; la descendencia
proveniente de la recombinación, y la descendencia mutada. Por tanto, el reemplazamiento surge de la
necesidad de ajustar esta población para seleccionar N individuos que configuren finalmente la generación.
Los operadores de reemplazamiento se asemejan a los de selección utilizados para configurar la mating
pool, pero tienen una funcionalidad distinta. Además, el método empleado para llevar a cabo el proceso
de reemplazamiento influirá directamente en la velocidad de convergencia. En [Sivanandam and Deepa,
2007], se dividen estas técnicas en dos grupos:
el proceso, con el fin de que no se alargue indefinidamente. Un AG puede detenerse debido a que se
alcanzan ciertas limitaciones, o a que se ha alcanzado el criterio de convergencia.
Cuando se introduce una limitación, su objetivo es que el AG no se ejecute durante un período
excesivamente largo de tiempo, pero esto puede llegar a que no sea posible asegurar que se haya encontrado
el máximo absoluto. Entre las limitaciones que se pueden introducir, se destacan los siguientes:
I) Criterio del Mejor Individuo: Se detiene el proceso cuando la diferencia entre el fitness del
individuo más fuerte de una generación y el del más fuerte de una generación anterior es menor que
un valor previamente definido. Cuanto mayor sea la distancia entre las generaciones comparadas
mejor funcionará el AG, dado que las mutaciones tendrán más tiempo para generar variaciones que
modifiquen positivamente a los individuos. Este método garantiza la obtención de al menos una
buena solución.
II) Criterio del Peor Individuo: Similar al anterior, garantiza que todas las soluciones aportadas
son buenas, y no sólo una, al asegurarnos de que incluso el mínimo fitness ya no mejora lo suficiente.
El inconveniente de este método es que la diferencia entre el mejor y el peor individuo puede ser
pequeña, por lo que se recomienda combinar este método con una imposición de que el individuo
más fuerte alcance un valor mínimo de fitness.
III) Criterio dela Suma: Se compara el criterio de convergencia con la suma de los fitness de una
población entera. Esto garantiza que prácticamente todos los individuos tengan un buen fitness,
aunque para asegurarnos de que todos los individuos lo sean, es recomendable combinarlo con el
Criterio del Peor Individuo. Además, hay que tener en cuenta el tamaño de la población a la hora
de establecer el criterio de convergencia. Muy similar a este sería el Criterio de la Media, en el
que el criterio se aplicaría a la media del fitness de la poblaciión, lo cual elimina la necesidad de
modificar el criterio de convergencia según la cantidad de población deseada.
IV ) Criterio de la Mediana: Con este método, al menos la mitad de los individuos cumplirán con el
criterio de convergencia.
Hay que prestar especial cuidado al diseño de un AG en caso de que la función tenga ciertas res-
tricciones sobre sus variables o los resultados, como puede ser que cierta temperatura no supere cierto
valor límite o sea menor que cierto valor umbral. En los casos en los que las variables están acotadas o
relacionadas entre sí mediante alguna ecuación, al proceso se le denomina optimización con restricciones
[Michalewicz, 1991], [Nieto, 2015].
En estos casos, cuando se evalúa un individuo obtenido en la función objetivo, ha de comprobarse que
se cumplen las restricciones establecidas. De no hacerlo, hay tres opciones que pueden tomarse [Nieto,
2015], [Sivanandam and Deepa, 2007], [Michalewicz, 1991]:
• Eliminar directamente dicho individuo. Con esto, todas las soluciones obtenidas cumplirán con las
restricciones.
• Modificar el individuo para que cumpla con la restricción, e introducirlo de nuevo en la poblaciṕn.
De esta forma, también serán válidas todas las soluciones obtenidas.
• No modificar el individuo pero asignarle una penalización para reducir su fitness. De esta forma,
ni se perderá la información genética contenida en él, ni tendrá un fitness muy alto (dado que
puede darse que las soluciones que eluden las restricciones pueden tener un fitness alto). Estas
penalizaciones deben ser proporcionales a la infracción cometida por el individuo.
1.4.1. Matlab
Matlab ("MATrix LABoratory") es un lenguaje de cálculo técnico de alto nivel utilizada para resolver
problemas matemáticos en los que el número de cálculos que hay que llevar a cabo para resolverlos hace
inviable o poco eficiente que se solucionen manualmente. Otras aplicaciones de este software son: aprendi-
zaje automático, procesamiento de señales, procesamiento de imágenes, visión artificial, comunicaciones,
finanzas computacionales, diseño de control, y robótica, entre otros.
Este software está optimizado para resolver problemas de ingeniería y científicos, y se adapta perfecta-
mente a las necesidades de cálculo de este TFG. Con él se han desarrollado la totalidad de los programas
llevados a cabo, dado que, además de permitir llevar a cabo gran cantidad de cálculos en un mínimo de
tiempo, es capaz de realizar representar de gráficas y otras figuras, imprescindibles para completar los
programas realizados.
Para el cálculo de las distintas propiedades termodinámicas del aire y de los gases de combustión
se han utilizado unas ecuaciones cuyos parámetros nos proporcionan, al introducir la temperatura en
grados Kelvin y la presión en bares, obtener el calor específico, la entalpía y la entropía de los siguientes
compuestos: CO2 , H2 O, CO, H2 , N2 . Los coeficientes han sido hallados a partir de las tablas termodiná-
micas JANAF desarrolladas por el National Institute of Standards and Technology (NIST) de los Estados
Unidos, y están incorporadas en el programa "th_prop". Este software entrega resultados en unidades
específicas por unidad de mol, por lo que será necesario modificar los resultados obtenidos para llegar
a unidades específicas por unidad de masa. El modelo termodinámico utilizado es el de gases ideales, y
que las condiciones de referencia son 25◦ C y 1 bar. Según este modelo, se puede calcular la entalpía y la
entropía según las siguientes ecuaciones:
Figura 1.25: Diagrama de Mollier. Fuente: The American Society of Mechanical Engineers (ASME)
También está enfocado a personas que ya conocen los ciclos combinados pero buscan afianzar su
conocimiento de los mismos, pudiendo por ejemplo adquirir un conocimiento más profundo de cómo
diseñar un ciclo combinado para obtener mayor rendimiento, mayor título de vapor a la salida de la
turbina, etc.
En la figura (2.1) se pueden observar los distintos puntos característicos en base a los cual se ha
desarrollado el programa. A continuación, se detalla cada uno de ellos y su proceso de obtención:
1p: Aire tras sufrir una ligera pérdida de presión debido a la aspiración del compresor.
La temperatura se mantiene constante, y la pérdida de presión en los filtros del compresor es una variable
de entrada.
2s: Aire tras sufrir una compresión ideal isentrópica. Dicha compresión se da desde el punto
1p hasta la misma presión que el punto 2. Se obtiene a partir de la suposición de compresión isentrópica
y de la presión del punto 1, además de la relación de compresión en el compresor, ρCC , que es un dato de
entrada. Con estos datos se puede obtener la entropía y la presión en el punto 2s, tras lo cual se puede
obtener el resto de propiedades termodinámicas necesarias; temperatura y entalpía.
s2s = s1p
(2.1)
p2s = p1 · ρCC
y politrópico, además de presentar las modificaciones realizadas en el programa para adaptarlo al rendimiento politrópico.
- Dosado: El dosado hace referencia a la cantidad relativa de combustible introducida con respecto a
la de aire. Se trata por tanto de la relación F de caudales del combustible y el aire (ecuación 2.4). Se
define también el dosado relativo, Fe , como el dosado de la reacción de combustión estequiométrica,
que es aquella en la que se introduce la cantidad justa de aire para que no sobre combustible
ni oxígeno al acabar la reacción. En este caso, el proceso estequiométrico equivale a que en la
expresión (2.3), f = 1. Por último, otro parámetro a tener en cuenta relacionado con el dosado es
el dosado relativo, FR , que representa la relación entre el dosado utilizado en una combustión con
el estequiométrico de ese combustible. A continuación se representan las ecuaciones relacionadas a
estos tres conceptos:
·
mf Mmolar CH4 4 + 12
F = · = = (2.4)
ma 2 · Mmolar aire · f 2 · (32 + 3,76 · 28) · f
·
!
mf Mmolar CH4 4 + 12
Fe = · = = = 0,0584 (2.5)
ma 2 · Mmolar aire · 1 2 · (32 + 3,76 · 28)
esteq
F 1
FR = = (2.6)
Fe f
- Rendimiento de la Cámara de Combustión: Se define como la relación entre la cantidad de
calor obtenida tras la reacción de combustión y la máxima cantidad de calor que el combustible es
capaz de aportar. Se utiliza el PCI para calcular esta cantidad
de calor que el combustible es capaz
kJ
de aportar, que en el caso del metano es HC = 50046,71 . Por tanto, la expresión de este
kg
rendimiento es:
· · ·
(ma + mf ) · h3 − ma · h2 (1 + F ) · h3 − h2
ηCComb = · = (2.7)
m f · HC F · HC
Con esto, y la temperatura de salida de los GGCC de la cámara de combustión, que es un dato de entrada,
se podrá calcular f tras un proceso iterativo, ya que es el único elemento que falta y es necesario para el
modelado de la planta. Además de la temperatura, también se dispone de la presión p3 , que será la del
punto 2 menos una pérdida de carga.
4s: Gases de combustión tras sufrir una expansión ideal isentrópica. Esta expansión tiene
lugar desde el punto 3 hasta uno de presión p4s conocida, al ser la ambiental más las pérdidas de presión
que tienen lugar en la caldera de recuperación de calor, y de misma entropía:
s4s = s3
(2.8)
p4s = p1 + ∆PCRC
5: Gases de combustión fríos. Este punto es resultado del enfriamiento de los gases de combustión
en su paso por la CRC, tras haber cedido calor al Ciclo de Vapor. Conocemos la presión, que será la
atmosférica, y en este programa se dará una primera aproximación a la temperatura de estos gases. Como
se ha comentado en la Sección (1.2.3.1), el rendimiento global del ciclo aumentará cuanto mayor sea el
intercambio de calor en la caldera de recuperación de calor, y por tanto, cuanto menor sea la temperatura
de los gases de combustión en este punto. Por otra parte, esta temperatura no puede ser tan pequeña
como se quiera, si no que tiene que ser mayor que un mínimo marcado por la temperatura de rocío
de estos gases de combustión. Se ha encontrado en [Renovetec, -] que esta temperatura mínima oscila
para el gas natural entre los 50 y los 60 ◦ C, por lo que se ha tomado 60 ◦ C a fin de elegir el valor más
conservador. Este valor podrá variar tras ejecutar los programas del Ciclo de Vapor, dado que en algunos
casos el agua entra en la caldera a una temperatura mayor de 60◦ C, por lo que es imposible que los gases
de combustión alcancen dicha temperatura.
Tras esto, ya se dispone de la información de todos los puntos, y se podrán realizar las gráficas
pertinentes (T s y hs), además de calcular otras variables como el trabajo consumido por el compresor,
el trabajo desarrollado por la turbina, y el rendimiento del ciclo de gas.
function [t4, t5, x, Fr, ratio_gasescomb_aire, w, rend_TG] = CicloGas( t1, p1, p2_1p, ...
rend, perd_carga, t3, t5, grafica, clearfigures)
% CICLO DEL GAS
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
El objetivo de este programa es el de simular el ciclo de gas explicado para condiciones estacionarias. Para
ello, se ha tenido que recurrir a ciertas variables de entrada establecidas por el usuario, necesarias para
poder realizar los cálculos mencionados anteriormente. A continuación se recogen las distintas variales de
entrada y de salida que utiliza y produce el programa, respectivamente:
Argumentos de Entrada:
- grafica: Variable que puede valer 1 ó 0. De valer 1, el programa realizará una gráfica T s y una hs.
- clearfigures: Variable que puede valer 1 ó 0. De valer 1, borra las gráficas anteriormente realizadas
para dibujar las nuevas. De valer 0, dibujará las nuevas gráficas superponiéndolas con las anteriores,
pudiendo así comparar distintos procesos.
Argumentos de Salida:
El programa comienza con una breve descripción comentada de su funcionalidad, de los inputs y
outputs que tiene, y de las unidades utilizadas durante el programa. A esto le sigue una asignación de
valores predeterminados o default de los rendimientos y pérdidas de carga. Para recurrir a ellos, el usuario
debe introducir el valor -1 en la posición correspondientedurante la llamada a la función. Además, se
J
definen tanto la constante de los gases ideales, R = 8,314 , como el PCI del metano.
mol · K
% PARAMETROS DEFAULT
if rend==-1
rend=[0.88,0.98,0.93];
end
rend_s_compr=rend(1);
rend_cald_comb=rend(2);
rend_s_turb=rend(3);
if perd_carga==-1
perd_carga=[3, 3, 3];
end
perd_carga_filtros=perd_carga(1);
perd_carga_CC=perd_carga(2);
perd_carga_CRC=perd_carga(3);
R=8.314;
Hc=50046.71*16.04246;
A continuación se calculan los distintos puntos del proceso, tal y como se ha explicado en la Sección
(2.1.1).
% 1:
h1=0.21*th_prop('h','O2', t1)+0.79*th_prop('h', 'N2', t1);
s1=0.21*th_prop('s','O2', t1)+0.79*th_prop('s', 'N2', t1)- ...
R*(log(p1/1)+0.21*log(0.21)+0.79*log(0.79));
% 1p:
p1_p=p1*(1-perd_carga_filtros/100);
h1_p=h1;
s1_p=s1-R*log(p1_p/p1);
% 2:
%2s:
s2s=s1_p;
p2=p2_1p*p1_p; %p2s=p2;
options=optimoptions('fsolve', 'Display', 'off');
t2s=fsolve(@(t)(0.21*th_prop('s','O2', t)+0.79*th_prop('s', 'N2', t)- ...
R*(log(p2/1)+(0.21*log(0.21)+0.79*log(0.79)))-s1_p),t1+250,options);
h2s=0.21*th_prop('h','O2', t2s)+0.79*th_prop('h', 'N2', t2s);
%2:
h2=(h2s-h1_p)/rend_s_compr+h1;
t2=fsolve(@(x)(0.21*th_prop('h','O2', x)+0.79*th_prop('h', 'N2', x)-h2), t2s+30,options);
s2=0.21*th_prop('s','O2', t2)+0.79*th_prop('s', 'N2', t2)- ...
R*(log(p2/1)+0.21*log(0.21)+0.79*log(0.79));
Para la obtención de ciertas propiedades se ha recurrido a la función fsolve, utilizada para resolver
sistemas de ecuaciones no lineales. Esto ahorra tener que iterar con bucles, lo cual demoraría en exceso
el programa. En este caso, se utiliza fsolve para calcular la temperatura en el punto 2s a partir del
conocimiento de su entropía y presión. La variable options se define una vez en el programa, y sirve para
evitar que fsolve muestre sus resultados por pantalla.
Del resto de puntos, cabe destacar solo la obtención del dosado a partir punto 3, ya que el proceso de
obtención de los puntos 4 y 5 es similar al mostrado hasta ahora. Como puede observarse a continuación,
se utilizan las fsolve, la ecuación química de la reacción (2.3), la ecuación del rendimiento de la cámara
de combustión (2.7), y las ecuaciones de los dosados, (2.4), (2.5), y (2.6) para hallar f . Una vez obtenido
f , se pueden hallar los
P dosados y las distintas fracciones molares. A partir de estas últims, se puede
calcular el sumatorio i xi · ln(xi ) de la entropía de mezcla de estos gases de combustión, el cual se
almacena en sM(2).
% 3:
% REACCION:
% CH4+2f*(O2+3.76*N2)-->CO2+2*H2O+2f*3.76*N2+2(f-1)*O2
% rend=((1+F)*h3-h2)/(F*Hc)
% ALGORITMO DOSADO
Fe=16.04246/(2*(32+3.76*28));
f=fsolve(@(f)(1/(1+2+2*3.76*f+2*(f-1)))*(th_prop('h','CO2',t3)+2*th_prop('h','H2O',t3)+ ...
2*3.76*f*th_prop('h','N2',t3)+2*(f-1)*th_prop('h','O2',t3))- ...
(rend_cald_comb*Hc*Fe/f+h2)/(1+Fe/f),1/(0.6*Fe),options);
Fr=1/f;
F=Fr*Fe;
nt=1+2+2*3.76*f+2*(f-1);
x_CO2=1/nt; x_H2O=2/nt; x_N2=2*3.76*f/nt; x_O2=2*(f-1)/nt;
x=[x_CO2, x_H2O, x_N2, x_O2];
sM=[0.21*log(0.21)+0.79*log(0.79) , ...
x(1)*log(x(1))+x(2)*log(x(2))+x(3)*log(x(3))+x(4)*log(x(4))];
p3=p2(1-perd_carga_CC/100);
h3=x(1)*th_prop('h','CO2',t3)+x(2)*th_prop('h','H2O',t3)+x(3)*th_prop('h','N2',t3)+ ...
x(4)*th_prop('h','O2',t3);
s3=x(1)*th_prop('s','CO2',t3)+x(2)*th_prop('s','H2O',t3)+x(3)*th_prop('s','N2',t3)+ ...
x(4)*th_prop('s','O2',t3)- R*(sM(2)+log(p3/1));
Una vez obtenidos todos los puntos del ciclo en las unidades deseadas para su representación, el
programa pasa a evaluar las variables grafica y clearfigures, con el fin de realizar las gráficas pedidas.
%% % GRAFICAS % % %
if grafica==1;
if clearfigures
figure(1);
clf
figure(2);
clf
end
[¬,¬,¬]=isobaras_TG(p, x, sM, MW);
[T,H,S]=intermedios_caldera(h, t, p, x,sM, MW);
t=t-273.15;
T=T-273.15;
% GRAFICA H-S
figure(1); hold all;
plot([S(1,:), s(4), S(3,:), s(7), S(5,:)],...
[H(1,:), h(4), H(3,:), h(7), H(5,:)], 'color', [0.635 0.078 0.184],'linewidth', 2);
% 1-1p ; 1p-2; 2-3 ; 3-4 ; 4-5 ;
plot([s(2), s(3), S(2,:)],...
[h(2), h(3), H(2,:)],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
% 1p---->2s , 2s-2
plot([s(5), s(6), S(4,:)],...
[h(5), h(6), H(4,:)],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
% 3---->4s , 4s-4
plot([s(8), S(6,:)],...
[h(8), H(6,:)],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
% 5------>1; no se si es necesario
% GRAFICA T-S
figure(2); hold all; %diagrama T-s
plot([S(1,:), s(4), S(3,:), s(7), S(5,:)],...
[T(1,:), t(3), T(3,:), t(6), T(5,:)],'color', [0.635 0.078 0.184],'linewidth', 2);
% 1-1p ; 1p-2; 2-3 ; 3-4 ; 4-5
plot([s(2), s(3), S(2,:)],...
[t(1), t(2), T(2,:)],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
% 1p---->2s , 2s-2
plot([s(5), s(6), S(4,:)],...
[t(4), t(5), T(4,:)],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
% 3---->4s , 4s-4
plot([s(8), S(6,:)],...
[t(7), T(6,:)],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
% 5------>1; no se si es necesario
end
Se han realizado dos programas de apoyo para dibujar las gráficas. El primero de ellos, isobaras_TG,
genera las isobaras de las distintas presiones que intervienen en el ciclo. El resultado de este programa
son por tanto las curvas de color negro sobre las que se representarán el resto. Esta función toma como
variables de entrada:
- p: Vector con las presiones del ciclo, ordenadas de la siguiente forma: p=[p1, p1_p, p2, p3, p4, p5].
- x: Vector de cuatro componentes que contiene las fracciones molares de los gases de combustión,
tal y como se ha indicado en la Sección (2.1.2).
P
- sM: Vector de dos componentes que contiene los sumatorios i xi · ln(xi ) del aire en la primera
componente y de los gases de combustión, en la segunda componente.
- MW: Vector de dos componentes con las masas molares del aire y de los gases de combustión.
Como argumentos de salida, se obtienen un vector y dos matrices: T, H, y S. T es un vector que representa
distintas temperaturas, desde 300 hasta 2000 grados Kelvin. Las dos matrices contendrán tantas filas
como componentes tiene p, y en cada una de ellas habrá almacenado un vector con la evolución de la
entalpía o la entropía para dicha presión, y para las temperaturas contenidas en T. Al final del programa,
dibujarán las citadas isóbaras en la gráfica correspondiente, la T s o la hs.
%p1
for i=1:1:puntos;
H(1,i)=(0.21*th_prop('h','O2', T(i))+0.79*th_prop('h', 'N2', T(i)))/MW(1);
S(1,i)=(0.21*th_prop('s','O2', T(i))+0.79*th_prop('s', 'N2', ...
T(i))-R*(log(p(1)/1)+sM(1)))/MW(1);
end
%p1_p
for i=1:1:puntos;
H(2,i)=(0.21*th_prop('h','O2', T(i))+0.79*th_prop('h', 'N2', T(i)))/MW(1);
S(2,i)=(0.21*th_prop('s','O2', T(i))+0.79*th_prop('s', 'N2', ...
T(i))-R*(log(p(2)/1)+sM(1)))/MW(1);
end
%p2-->incluye 2s y 2
for i=1:1:puntos;
H(3,i)=(0.21*th_prop('h','O2', T(i))+0.79*th_prop('h', 'N2', T(i)))/MW(1);
S(3,i)=(0.21*th_prop('s','O2', T(i))+0.79*th_prop('s', 'N2', ...
T(i))-R*(log(p(3)/1)+sM(1)))/MW(1);
end
%p3
for i=1:1:puntos;
H(4,i)=(x(1)*th_prop('h','CO2',T(i))+x(2)*th_prop('h','H2O',T(i))+ ...
x(3)*th_prop('h','N2',T(i))+x(4)*th_prop('h','O2',T(i)))/MW(2);
S(4,i)=(x(1)*th_prop('s','CO2',T(i))+x(2)*th_prop('s','H2O',T(i))+ ...
x(3)*th_prop('s','N2',T(i))+x(4)*th_prop('s','O2',T(i))- ...
R*(sM(2)+log(p(4)/1)))/MW(2);
end
%p4-->incluye 4s y 4
for i=1:1:puntos;
H(5,i)=(x(1)*th_prop('h','CO2',T(i))+x(2)*th_prop('h','H2O',T(i))+ ...
x(3)*th_prop('h','N2',T(i))+x(4)*th_prop('h','O2',T(i)))/MW(2);
S(5,i)=(x(1)*th_prop('s','CO2',T(i))+x(2)*th_prop('s','H2O',T(i))+ ...
x(3)*th_prop('s','N2',T(i))+x(4)*th_prop('s','O2',T(i))-R*(sM(2)+log(p(5)/1)))/MW(2);
end
%p5
for i=1:1:puntos;
H(6,i)=(x(1)*th_prop('h','CO2',T(i))+x(2)*th_prop('h','H2O',T(i))+ ...
x(3)*th_prop('h','N2',T(i))+x(4)*th_prop('h','O2',T(i)))/MW(2);
S(6,i)=(x(1)*th_prop('s','CO2',T(i))+x(2)*th_prop('s','H2O',T(i))+ ...
x(3)*th_prop('s','N2',T(i))+x(4)*th_prop('s','O2',T(i))-R*(sM(2)+log(p(6)/1)))/MW(2);
end
%%GRAFICA
figure(1); hold all; %diagrama h-s
for i=1:1:6
plot(S(i,:),H(i,:),'Color','k','linewidth', 1);
end
xlabel('Specific Entropy (kJ/(kg C))');
ylabel('Specific Enthaply (kJ/kg)');
El segundo programa de apoyo para las gráficas es intermedios_TG, y su función es calcular las curvas
intermedios entre los distintos puntos del ciclo. Sus variables de entrada son:
- h: Entalpías de los puntos del ciclo, según el orden: h=[h1, h1_p, h2s, h2, h3, h4s, h4, h5].
- t: Temperaturas de los puntos del ciclo, según el orden: t=[t1, t2s, t2, t3, t4s, t4, t5].
- Resto: las mismas variables que para isobaras_TG; p, x, sM, y MW.
El programa saca como resultados tres matrices; T, H, y S. Estas contienen puntos intermedios entre los
principales del ciclo, que han sido previamente calculados en el programa CicloGas, con las propiedades
a las que hacen referencia; temperaturas, entalpías y entropías, respectivamente. Este programa no dibuja
si no que entrega las matrices, con las que más tarde se realizarán las gráficas.
A pesar de que es un programa sencillo, conviene resaltar que las curvas entre los puntos 2 y 3 no
son de una mezcla constante, si no que se trata de una evolución en la que hay una reacción. Por tanto,
se introduce la variable j que representa el grado de avance de la reacción: en el primer punto, j(1), se
tiene solo aire comprimido, y en j(puntos) se tienen solo gases de combustión. En las curvas entre 5 y
1, aunque no hay ninguna reacción, y ese paso no se da en la realidad ya que los gases de combustión
no retornan a su estado de aire, se ha utilizado también j para cerrar el ciclo, aunque se señaliza con la
línea verde intermitente que indica que no se trata de un proceso real.
load janafJ.mat;
R=8.314;
puntos=50;
nlineas=6;
T=zeros([nlineas puntos]);
H=zeros([nlineas puntos]);
S=zeros([nlineas puntos]);
Tras haber dibujado las gráficas (o no, según haya sido pedido por el usuario), el programa calcula
los outputs restantes, indicados en la Sección (2.1.2):
%% % OUTPUTS % % %
t4=t4-273.15;
t5=t5-273.15;
ratio_gasescomb_aire=(1+F); %m_aire/m_GGCC;
w_compr=h2-h1; %kJ/kg_aire
w_turb=(h3-h4)*ratio_gasescomb_aire; %kJ/kg_aire
w=[w_compr w_turb];
rend_TG=(w_turb-w_compr)/(F*Hc/16.04246)*100;
2000
1500 Simulación A
Simulación B
Specific Enthaply (kJ/kg)
1000
500
-500
6.5 7 7.5 8 8.5 9
Specific Entropy (kJ/(kgºC))
1800
1600
1400
Simulación A
1200 Simulación B
Temperature (ºC)
1000
800
600
400
200
0
6.5 7 7.5 8 8.5 9
Specific Entropy (kJ/(kgºC))
CicloGas( t1, p1, p2_1p, rend, perd_carga, t3, t5, grafica, clearfigures);
Observando las gráficas y la tabla de resultados, se pueden sacar las siguientes conclusiones:
i) En la simulación A se tiene más calor disponible para intercambiar en la CRC, al salir los gases de
la turbina con una mayor temperatura.
ii) Se puede ver cómo, al imponer una temperatura mayor en la entrada de la turbina para el caso
A, se hace necesario introducir una mayor cantidad de combustible. Esto se refleja en el dosado
relativo y en la relación de los caudales de los gases de combustión y del aire, ambos mayores en la
primera simulación que en la segunda.
Figura 2.5: Configuración del Ciclo de Vapor y la CRC para Un Nivel de Presión Simple Subcrítico
(Elaboración propia)
600
5
500
400
Temperature (ºC)
2, 3 4
300
200
100
7, 1 6s 6
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
Figura 2.6: Diagrama T s del Ciclo de Vapor 1P Sin Desgasificador Subcrítico (Elaboración propia)
En las figuras (2.6) y (2.7) se pueden apreciar todos los puntos característicos del ciclo de vapor. A
continuación se detalla cada uno de ellos, y su proceso de obtención:
800
1g
700 2g
600
5
Temperature (ºC)
500
400 3g
300
3
4
200
2
4g
100
0
1
0 200 q1 400 600 q2 800 q3 900
Exchanged Heat (kJ/kg of air)
Figura 2.7: Diagrama T q de la CRC de un Ciclo de Vapor 1P Sin Desgasificador (Elaboración propia)
7: Agua en estado líquido saturado. Se trata de agua sobre la curva de saturación proveniente
del condensador. Este punto es de fácil determinación, ya que su presión es una variable de entrada, y al
tratarse de un fluido saturado, XSteam puede proporcionar el resto de propiedades.
p7 = pcond
(2.10)
Líquido Saturado
1s: Agua líquida a la presión de línea tras un proceso de compresión ideal isentrópica.
Se trata de un estado ideal en el que tras una compresión el fluido no aumenta su entropía con respecto
a 7 y alcanza la presión de la línea. Se ha definido la presión de línea como aquella a la que tiene lugar la
evaporación, y es un parámetro de entrada. Además se ha previsto la existencia de pérdidas de presión
en los tramos del economizador y del sobrecalentador, implementadas como pérdidas porcentuales. Por
tanto las propiedades de este punto se hayan a través del conocimiento de su presión y su entropía.
p1s = plínea + ∆pecon
(2.11)
s1s = s7
36.5
36
1
Temperature (ºC)
1s
35.5
7
35
34.5
0.507 0.508 0.509 0.51 0.511 0.512 0.513 0.514 0.515 0.516 0.517
Specific Entropy (kJ/(kgºC))
2: Líquido a la salida del economizador. De este estado se conoce su presión, que es la misma
que la del punto 3 (la de línea), y su temperatura, que es la del punto 3 menos el Approach Point (AP),
parámetro conocido.
p2 = plínea
(2.14)
T2 = T3 − AP
4: Vapor saturado a la presión de línea. Tras salir del economizador, el fluido está completa-
mente en fase vapor, sobre la curva de saturación. Su proceso de obtención es por tanto análogo al del
punto 3.
p4 = plínea
(2.15)
V apor Saturado
T3g = T3 + P P (2.16)
2g: Gases de Combustión al final del evaporador. Se obtiene su entalpía a partir de realizar
balances de energía. Se realiza un primero en el tramo del economizador, representado por el la zona
entre las abcisas 0 y q1 en la figura (2.7), para obtener la relación entre los caudales másicos de aire (se
recuerda que las entalpías de los gases de combustión se están calculando por unidad de masa de aire, no
de gases de combustión) y de agua, M. Una vez obtenido este parámetro, se obtiene la entalpía del punto
2g realizando un balance de energía al evaporador, representado entre las abcisas q1 y q2 en la figura
(2.7).
kgaire h2 − h1
M = (2.17)
kgagua h3g − h4g
1
h2g = h3g + · (h4 − h2 ) (2.18)
M
6s: Vapor expandido según un proceso isentrópico ideal. Esta expansión tiene lugar entre el
punto 5 hasta uno de presión conocida, que es la presión de condensación pc ond, según un proceso en el
que no hay generación entrópica.
s6s = s5
(2.20)
p6s = pcond
No es una configuración común, dado que suele utilizarse la opción de presiones supercríticas en casos
ciclos de varios niveles de presión. Esto es así porque da problemas de humedad en los últimos escalones
de la turbina de vapor y en el intercambiador de calor, que en este caso es de paso único; es decir, no
hay economizador, evaporador y sobrecalentador. En este caso, se ha decidido mantener la nomenclatura
600
5
500
400
Temperature (ºC)
300
200
100
7, 1 6s 6
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
Figura 2.9: Diagrama T s del Ciclo de Vapor 1P Sin Desgasificador Supercrítico (Elaboración propia)
800
700
1g
600
Temperature (ºC)
500
5
400
300
200
4g
100
0
1
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
Figura 2.10: Diagrama T q de la CRC de un Ciclo de Vapor 1P Sin Desgasificador Supercrítico (Elaboración
propia)
de los puntos de entrada y salida a la CRC a pesar de que no existen los puntos intermedios del ciclo
anterior.
Debido precisamente a la ausencia de estos puntos intermedios, que ayudaban a obtener la relación
de caudales, M , y con ello el punto final, se ha tenido que escoger un algoritmo distinto para simular
el ciclo. Este algoritmo es característico de este ciclo, dado que en ciclos supercríticos de más niveles de
presión se dispone de más datos y variables para poder operar. Dicho algoritmo se basa en obligar a que
la curva de vapor en la CRC mantenga el PP como diferencia mínima de temperaturas con la de GGCC.
Esto es inusual en ciclos supercríticos, en los que normalmente el PP, al estar deslocalizado ya que no
existe evaporación, es una variable de salida y no de entrada.
Por tanto, los puntos se obtienen de la siguiente forma:
1g, 7, 1s, 1, 4g, 6s, 6: Se hallan de la misma forma que en el caso de ciclo subcrítico.
p5=p(1-perd_carga_sobrec/100);
t5= t1_g-DT; % Se inicializa con el valor mas alto que podria tomar t5
h5=XSteam('h_pT', p5, t5);
[check,¬]=calculo_superc(PP,h5,...); % Funcion que evalua si la temperatura del agua esta ...
durante la CRC a una diferencia de T minima de PP
while check==1
%% Se disminuye t5 % %
[check,¬]=calculo_superc(PP,h5_nueva,...);
end
Una vez finalizado el bucle, se tendrá una t5 tal que se cumpla la condición impuesta.
function [t5, M, q_tot, q_caldera, x6, w_TV, rend_TV, rend_CC] = CicloVap_1P_SinDesg(p, ...
p_cond, AP, PP, DT, DI, rend, perd_carga, grafica, clearfigures,
t1_g, t4_g, x, ratio, rend_TG)
%% CICLO DE VAPOR, SIMPLE (1P), SIN DESGASIFICADOR
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
A continuación se detallan los parámetros de entrada que necesita el programa para ejecutarse, así como
los que ofrece de salida. Se explican también las diferencias que existen para dichas variables en los ciclos
subcríticos y supercríticos.
Argumentos de Entrada:
- p: La presión de línea; aquella a la que tiene lugar la operación. Esta variable determinará si el
ciclo es subcrítico o supercrítico, dado que es la que marca si hay o no ebullición. Para p≤ 220,5846,
el ciclo se tratará como subcrítico.
- p_cond: La presión a la cual se condensará el fluido al salir de la turbina. Cuanto menor sea, menor
será la temperatura media de foco frío. Está acotada inferiormente por la presión de vapor del agua
a la temperatura ambiente.
- AP: Approach Point; la diferencia de temperatura entre el agua que entra al calderón y la tempera-
tura de saturación del agua a la presión p. En el ciclo supercrítico, esta variable carece de sentido
ya que no hay calderín ni proceso de evaporación bifásica.
- PP: Pinch Point; la diferencia de temperatura entre aquella del punto 3 y la de los GGCC en ese
punto de la caldera de recuperación de calor. En el ciclo supercrítico se utiliza de forma distinta,
como se ha explicado en la Sección (2.3.2).
- DT: Diferencia Terminal de Temperaturas; la diferencia mínima de temperaturas existente entre los
gases de combustión al entrar en la CRC, t1_g y la de salida del vapor, t5. Se utiliza para impedir
que t5 sea demasiado cercana o incluso superior a t1_g, lo cual no tiene sentido físico. En la figura
(2.11) se puede observar un ejemplo de lo que ayuda a prevenir esta variable. En el programa esta
5
800
790
1g
Temperature (ºC)
780
770
760
750
Figura 2.11: Detalle de Ciclo Imposible, con t5 > t1g (Elaboración propia)
- x: Vector de cuatro componentes con las fracciones molares de los gases de combustión.
- ratio: La relación entre los caudales másicos de gases de combustión y de aire en la TG. Se utiliza
para realizar los cálculos de los calores en unidades específicas por unidad de masa de aire.
- ren_TG: Rendimiento del ciclo del gas para el cual se simula el ciclo de vapor, en unidades de tanto
por cien.
Argumentos de Salida:
A continuación se realizará una descripción del programa similar a la realizada en la Sección (2.1.3) en
referencia a CicloGas, señalando las diferencias entre el tratamiento al ciclo subcrítico y el supercrítico.
De forma similar a CicloGas, el programa comienza con un comentario sobre su funcionalidad, sus
inputs y outputs.
%% PARAMETROS DEFAULTS
load janafJ.mat;
options=optimoptions('fsolve', 'Display', 'off');
if perd_carga==-1;
perd_carga=[3 3];
end
perd_carga_econ=perd_carga(1);
perd_carga_sobrec=perd_carga(2);
if rend==-1
rend=[0.91,0.88];
end
rend_s_bomba=rend(1);
rend_s_turb=rend(2);
if PP==-1
PP=8;
end
if AP==-1
AP=5;
end
if DT==-1
DT=5;
end
if DI==-1
DI=30;
end
Como se puede observar, además de iniciar distintas variables con valores típicos de las mismas, se carga
la matriz de datos janafJ.mat, la cual contiene los coeficientes que utilizará th_prop y valores de masas
molares de los distintos compuestos que conforman los gases de combustión, a partir de los cuales, junto
con las fracciones molares, se calcula la masa molar de los GGCC.
Se recuerda que DT es tan solo una variable de control utilizada para vigilar que la temperatura
del vapor a la salida de la CRC no sea excesivamente alta, y que no implica que esta tenga que ser la
temperatura de entrada de los GGCC menos dicho valor.
Tras haber inicializado algunas de las variables, o tomando los valores propuestos por el usuario, da
comienzo el cálculo de los puntos principales, tal y como se ha detallado en la Sección (2.3.1). Antes de
discernir entre ciclo sub o supercrítico, el programa calcula los puntos 1g, 7, 1s y 1; idénticos en ambos
casos.
%% PROGRAMA
% 1g
t1_g=t1_g+273.15;
h1_g=(x(1)*th_prop('h','CO2',t1_g)+x(2)*th_prop('h','H2O',t1_g)+ ...
x(3)*th_prop('h','N2',t1_g)+x(4)*th_prop('h','O2',t1_g))/MW_gases_comb*ratio;
t1_g=t1_g-273.15;
%7
p7=p_cond;
t7=XSteam('Tsat_p', p7);
h7=XSteam('hL_p',p7);
s7=XSteam('sL_p',p7);
%1s
p1s=p*(1+perd_carga_econ/100);
s1s=s7;
t1s=XSteam('T_ps', p1s, s1s);
h1s=XSteam('h_pT', p1s, t1s);
%1 (1s-7)/(1-7)=rend
p1=p1s;
h1=h7+(h1s-h7)/rend_s_bomba;
s1=XSteam('s_ph', p1, h1);
t1=XSteam('T_ph', p1, h1);
Cabe destacar que se ha tenido especial cuidado con las unidades de temperatura para los GGCC, dado
que la función con la que se calcula su entalpía opera con grados Kelvin mientras que las unidades en las
que ofrece nuestro programa los resultados, y las que utiliza XSteam, son grados Celsius.
Una vez calculados los puntos comunes de ambos ciclos, comienza la diferenciación entre los casos
subcrítico y supercrítico mediante una sentencia if.
if p<220.5846
%3
p3=p;
t3=XSteam('Tsat_p', p3);
h3=XSteam('hL_p',p3);
s3=XSteam('sL_p',p3);
%4
p4=p;
t4=t3;
h4=XSteam('hV_p',p4);
s4=XSteam('sV_p',p4);
%2
p2=p;
t2=t3-AP;
h2=XSteam('h_pT', p2, t2);
s2=XSteam('s_pT', p2, t2);
%3g
t3_g=t3+PP+273.15;
h3_g=(x(1)*th_prop('h','CO2',t3_g)+x(2)*th_prop('h','H2O',t3_g)+ ...
x(3)*th_prop('h','N2',t3_g)+x(4)*th_prop('h','O2',t3_g))/MW_gases_comb*ratio;
t3_g=t3_g-273.15;
% 4g
if t1+DI>t4_g
t4_g=t1+DI+273.15;
else
t4_g=t4_g+273.15;
end
h4_g=(x(1)*th_prop('h','CO2',t4_g)+x(2)*th_prop('h','H2O',t4_g)+ ...
x(3)*th_prop('h','N2',t4_g)+x(4)*th_prop('h','O2',t4_g))/MW_gases_comb*ratio;
t4_g=t4_g-273.15;
% Se comprueba que no se exige un PP mayor que la diferencia inicial de T
if t4_g-t1<PP
disp('La diferencia de temperaturas al inicio del proceso no puede ser menor ...
que el PP');
return
end
En este extracto de código se puede apreciar la versatilidad que ofrece XSteam, mediante la cual se
pueden calcular las propiedades del agua de múltiples formas. Es importante tener en cuenta que para la
metodología utilizada, no se puede dar el caso de que la diferencia de temperaturas al inicio de la CRC
sea menor que el Pinch Point para el que estamos ajustando la curva de temperaturas del agua. Si esto
sucediera, el programa iniciaría un bucle infinito. Para prevenir esto, se introduce la última sentencia if
del anterior extracto de código.
Tras calcular los puntos que podían ser obtenidos sin realizar balances, tiene lugar la obtención de
aquellos para los que este proceso es indispensable:
Se puede ver que antes de iniciar cada balance hay una breve descripción del mismo que incluye el lugar
de la CRC al que se le hace el balance, las ecuaciones de dicho balance, y el resultado que se busca
obtener.
También puede verse que se ha explicado el cambio de unidades de h2_g realizado en la sentencia en
la que se calcula la temperatura del punto 2g por medio de fsolve, para que coincidan con las del valor
iterativo que se calcula variando la temperatura t y utilizando th_prop. Esto se realiza en el primer caso
del programa únicamente, a modo aclaratorio.
A continuación, una vez que se ha calculado el punto 5, se comprueba que tome un valor válido. Se
puede ver cómo, en caso de tomar un valor fuera de los límites, se finaliza el programa dando valores a
los distintos outputs que permitan distinguier qué caso de error es, además de imprimir una advertencia
por pantalla.
El cálculo de los puntos 6s y 6 a partir del punto 5 es idéntico al de los puntos 1s y 1 a partir del
punto 7, y por ello se omite su código. Cabe mencionar que del punto 6 también se obtiene su título de
vapor, mediante la sentencia: x6=XSteam(’x_ph’, p6, h6).
A continuación se muestra el código utilizado para llevar a cabo la representación de las gráficas. Se
recuerda que serán tres; una que represente la evolución de las temperaturas de los GGCC y el agua en
la CRC, un diagrama h s y otro T s, ambos de la evolución del agua en todo el ciclo. En estos últimos, h
y s tienen unidades específicas por unidad de masa de agua, mientras que en el primero los calores están
por unidad de masa de aire.
if grafica==1;
%% % GRAFICA CRC % % %
if clearfigures
figure(3);
clf
end
plot([0, q1, q2, q3],[t4_g, t3_g, t2_g, t1_g], 'linewidth', 2, 'color', [0.635 0.078 ...
0.184]);
xlabel('Exchanged Heat (kJ/kg of air)');
ylabel('Temperature ( C)');
%% % GRAFICAS CV % % %
if x6 ≥ 1
% Puntos intermedios entre 6 y 6V, en caso de que el punto 6 sea vapor sobrecalentado
[hint6_6v,¬, sint6_6v, tint6_6v]=calculo_intermedios(h6, XSteam('hV_p',p6), p6, p6, 10);
end
% GRAFICO H-S
if clearfigures
figure(4)
clf
fastmollier(1);
else
figure(4)
hold all
end
if x6 ≥ 1
plot([s7, s1, sint13, sint45, s6, sint6_6v, s7],...
[h7, h1, hint13, hint45, h6, hint6_6v, h7] ,'linewidth', 3, 'color', [0 0.2 0.6]);
else
plot([s7, s1, sint13, sint45,s6, s7],...
[h7, h1, hint13, hint45, h6, h7] ,'linewidth', 3, 'color', [0 0.2 0.6]);
end
plot([s7, s1s, s1],...
[h7, h1s, h1],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
plot([s5, s6s, s6],...
[h5, h6s, h6],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
Hasta este punto se puede observar la forma en que se ha dibujado el diagrama h s del ciclo. En primer
lugar, se calculan los valores q1, q2 y q3, que se utilizarán en la gráfica de la CRC y cuya situación se
puede observar en la figura (2.7). Como se puede observar, están calculados por unidad de masa de aire.
Tras esto, en caso de desear representar las gráficas, el programa entra dentro de las líneas condicio-
nadas por la sentencia if grafica==1. Si se desea borrar las gráficas anteriores, se recuerda que se hará
mediante clearfigures.
Destaca el uso de dos funciones de apoyo para la representación de las gráfcas h s y T s, similares
en funcionalidad pero de código completamente distinto a las utilizadas en CicloGas. La primera en ser
llamada es fastmollier, y se encarga de dibujar las curvas de saturación y de isotítulo, de interés para
el trabajo. Esta función toma como parámetros de entrada únicamente una variable; nfig. En caso de
valer 1, dibuja las citadas curvas para el diagrama h s, y de valer 2 hace lo propio para el diagrama T s.
También se encarga de escribir los títulos de los ejes de las figuras. Es un programa sencillo, cuyo código
es el siguiente:
function fastmollier(nfig)
%% Desarrollador: Joaquin Corredoyra Alcaraz
plot(ssatL_T, hsatL,'Color','k','linewidth',2);
plot(ssatV_T, hsatV,'Color','k','linewidth',2);
xlabel('Specific Entropy (kJ/(kg C))');
ylabel('Enthaply (kJ/kg)');
for j=1:1:9
plot(isox_s1(:,j), isox_h1(:,j),'Color','k','linewidth', 1)
end
elseif nfig==2
load('mollier_t.mat');
figure(5);
hold on;
Para agilizar el proceso, en vez de llamar constantemente a la función XSteam, se carga los datos contenidos
en mollier_h.mat y mollier_t.mat, que almacenan distintos valores necesarios para dibujar las curvas:
entalpías, entropías y temperaturas de saturación y de isotítulo.
La otra función de apoyo utilizada es calculo_intermedios, que calculará valores de h, s, y T entre
dos puntos deseados, cuya unión no siga una recta en los diagramas h s y T s. Esta función utiliza las
siguientes variables de entrad:
A continuacón we muestra la parte de código restante del programa principal, en el que se muestran las
sentencias utilizadas para realizar la gráfica T s. Como se puede observar, el proceso es prácticamente
idéntico al de realizar la gráfica h s.
% GRAFICO T-S
if clearfigures
figure(5)
clf
fastmollier(2);
else
figure(5)
hold all
end
if x6 ≥1
plot([s7, s1, sint13, sint45,s6, sint6_6v, s7],...
[t7, t1, tint13, tint45, t6, tint6_6v, t7] ,'linewidth', 3, 'color', [0 0.2 0.6]);
else
plot([s7, s1, sint13, sint45,s6, s7],...
[t7, t1, tint13, tint45, t6, t7] ,'linewidth', 3, 'color', [0 0.2 0.6]);
end
plot([s7, s1s, s1],...
[t7, t1s, t1],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
plot([s5, s6s, s6],...
[t5, t6s, t6],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
end
Cabe destacar que para ambas gráficas se ha tenido la precaución de prever que 6 puede no ser un
punto de equilibrio bifásico si no de vapor sobrecalentado. En este caso, su unión con el punto 7 no sería
una recta durante todo su recorrido, si no que primero habría una parte de curva isóbara a p6 desde 6
hasta el punto de vapor saturado a dicha presión, 6v.
Después de haber realizado las gráficas, el último paso es calcular y asignar los parámetros de salida
descritos en la Sección (2.3.3).
%% % OUTPUTS % % %
q_tot=h1_g-h4_g;
q_caldera=[q_econ, q_evap, q_sobrec]/q_tot*100;
w_TV=(h5-h6)/M; % en kJ/kg_aire
w_Bba=(h1-h7)/M;
rend_TV=100*(w_TV-w_Bba)/(h1_g-h4_g); % mv(h5-h6)/mf(h1_g-h4_g)=(h5-h6)/(M*(h1_g-h4_g));
rend_CC=rend_TV+rend_TG-rend_TV*rend_TG/100;
En esta Sección se van a detallar las diferencias entre el programa las simulaciones de ciclos subcríticos
y supercríticos realizadas por el programa CicloVap_1P_SinDesg. Se seguirá un esquema similar al de la
Sección (2.3.4), pero evitando repetir consideraciones y sentencias innecesarias.
Dado que el programa es el mismo, sigue el mismo comienzo de programa y utiliza los mismos valores
defaults que en la Sección (2.3.4.1).
La obtención de los puntos 1g, 7, 1s, 1 y 4g se realiza de la misma forma que en la Sección (2.3.4.2).
Como se ha comentado, es en el cálculo del punto 5 donde el proceso de simulación se ha enfocado de
manera distinta, la cual se recuerda que se basa en encontrar la mayor temperatura posible para ese
punto para la cual se cumple que la curva de temperatura del agua en la CRC está a una diferencia de
temperaturas mínima de la de temperatura de los GGCC del PP.
El proceso de iteración seguido para hallar esta temperatura puede dividirse en tres partes. La primera
de ella, que se muestra a continuación, procura que el punto 5 exista. Se ha tenido que implementar este
bucle dado que para estos ciclos, en ocasiones se alcanzan temperaturas a las cuales, a la presión p5, no
existe el fluido. Se desciende la temperatura en escalones de diez grados, comenzando por la temperatura
máxima alcanzable, marcada por ‘t1_g-DT’, con el fin de acelerar el proceso. Esto no resta precisión a la
elección del punto 5, ya que en el último bucle se ajustará el resultado.
% Primer Bucle--> para comprobar que t5 es suficientemente baja como para que h5 exista y ...
podamos realizar las aproximaciones
while isnan(h5)
t5=t5-10;
h5=XSteam('h_pT', p5, t5);
end
% Calculamos una primera aproximacion de M; balance termico a toda la CRC; ...
ma(h1g-h4g)=mv(h5-h1)
M=(h5-h1)/(h1_g-h4_g);
qtot=M*(h1_g-h4_g);
Al acabar esta iteración ya tendremos un punto 5 físicamente válido. El problema ahora es que en la
mayoría de ocasiones, este punto producía que la curva de temperaturas de vapor cortara y sobrepasara
la de GGCC, como se puede apreciar en la figura(2.12).
Para solventar este fallo se recurre a un segundo bucle, en el que la temperatura del punto 5 se sigue
disminuyendo bruscamente hasta que la curva de temperatura del vapor queda completamente bajo la de
temperatura de GGCC menos el Pinch Point. Antes de llevar a cabo el bucle, se inicializan dos vectores,
h_g y t_g, que contienen las evoluciones de entalpías y de temperaturas de los GGCC, en las unidades
deseadas.
% Calculamos la curva de temperaturas de los GGCC entre la entrada y la salida, segun ...
vayan perdiendo energia en la caldera
puntos=100;
h_g=linspace(h4_g, h1_g, puntos)*MW_gases_comb/ratio; % Ahora esta en unidades de ...
energia por unidad de moles de gases de combustion, que son las que da th_prop
t_g=zeros([1, puntos]);
t_g(1)=t4_g+273.15; t_g(puntos)=t1_g+273.15;
for i=2:1:(puntos-1)
t_g(i)=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)-h_g(i),t_g(i-1),options);
end
t_g=t_g-273.15;
h_g=h_g/MW_gases_comb*ratio; % Se devuelve a las unidades deseadas
550
500
450
400
Temperature (ºC)
350
300
250
200
150
100
50
Figura 2.12: Detalle de Ciclo Supercrítico Imposible, con tagua > tgases comb (Elaboración propia)
Para llevar a cabo la comprobación de que ‘tagua ≤ tgases comb − P P ’ durante la CRC se recurre a una
función externa, calculo_superc, que también se utilizará para ajustar el PP en un tercer bucle, el cual
se comentará en profundidad más adelante. Esta función toma las siguientes variables de entrada:
function [check,Dt2] = calculo_superc( PP, h_ent_v, p_ent_v, p_sal_v, qtot, t_g, puntos, ...
iteracion)
%% Desarrollador: Joaquin Corredoyra Alcaraz
%Tutor: Ruben Abbas Camara
%U.D. Motores Termicos
% Una vez que tenemos la curva de vapor bajo la de GGCC, ajustamos t5 para aproximar la ...
diferencia minima entre dichas curvas al PP
elseif iteracion==2;
Dt=abs(t_g(1)-PP-t(1));
posic=1;
for i=1:1:round(puntos/2)
if abs(t_g(i)-PP-t(i))<Dt
Dt=(t_g(i)-PP-t(i));
posic=i;
end
end
if abs(t_g(posic)-PP-t(posic))/PP>0.0001
Dt2=Dt;
check=1;
else
Dt2=0;
end
end
Esta función tiene una parte común para ambos tipos de iteraciones posibles, en la que almacena en
t, la evolución de la temperatura del agua. Para ello se utiliza XSteam, y es por esto que se requería
introducir q_tot en unidades específicas por unidad de masa de agua. Este vector t tiene la misma
longitud que t_g
A continuación se va a detallar el funcionamiento de cada iteración:
Iteración 1; Bucle 2
Se comparan los vectores t_g (menos el PP) y t componente a componente, buscando si en algún
punto es mayor la temperatura del agua. En el primer momento en que se deésto, la variable check, que
había sido inicializada como 0, pasa a valer 1. Este valor se toma en el Bucle 2 del programa principal
para disminuir t5 si check==1 o finalizar el bucle en caso contrario. Cabe destacar que esta comparación
se realiza sólo en la primera mitad de la CRC, a fin de permitir un hipotético caso en que la diferencia de
temperaturas entre la de entrada de los gases de combustión a la CRC y la final del vapor sobrecalentado
sea menor que el PP.
Iteración 2; Bucle 3
Este bucle lleva más tiempo que los dos anteriores (alrededor de 3 segundos, mientras que los otros
bucles son casi inmediatos), y en él se busca afinar el resultado del Bucle 2, variando t5 no de forma
constante si no ajustando esta variación según la diferencia mínima de temperaturas se acerque al PP.
Esta variación no constante la da el segundo output de calculo_superc; Dt2.
Este proceso de iteración es muy similar al anterior, como se puede observar. La diferencia consiste en
que no se busca solo que la temperatura del agua sea menor que cierto valor en todo punto, si no que la
diferencia mínima de temperaturas en la primera mitad del intercambiador de calor tenga una desviación
con respecto al PP muy pequeña. Si en el punto de diferencia
mínima de temperatura en la primera mitad
(tgases comb − tagua ) − P P
mínima
de la CRC se da que > 0,0001, se actualizará a 1 el valor de check, y
PP
Dt2 pasará a valer precisamente (tgases comb − tagua )mínima − P P , y este será el valor que se modifique t5 .
Por contra, si esta diferencia entra dentro de los límites se le asigna a Dt2 un valor 0.
El tercer bucle de la función principal queda por tanto de la siguiente forma:
Puede verse que el bucle itera hasta que se cumple la condición del ajuste del PP o hasta que, debido al pro-
ceso de iteración, se le da a t5 un valor que haga que h5 no exista, en cuyo caso el bucle se quedará con la ite-
ración anterior al fallo, y emitirá un mensaje avisando de que no se ha podido lograr ajustar una diferencia
mínima de temperaturas al PP introducido por el usuario, mostrando por pantalla el nuevo valor del PP.
En caso de que el proceso sí haya resultado satisfactorio, se muestra un mensaje en el que se comunica la t5
obtenida y el PP que se ha alcanzado; ‘Acaba la iteracion, con t5=590.5933 C con un PP=8.0009C’.
En este caso, el PP introducido era de 8◦ C, y se obtiene un valor que supone un error del 0.0113 %.
Tras haber finalizado este proceso, ya se puede obtener el punto 5, a partir del cual se obtendrían
los puntos 6s y 6. Se recuerda que del punto 6 se obtiene además su título de vapor, por los motivos
ya comentados sobre la importancia de esta variable en el mantenimiento de las turbinas de vapor y su
peligrosidad cuando las presiones de trabajo son muy altas.
Además de estos puntos, al final de este proceso se calcula el valor definitivo de la relación de caudales
de masa, y los distintos calores. Se recuerda que en este caso, la totalidad del calor intercambiado se
almacena en q_sobrec, dejando las otras dos componentes de q_caldera como ceros.
%% % GRAFICA CRC % % %
puntos=500;
q=linspace(0,qtot,puntos); %kJ/kg_aire
P=linspace(p1,p5,puntos); % Se estima una bajada de presion lineal debido a las ...
perdidas de carga
h=zeros([1, puntos]);
t=zeros([1, puntos]);
for i=1:1:puntos
h(i)=h1+M*q(i); %kJ/kg_agua
t(i)=XSteam('T_ph',P(i),h(i));
end
figure(3); hold all;
plot( q, t,'linewidth', 2, 'color', [0 0.2 0.6]);
q_g=h_g-h4_g;
plot(q_g , t_g, 'linewidth', 2, 'color', [0.635 0.078 0.184]);
xlabel('Exchanged Heat (kJ/kg of air)');
ylabel('Temperature ( C)');
Como se puede ver, la evolución de temperaturas del agua se ha hallado de forma similar a la utilizada
en la función calculo_superc. Se recuerda que el vector h_g contiene las entalpías de los GGCC entre
los puntos de entrada y salida de la CRC. Restando a este vector la entalpía restante al ser expulsados,
se obtiene el vector q_g, con el calor que van cediendo los gases de combustión a lo largo de la caldera.
Dado que este ciclo utiliza el mismo programa que en el caso de ciclo subcrítico, con las mismas
variables de entrada y salida, el proceso de finalización del programa y obtención de los outputs es el
mismo que el mostrado en la Sección (2.3.4.4). En el resto de programas, no se dedicará una Sección a la
finalización del caso supercrítico, dado que es común al caso subcrítico.
A continuación se van a realizar diversas simulaciones para el programa explicados, con el fin de
obtener unas conclusiones preliminares. Se recuerda que el ciclo de vapor se defiía a partir del ciclo de
gas, que debe ser ejecutado primero. Las siguientes simulaciones de la TV se van a realizar para el mismo
caso de TG. Se van a llevar a cabo tres simulaciones para el caso de ciclo subcrítico, y otras dos para el
de ciclo supercrítico. Los parámetros introducidos son los siguientes5 :
Ciclo de Gas:
[t1_g, t2_g, x, Fr, ratio, w_TG, rend_TG]=
CicloGas(300, 1, 18, [0.88,0.98,0.93], [0.05, 0.08, 0.06], 1700, -1, 1, 1);
5 Se recuerda que los inputs del programa eran los siguientes:
CicloVap_1P_SinDesg(p, p_cond, AP, PP, DT, DI, rend, perd_carga, grafica, clearfigures,t1_g, t4_g, x, ratio,
rend_TG);
3500
Simulación A
3000
Simulación B
2500 Simulación C
Enthaply (kJ/kg)
2000
1500
1000
500
0
0 1 2 3 4 5 6 7 8 9 10
Specific Entropy (kJ/(kgºC))
500
450 Simulación A
400 Simulación B
350 Simulación C
Temperature (ºC)
300
250
200
150
100
50
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
Cuadro 2.2: Resultados de la Simulación de tres Ciclos Subcríticos de Vapor con CicloVap_1P_SinDesg
800
700
Simulación A
Simulación B
600
Simulación C
Temperature (ºC)
500
400
300
200
100
0
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
(a) Diagrama T q
320
315
310 PPC
PPB
Temperature (ºC)
305
300 APB
AP
C
295
290
285
280
268 270 272 274 276 278 280 282 284
Exchanged Heat (kJ/kg of air)
Observando las gráficas y los resultados arrojados por el programa, se pueden sacar las siguientes
conclusiones:
i) La temperatura de salida de la CRC aumenta según aumenta la presión de línea, a igualdad del
resto de parámetros. Por contra, un aumento del PP o del AP implican que este valor será menor.
ii) Como ya se ha comentado, en los tres casos el aire introducido sufre la misma variación de entalpía,
por lo que la cantidad de calor intercambiado por unidad de masa de aire introducido en el ciclo de
gas es la misma en los tres casos.
iii) Una menor presión de evaporación conlleva una menor cantidad de calor requerido intercambiar en
el economizador.
iv) A igualdad de presiones, un mayor valor del PP implica un desplazamiento a la derecha de la meseta
de evaporación (figura 2.15b). Esto implica que la cantidad de calor requerida por el economizador
se incrementa con respecto a la del resto de partes de la caldera. Esto se explica porque la cantidad
de gases de combustión que atraviesa la CRC debe ser menor para conseguir estas condiciones
(menor M ), por lo que al entrar menos cantidad de gases, se debe destinar más parte del calor
específico total que tienen a lograr este calentamiento, dado que el punto 2 es fijo.
v) Una presión menor conlleva que el evaporador requiera más cantidad de calor. Esto se debe a que
la diferencia entre la entalpía del vapor saturado y la del líquido saturado es mayor cuanto menor
es la presión. En este contexto entra en juego también el Approach Point; cuanto mayor sea, mayor
será la cantidad de calor demandada por el evaporador. Esto se debe a que el evaporador eleva la
entalpía del fluido no desde h3 = hsat L si no desde h2 , que será menor cuanto mayor sea el AP, con
el consecuente incremento de energía requerida.
vi) La cantidad de calor sobrante será destinada a sobrecalentar el vapor de agua. Interesa para el ciclo
que este tramo intercambie mucho calor, para aumentar el salto entálpico en la turbina y por tanto
la cantidad de energía eléctrica producida.
vi) Cuanto mayores sean la presión y la temperatura del punto de entrada a la turbina de vapor, mayor
será el trabajo obtenido en la misma.
vii) Cuanto menor sea la presión y mayor sea la temperatura en el punto de entrada a la turbina, mayor
será el título de vapor a la salida de la misma. Se recuerda la importancia de que este valor sea
mayor de 0.85.
viii) El rendimiento de la turbina de vapor aumenta cuanto mayor es el trabajo obtenido en la misma y
menor es el requerido por las bombas (ecuación 1.9). Como el trabajo requerido por las bombas es
bastante menor que el obtenido en la turbina, se puede concluir que a mayor presión, como el salto
entálpico en la turbina es mayor (y a pesar de que también lo sea el requerido por las bombas),
mejora el rendimiento del ciclo de vapor. A una misma presión, cualquier modificación que implique
una disminución de h5 conlleva un descenso de ηT V .
ix) Cuanto más prx́imas estén las curvas de temperatura de los GGCC y del agua, mayor será el
rendimiento del Ciclo Combinado. Esto se debe a las pérdidas exergéticas que se producen cuando
se intercambia energía a distinta temperatura (ecuación 1.5). Se podría haber apreciado a simple
vista, analizando la figura (2.15a), que el rendimiento mayor lo alcanzará el de la Simulación B.
Como regla general, un aumento de presión conlleva un aumento de rendimiento del ciclo global.
En esta Sección se va a llevar un proceso análogo al de la Sección (2.3.6), aplicado a procesos super-
críticos. Las simulaciones llevadas a cabo son las siguientes:
Ciclo de Gas:
[t1_g, t2_g, x, Fr, ratio, w_TG, rend_TG]=
CicloGas(300, 1, 18, [0.88,0.98,0.93], [0.05, 0.08, 0.06], 1700, -1, 1, 1);
Simulación A: [t5_A, M_A, q_tot_A, q_caldera_A, x6_A, x_ext_A, w_TV_A, rend_TV_A, rend_CC_A]=
CicloVap_1P_SinDesg(250, 0.0571, 5, 15, 5, 20, [0.91, 0.88], [3, 3], 1, 0, t1_g, t2_g,
x, ratio, rend_TG);
De estos resultados y las gráficas de las simulaciones se pueden extraer las siguientes conclusiones
preliminares:
3500
Simulación A
3000
Simulación B
2500 Simulación C
Enthaply (kJ/kg)
2000
1500
1000
500
0
0 1 2 3 4 5 6 7 8 9 10
Specific Entropy (kJ/(kgºC))
600
Simulación A
500
Simulación B
Simulación C
400
Temperature (ºC)
300
200
100
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
800
700
Simulación A
Simulación B
600
Simulación C
Temperature (ºC)
500
400
300
200
100
0
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
iv) El título de vapor tras la expansión en la turbina disminuye con la presión de línea y con el
aumento del PP. Esto se debe a que el punto 5 tiene menos entropía en estos casos, por lo que la
expansión acaba en puntos 6 situados más a la izquierda en la línea de cambio de fase a la presión de
condensación (ver figuras 2.16 y 2.17). En cualquier caso se puede observar cómo el título de vapor
obtenido es menor a los obtenidos en las simulaciones de ciclos subcríticos. Esto hace necesario
utilizar recalentamientos cuando se utilizan presiones tan elevadas, como ya se ha comentado.
Cuadro 2.3: Resultados de la Simulación de tres Ciclos Supercríticos de Vapor con CicloVap_1P_SinDesg
Figura 2.19: Configuración del Ciclo de Vapor y la CRC 1P Subcrítico con Desgasificador (Elaboración
propia)
En estas figuras se pueden apreciar los nuevos puntos del ciclo en comparación con el programa
anterior; ext, 8 y 9, además de la línea morada, que marca el proceso de condensación del pnto de
extracción6 .
6 El hueco existente entre la línea de expansión 5-6 y la línea de condensación de la extracción ext-9 se debe a que el
600
5
500
400
Temperature (ºC)
2, 3 4
300
200
100 9, 1
7, 8 6s ext
0
6
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
Figura 2.20: Diagrama T s del Ciclo de Vapor Subcrítico 1P Con Desgasificador (Elaboración propia)
No se muestra la gráfica con el diagrama T q dado que su apariencia es indistinguible y los puntos
del interior de la CRC se mantienen. A continuación se detalla el proceso de obtención de estos nuevos
puntos:
ext: Vapor extraído de la turbina antes de completar la expansión. Para calcular dicho
punto se estima que la extracción no modificará la curva de expansión global. Por tanto se utiliza dicha
curva, conocida al tener los puntos 5 y 6, y el conocimiento de la presión a la cual tendrá lugar la
extracción, pext , para obtener las propiedades de dicho punto.
pext conocida
(2.22)
ext ⊂ recta 5 − 6
9: Líquido saturado a la presión de extracción. Se trata del líquido que se extrae del desgasifi-
cador, en donde hay un equilibrio bifíasico líquido-vapor entre los caudales provenientes de la extracción
y de la condensación. Sabiendo que es un fluido saturado, y que está a presión pext , es inmediato obtener
el resto de propiedades.
p9 = pext
(2.25)
Líquido Saturado
1s, 1: Líquido subenfriado tras compresión. Estos puntos se calculan de forma similar a la
explicada en la Sección (2.3.1), exceptuando que la compresión tiene lugar desde una situación de líquido
saturado a la presión de extracción, no a la de condensación.
El resto de puntos que no se han comentado en esta Sección se obtienen de la misma forma que la
detallada en la Sección (2.3.1).
Puesto que las diferencias entre los ciclos de vapor con y sin desgasificador se dan fuera de la CRC,
no existe ninguna peculiaridad de los ciclos supercríticos con un nivel de presión y desgasificador que
no se haya comentado bien en las Secciones correspondientes del programa CicloVap_1P_SinDesg o
76.8
1
76.6
Temperature (ºC)
76.4 1s
76.2
76
9
75.8
6s ext
6
1.024 1.025 1.026 1.027 1.028 1.029 1.03 1.031 1.032
Specific Entropy (kJ/(kgºC))
en la Sección (2.4.1), o se vaya a detallar en las Secciones siguientes. Por este motivo se expluyen en
este programa las secciones dedicadas a la explicación de las diferencias entre las simulaciones de ciclos
subcríticos y supercríticos.
function [t5, M, q_tot, q_caldera, x6, x_ext, w_TV, rend_TV, rend_CC] = ...
CicloVap_1P_ConDesg( p, p_cond, p_ext, AP, PP, DT, DI, rend, perd_carga, grafica, ...
clearfigures, t1_g, t4_g, x, ratio, rend_TG)
%% CICLO DE VAPOR, SIMPLE (1P), CON DESGASIFICADOR
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
La única variable de entrada añadida para poder realizar este programa es p_ext; la presión a la cual
tiene lugar la extracción de la turbina de vapor. Como se verá a continuación, no es necesario ninguna
variable más, ya que se utilizan balances para obtener otras incógnitas como la fracción másica del caudal
de vapor que se dedica a la extracción, x_ext. Esta incógnita es, precisamente, la variable de salida que
se ha añadido con respecto al programa CicloVap_1P_SinDesg.
Esta parte del programa no guarda diferencias con lo explicado en la Sección (2.3.4.1).
Como se ha comentado, las particularidades de este ciclo con respecto al equivalente sin desgasificador
tienen lugar fuera de la caldera de recuperación de calor, por lo que el procedimiento utilizado para obtener
los puntos del interior de la misma se mantiene intacto.
El programa comienza obteniendo los puntos que siguen a la expansión completa del fluido en la
turbina:
% 7
p7=p_cond;
t7=XSteam('Tsat_p', p7);
h7=XSteam('hL_p',p7);
s7=XSteam('sL_p',p7);
% 8s
p8s=p_ext;
s8s=s7;
t8s=XSteam('T_ps', p8s, s8s);
h8s=XSteam('h_pT', p8s, t8s);
% 8 (8s-7)/(8-7)=rend
h8=h7+(h8s-h7)/rend_s_bomba;
p8=p8s;
t8=XSteam('T_ph', p8, h8);
s8=XSteam('s_ph', p8, h8);
% 9
p9=p8;
t9=XSteam('Tsat_p',p9);
h9=XSteam('hL_p',p9);
s9=XSteam('sL_p',p9);
Como se puede ver, la obtención de estos puntos es relativamente inmediata a partir de los parámetros
de entrada. Tras esto, tendría lugar el proceso cálculo de los puntos del interior de la CRC, tanto de los
puntos de los gases de combustión como de los del agua.
Al finalizar ese cálculo, se pasa a obtener los puntos característicos de la expansión completa y de la
extracción de vapor:
% 6s
p6s=p_cond;
s6s=s5;
h6s=XSteam('h_ps', p6s, s6s);
t6s=XSteam('T_ps', p6s, s6s);
% 6
p6=p_cond;
h6=h5-rend_s_turb*(h5-h6s);
s6=XSteam('s_ph', p6, h6);
t6=XSteam('t_ph', p6, h6);
x6=XSteam('x_ph', p6, h6);
% ext
puntos=100;
[Dp, H, S]=aprox_ext(h5, h6, s5, s6 ,p_ext, puntos);
while Dp>0.00001
[Dp, H, S]=aprox_ext(H(1), H(2), S(1), S(2) ,p_ext, puntos);
end
h_ext=(H(1)+H(2))/2;
t_ext=XSteam('T_ph',p_ext,h_ext);
s_ext=XSteam('s_ph',p_ext,h_ext);
% (1-x)h8+x*h_ext=h9
x_ext=(h9-h8)/(h_ext-h8);
Como se puede apreciar, para calcular el punto ext se recurre a la función auxiliar aprox_ext, a la
cual se le irá llamando hasta alcanzar la precisión deseada en la obtención de dicho punto. Esta función
calcula valores de las propiedades termodinámicas entre dos puntos, suponiendo que la curva que define
la evolución entre estos puntos en un diagrama h s es una recta. Las variables de diseño de este programa
son las siguientes:
Variables de entrada:
kJ
- h_inicial: Valor de la entalpía del punto inicial de la curva, en .
kgagua
kJ
- h_final: Valor de la entalpí del punto final de la curva, en .
kgagua
kJ
- s_inicial: Valor de la entropía del punto inicial de la curva, en .
kgagua · K
kJ
- s_final: Valor de la entropía del punto final de la curva, en .
kgagua · K
- p_ext: Valor de la presión a la que tiene lugar la extracción, en bares.
- puntos: Número de puntos intermedios que se utilizarán para calcular la recta entre los puntos de
inicio y final de la curva.
Variables de salida:
- Dp: Diferencia de presión entre la de extracción y la más cercana a ésta de entre las obtenidas en
la recta entre los puntos inicial y final de la curva.
- H: Vector de dos componentes, que contienen las entalpías de los puntos entre cuyas presiones se
haya la de extracción.
- S: Vector de dos componentes, que contienen las entropías de los puntos entre cuyas presiones se
haya la de extracción.
[Dp, j]=min(abs(p_ext-p_aux));
if p_ext+Dp==p_aux(j)
H=[hint(j) hint(j+1)];
S=[sint(j) sint(j+1)];
elseif p_ext-Dp==p_aux(j)
H=[hint(j-1) hint(j)];
S=[sint(j-1) sint(j)];
end
end
Como se puede ver, el programa calcula las presiones de los distintos puntos de la recta entre el inicial y
el final introducidos, y se busca la más cercana a la presión de extracción. Tras localizarla, se asignan los
valores a los vectores H y S.
Volviendo al programa principal, el valor Dp es evaluado para comprobar si es suficientemente pequeño.
De ser , mayor que lo establecido, se ejecuta otra vez la función aprox_ext, pero esta vez entre los puntos
producidos en la ejecución anterior. De esta forma, cada vez se realiza el proceso con una precisión mayor
con cada iteración realizada.
Tras haber obtenido las propiedades termodinámicas del punto de extracción se obtiene la fraccón de
caudal másico que se extrae de la turbina, x_ext, mediante un balance de energía entre los puntos 8, 9,
y ext:
m9 · h9 = mext · hext + m8 · h8
m9 = mtoal agua ; mext = mtoal agua · xext ; m8 = mtoal agua · (1 − xext )
Por tanto:
h9 − h8
h9 = xext · hext + (1 − xext ) · h8 ; xext = (2.26)
hext − h8
% GRAFICA H-S
if clearfigures
figure(4)
clf
fastmollier(1);
else
figure(4)
hold all;
end
if x6≥1
plot([s9, sint13, sint45, s6, sint6_6v, s7, s8, s9],...
[h9, hint13, hint45, h6, hint6_6v, h7, h8, h9] ,'linewidth', 3, 'color', [0 0.2 ...
0.6]);
else
plot([s9, sint13, sint45, s6, s7, s8, s9],...
[h9, hint13, hint45, h6, h7, h8, h9] ,'linewidth', 3, 'color', [0 0.2 0.6]);
end
plot([s9, s1s, s1],...
[h9, h1s, h1],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
plot([s5, s6s, s6],...
[h5, h6s, h6],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
plot([s7, s8s, s8],...
[h7, h8s, h8],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
if h_ext>XSteam('hV_p', p_ext)
%Puntos intermedios entre ext y ext_V
[hint_extV, ¬, sint_extV, tint_extV]=calculo_intermedios(h_ext, XSteam('hV_p', p_ext), ...
p_ext, p_ext, 10);
plot([sint_extV, s9],...
[hint_extV, h9] ,'linewidth', 3, 'color', [0.5 0.2 0.6]);
else
plot([s_ext, s9],...
[h_ext, h9] ,'linewidth', 3, 'color', [0.5 0.2 0.6]);
end
Como particularidad, cabe señalar que se ha tenido en cuenta la posibilidad de que el punto de extracción
sea de equilibrio bifásico o de vapor sobrecalentado. En este caso, se han obtenido los puntos intermedios
entre el punto ext y el de vapor saturado a la presión de extracción.
En este caso se ha tenido en cuenta la existencia de dos bombas; una a la salida del condensador,
y otra a la salida del desgasificador. Esto se refleja en el cálculo de la variable w_Bba, que contiene el
kJ
trabajo realizado por las bombas de circulación del ciclo, en .
kgaire
%% % OUTPUTS % % %
q_tot=h1_g-h4_g;
q_caldera=[q_econ, q_evap, q_sobrec]/q_tot*100;
w_TV=(h5-h6)/M; % en kJ/kg_aire
w_Bba=((h1-h9)+(1-x_ext)*(h8-h7))/M; % en kJ/kg_aire
rend_TV=(w_TV-w_Bba)/(h1_g-h4_g)*100; % mv(h5-h6)/mf(h1_g-h4_g)=(h5-h6)/(M*(h1_g-h4_g));
rend_CC=rend_TV+rend_TG-rend_TV*rend_TG/100;
A continuación se van a realizar una serie de simulaciones que permitan comparar los efectos que
tienen la variación de la presión de extracción. No se analazirán las consecuencias de la modificación
de otras variables de diseño, como AP o PP, dado n las misque son las mismas que en programa
CicloVap_1P_SinDesg. Las simulaciones de ciclos subcríticos realizadas son las siguientes:
Ciclo de Gas:
[t1_g, t2_g, x, Fr, ratio, w_TG, rend_TG]=
CicloGas(300, 1, 18, [0.88,0.98,0.93], [0.05, 0.08, 0.06], 1700, -1, 1, 1);
Simulación A: [t5_A, M_A, q_tot_A, q_caldera_A, x6_A, x_ext_A, w_TV_A, rend_TV_A, rend_CC_A]=
3500
3000
Simulación A
2500 Simulación B
Enthaply (kJ/kg)
2000
1500
1000
500
0
0 1 2 3 4 5 6 7 8 9 10
Specific Entropy (kJ/(kgºC))
600
Simulación A
500
400
Simulación B
Temperature (ºC)
300
200
100
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
i) Un aumento de la presión de extracción favorece una mayor temperatura de salida del vapor so-
brecalentado. Esto se debe a la menor cantidad de calor (del total intercambiado) que requiere el
economizador. Esto implica una mayor relación de caudales y que se dedique un mayor porcentaje
de calor intercambiado al sobrecalentador y por tanto una mayor temperatura de salida del vapor.
La
800
700 Simulación A
600
Simulación B
Temperature (ºC)
500
400
300
200
100
0
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
Cuadro 2.4: Resultados de la simulación de dos ciclos subcríticos de vapor con CicloVap_1P_ConDesg
ii) Este aumento de temperatura se traduce en un mayor título de vapor a la salida de la turbina y un
mayor rendimiento de los ciclos de vapor y global, al extraer más energía del proceso.
iii) A pesar de las aparentes ventajas que conllevan las conclusiones anteriores, la gran desventaja de
las extracciones es que se aumentan las pérdidas de calor de los gases de combustión. Esto sucede
porque los gases salen a una temperatura mayor que si no hubiera extracción, por lo que ese calor
se pierde. El motivo de este aumento de temperatura de salida de los gases se debe a que el agua
entra a una mayor temperatura, por estar a presión. Este fenómeno de aumento de las pérdidas
queda reflejado en la variable q_tot, menor cuanto más alta es la presión de extracción.
iv) Una mayor presión de extracción implica también que la fracción de caudal másico de extracción
es también mayor.
Para el caso de ciclo supercrítico se pueden extraer las mismas conclusiones, por lo que solo se van a
presentar las gráficas resultantes de las siguientes simulaciones, y la tabla con los outputs:
Ciclo de Gas:
[t1_g, t2_g, x, Fr, ratio, w_TG, rend_TG]=
CicloGas(300, 1, 18, [0.88,0.98,0.93], [0.05, 0.08, 0.06], 1700, -1, 1, 1);
3500
3000
Simulación A
2500 Simulación B
Enthaply (kJ/kg)
2000
1500
1000
500
0
0 1 2 3 4 5 6 7 8 9 10
Specific Entropy (kJ/(kgºC))
600
Simulación A
500
400
Simulación B
Temperature (ºC)
300
200
100
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
800
700
Simulación A
600
Simulación B
Temperature (ºC)
500
400
300
200
100
0
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
Cuadro 2.5: Resultados de la simulación de dos ciclos superíticos de vapor con CicloVap_1P_ConDesg
MODELADO DE PLANTAS DE CICLO COMBINADO
Figura 2.28: Configuración del Ciclo de Vapor y la CRC para dos niveles de presión en paralelo, con
presiones subcríticas (Elaboración propia)
A continuación se procede a explicar la obtención de los puntos característicos mostrados en las figuras
(2.29) y (2.30).
7, 8, 9: Estos puntos se obtienen de la misma forma que en el caso de un nivel de presión, hacien-
do uso de las presión de condensación y de extracción, y del rendimiento isentrópico de la bomba de
circulación.
600
5a
500
400
Temperature (ºC)
6a
2a,3a 4a 5b
300
5m
2b,3b,1a 4b
200
100
9,1b
ext
7,8
0
6
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
800
1g
700
2g
600 5a
Temperature (�C)
500
400 3g
4g
2a,3a
300 5g 1a 4a
5b
200 2b,3b 4b
6g
100
1b
0 100 q1 q2 q3 300 400 500 q4 600 700 q5 800
Exchanged Heat (kJ/kg of air)
1b, 1bs: Agua subenfriada a presión de la línea de baja. Estos puntos se hayan de la misma
forma que 1s y 1 en el ciclo 1P con desgasificador. En estos puntos todo el caudal está a la presión de
baja más las pérdidas de presión en el economizador, ya que no se ha producido la bifurcación de flujos.
3b: Agua saturada a la presión de baja. Se obtiene este punto sabiendo que se trata de líquido
saturado a la presión de baja, pb , que es un dato del ciclo.
2b: Agua a la salida del economizador de baja. En este punto todo el caudal alcanza una
temperatura cercana a la de saturación a la presión de baja. La diferencia entre t3b y t2b es el Aproach
Point de baja, que es un parámetro de entrada.
4b: Vapor saturado a la presión de baja. En este punto ya se ha separado el caudal de baja
del de alta presión. Por tanto, la evaporación a este pb solo tiene lugar para parte del caudal, definido
mediante las fracciones másicas de caudal de alta y de baja con respecto al total de caudal, que serán un
parámetro de entrada. Para obtener este punto se sigue el mismo razonamiento que para 3b; se trata de
vapor saturado y se conoce la presión a la que se encuentra.
1a, 2a, 3a, 4a: Se calculan de la misma forma que sus equivalentes de la línea de baja presión, a
excepción del punto 1a, que en lugar de ser resultado de la compresión desde líquido saturado a pext
hasta su presión correspondiente, comienza su compresión con líquido saturado a pb .
6g, 5g, 3g, 1g: Estos puntos característicos del gas se obtienen directamente a partir distintos datos
de entrada, de forma similar al ciclo 1P: 1g es un parámetro de entrada dado por el programa CicloGas;
4g: Gases de combustión a la salida del evaporador de baja. Para obtener la entalpía de los
GGCC en este punto es necesario realizar dos balances. El primero se realiza al economizador de baja y
permite obtener la relación de caudales de aire y total de agua. Con esta relación y las fraccones másicas
de caudals de baja y de alta respecto del total de agua se obtienen Mb y Ma . Con estas relaciones se
realiza un balance de energía al tramo de la CRC en el que coinciden el sobrecalentador de baja presión
y el economizador de alta, obteniéndose h4g .
kgaire h2b − h1b
M = (2.27)
kgagua h5g − h6g
·
kgaire kgaire magua total M
Mb =M · ·
= xbaja
kgagua LP kgagua magua LP (2.28)
Ma = · · · = M
xalta
1
h4g = h5g + · (h4b − h2b ) (2.29)
Mb
5b: Vapor sobrecalentado de la línea de baja. Para obtener las propiedades termodinámicas
de este punto se recurre a las pérdidas de presión en el sobrecalentador para obtener p5b , y a un balance
de energía entre los puntos 4g y 3g, dado que todos los puntos que intervienen en el mismo ya han sido
definidos en pasos anteriores, a excepción del 5b.
p5b = pb − ∆psobrec
Balance de energía :
mg · (h3g − h4g ) = mb · (h5b − h4b ) + ma · (h2a − h1a ) (2.30)
x
h5b = h4b + Mb · (h3g − h4g ) − alta · (h2a − h1a )
xbaja
Cabe destacar que este punto es muy sensible y varía notablemente con variaciones relativamente pequeñas
de los parámetros de entrada. Esto es porque toma su energía de la que ‘sobra’ y no es utilizada por el
economizador de alta (dado que sus puntos de inicio y finalización están fijados) entre los puntos 3g y
4g. Por tanto, generalmente es necesario utilizar Pinch Points y Approach Points de alta mayores que en
otras configuraciones, para que este tramo de la caldera se incremente. Esto puede compensarse usando
PP o AP de baja menores de lo normal.
2g: Gases de combustión a la salida del evaporador de alta. Para obtener la entalpía de los
gases en este punto se realiza un balance al evaporador de alta, análogo al realizado para hallar el punto
4g.
6sa, 6a: Puntos característicos de la expansión desde 5a hasta la presión p5b . Se obtienen
de forma similar a los puntos 6s y 6, con la diferencia de que en vez de finalizar la expansión en pcond ,
lo hacen en p5b .
5m: Punto resultado de la mezcla de 5b y 6a. Este punto se enuentra a la presión p5b y a la
entalpía resultado de la mezcla de los caudales;
h5m = xbaja · h5b + xalta · h6a (2.32)
Tras esto, queda por obtener los puntos 6, 6s, y ext. Los pasos llevados a cabo para encontrarlos no
difieren de los seguidos en el ciclo de un nivel de presión con desgasificador.
700
5a
600
500
Temperature (ºC)
400
5b ≡ 6a
300 2b,3b,1a 4b
200
100
9, 1b
ext
7,8
0
6
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
800
1g
700
5a
600
Temperature (º C)
500
2g
400
5b
3g
Ia
300
4g 1a
2b,3b 4b
200
5g
100
1b
0 100 q1 200 q2 300 q3 500 600 700 q4 800
Exchanged Heat (kJ/kg of air)
Tanto los puntos 1b, 2b, 3b, 4b y 1a como los puntos exteriores a la CRC, así como los de inicio
y final de los GGCC, se han obtenido de la misma forma que en el caso subcrítico. La diferencia radica
por tanto en la caracterización de los puntos 5b y 5a. Para la obtención de las entalpías de los gases
de combustión en los puntos 4g y 3g se siguen pasos ya comentados. Cabe también resaltar que, como
se puede ver comparando las figuras (2.30) y (2.32), la evolución de los GGCC cuenta con un punto
característico menos en el caso supercrítico.
5a: Vapor sobrecalentado de la línea de alta. Como se ha mencionado antes, el criterio utilizado
para definir este punto es que al realizar su expansión hasta 6a, este coincida con 5b. Dado que la presión
de ambos ya es la misma dado que se expansiona el caudal de alta hasta la presión en la que el caudal
de baja comienza su expansión, se obliga a que s6a = s5b . Por tanto, se inicia una iteración en la que se
varía la temperatura t5a , hasta conseguir cumplir con el criterio. Esto es posible dado que teniendo p5a
(que no varía) y t5a (con la que vamos iterando) puede obtenerse el punto 6a, y mediante un balance de
energías que se comentará a continuación, obtener también el punto 5b.
5b: Vapor sobrecalentado de la línea de baja. Una vez definido el punto 5a, se hallan las
propiedades termodinámicas del punto 5b a partir de su presión y de su entalpía, obtenida a partir del si-
guiente balance, realizado al tramo de la CRC que contiene al sobrecalentador de baja y al intercambiador
del fluido supercrítico:
2g: Gases de combustión a la salida del sobrecalentador de baja. Una vez obtenidos los
puntos 5b y 5a, el resto de puntos característicos del ciclo pueden ser hallados, pero para poder representar
la curva T q falta situar el punto 5b dentro de la CRC, o lo que es lo mismo, designar t2g. En esta elección
también se dispone de libertad, y hay señalar que la decisión que se tome para representar dicho punto
(que será hasta donde se extienda el sobrecalentador de baja) no afecta a los outputs del ciclo tal y como
se han programado. Aún así, esta decisión no debe tomarse a la ligera ya que podría conducir a realizar
una gráfica T q errónea. En un principio se pensó asignar al punto 2g la temperatura del punto 5b más
su DT; T2g = T5b + DTbaja . Esto resultó ser equivocado, dado que esta temperatura puede ser menor que
T3g en algunos casos, dando lugar al caso ‘1er Criterio’ en la gráfica (2.33). Por tanto, se tomó la idea
de que la temperatura T2g debería se siempre mayor que la del punto 3g, por lo que se ideó el siguiente
algoritmo:
Se realiza un balance de energía entre los puntos 3g y 1g:
mg · (h1g − h3g ) = ma · (h5a − h1a ) + mb · (h5b − h4b );
Se calcula el calor utilizado para sobrecalentar la línea de baja, para calentar el supercrítico,
y el total de los gases:
calorsobrec sub = xbaja · (h5b − h4b );
Ia: Punto del caudal supercrítico a partir del cual ya no hay caudal de baja en la CRC.
Este punto se halla a partir de 5b y 2g, y se utilizará para la representación de la gráfica T q. Su entalpía
se obtiene realizando un balance de energía entre los puntos 3g y 2g, y su presión suponiendo un descenso
800
Primer Criterio;
700
Segundo Criterio; 2g2o Criterio
600
Temperature (º C)
Ia2o Criterio
300
200
Ia1er Criterio
100
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
Figura 2.33: Diferentes resultados según el criterio utilizado para asignar T2g en un ciclo 2P paralelo
supercrítico(Elaboración propia)
function [t5, Mt, qtot, q_caldera, x6, x_ext, w_TV, rend_TV, rend_CC, error] =...
CicloVap_2P_Desg_Paralelo( p, p_cond, p_ext, AP, PP, DT, DI,x_alta,...
rend, perd_carga, grafica, clearfigures,...
t_ent_g, t_sal_g, x, ratio, rend_TG)
%%
% CICLO DE VAPOR, 2P, CON DESGASIFICADOR, CON ALTA Y BAJA EN PARALELO, SIN RECALENTADOR
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
Como se puede ver comparando con las variables de diseño del ciclo 1P (Sección 2.4.2), hay pocas
variaciones en cuanto a la naturaleza de los inputs o los outputs del programa. La diferencia radica e el
número de componentes que deben tener las variables, que en la mayoría de los casos asciende de una a
dos componentes. Esto se debe a que se requiere un valor para la línea de baja y otro para la de alta.
Ese es el caso de: p, AP, PP, y DT. En estos casos, la primera componente será la de la línea de baja
presión, y la segunda la de alta.
La única variable de entrada nueva es x6; la fracción de caudal másico de agua que irá por la línea
de alta presión. Este valor, que suele ser mayor de 0.5, es el causante de que en las gráficas T q de ciclos
de 2P, la meseta de evaporación del ciclo de alta sea mayor que la de baja, a pesar de que la energía
requerida para evaporar el agua aumenta cuanto menor es la presión a la que ebulle.
De los parámetros de salida, se ha modificado la información que proporciona q_caldera. Si bien
en los programas anteriores ofrecía el porcentaje de calor utilizado en el economizador, evaporador y
sobrecalentador, en este programa ofrece el porcentaje de calor empleado en el primer economizador, en
el cual se lleva todo el caudal de agua desde h1b hasta h2b ; el utilizado para evaporar y sobrecalentar el
caudal de baja; y el porcentaje utilizado para llevar el caudal de alta de h1a a h5a . Además, se introduce
la variable de salida error, la cual tendrá un valor u otro en función del error obtenido en el programa, de
haberlo. Esto es de utilidad a la hora de analizar los resultados obtenidos con el programa. Más adelante
se mostrarán los distintos valores que puede tomar esta variable, así como los distintos errores que pueden
darse.
%% PARAMETROS DEFAULT
load janafJ.mat; options=optimoptions('fsolve', 'Display', 'off');
MW_gases_comb=x(1)*eval(['MolWeight.' 'CO2'])+x(2)*eval(['MolWeight.' 'H2O'])+ ...
x(3)*eval(['MolWeight.' 'N2'])+x(4)*eval(['MolWeight.' 'O2']);
if perd_carga==-1;
perd_carga=[3 3];
end
perd_carga_econ=perd_carga(1);
perd_carga_sobrec=perd_carga(2);
if rend==-1
rend=[0.9,0.88]; %El primero es de las bombas y el segundo de la(s) turbina(s)
end
rend_s_bomba=rend(1);
rend_s_turb=rend(2);
if AP==-1
AP_b=5;
AP_a=5;
elseif length(AP)==2
AP_b=AP(1);
AP_a=AP(2);
else
disp('AP debe tener dos dimensiones o ser -1');
end
if PP==-1
PP_b=10;
PP_a=20;
elseif length(PP)==2
PP_b=PP(1);
PP_a=PP(2);
else
disp('PP debe tener dos dimensiones o ser -1');
end
if DT==-1
DT_baja=30;
DT_alta=5;
elseif length(DT)==2
DT_baja=DT(1);
DT_alta=DT(2);
else
disp('DT debe tener dos dimensiones o ser -1');
end
if DI==-1
DI=30;
end
if length(p)==2
p_b=p(1);
p_a=p(2);
else
disp('p debe tener dos dimensiones o ser -1');
end
Como se puede ver, se realiza una comprobación de que se proporcionan las variables de entrada en el
formato adecuado. También se cambia el nombre de los inputs con el fin de facilitar la comprensión del
código del programa.
A continuación se muestra el código utilizado para la obtención de los puntos del ciclo cuya obtención
no requiere de balances de energía, exceptuando de los siguientes: 1g, 7, 8s, 8, y 9; cuyos procesos no
presentan ninguna diferencia con respecto a los ya explicados.
if p_a<220.5846
%% % % % % CICLO DE BAJA % % % % % %
%1s_b
p1s_b=p_b*(1+perd_carga_econ/100);
s1s_b=s9;
t1s_b=XSteam('T_ps', p1s_b, s1s_b);
h1s_b=XSteam('h_pT', p1s_b, t1s_b);
%1_b (1s_b-9)/(1_b-9)=rend
p1_b=p1s_b;
h1_b=h9+(h1s_b-h9)/rend_s_bomba;
t1_b=XSteam('T_ph', p1_b, h1_b);
s1_b=XSteam('s_ph', p1_b, h1_b);
%3_b
p3_b=p_b;
t3_b=XSteam('Tsat_p', p3_b);
h3_b=XSteam('hL_p',p3_b);
s3_b=XSteam('sL_p',p3_b);
%4_b
p4_b=p_b;
t4_b=t3_b;
h4_b=XSteam('hV_p',p4_b);
s4_b=XSteam('sV_p',p4_b);
%2_b
p2_b=p_b;
t2_b=t3_b-AP_b;
h2_b=XSteam('h_pT', p2_b, t2_b);
s2_b=XSteam('s_pT', p2_b, t2_b);
%% % % % % CICLO DE ALTA % % % % % %
%1s_a
p1s_a=p_a*(1+perd_carga_econ/100);
s1s_a=s3_b;
t1s_a=XSteam('T_ps', p1s_a, s1s_a);
h1s_a=XSteam('h_pT', p1s_a, t1s_a);
%1_a (1s_a-3_b)/(1_a-3_b)=rend
p1_a=p1s_a;
h1_a=h3_b+(h1s_a-h3_b)/rend_s_bomba;
t1_a=XSteam('T_ph', p1_a, h1_a);
s1_a=XSteam('s_ph', p1_a, h1_a);
%3_a
p3_a=p_a;
t3_a=XSteam('Tsat_p', p3_a);
h3_a=XSteam('hL_p',p3_a);
s3_a=XSteam('sL_p',p3_a);
%4_a
p4_a=p_a;
t4_a=t3_a;
h4_a=XSteam('hV_p',p4_a);
s4_a=XSteam('sV_p',p4_a);
% 2_a
p2_a=p_a;
t2_a=t3_a-AP_a;
h2_a=XSteam('h_pT', p2_a, t2_a);
s2_a=XSteam('s_pT', p2_a, t2_a);
%% % % % % GG CC % % % % % %
% 6g
if t1_b+DI>t_sal_g
t6_g=t1_b+DI+273.15;
else
t6_g=t_sal_g+273.15;
end
h6_g=(x(1)*th_prop('h','CO2',t6_g)+x(2)*th_prop('h','H2O',t6_g)+ ...
x(3)*th_prop('h','N2',t6_g)+x(4)*th_prop('h','O2',t6_g))/MW_gases_comb*ratio;
t6_g=t6_g-273.15;
h_salida_g=h6_g;
%5g
t5_g=t3_b+PP_b+273.15;
h5_g=(x(1)*th_prop('h','CO2',t5_g)+x(2)*th_prop('h','H2O',t5_g)+ ...
x(3)*th_prop('h','N2',t5_g)+x(4)*th_prop('h','O2',t5_g))/MW_gases_comb*ratio;
t5_g=t5_g-273.15;
%3g
t3_g=t3_a+PP_a+273.15;
h3_g=(x(1)*th_prop('h','CO2',t3_g)+x(2)*th_prop('h','H2O',t3_g)+ ...
x(3)*th_prop('h','N2',t3_g)+x(4)*th_prop('h','O2',t3_g))/MW_gases_comb*ratio;
t3_g=t3_g-273.15;
Como se puede ver, la obtención de los 4 primeros puntos de alta y de baja presión es prácticamente
idéntica. Cabe destacar que, como el punto de salida de los GGCC en el ciclo subcrítico es 6g y en
supercrítico es 5g, se ha implementado la variable de salida h_salida_g que almacenará la entalpía con
la que salen los gases, para simplificar la asignación de outputs.
Para hallar el resto de puntos es necesario realizar los balances de energía que ya se han comentado:
Tras hallar los puntos de la CRC ya se pueden obtener el resto de puntos del ciclo. A continuación
se muestra el proceso para hallar todos ellos excepto 6s, 6, y ext, cuyo proceso de obtención no varía
significativamente, exceptuando que el punto 6 es resultado de expansionar el vapor desde 5m.
Para finalizar, antes de empezar el proceso de representacón gráfica, se evalúan los resultados obtenidos
para ver si son realistas. Se evalúan posibles condiciones de fallo y, en caso de cumplire alguna, se muestra
un mensaje por pantalla. Una de las más frecuentes es h5b < h4b , y se da cuando el calor disponible por
los gases en el tramo del sobrecalentador de baja y economizador de alta no es suficientemente alto para
que el ciclo de alta realice su calentamiento, y recurra el programa a utilizar parte de la energía del ciclo
de baja, lo cual no puede darse en la realidad.
error=0;
if isnan(t5_a)
disp('Las condiciones del ciclo estan fuera de lo permitido y no existe una t5_a ...
para ellas Aumentar AP_a o PP_a');
error=1;
end
if(t5_a>t1_g-DT_alta)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_a es mayor de lo ...
debido. Aumentar AP_a o PP_a');
error=2;
end
if(t5_b>t3_g-DT_baja)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_b es mayor de lo ...
debido. Aumentar AP_b o PP_b, o disminuir AP_a o PP_a');
error=3;
end
if(h5_b<h4_b)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto 5_b es de ...
equilibrio bifasico. Aumentar AP_a o PP_a, o disminuir AP_b o PP_b');
error=4;
end
if(h5_a<h4_a)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto 5_a es de ...
equilibrio bifasico. Disminuir AP_a o PP_a');
error=5;
end
A continuación se pasa a obtener las gráficas, de ser deseadas por el usuario. Siguiendo la metodologá
utilizada en anteriores programas, primero se realiza la gráfica T q. Para realizarla, se recurre a los calores
mostrados en la figura (2.30).
%% % % % % GRAFICA CRC % % % % % %
if clearfigures
figure(3); clf
end
figure(3); hold all;
q_econ_1=h5_g-h6_g; q1=q_econ_1;
q_evap_1=h4_g-h5_g; q2=q1+q_evap_1;
q_sobrec_1=h3_g-h4_g; q3=q2+q_sobrec_1;
q_evap_2=h2_g-h3_g; q4=q3+q_evap_2;
q_sobrec_2=h1_g-h2_g; q5=q4+q_sobrec_2; %[q]=kJ/kg_aire
%% % ciclo de baja % % %
plot([0 , q1],...
[t1_b, t2_b],...
[q1 , q2 , q3],...
[t3_b, t4_b, t5_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
%% % ciclo de alta % % %
plot([q2, q3],...
[t1_a, t2_a],...
[q3 , q4 , q5],...
[t3_a, t4_a, t5_a],'linewidth', 2, 'color', [0 0.75 0.75]);
%% % gg cc % % %
plot([0 , q1 , q2 , q3 , q4 , q5 ],...
[t6_g, t5_g , t4_g, t3_g, t2_g, t1_g], 'linewidth', 2, 'color', [0.635 0.078 ...
0.184]);
xlabel('Exchanged Heat (kJ/kg of air)');
ylabel('Temperature ( C)');
%% % % % % GRAFICAS CV %%%%%%
%% % intermedios comunes % % %
%Puntos intermedios entre 5b y 6a
[hint_5b_6a, ¬, sint_5b_6a, tint_5b_6a]=calculo_intermedios(h5_b, h6_a, p5_b, ...
p6_a, 10);
%Puntos intermedios entre 8 y 9
[hint_89, ¬, sint_89, tint_89]=calculo_intermedios(h8, h9, p8, p9, 10);
%% % GRAFICO H-S % % %
if clearfigures
figure(4); clf
fastmollier(1);
else
figure(4); hold all;
end
%% % ciclo de baja % % %
plot([s9, sint13_b, sint45_b, sint_5b_6a],...
[h9, hint13_b, hint45_b, hint_5b_6a],'linewidth', 3, 'color', [0 0.2 0.6]);
%% % ciclo de alta % % %
plot([s3_b, sint_15a, s6_a],...
[h3_b, hint_15a, h6_a],'linewidth', 3, 'color', [0 0.2 0.6]);
plot([s3_b, s1s_a, sint_1as_1a],...
[h3_b, h1s_a, hint_1as_1a],'color', [0 0.5 0], 'linestyle', ...
'--','linewidth', 2);
plot([s5_a, sint_6as_6a],...
[h5_a, hint_6as_6a],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
%% % comun % % %
if h6>XSteam('hV_p', p6)
%Puntos intermedios entre 6 y 6_V
[hint_6V, ¬, sint_6V, tint_6V]=calculo_intermedios(h6, XSteam('hV_p', p6), p6, ...
p6, 10);
plot([s5_m, sint_6V, s7, sint_89],...
[h5_m, hint_6V, h7, hint_89],'linewidth', 3, 'color', [0 0.2 0.6]);
plot([s5_m, s6s, s6],...
[h5_m, h6s, h6],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
else
plot([s5_m, s6, s7, sint_89],...
[h5_m, h6, h7, hint_89],'linewidth', 3, 'color', [0 0.2 0.6]);
%% % OUTPUTS % % %
t5=[t5_b, t5_a];
qtot=h1_g-h_salida_g;
q_inicio=(h2_b-h1_b)/Mt;
q_baja=(h5_b-h2_b)/Mb;
q_alta=(h5_a-h1_a)/Ma;
q_caldera=[q_inicio, q_baja, q_alta]/qtot*100;
w_TV=(h5_a-h6_a)/Ma+(h5_m-h6)/Mt; % en kJ/kg_aire
w_Bba=((h1_b-h9)+(h8-h7)*(1-x_ext))/Mt+(h1_a-h3_b)/Ma;
rend_TV=(w_TV-w_Bba)/(h1_g-h_salida_g)*100; % ...
mv(h5-h6)/mf(h1_g-h4_g)=(h5-h6)/(M*(h1_g-h4_g));
rend_CC=rend_TV+rend_TG-rend_TV*rend_TG/100;
Se puede ver cómo el parámetro de salida t5 cuenta con dos componentes, cada uno refiriéndose a la
temperatura a la que sale el vapor sobrecalentado de cada línea de la CRC. Por otra parte, y tal y como
se ha explicado previamente, q_caldera cuenta con tres componentes que hacen referencia a los calores
absorbidos por cada caudal; el total al comienzo de la caldera, el de baja, y el de alta. Por último, cabe
mencionar que se han tenido en cuenta los trabajos obtenidos en ls turbinas de alta y de baja presión,
así como los realizados por las bombas presentes en las distintas partes del ciclo.
%5_a
h5_a=XSteam('h_pT', p5_a, t5_a);
s5_a=XSteam('s_pT', p5_a, t5_a);
%mg(h1g-h3g)=mb(h5b-h4b)+ma(h5a-h1a)-->5b
h5_b=h4_b+Mb*(h1_g-h3_g)-(x_alta/x_baja)*(h5_a-h1_a);
t5_b=XSteam('T_ph', p5_b, h5_b);
s5_b=XSteam('s_ph', p5_b, h5_b);
Se ha utilizado una función auxiliar que ayuda a acelerar el proceso, permitiendo resolver la iteración
mediante fsolve, lo cual es más eficiente que mediante bucles. Esta función auxiliar,
calculo_t5_2P_Desg_Paralelo, toma los valores de entrada necesarios para obtener, a partir de una t5a
impuesta (que es el valore que se itera), obtener los valores de s5b y de s6a , permitiendo compararlos. La
diferencia entre ambos es precisamente el único parámetro de salida de esta función. Este será el valor
que se conseguirá anular mediante fsolve.
function [ dif ] = calculo_t5_2P_Desg_Paralelo( t5_a, p5_a, h1_a, rend_s_turb, h4_b, p5_b, ...
h1_g, h3_g, x_alta, x_baja, Mb )
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
%%
% 5a
h5_a=XSteam('h_pT', p5_a, t5_a);
s5_a=XSteam('s_pT', p5_a, t5_a);
%6s_a
h6_as=XSteam('h_ps', p5_b, s5_a);
% 6_a
h6_a=h5_a-rend_s_turb*(h5_a-h6_as);
s6_a=XSteam('s_ph', p5_b, h6_a);
% 5b %mg(h1g-h3g)=mb(h5b-h4b)+ma(h5a-h1a)--> 5b
h5_b=h4_b+Mb*(h1_g-h3_g)-(x_alta/x_baja)*(h5_a-h1_a);
s5_b=XSteam('s_ph', p5_b, h5_b);
dif=s6_a-s5_b;
end
Tras la obtención de 5a y 5b, ya se puede pasar a obtener 2g y, tras este, IA. Se recuerda que ek
criterio escogido para la asignación del punto 2g ha sido detallado en la Sección (2.5.2).
% 2g Mt(h1g-h3g)=x_alta(h5a-h1a)+x_baja(h5b-h4b)
calor_sub=x_baja*(h5_b-h4_b);
calor_sup=x_alta*(h5_a-h1_a);
calor_total=Mt*(h1_g-h3_g);
k=3;
t2_g=t3_g+(t1_g-t3_g)*(calor_sub+calor_sup/k)/calor_total+273.15;
h2_g=(x(1)*th_prop('h','CO2',t2_g)+x(2)*th_prop('h','H2O',t2_g)+ ...
x(3)*th_prop('h','N2',t2_g)+x(4)*th_prop('h','O2',t2_g))/MW_gases_comb*ratio;
t2_g=t2_g-273.15;
while t5_b>t2_g-DT_baja && k≥1
k=k*0.9;
t2_g=t3_g+(t1_g-t3_g)*(calor_sub+calor_sup/k)/calor_total+273.15;
h2_g=(x(1)*th_prop('h','CO2',t2_g)+x(2)*th_prop('h','H2O',t2_g)+ ...
x(3)*th_prop('h','N2',t2_g)+x(4)*th_prop('h','O2',t2_g))/MW_gases_comb*ratio;
t2_g=t2_g-273.15;
end
%SOBRECALENTADOR DE BAJA-->mg(h2g-h3g)=mb(h5b-h4b)+ma(hIA-h1a)-->IA
hIA=h1_a+Ma*(h2_g-h3_g)-(x_baja/x_alta)*(h5_b-h4_b);
pIA=p1_a+(p5_a-p1_a)*(hIA-h1_a)/(h5_a-h1_a);
tIA=XSteam('T_ph', pIA, hIA);
sIA=XSteam('s_ph', pIA, hIA);
Tras este paso, solo queda por obtener los puntos aguas abajo de las turbinas de alta y de baja; 6sa,
6a, 5m, 6s, 6, y ext. Estos se hallan según métodos que ya han sido explicados previamente.
Antes de comenzar la representación de las gráficas, se comprueba que los resultados obtenidos son
válidos:
%% % % % % % C
%OMPROBACION RESULTADOS % % % % % % % %
error=0;
if (t5_a>t1_g-DT_alta)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_a es mayor de lo ...
debido. ');
error=6;
end
if (t5_b>t2_g-DT_baja)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_b es mayor de lo ...
debido. Aumentar AP_b o PP_b');
error=7;
end
if (h5_b<h4_b)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto 5_b es de ...
equilibrio bifasico. Disminuir AP_b o PP_b');
error=8;
end
if(hIA<h1_a)
disp('Las condiciones del ciclo estan fuera de lo permitido y el ciclo supercritico ...
pierde calor en el tramo compartido con el sobrecalentador de baja.');
error=9;
end
q_econ_1=h4_g-h5_g; q1=q_econ_1;
q_evap_1=h3_g-h4_g; q2=q1+q_evap_1;
q_sobrec_1=h2_g-h3_g; q3=q2+q_sobrec_1;
q_superc_2=h1_g-h2_g; q4=q3+q_superc_2; %[q]=kJ/kg_aire
puntos=100;
qtot_g32=h2_g-h3_g;
q_g32=linspace(0, qtot_g32, puntos);
qtot_b45=h5_b-h4_b;
q_b45=linspace(0, qtot_b45, puntos);
P1=linspace(p1_a,pIA,puntos);
h_ia_1=zeros([1, puntos]);
t_ia_1=zeros([1, puntos]);
for i=1:1:puntos
h_ia_1(i)=h1_a+Ma*q_g32(i)-(x_baja/x_alta)*q_b45(i);
t_ia_1(i)=XSteam('T_ph',P1(i),h_ia_1(i));
end
qtot_g21=h1_g-h2_g;
q_g21=linspace(0, qtot_g21, puntos);
P2=linspace(pIA,p5_a,puntos);
h_ia_2=zeros([1, puntos]);
t_ia_2=zeros([1, puntos]);
for i=1:1:puntos
h_ia_2(i)=hIA+Ma*q_g21(i);
t_ia_2(i)=XSteam('T_ph',P2(i),h_ia_2(i));
end
if clearfigures
figure(3); clf
end
figure(3); hold all;
%% % ciclo de baja % % %
plot([0 , q1],...
[t1_b, t2_b],...
[q1 , q2 , q3],...
[t3_b, t4_b, t5_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
%% % ciclo de alta % % %
q_g32=q_g32+q2;
plot( q_g32, t_ia_1,'linewidth', 2, 'color', [0 0.75 0.75]);
q_g21=q_g21+q3;
plot( q_g21, t_ia_2,'linewidth', 2, 'color', [0 0.75 0.75]);
%% % gg cc % % %
plot([0 , q1 , q2 , q3 , q4 ],...
[t5_g , t4_g, t3_g, t2_g, t1_g], 'linewidth', 2, 'color', [0.635 0.078 0.184]);
Como se puede ver, no hay una única curva que contenga los datos de la temperatura del fluido
supercrítico en la caldera, si no que se divide en dos tramos; el primero en paralelo con el sobrecalentador
de baja desde 1a hasta IA, y el segundo desde ese punto hasta completar su calentamiento, en 5a.
La representación de los diagramas h s y T s no alberga diferencias significativas con la de los ciclos
subcríticos, a excepción de que no existe el tramo horizontal de evaporación a pa , y por tanto se calculan
los puntos intermedios entre 1a y 5a.
A continuación se van a realizar una serie de simulaciones para ciclos subcríticos y supercríticos con el
fin de explicar más eficazmente los efectos de la modificación de ciertas variables. Dada la mayor cantidad
de parámetros, el número de simulaciones será también más grande que en otros programas. Todas las
simulaciones se realizarán para el mismo ciclo de gas.
Ciclo de Gas:
[t1_g, t2_g, x, Fr, ratio, w_TG, rend_TG]=
CicloGas(300, 1, 12, [0.88,0.98,0.93], [0.05, 0.08, 0.06], 1800, -1, 1, 1);
COMPARACIÓN 1:
Simulación A:
[t5_A, Mt_A, q_tot_A, q_caldera_A, x6_A, x_ext_A, w_TV_A, rend_TV_A, rend_CC_A]=
CicloVap_2P_Desg_Paralelo( [30, 90], 0.0571, 1.1, [5, 10], [10, 60], [30 5], 20,
0.85,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Simulación B:
[t5_B, Mt_B, q_tot_B, q_caldera_B, x6_B, x_ext_B, w_TV_B, rend_TV_B, rend_CC_B]=
CicloVap_2P_Desg_Paralelo( [30, 120], 0.0571, 1.1, [5, 10], [10, 60], [30 5], 20,
0.85,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Simulación C:
[t5_C, Mt_C, q_tot_C, q_caldera_C, x6_C, x_ext_C, w_TV_C, rend_TV_C, rend_CC_C]=
CicloVap_2P_Desg_Paralelo( [20, 90], 0.0571, 1.1, [5, 10], [10, 60], [30 5], 20,
0.85,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
4000
3500 Simulación A
3000 Simulación B
Enthaply (kJ/kg)
2500
Simulación C
2000
1500
1000
500
0
0 1 2 3 4 5 6 7 8 9 10
Specific Entropy (kJ/(kgºC))
Figura 2.34: Diagrama h s: Ejemplo de Simulación; Variación de las presiones de línea (Elaboración
propia)
700
Simulación A
600
500
Simulación B
Temperature (ºC)
400
Simulación C
300
200
100
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
Figura 2.35: Diagrama T s: Ejemplo de Simulación; Variación de las presiones de línea (Elaboración
propia)
800
Simulación A
700
600
Simulación B
Temperature (º C)
500
Simulación C
400
300
200
100
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
Figura 2.36: Diagrama T q: Ejemplo de Simulación; Variación de las presiones de línea (Elaboración
propia)
En esta primera comparación se han realizado tres simulaciones con distintas presiones; la primera
simulación se tomará como referencia, la segunda tiene una presión de alta superior pero la misma presión
de baja, y la tercera tiene menor presión de baja pero la misma presión de alta.
i) Puede verse que el aumento de la presión de alta produce que la temperatura a la que comienza
su evaporación, T3a . Esto provoca que también aumente la temperatura de los gases a la cual se
llega hasta este punto; T3g = T3a + P Pa , lo que produce que haya más calor disponible en el
tramo. Este calor extra es aprovechado por el caudal de baja, obteniendo una temperatura de vapor
sobrecalentado superior. Este efecto se produce con cualquier modificación que implique una mayor
Cuadro 2.6: Resultados de la Simulación 1 de tres Ciclos Subcríticos de Vapor con Ciclo-
Vap_2P_Desg_Paralelo
diferencia de temperaturas de los GGCC entre el comienzo y el final del tramo paralelo (ya que
implica que hay más energía disponible); un aumento de los AP y PP de alta, o un descenso de los
de baja tendrán un efecto similar. El descenso de pb produce, de la misma forma, una disminución
de T3b y de T5g = T3b + P Pb .
ii) El aumento de pa supone un aumento de la temperatura de salida del vapor sobrecalentado de alta
presión, T5a , que generalmente no compensa la subida de presión y se traduce en un descenso del
título de vapor a la salida de la turbina. El descenso de pb produce que disminuye T5b pero que
aumente ligeramente T5a
iii) Aumentar la presión de alta no altera no produce variaciones en los primeros tramos del ciclo
de baja, y por tanto se mantienen constante en ambos casos Mt y q_inicio. Por contra, q_baja
aumenta al haber obtenido una T5b mayor. El descenso de la presión de baja sí que modifica este
tramo, lo que provoca un aumento de Mt, lo que conlleva que disminuya q_inicio. q_baja aumenta
ya que el aumento de la entalpía necesaria para completar la evaporación compensa el aumento de
la relación de caudales.
iv) La fracción de caudal másico destinado a la extracción depende directamente de las presiones del
ciclo, aumentando si estas lo hacen y viceversa.
v) El trabajo obtenido en las turbinas, y por tanto los rendimientos de los ciclos de vapor y global,
aumentan si las entalpías de los puntos 5b y 5a aumenta. Por tanto, en la simulación B se obtienen
valores mayores de estos tres parámetros dado que las entalpías de dichos puntos son mayores,
mientras que en la C estos valores disminuyen ligeramente porque el ligero aumento de t5a no
compensa la bajada de presión y temperatura del punto 5b.
vi) El efecto de modificar los parámetros de baja es menor en esta simulación dado que la fracción de
caudal másico de alta es significativamente superior a la del de baja.
COMPARACIÓN 2:
Simulación A:
[t5_A, Mt_A, q_tot_A, q_caldera_A, x6_A, x_ext_A, w_TV_A, rend_TV_A, rend_CC_A]=
CicloVap_2P_Desg_Paralelo( [30, 120], 0.0571, 1.1, [5, 10], [10, 60], [30 5], 20,
0.85,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Simulación B:
[t5_B, Mt_B, q_tot_B, q_caldera_B, x6_B, x_ext_B, w_TV_B, rend_TV_B, rend_CC_B]=
CicloVap_2P_Desg_Paralelo( [30, 120], 0.0571, 1.1, [5, 10], [10, 50], [30 5], 20,
0.85,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Simulación C:
[t5_C, Mt_C, q_tot_C, q_caldera_C, x6_C, x_ext_C, w_TV_C, rend_TV_C, rend_CC_C]=
CicloVap_2P_Desg_Paralelo( [30, 120], 0.0571, 1.1, [5, 10], [05, 50], [30 5], 20,
0.85,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
800
Simulación A
700
Simulación B
600
Temperature (º C)
Simulación C
500
400
300
200
100
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
Simulación A
350
Simulación B
Temperature (º C)
300
Simulación C
250
200
150
En la segunda comparación se han variado los PP de alta y de baja, sabiendo que la modificación de
los AP tendrá un efecto similar, si bien menos acusado. Se puede ver que tienen un efecto significativo
sobre los puntos de vapor sobrecalentado. Si se disminuye el PP o el AP de alta, el ciclo de baja dispone
de menos calor para sobrecalentarse, y puede de hecho llegar a producirse el error de que el ciclo de alta
tome energía del de baja, produciendo ue h5b < h4b , como se puede ver en las figuras (2.37, 2.38). Por
tanto, un descenso de los AP o PP de alta debe ser compensado con un descenso de dichos valores en el
ciclo de baja presión, como se ha hecho en la simulación C.
Se puede ver que la disminución de cualquiera de estos valores aumenta la temperatura de salida del
fluido sobrecalentado de alta presión.
COMPARACIÓN 3:
Por último, antes de comenzar con las simulaciones de ciclos supercríticos, se va a comparar el efecto
del parámetro x_alta, por medio de las siguientes simulaciones:
Simulación A:
[t5_A, Mt_A, q_tot_A, q_caldera_A, x6_A, x_ext_A, w_TV_A, rend_TV_A, rend_CC_A]=
CicloVap_2P_Desg_Paralelo( [30, 120], 0.0571, 1.1, [10, 10], [8, 60], [30 5], 20,
0.85,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Simulación B:
[t5_B, Mt_B, q_tot_B, q_caldera_B, x6_B, x_ext_B, w_TV_B, rend_TV_B, rend_CC_B]=
CicloVap_2P_Desg_Paralelo( [30, 120], 0.0571, 1.1, [10, 10], [8, 60], [30 5], 20,
0.87,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
800
700
Simulación A
600
Simulación B
Temperature (º C)
500
400
300
200
100
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
Figura 2.39: Diagrama T q: Ejemplo 3 de Simulación; Variación de la fracción de caudal másico de alta
(Elaboración propia)
Como se puede ver, un pequeño aumento de x_alta implica que el ciclo de baja se caliente mucho más,
dado que absorbe la misma cantidad de calor pero dispone de menos caudal para absorberlo. La variación
de este parámetro debe realizarse cuidadosamente dado que en muchos casos puede producirse un error,
como se puede ver en la simulación B. Aumentar x_alta produce, de la misma forma, un descenso de
t5a , al disponer de una cantidad menor de calor (dado que evaporar más caudal necesita de más energía)
y además tener que elevar la temperatura de más masa.
800
Simulación A
700
Simulación B
600
Temperature (º C)
Simulación C
500
Simulación D
400
300
200
100
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
Cuadro 2.7: Resultados de la Simulación de cuatro Ciclos Supercríticos de Vapor con Ciclo-
Vap_2P_Desg_Paralelo
y por tanto con una temperatura menor), el trabajo obtenido en las turbinas y los rendimientos son
menores.
ii) Disminuir P Pb implica aumentar tanto T5b como T5a , lo cual conlleva un aumento de los rendimien-
tos de la TV y del CC. En el caso supercrítico, modificar l apresión de baja no conlleva cambios
significativos a no ser que se varíe mucho.
iii) Una disminución de x_alta aumenta la cantidad de calor que irá destinada al ciclo de baja, y se
consigue aumentar T5b . Además, el calor restante tras sobrecalentar el ciclo de baja, aunque menor
que si no se hubiera modificado x_alta, logra aumentar T5a dado que se compensa este menor
calor con la menor cantidad de fluido supercrítico que es necesario calentar. Por contra, el trabajo
obtenido en las turbinas es menor debido a que una mayor parte del caudal realiza solo la expansión
desde pb en vez de realizar una previa desde pa . Esto provoca que el rendimiento del ciclo de vapor
y del ciclo combinado disminuyan. Se puede ver que los ciclos supercríticos, al tener deslocaizado
el punto 3b, son más flexibles en cuanto a variaciones de esta y otras variables.
iv) Se puede observar que los rendimientos obtenidos en ciclos supercríticos son significativamente
mayores que los que ofrecen los ciclos subcríticos, y que se elimina el problema del título de vapor
en los últimos escalonamientos de las turbinas, sobre todo si se disminuye x_alta.
En este ciclo, los puntos característicos exteriores a la CRC se mantienen, por lo que los diagramas h s
y T s son idénticos. Es dentro de la CRC donde se realizan modificaciones, por estar el economizador de
alta y el sobrecalentador de baja. Además, se han implementado las posibilidades de que el sobrecalentador
de baja esté situado antes o después del economizador de alta, o incluso que se encuentre en medio. Esto
se ha realizado buscando que los puntos de agua a mayor temperatura estén en las zonas donde los gases
de combustión también estén a más temperatura.
Por tanto, se tienen las diferentes posibilidades:
Caso 1) El sobrecalentador de baja está situado antes del economizador de alta. En este caso, T2a > T5b .
Caso 2) El sobrecalentador de baja está situado en mitad del economizador de alta; este se divide en dos
tramos para acomodar al sobrecalentador en medio. Esto sucede en caso de que T2a > T5b , pero
T5b > TGG CC − DTbaja .
Caso 3) El economizador de alta está situado antes del sobrecalentador de baja. Esto sucede si T5b > T2a .
Caso 4) El economizador de alta está situado entre el sobrecalentador de baja. Esto se da si T5b > T2a y
T2a > TGG CC − DTalta .
En cualquiera de los casos, los puntos característicos del ciclo de vapor no varían, por lo que los pará-
metros de salida se mantienen invariantes. Se trata por tanto una forma de asegurar que esos resultados
pueden conseguirse con esta configuración y darlos como válidos, en lugar de tener que desecharlos por
sobrepasar la temperatura del agua a la de los gases de combustión en algún punto.
En la figura (2.41) pueden verse los tres primeros casos expuestos, que son los más frecuentes. Como
se puede ver, se favorece que los puntos de más temperatura se coloquen más a la derecha. En los casos
2 y 4 se ha decidido realizar una iteración hasta encontrar el punto en el que T5b o T2a , respectivamente,
tengan una temperatura igual al punto intermedio a partir del cual se vuelve a tener el economizador de
alta o el sobrecalentador de baja. Este punto intermedio se ha llamado Ia en el caso 2, e Ib en el caso
4. Como se puede ver, en el caso 2 (y también en el 4) se recurre a un punto intermedio entre 4g y 3g,
llamado Ig. Este punto tiene asociado el calor q_int_23.
Los puntos 1,2,3, y 4, tanto de alta como de baja presión, se averiguan según los procedimientos
vistos hasta el momento. También los puntos característicos de los GGCC que se sitúan sobre ellos. Los
puntos exteriores a la CRC también siguen la misma metodología de obtención.
Se pasa a describir el proceso de obtención del resto de puntos, omitiendo la explicación de cada
uno, puesto que ya ha sido realizada en la Sección (2.5.1). También se omiten a partir de este momento
los balances de enrgía y otras ecuaciones, a no ser que se diferencie con lo visto hasta el momento. Se
recuerda que, en caso de querer consultar dichas ecuaciones, estas aparecen en el código del programa.
5b: Vapor sobrecalentado a presión de baja. Para obtenerlo, se tiene en cuenta que se conoce
su presión, y se realiza un balance de energía entre los puntos 5g y 3g de la CRC, dado que entre ellos
la única incógnita es h5b .
800
700
600
500
3g
400
2a
300 5g 4g
5b
200
4b 1a
100
0 100 q2 q3 200 q4 400 500 600 700
(a) Caso 1
800
700
600
500
3g
400
Ig
4g
300 Ia 2a
5g Ia
5b
200
4b
4b 1a
100
0 100 q2 qint23 q3 q4 400 500 600 700
(b) Caso 2
800
700
600
500
3g
400 4g
5b
2a
300
5g 1a
200
4b
4b 1a
100
0 100 q2 200 q3 q4 400 500 600 700
(c) Caso 3
4g: Gases de combustión a la altura del comienzo del sobrecalentador de baja. Una vez
conocida la entalpía h5b , es inmediato hallar este punto, realizando un balance de energía entre los puntos
5g y 4g.
Una vez que se conocen 5b y 4g, se inicia un proceso de comparación con 2a, tras el cual se se habrán
reubicado estos puntos y calculado los estados intermedios de ser necesario realizar dicha tarea. Este
proceso se explicará en detalle cuando se analice el código del programa.
En caso de que la presión de alta sea supercrítica, se vuelve a tener un grado de libertad que se
empleará, igual que en el caso de ciclo 2P en paralelo, en asegurar que la entropía del punto resultante
de la expansión del caudal de alta hasta la de baja coincida con la entropía del vapor sobrecalentado de
baja presión, utilizando para ello la misma metodología. Esta consiste en iterar la temperatura del vapor
sobrecalentado de alta presión hasta conseguir aquella T5a que satisface las condiciones impuestas.
Por ser un caso de ciclo en cascada, se ha implementado la posibilidad de que el sobrecalentamiento de
baja esté intercalado con el intercambiador de calor del flujo supercrítico. No se ha valorado la posibilidad
de que todo el calentamiento supercrítico se realice antes que el sobrecalentamiento subcrítico que las
mayores temperaturas se dan en los caudales de mayor presión.
800
1g
700
5a
600
2g
Temperature (ºC)
500
3g
5b
400
300
4b 1a
200
100
0 100 200 300 q2 400 q3 500 600 q4
Exchanged Heat (kJ/kg of air)
(a) Caso 1
800
1g
700
Ig
2g 5a
600
Temperature (ºC)
500 Ia 5b Ia
3g
400
1a
300
4b 4b
200
100
0 100 200 300 q2 400 500 q3 600 qint34 q4
Exchanged Heat (kJ/kg of air)
(b) Caso 2
Caso 2) El sobrecalentador de baja está situado en mitad del intercambiador supercrítico; este se divide
en dos tramos para acomodar al sobrecalentador en medio. Esto sucede en caso de que T5b >
TGG CC − DTbaja .
A parte de la posibilidad de poder intercalar el sobrecalentador de baja (lo cual se hace de la misma
forma que en el ciclo subcrítico), la única diferencia con el ciclo equivalente en paralelo es que el punto
2g pasa a estar localizado. Se recuerda que en el caso en el que el vapor sobrecalentado de baja presión
va en paralelo con el flujo supercrítico se tenía la libertad de elegir hasta qué punto se alargaba el
sobrecalentador dentro de la CRC, pudiendo asegurar que la temperatura de este flujo no superase la
de los GGCC. En este caso, dado que un intercambiador va a continuación del otro, el punto 2g puede
function [t5, Mt, qtot, q_caldera, x6, x_ext, w_TV, rend_TV, rend_CC, error]= ...
CicloVap_2P_Desg_Cascada( p, p_cond, p_ext, AP, PP, DT, DI,x_alta,rend, perd_carga, ...
grafica, clearfigures,t1_g, t_sal_g, x, ratio, rend_TG)
%%
% CICLO DE VAPOR, 2P, CON DESGASIFICADOR, CON ALTA Y BAJA EN CASCADA, SIN RECALENTADOR
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
En esta Sección se detalla la parte del programa utilizada para la caracterización de los puntos que
difiere con la explicada para el ciclo en paralelo.
Primero se va a mostrar la forma de obtener 5b y las comparaciones realizadas para determinar si se
trata del caso 1, 2, 3, ó 4.
baja. Tras obtener este valor de h2g y su temperatura correspondiente se realiza una comparación de temperaturas, y de
ser necesario se sigue el procedimiento necesario, que será explicado más adelante.
% mg(h4g-h5g)=ma(hIA-h1a); IA-->
hIA=h1_a+Ma*(h4_g-h5_g);
pIA=p1_a+(p2_a-p1_a)*(hIA-h1_a)/(h2_a-h1_a);
tIA=XSteam('T_ph', pIA, hIA);
sIA=XSteam('s_ph', pIA, hIA);
% mg(hIG-h4g)=mb(h5b-h4b); IG-->
hIG=h4_g+(1/Mb)*(h5_b-h4_b);
tIG=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)- ...
hIG/ratio*MW_gases_comb,t4_g,options);
tIG=tIG-273.15;
casoSobrec1=2;
dif_T_baja=t5_b-(tIG-DT_baja);
end
else
%mg(h4g-h5g)=ma(h2a-h1a); 4g-->
h4_g=h5_g+(1/Ma)*(h2_a-h1_a);
t4_g=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)- ...
h4_g/ratio*MW_gases_comb,t5_g,options);
t4_g=t4_g-273.15;
casoSobrec1=3;
dif_T_baja=t5_b-(t3_g-DT_baja);
if t2_a>t4_g-DT_alta
k=fsolve(@(k) calculo_k_2P_Desg_Cascada_Sobrec1(k, t2_a, p4_b, h4_b, p5_b, ...
h5_b, DT_alta, Mb, t4_g, h5_g, x, MW_gases_comb, ratio), 1, options);
t4_g=t4_g+k*(t2_a-(t4_g-DT_alta))+273.15;
h4_g=(x(1)*th_prop('h','CO2',t4_g)+x(2)*th_prop('h','H2O',t4_g)+ ...
x(3)*th_prop('h','N2',t4_g)+x(4)*th_prop('h','O2',t4_g))/MW_gases_comb*ratio;
t4_g=t4_g-273.15;
% mg(h4g-h5g)=ma(hIB-h4b); IB-->
hIB=h4_b+Mb*(h4_g-h5_g);
pIB=p4_b+(p5_b-p4_b)*(hIB-h4_b)/(h5_b-h4_b);
tIB=XSteam('T_ph', pIB, hIB);
sIB=XSteam('s_ph', pIB, hIB);
% mg(hIG-h4g)=ma(h2a-h1a); IG-->
hIG=h4_g+(1/Ma)*(h2_a-h1_a);
tIG=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t) ...
-hIG/ratio*MW_gases_comb,t4_g,options);
tIG=tIG-273.15;
casoSobrec1=4;
end
end
Se pasa a explicar el proceso seguido para cada caso, manteniendo el orden anterior, que es el que
sigue el código, distinguiendo los casos mediante sentencias condicionales.
Caso 1: Sobrecalentador de baja antes del economizador de alta
En este caso se calcula la entalpía del punto 4g realizando un balance, y no es necesario realizar más
alteraciones en el programa hasta llegar a la representación gráfica.
Caso 2: Sobrecalentador de baja entre el economizador de alta
En este caso se va a variar la posición en la CRC de los puntos característicos del ciclo de vapor, por lo
que se modifica el punto 4g. Para ello se recurre a fsolve y a la función auxiliar
calculo_k_2P_Desg_Cascada_Sobrec1, que se analizará a continuación. Al finalizar la iteración se ob-
tiene un valor de k, que es una variable que se ha definido para ayudar a asignar la nueva T4g , mediante
la ecuación:
T4g = T4g + (T5b − (T4g − DTbaja )) · k
Tras haber reubicado el punto 4g, se obtienen mediante balances los puntos intermedios del economizador
de alta presión, IA, y de los GGCC, IG.
La función auxiliar calculo_k_2P_Desg_Cascada_Sobrec1 toma las variables necesarias para, a partir
de un valor de k, hallar la temperatura del punto intermedio del economizador de alta y compararlat con
T5b , ya que se ha tomado como base de diseño que estas coincidan. Esta elección se ha realizado sabiendo
que , para facilitar el intercambio de calor, el fluido de mayor temperatura debe estar en donde a más
temperatura estén los GGCC. A continuación se muestra el código de dicha función:
dif=t_fin_int-tI_ext;
error=0;
if isnan(t5_a)
disp('Las condiciones del ciclo estan fuera de lo permitido y no existe una t5_a ...
para ellas Aumentar AP_a o PP_a');
error=1;
end
if(t5_a>t1_g-DT_alta)
disp('Las condiciones del ciclo estan fuera de lo permitido yt5_a es mayor de lo ...
debido. Aumentar AP_a o PP_a');
error=2;
end
if(dif_T_baja>0)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_b es mayor de lo ...
debido. Aumentar AP_b o PP_b, o disminuir AP_a o PP_a');
error=3;
end
if(h5_b<h4_b)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto 5_b es de ...
equilibrio bifasico. Aumentar AP_a o PP_a, o disminuir AP_b o PP_b');
error=4;
end
if(h5_a<h4_a)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto 5_a es de ...
equilibrio bifasico. Disminuir AP_a o PP_a');
error=5;
end
Se puede ver que las comprobaciones son similares a las llevadas a cabo para el ciclo en paralelo, ex-
ceptuando la comprobación de la temperatura T5b , que se ha realizado mediante la variable dif_T_baja
para evitar la repetición de sentencias condicionantes innecesarias.
q_econ_1=h6_g-h7_g; q1=q_econ_1;
q_evap_1=h5_g-h6_g; q2=q1+q_evap_1;
if casoSobrec1==1 %
q_sobrec_1=h4_g-h5_g; q3=q2+q_sobrec_1;
q_econ_2=h3_g-h4_g; q4=q3+q_econ_2;
elseif casoSobrec1==2
q_econ_2A=h4_g-h5_g; q_int_23=q2+q_econ_2A;
q_sobrec_1=hIG-h4_g; q3=q_int_23+q_sobrec_1;
q_econ_2B=h3_g-hIG; q4=q3+q_econ_2B;
elseif casoSobrec1==3
q_econ_2=h4_g-h5_g; q3=q2+q_econ_2;
q_sobrec_1=h3_g-h4_g; q4=q3+q_sobrec_1;
elseif casoSobrec1==4
q_sobrec_1A=h4_g-h5_g; q_int_23=q2+q_sobrec_1A;
q_econ_2=hIG-h4_g; q3=q_int_23+q_econ_2;
q_sobrec_1B=h5_g-hIG; q4=q3+q_sobrec_1B;
end
q_evap_2=h2_g-h3_g; q5=q4+q_evap_2;
q_sobrec_2=h1_g-h2_g; q6=q5+q_sobrec_2; %[q]=kJ/kg_aire
%% % % % % GRAFICA CRC % % % % % %
if clearfigures
figure(3); clf
end
figure(3); hold all;
%% % ciclo de baja % % %
plot([0 , q1],...
[t1_b, t2_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
plot([q1 , q2 ],...
[t3_b, t4_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
if casoSobrec1==1 % El de T mayor mas a la derecha
%% % ciclo de baja % % %
plot([q2 , q3 ],...
[t4_b, t5_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
%% % ciclo de alta % % %
plot([q3, q4],...
[t1_a, t2_a],'linewidth', 2, 'color', [0 0.75 0.75]);
elseif casoSobrec1==2
%% % ciclo de baja % % %
plot([q_int_23 , q3 ],...
[t4_b , t5_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
%% % ciclo de alta % % %
plot([q2 , q_int_23],...
[t1_a, tIA ],'linewidth', 2, 'color', [0 0.75 0.75]);
plot([q3 , q4 ],...
[tIA, t2_a],'linewidth', 2, 'color', [0 0.75 0.75]);
elseif casoSobrec1==3
%% % ciclo de baja % % %
plot([q3 , q4],...
[t4_b, t5_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
%% % ciclo de alta % % %
plot([q2, q3],...
[t1_a, t2_a],'linewidth', 2, 'color', [0 0.75 0.75]);
elseif casoSobrec1==4
%% % ciclo de baja % % %
plot([q2 , q_int_23],...
[t4_b, tIB ],'linewidth', 2, 'color', [0 0.2 0.6]);
plot([q3 , q4 ],...
[tIB, t5_b],'linewidth', 2, 'color', [0 0.2 0.6]);
%% % ciclo de alta % % %
plot([q_int_23 , q3 ],...
[t1_a , t2_a], 'linewidth', 2, 'color', [0 0.75 0.75]);
end
%% % ciclo de alta % % %
plot([q4 , q5 , q6],...
[t3_a, t4_a, t5_a],'linewidth', 2, 'color', [0 0.75 0.75]);
%% % gg cc % % %
if casoSobrec1==2 || casoSobrec1==4
plot([0 , q1 , q2 , q_int_23, q3 , q4 , q5 , q6 ],...
[t7_g, t6_g , t5_g, t4_g , tIG , t3_g, t2_g, t1_g], 'linewidth', 2, ...
'color', [0.635 0.078 0.184]);
else
plot([0 , q1 , q2 , q3 , q4 , q5 , q6 ],...
[t7_g, t6_g , t5_g, t4_g, t3_g, t2_g, t1_g], 'linewidth', 2, 'color', [0.635 ...
0.078 0.184]);
end
Como se puede ver, la metodología es la misma que la seguida en otros casos más simples, con la adición
de la implementación de las posibles configuraciones del sobrecalentador de baja y economizador de alta,
lo cual se ha realizado mediante sentencias condicionantes if.
%% % OUTPUTS % % %
t5=[t5_b, t5_a];
qtot=h1_g-h_salida_g;
q_inicio=(h2_b-h1_b)/Mt;
q_baja=(h5_b-h2_b)/Mb;
q_alta=(h5_a-h1_a)/Ma;
q_caldera=[q_inicio, q_baja, q_alta]/qtot*100;
w_TV=(h5_a-h6_a)/Ma+(h5_m-h6)/Mt; % en kJ/kg_aire
w_Bba=((h1_b-h9)+(h8-h7)*(1-x_ext))/Mt+(h1_a-h3_b)/Ma;
rend_TV=(w_TV-w_Bba)/(h1_g-h_salida_g)*100;
rend_CC=rend_TV+rend_TG-rend_TV*rend_TG/100;
p5_a=p_a*(1-perd_carga_sobrec/100);
p5_b=p_b*(1-perd_carga_sobrec/100);
%5_a
h5_a=XSteam('h_pT', p5_a, t5_a);
s5_a=XSteam('s_pT', p5_a, t5_a);
%mg(h1g-h3g)=mb(h5b-h4b)+ma(h5a-h1a)-->sacamos el punto 5b
h5_b=h4_b+Mb*(h1_g-h3_g)-(x_alta/x_baja)*(h5_a-h1_a);
t5_b=XSteam('T_ph', p5_b, h5_b);
s5_b=XSteam('s_ph', p5_b, h5_b);
%mg(h2g-h3g)=mb(h5b-h4b); 2g-->
h2_g=h3_g+(1/Mb)*(h5_b-h4_b);
t2_g=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)-h2_g/ratio*MW_gases_comb,t3_g,options);
t2_g=t2_g-273.15;
Una vez obtenidos estos puntos, se pasa a comprobar si la temperatura T5b es mayor de lo debido, en
cuyo caso se intercala el sobrecalentador de baja con el ciclo supercrítico.
casoSobrec1=1;
dif_T_baja=t5_b-(t2_g-DT_baja);
if t2_g-DT_baja<t5_b
k=fsolve(@(k)calculo_k_2P_Desg_Cascada(k, h4_b, t5_b, h5_b, p1_a, h1_a, p5_a, h5_a, ...
DT_baja, Mb, Ma, t2_g, h3_g, x, MW_gases_comb, ratio), 1, options);
tIG=t5_b+DT_baja+273.15+k*(t5_b-(t2_g-DT_baja));
hIG=(x(1)*th_prop('h','CO2',tIG)+x(2)*th_prop('h','H2O',tIG)+ ...
x(3)*th_prop('h','N2',tIG)+x(4)*th_prop('h','O2',tIG))/MW_gases_comb*ratio;
tIG=tIG-273.15;
% mg(hIG-h2g)=mb(h5b-h4b)
h2_g=hIG-(1/Mb)*(h5_b-h4_b);
t2_g=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)- ...
h2_g/ratio*MW_gases_comb,t3_g,options);
t2_g=t2_g-273.15;
% mg(h2g-h3g)=ma(hIA-h1a)
hIA=h1_a+Ma*(h2_g-h3_g);
pIA=p1_a+(p5_a-p1_a)*(hIA-h1_a)/(h5_a-h1_a);
tIA=XSteam('T_ph', pIA, hIA);
sIA=XSteam('s_ph', pIA, hIA);
casoSobrec1=2;
dif_T_baja=t5_b-(tIG-DT_baja);
end
En caso de que no haya que realizar modificaciones porque el punto 5b está dentro de los límites, nos
encontramos en el caso 1 (casoSobrec1=1;) y no hay que realizar modificaciones. De no ser así, se trata
del caso 2, y se comienza una iteración para hallar un punto intermedio en la evolución de los GGCC,
IG, que se adecúe a las necesidades del ciclo. La función auxiliar utilizada es la misma que en el caso
subcrítico.
Se puede ver que en ambos casos se inicializa la variable dif_T_baja, cuya finalizad es la misma que
en el caso subcrítico; poder comprobar que, tras las modificaciones realizadas, T5b toma un valor válido.
A continuación se muestran los posibles casos imposibles que se han tenido en cuenta:
error=0;
if (t5_a>t1_g-DT_alta)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_a es mayor de lo ...
debido. ');
error=6;
end
if (dif_T_baja>0)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_b es mayor de lo ...
debido. Aumentar AP_b o PP_b');
error=7;
end
if (h5_b<h4_b)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto 5_b es de ...
equilibrio bifasico. Disminuir AP_b o PP_b');
error=8;
end
puntos=100;
q_econ_1=h4_g-h5_g; q1=q_econ_1;
q_evap_1=h3_g-h4_g; q2=q1+q_evap_1;
if casoSobrec1==1
q_sobrec_1=h2_g-h3_g; q3=q2+q_sobrec_1;
q_superc=h1_g-h2_g; q4=q3+q_superc;
qtot_g21=h1_g-h2_g;
q_g21=linspace(0, qtot_g21, puntos);
P=linspace(p1_a,p5_a,puntos);
h_ia=zeros([1, puntos]);
t_ia=zeros([1, puntos]);
for i=1:1:puntos
h_ia(i)=h1_a+Ma*q_g21(i);
t_ia(i)=XSteam('T_ph',P(i),h_ia(i));
end
elseif casoSobrec1==2
q_superc1=h2_g-h3_g; q3=q2+q_superc1;
q_sobrec_1=hIG-h2_g; q_int_34=q3+q_sobrec_1;
q_superc2=h1_g-hIG; q4=q_int_34+q_superc2;
qtot_g32=h2_g-h3_g;
q_g32=linspace(0, qtot_g32, puntos);
P1=linspace(p1_a,pIA,puntos);
h_ia1=zeros([1, puntos]);
t_ia1=zeros([1, puntos]);
for i=1:1:puntos
h_ia1(i)=h1_a+Ma*q_g32(i);
t_ia1(i)=XSteam('T_ph',P1(i),h_ia1(i));
end
qtot_gIG1=h1_g-hIG;
q_gIG1=linspace(0, qtot_gIG1, puntos);
P2=linspace(pIA,p5_a,puntos);
h_ia2=zeros([1, puntos]);
t_ia2=zeros([1, puntos]);
for i=1:1:puntos
h_ia2(i)=hIA+Ma*q_gIG1(i);
t_ia2(i)=XSteam('T_ph',P2(i),h_ia2(i));
end
end %[q]=kJ/kg_aire
%% % ciclo de baja % % %
plot([0 , q1],...
[t1_b, t2_b],...
[q1 , q2 ],...
[t3_b, t4_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
if casoSobrec1==1
%% % ciclo de baja % % %
plot([q3 , q4 ],...
Dado que los resultados obtenidos son similares al caso equivalente en paralelo, se va a realizar una
comparación conjunta de los ciclos subcrítico y supercrítico. Estas simulaciones se realizarán para el
mismo CicloGas.
Ciclo de Gas:
[t1_g, t2_g, x, Fr, ratio, w_TG, rend_TG]=
CicloGas(300, 1, 12, [0.88,0.98,0.93], [0.05, 0.08, 0.06], 1750, -1, 1, 1);
Simulación A:
[t5_A, Mt_A, q_tot_A, q_caldera_A, x6_A, x_ext_A, w_TV_A, rend_TV_A, rend_CC_A]=
CicloVap_2P_Desg_Cascada( [20, 120], 0.0571, 1.1, [4, 5], [5, 30], [5 5], 20,
0.9,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Simulación B:
[t5_B, Mt_B, qtot_B, q_caldera_B, x6_B, x_ext_B, w_TV_B, rend_TV_B, rend_CC_B]=
CicloVap_2P_Desg_Cascada( [20, 120], 0.0571, 1.1, [4, 8], [5, 30], [5 5], 20,
0.9,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Simulación C:
[t5_C, Mt_C, qtot_C, q_caldera_C, x6_C, x_ext_C, w_TV_C, rend_TV_C, rend_CC_C]=
CicloVap_2P_Desg_Cascada( [20, 230], 0.0571, 1.1, [4, 5], [5, 30], [5 5], 20,
0.9,[0.9,0.88], [3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Observando la gráfica (2.43) y los resultados expuestos en el cuadro adjunto se puede ver cómo el
aumento del APa conlleva una pequeña variación en los parámetros de salida, conllevando al final un
ligero descenso del rendimiento del ciclo combinado. A pesar de ello, y dada la alta fracción másica del
caudal de alta, esta peque na variación supone un incremento significativo de la temperatura del punto
de baja 5b.
De estos resultados se desprende también que el uso de presiones supercríticas conlleva un aumento
significativo del rendimiento del ciclo, si bien disminuye de manera notable el título de vapor a la salida
de la turbina, por lo que hay que comprobar que este valor no descienda por debajo del límite de 0.85.
800
Simulación A
700
Simulación B
600
Temperature (ºC)
500
Simulación C
400
300
200
100
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
800
700 Simulación A
600 Simulación B
Temperature (ºC)
500
Simulación C
400
300
200
100
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
Figura 2.45: Configuración del Ciclo de Vapor y la CRC para dos niveles de presión en paralelo, con
recalentamiento y presiones subcríticas (Elaboración propia)
A continuación se pasa a comentar los puntos característicos nuevos que este ciclo incorpora, así como
su forma de obtención, además de las novedades en el cálculo de otros puntos ya conocidos.
5b: Vapor sobrecalentado a presión de baja. Se obtiene realizando un balance al tramo com-
partido por el sobrecalentador de baja y el economizador de alta.
mg · (h3g − h4g ) = mb · (h5b − h4b ) + ma · (h2a − h1a ) (2.37)
700
600
5a 5m
500
Temperature (ºC)
400
4a
2a,3a 5b
300
4m
2b,3b,1a 4b 6a ext
200
100 9,1b
7,8 6
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
Figura 2.46: Diagrama T q del Ciclo de Vapor 2P Subcrítico con Recalentamiento (Elaboración propia)
800
1g
700
5a
600 5m
Temperature (ºC)
500 2g
400
3g 4a
300
4g 2a,3a
4m
5g 1a
200
6g 5b
2b,3b 4b
100 1b
0 q1 100 q2 200 q3 300 q4 400 500 600 q5 700
Exchanged Heat (kJ/kg of air)
Figura 2.47: Diagrama T q del Ciclo de Vapor 2P Subcrítico con Recalentamiento (Elaboración propia)
5a: Vapor sobrecalentado a presión de alta. Para hallarlo se recurre a un proceso iterativo
similar al visto en otras ocasiones. En él, se itera con un valor de T5a , con lo que se puede obtener el
punto 5a y el resto de puntos del ciclo con la imposición de que T5m = T5a , es decir, de que el caudal
recalentado adquiera la misma temperatura que el vapor sobrecalentado del ciclo de alta. Una vez hecho
esto, se comprueba si el calor disponible por los gases en combustión es igual al que necesita el ciclo para
la temperatura T5a impuesta.
5m: Vapor recalentado. Se introduce una nueva componente al vector que contiene las pérdidas
de carga para tener en cuenta las pérdidas que tienen lugar en este tramo. Por tanto, con esto obtenemos
p5m . Esto y la imposición de que T5m = T5a permiten obtener el resto de propiedades del punto.
El resto de puntos del ciclo se obtienen de la misma forma que en los ciclos sin recalentamiento.
Aparecen dos intermedios en la evolución del fluido supercrítico que son de interés para calcular la
curva T q. Estos puntos marcan los lugares de la CRC en los que el intercambiador de calor supercrítico
700
600
500
Temperature (ºC)
400
300
200
100
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
Figura 2.48: Diagrama T q del Ciclo de Vapor 2P Supercrítico con Recalentamiento (Elaboración propia)
800
1g
700
5a, 5m
600
Temperature (ºC)
2g
500
3g Ia2
400
4g Ia1
300
5g 4m
200 1a 5b
6g
2b,3b 4b
1b
100
0 q1 100 200 q2 300 q3 q4 500 600 q5 700
Exchanged Heat (kJ/kg of air)
Figura 2.49: Diagrama T q del Ciclo de Vapor 2P Supercrítico con Recalentamiento (Elaboración propia)
absorbe calor a la vez que otro elemento, y a eso se debe el cambio de curvatura que se produce al pasar
dichos puntos, notablemente visible cuando comienza el recalentamiento.
Además, se aprovecha el grado de libertad que proporciona la ausencia de PP y AP de alta, y se
impone que la entropía del vapor sobrecalentado de baja coincida con la del fluido proveniente de la
explansión en la turbina de alta.
Se obtiene el punto 5a mediante un proceso iterativo con fsolve, como se ha explicado al inicio de
la Sección. Una vez conseguido este punto, se obtienen 5m, 6a, 4m y 5b. Este proceso se verá más
detalladamente cuando se comente el código del programa.
3g: Punto característico de los GGCC en el cual se extrae el caudal de baja de la CRC.
Una vez obtenidos los puntos mencionados se procede a la obtención de la entalpía de este punto. Se
recuerda que, como en el caso paralelo sin recalentamiento, se dispone de cierta libertad para fijar este
punto. Se vuelve a recurrir a la estimación inicial de que el caudal supercrítico absorbe en ese tramo
un tercio del calor total que necesita. Con ello, se obtiene una T3g para la cual se comprueba que
T3g − DTbaja > T5b . De no ser así, se aumenta la cantidad de calor que absorberá el flujo supercrítico en
ese tramo. Se recuerda que esto se realiza porque no tiene efecto sobre los parámetros de salida de nuestro
ciclo, y que su objetivo es conseguir ubicar el punto 5b en un lugar de la CRC en el que su temperatura
Ia1: Punto de la evolución del flujo supercrítico a partir del que este pasa a absorber
calor solo. Una vez obtenido 3g es inmediato, mediante un balance de energía entre los puntos 4g y
3g, obtener la entalpía de este punto. Su presión se obtiene suponiendo un descenso lineal de la misma
conforme el fluido supercrítico avanza por la CRC:
hIA1 − h1a
pIA1 = p1a + (p5a − p1a ) · (2.40)
h5a − h1a
Ia2: Punto de la evolución del flujo supercrítico a partir del que este pasa a absorber
calor en paralelo al caudal de recalentamiento. Una vez obtenido 2g es inmediato, mediante un
balance de energía entre los puntos 2g y 1g, obtener la entalpía de este punto. Su presión se obtiene
suponiendo un descenso lineal de la misma conforme el fluido supercrítico avanza por la CRC:
hIA2 − h1a
pIA2 = p1a + (p5a − p1a ) · (2.42)
h5a − h1a
Cabe remarcar que p1a > p5a , por lo que tanto pIA1 como pIA2 son menores que p1a .
El cálculo del resto de puntos no guarda diferencias significativas con respecto a lo visto en otras
Secciones.
Estas no difieren de las utilizadas en otros ciclos 2P, pero se añade una componente al parámetro
de salida q_caldera, con el porcentaje de calor utilizado en el recalentamiento, y otra al parámetro de
entrada perd_carga, con las pérdidas de carga que tienen lugar durante el recalentamiento (en %).
function [t5, Mt, qtot, q_caldera, x6, x_ext, w_TV, rend_TV, rend_CC, error] =...
CicloVap_2P_Desg_Rec_Paralelo( p, p_cond, p_ext, AP, PP, DT, DI, x_alta,rend, ...
perd_carga, grafica, clearfigures, t1_g, tsal_g, x, ratio, rend_TG)
%%
%CICLO DE VAPOR, 2P, CON DESGASIFICADOR Y RECALENTADOR, EN PARALELO
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
Esta parte es muy similar a la ya comentada en otros ciclos 2P, por lo que solo se muestra la iniciali-
zación de perd_carga, que es la única variable de entrada que presenta diferencias.
if perd_carga==-1;
perd_carga=[3 3 3];
end
perd_carga_econ=perd_carga(1);
perd_carga_sobrec=perd_carga(2);
perd_carga_rec=perd_carga(3);
A continuación se enseña el código utilizado para obtener los puntos novedosos tanto por el método
utilizado como porque no existían en ciclos anteriores.
p5_a=p_a*(1-perd_carga_sobrec/100);
Se puede ver cómo, una vez caracterizado el punto 5b, se pueden obtener el resto de puntos necesarios
para calcular la energía total necesaria para llevar a cabo los procesos deseados. Esto es así porque se
tienen las entalpías de inicio y finalización de estos procesos.
Para obtener la T5a que iguale el requerimiento de energía con la disponible en la CRC se utiliza la
función auxiliar calculo_t5_2P_Desg_Rec_sub, que devuelve una diferencia entre dichos calores para
una T5a dada. Esta diferencia es llevada a cero iterando por medio de fsolve. El código de esta función
auxiliar no es sino una versión abreviada del proceso de obtención de los puntos mostrados en el extracto
de programa anterior;
% 6sa
h6_as=XSteam('h_ps', p5_b, s5_a);
% 6a
h6_a=h5_a-rend_s_turb*(h5_a-h6_as);
% 4m
h4_m=x_alta*h6_a+x_baja*h5_b;
% mg(h1_g-h2_g)=mv(h5_m-h4_m)+ma(h5a-h4a); Mtot(h1_g-h2_g)=(h5_m-h4_m)+x_alta(h5a-h4a)
calor_agua=(h5_m-h4_m)+x_alta*(h5_a-h4_a);
calor_gases=Mt*(h1_g-h_inic_rec_g);
dif=calor_agua-calor_gases;
end
Tras hallar estos puntos, el programa obtiene el aquellos aguas abajo de la CRC. Antes de esto, se
verifica que los resultados obtenidos son válidos;
error=0;
if isnan(t5_a)
disp('Las condiciones del ciclo estan fuera de lo permitido y no existe una t5_a para ...
ellas Aumentar AP_a o PP_a');
error=1;
end
if(t5_a>t1_g-DT_alta)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_a es mayor de lo ...
debido. Aumentar AP_a o PP_a');
error=2;
end
if(t5_b>t3_g-DT_baja)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_b es mayor de lo ...
debido. Aumentar AP_b o PP_b, o disminuir AP_a o PP_a');
error=3;
end
if(h5_b<h4_b)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto 5_b es de ...
equilibrio bifasico. Aumentar AP_a o PP_a, o disminuir AP_b o PP_b');
error=4;
end
if(h5_a<h4_a)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto 5_a es de ...
equilibrio bifasico. Disminuir AP_b o PP_b');
error=5;
end
if (h5_m<h4_m)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto recalentamiento ...
no ha cumplido su funcion');
error=6;
end
Primero se realiza la gráfica T q, para lo cual se calculan los calores intermedios necesarios. Al ser
esta configuración en paralelo, es más sencilla la representación que en el caso en cascada, en el que hay
que prever distintas posibilidades.
%% % % % % GRAFICA CRC % % % % % %
q_econ_1=h5_g-h6_g; q1=q_econ_1;
q_evap_1=h4_g-h5_g; q2=q1+q_evap_1;
q_sobrec_1=h3_g-h4_g; q3=q2+q_sobrec_1;
q_iterm_superc=h2_g-h3_g; q4=q3+q_iterm_superc;
q_rec=h1_g-h2_g; q5=q4+q_rec; %[q]=kJ/kg_aire
%% % ciclo de baja % % %
plot([0 , q1],...
[t1_b, t2_b],...
[q1 , q2 , q3],...
[t3_b, t4_b, t5_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
%% % ciclo de alta % % %
plot([q2 , q3 ],...
[t1_a, t2_a],...
[q3 , q4 , q5],...
[t3_a, t4_a, t5_a],'linewidth', 2, 'color', [0 0.5 0.6]);
%% % recalentamiento % % %
plot([q4 , q5],...
[t4_m, t5_m],'linewidth', 2, 'color', [0 0.8 0]);
%% % gg cc % % %
plot([0 , q1 , q2 , q3 , q4 , q5 ],...
[t6_g, t5_g , t4_g, t3_g, t2_g, t1_g], 'linewidth', 2, 'color', [0.635 ...
0.078 0.184]);
xlabel('Exchanged Heat (kJ/kg of air)');
ylabel('Temperature (ºC)');
Tras esto, se pasa a trazar las gr’aficas h s y T s, entre cuyos métodos no hay diferencias, por lo que
sólo se mostrará el código utilizado para el trazado de la primera de estas figuras.
%% % GRAFICO H-S % % %
if clearfigures
figure(4); clf;
fastmollier(1);
else
figure(4); hold all
end
%% % ciclo de baja % % %
plot([s9, sint13_b, sint45_b, sint_5b_6a, sint_4m_5m],...
[h9, hint13_b, hint45_b, hint_5b_6a, hint_4m_5m],'linewidth', 3, 'color', [0 0.2 ...
0.6]);
%% % ciclo de alta % % %
plot([s9, sint13_a, sint45_a, s6_a],...
[h9, hint13_a, hint45_a, h6_a],'linewidth', 3, 'color', [0 0.2 0.6]);
plot([s5_a, sint_6as_6a],...
[h5_a, hint_6as_6a],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
%% % comun % % %
if h6>XSteam('hV_p', p6)
%Puntos intermedios entre 6 y 6_V
[hint_6V, ¬, sint_6V, tint_6V]=calculo_intermedios(h6, XSteam('hV_p', p6), p6, ...
p6, 10);
%Puntos intermedios entre 6s y 6
[hint_6s6, ¬, sint_6s6, tint_6s6]=calculo_intermedios(h6s, h6, p6s, p6, 10);
plot([s5_m, sint_6V, s7, sint_89],...
[h5_m, hint_6V, h7, hint_89],'linewidth', 3, 'color', [0 0.2 0.6]);
plot([s5_m, s6s, sint_6s6, s6],...
[h5_m, h6s, hint_6s6, h6],'color', [0 0.5 0], 'linestyle', ...
'--','linewidth', 2);
else
plot([s5_m, s6, s7, sint_89],...
[h5_m, h6, h7, hint_89],'linewidth', 3, 'color', [0 0.2 0.6]);
plot([s5_m, s6s, s6],...
[h5_m, h6s, h6],'color', [0 0.5 0], 'linestyle', '--','linewidth', 2);
end
if h_ext>XSteam('hV_p', p_ext)
%Puntos intermedios entre ext y ext_V
[hint_extV, ¬, sint_extV, tint_extV]=calculo_intermedios(h_ext, XSteam('hV_p', ...
p_ext), p_ext, p_ext, 10);
plot([sint_extV, s9],...
[hint_extV, h9] ,'linewidth', 3, 'color', [0.5 0.2 0.6]);
else
plot([s_ext, s9],...
[h_ext, h9] ,'linewidth', 3, 'color', [0.5 0.2 0.6]);
end
%% % GRAFICO T-S % % %
%% % %. . . % % % %
%% % OUTPUTS % % %
t5=[t5_b, t5_a];
qtot=h1_g-h_salida_g;
q_inicio=(h2_b-h1_b)/Mt;
q_baja=(h5_b-h2_b)/Mb;
q_alta=(h5_a-h1_a)/Ma;
q_rec=(h5_m-h4_m)/Mt;
q_caldera=[q_inicio, q_baja, q_alta, q_rec]/qtot*100;
w_TV=(h5_a-h6_a)/Ma+(h5_m-h6)/Mt; % en kJ/kg_aire
w_Bba=((h1_b-h9)+(h8-h7)*(1-x_ext))/Mt+(h1_a-h3_b)/Ma;
rend_TV=(w_TV-w_Bba)/(h1_g-h_salida_g)*100;
rend_CC=rend_TV+rend_TG-rend_TV*rend_TG/100;
Cabe resaltar que no se devuelve la temperatura del vapor recalentado dado que es la misma que la del
vapor sobrecalentado de alta.
En este caso, el punto 5a se halla de una forma similar pero no igual a la utilizada en el equivalente
subcrítico. Esto se debe a que no se tiene información suficiente para obtener 5b, por lo que se recurre
a la imposición ya mencionada de que s5b = s6a . Con este dato ya se puede calcular dicho punto sin
recurrir a balances. A continuación se muestra la metodología seguida para obtener los puntos 6sa, 6a,
5b, 4m y 5m a partir del conocimiento del punto 5a.
dif=calor_gases-calor_agua;
end
Tras esto, quedan por obtener los puntos intermedios del flujo supercrítico y los correspondientes
puntos característicos de los GGCC. El procedimiento para hallar estos puntos ya ha sido explicado en
la Sección (2.7.2). A continuación se muestra el código utilizado para implementar dicha metodología:
hIA2=h5_a-Ma*(h1_g-h2_g)+(1/x_alta)*(h5_m-h4_m);
pIA2=p1_a+(p5_a-p1_a)*(hIA2-h1_a)/(h5_a-h1_a);
tIA2=XSteam('T_ph', pIA2, hIA2);
sIA2=XSteam('s_ph', pIA2, hIA2);
Con esta información resulta inmediata la obtención de los puntos característicos restantes del ciclo.
Antes de comenzar este proceso, se verifica que la simulación ha sido correcta;
error=0;
if (t5_a>t1_g-DT_alta)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_a es mayor de lo ...
debido. ');
error=7;
end
if (t5_b>t2_g-DT_baja)
disp('Las condiciones del ciclo estan fuera de lo permitido y t5_b es mayor de lo ...
debido. Aumentar AP_b o PP_b');
error=8;
end
if (h5_b<h4_b)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto 5_b es de ...
equilibrio bifasico. Disminuir AP_b o PP_b');
error=9;
end
if (h5_m<h4_m)
disp('Las condiciones del ciclo estan fuera de lo permitido y el punto recalentamiento ...
no ha cumplido su funcion');
error=10;
end
if (min_dif_Supr_1<0) || (min_dif_Supr_2<0) || (min_dif_Supr_3<0)
disp('Las condiciones del ciclo estan fuera de lo permitido y la temperatura del flujo ...
supercritico supera la de los GGCC en algun punto de la caldera')
error=11;
end
Se ha implementado en este caso la posibilidad de que el fluido supercrítico alcance en algún punto de la
CRC una temperatura mayor que la de los GGCC en dicha zona, lo que se comprueba con las variables
min_dif_Supr_1 para el primer tramo, en paralelo con el sobrecalentador de baja, min_dif_Supr_2 para
el segundo, en solitario, y min_dif_Supr_3 para el tramo final, en el que va en paralelo con el recalentador.
Estos valores contienen la diferencia mínima entre la temperatura de los GGCC y del caudal supercrítico
en los tramos citados, y para obtener est valor se obtiene la curva de temperaturas de ambos caudales
en cada tramo indicado. Esto se realiza mediante el siguiente código, que en otras ocasiones se situaba
dentro de la representación gráfica:
puntos=100;
qtot_g43=h3_g-h4_g;
q_g43=linspace(0, qtot_g43, puntos);
h_ig_1=linspace(h4_g, h3_g, puntos)*MW_gases_comb/ratio;
t_ig_1=zeros([1, puntos]); t_ig_1(1)=t4_g+273.15;
qtot_b45=h5_b-h4_b;
q_b45=linspace(0, qtot_b45, puntos);
P1=linspace(p1_a,pIA1,puntos);
h_ia_1=zeros([1, puntos]); h_ia_1(1)=h1_a;
t_ia_1=zeros([1, puntos]); t_ia_1(1)=t1_a;
for i=2:1:puntos %mg(h3g-h4g)=mb(h5b-h4b)+ma(hIA1-h1a)
h_ia_1(i)=h1_a+Ma*q_g43(i)-(x_baja/x_alta)*q_b45(i);
t_ia_1(i)=XSteam('T_ph',P1(i),h_ia_1(i));
t_ig_1(i)=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)-h_ig_1(i),t_ig_1(i-1),options)-273.15;
end
min_dif_Supr_1=min(t_ig_1-t_ia_1);
qtot_g32=h2_g-h3_g;
q_g32=linspace(0, qtot_g32, puntos);
h_ig_2=linspace(h3_g, h2_g, puntos)*MW_gases_comb/ratio;
qtot_g21=h1_g-h2_g;
q_g21=linspace(0, qtot_g21, puntos);
h_ig_3=linspace(h2_g, h1_g, puntos)*MW_gases_comb/ratio;
t_ig_3=zeros([1, puntos]); t_ig_3(1)=t2_g+273.15;
qtot_m45=h5_m-h4_m;
q_m45=linspace(0, qtot_m45, puntos);
P3=linspace(pIA2,p5_a,puntos);
h_ia_3=zeros([1, puntos]); h_ia_3(1)=hIA2;
t_ia_3=zeros([1, puntos]); t_ia_3(1)=tIA2;
for i=2:1:puntos % mg(h1g-h2g)=mv(h5m-h4m)+ma(h5a-hIA2)
h_ia_3(i)=hIA2+Ma*q_g21(i)-(1/x_alta)*q_m45(i);
t_ia_3(i)=XSteam('T_ph',P3(i),h_ia_3(i));
t_ig_3(i)=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)-h_ig_3(i),t_ig_3(i-1),options)-273.15;
end
min_dif_Supr_3=min(t_ig_3-t_ia_3);
La representación de las gráficas h s y T s es no guarda diferencias relevantes con las de otros ciclos
ya vistos. Para el diagrama T q, aunque se sigue la misma metodología, se va a mostrar dado que hay
dos tramos en los que el flujo supercrítico va en paralelo con otros caudales.
En primer lugar se obtienen los calores que serán utilizados para situar los puntos en la gráfica, y las
curvas con la evolución de la temperatura del fluido supercrítico.
Como se ha visto en casos similares, para obtener estas curvas de temperatura se utilizan balances de
energía aplicados al tramo en cuestión, y realizados no entre el principio y el final del tramo, lo que solo
permitiría obtener un punto de la gráfica, si no que se divide este balance en ‘puntos’ sub-balances.
Esta operación es la que conlleva más tiempo del programa debido a tener que iterar con fsolve
para obtener la curva de temperaturas de los gases. Además, no es común obtener este error e incluso de
darse en el programa no implica necesariamente que se de en la realidad puesto que se puede diseñar la
caldera de forma que se subsane este error. Es por esto que a la hora de obtener resultados se omitirá
esta comprobación.
q_econ_1=h5_g-h6_g; q1=q_econ_1;
q_evap_1=h4_g-h5_g; q2=q1+q_evap_1;
q_sobrec_1=h3_g-h4_g; q3=q2+q_sobrec_1;
q_iterm_superc=h2_g-h3_g; q4=q3+q_iterm_superc;
q_rec=h1_g-h2_g; q5=q4+q_rec; %[q]=kJ/kg_aire
%% % ciclo de baja % % %
plot([0 , q1],...
[t1_b, t2_b],...
[q1 , q2 , q3],...
[t3_b, t4_b, t5_b], 'linewidth', 2, 'color', [0 0.2 0.6]);
%% % ciclo de alta % % %
q_g43=q_g43+q2;
plot( q_g43, t_ia_1,'linewidth', 2, 'color', [0 0.5 0.6]);
q_g32=q_g32+q3;
plot( q_g32, t_ia_2,'linewidth', 2, 'color', [0 0.5 0.6]);
q_g21=q_g21+q4;
plot( q_g21, t_ia_3,'linewidth', 2, 'color', [0 0.5 0.6]);
%% % recalentamiento % % %
plot([q4 , q5],...
[t4_m, t5_m],'linewidth', 2, 'color', [0 0.8 0]);
%% % gg cc % % %
plot([0 , q1 , q2 , q3 , q4 , q5 ],...
[t6_g, t5_g , t4_g, t3_g, t2_g, t1_g], 'linewidth', 2, 'color', [0.635 0.078 0.184]);
xlabel('Exchanged Heat (kJ/kg of air)');
ylabel('Temperature ( C)');
A continuación se presenta una comparación entre los resultados de tres simulaciones, dos de ellas
subcríticas y una supercrítica, para la misma turbina de gas:
Ciclo de Gas:
[t1_g, t2_g, x, Fr, ratio, w_TG, rend_TG]=
CicloGas(300, 1, 18, [0.88,0.98,0.93], [0.05, 0.08, 0.06], 1750, -1, 1, 1);
Simulación A:
[t5_A, Mt_A, q_tot_A, q_caldera_A, x6_A, x_ext_A, w_TV_A, rend_TV_A, rend_CC_A]=
CicloVap_2P_Desg_Rec_Paralelo( [9 120], 0.0571, 1.1, [2, 2], [10, 10], [10, 10], 37,
0.8,[0.9,0.88], [3 3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Simulación B:
[t5_B, Mt_B, qtot_B, q_caldera_B, x6_B, x_ext_B, w_TV_B, rend_TV_B, rend_CC_B]=
CicloVap_2P_Desg_Rec_Paralelo( [9 90], 0.0571, 1.1, [2, 2], [10, 10], [10, 10], 37,
0.84,[0.9,0.88], [3 3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
Simulación C:
[t5_C, Mt_C, qtot_C, q_caldera_C, x6_C, x_ext_C, w_TV_C, rend_TV_C, rend_CC_C]=
CicloVap_2P_Desg_Rec_Paralelo( [9 225], 0.0571, 1.1, [2, 2], [10, 10], [10, 10], 37,
0.7,[0.9,0.88], [3 3 3], 1, 1, t1_g, t2_g, x, ratio, rend_TG);
700
Simulacion A
600
Simulacion B
500
Temperature (ºC)
Simulacion C
400
300
200
100
0 100 200 300 400 500 600 700
Exchanged Heat (kJ/kg of air)
Se puede ver cómo en los ciclos con recalentamiento se logra cumplir uno de los objetivos buscados;
aumentar el título de vapor a la salida de la turbina. Tanto es así que para las tres simulaciones realizadas
se ha obtenido en este punto vapor sobrecalentado en lugar de fluido en estado bifásico.
700
Simulacion A
600
Simulacion B
500
Temperature (ºC)
400 Simulacion C
300
200
100
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
Para las tres simulaciones se ha utilizado la misma presión en la línea de baja, y se puede ver en la
gráfica (2.50) cómo modificar la variable x_alta altera la cantidad de calor que la evaporación necesita;
cuanto mayor es este valor, menor es el caudal de baja, y por tanto menor calor necesita. Por contra,
cuanto menor sea este valor, mayor será el caudal de baja, por lo que requerirá más energía para realizar
la evaporación. Como las gráficas de las distintas simulaciones en este tramo se superponen, esto se
puede observar mirando en qué punto comienza el primer tramo en paralelo, lo cual sucede primero en
la simulación B (x_alta=0.84), después en la A (x_alta=0.8), y finalmente en la simulación C.
Se vuelve a comprobar que la utilización de presiones altas y en particular supercríticas proporciona
rendimientos superiores.
Por último, puede verse que la cantidad de calor utilizada en el recalentamiento es relativamente alta
en los tres casos, rondando valores del 20 %.
Puesto que las modificaciones con respecto al ciclo equivalente en la caldera, los diagramas h s y T s
no albergan diferencias con los de la configuración en paralelo, por lo que las diferencias entre los puntos
característicos están localizadas dentro de la CRC. Estas diferencias son puntos intermedios que surgen al
intercalar intercambiadores. Se han tenido en cuenta distintas posibilidades, algunas de las cuales pueden
verse en las figuras (2.52, 2.53).
800
2ga 1g
5a 5m
700 2gb
Irec
600 2g Irec
3g
Temperature (ºC)
500 I2A
I2A
400
4g
300 2a,3a 4a
6g 5g
4m
200 7g 5b
8g
100 2b,3b 4b 1a
1b
0
0 q1 q2 q3 q4 q5 qI56a qI56b q6 q7 900
Exchanged Heat (kJ/kg of air)
(a) Caso 1
800
1g
700
2g 5m
600
5a
3g
Temperature (ºC)
500
400
I1g 4g
300 5g
6g 2a,3a 4a
4m
200 7g 5b
8g
4b 1a 4b
100 2b,3b Isobrec1A
1b
0
0 q1 q2 q Int23 q3 q4 q5 q6 q7 800
Exchanged Heat (kJ/kg of air)
(b) Caso 2
Figura 2.52: Distintos casos de ciclo 2P con recalentamiento en cascada (1) (Elaboración Propia)
800
2ga 1g
2gb
700
Irec
Irec 5m
600 2g 5a
I2A I2A
3g
Temperature (ºC)
500
400
4g
300
5g I1g 2a,3a 4a
6g 4m
5b
200 7g
8g 4b
100 2b,3b 4b 1a
I1A
1b q3
0
0 q1 q2 q Int23 q4 q5 qI56a qI56b q6 q7 900
Exchanged Heat (kJ/kg of air)
(a) Caso 3
800
2gb 1g
700 2ga
5m
600
Irec 5a
2g
Temperature (ºC)
500
I2a
400
5b
300 3g
4g
4m
200 5g
6g 4b 1a
100
2b,3b
1b
0
0 q1 q2 q3 q3 qI34 q4 q5 900
Exchanged Heat (kJ/kg of air)
(b) Caso 4
Figura 2.53: Distintos casos de ciclo 2P con recalentamiento en cascada (2) (Elaboración Propia)
Los puntos exteriores a la CRC se obtienen de la misma forma a la vista hasta el momento; los
posteriores al condensador mediante los datos de entrada, y aquellos aguas abajo de las turbinas una
vez obtenidos los puntos característicos situados en la caldera. De estos últimos, la complejidad está en
hallar los puntos de vapor sobrecalentado y los que marcan la evolución del recalentamiento. Esto se hace
mediante balances de energía puramente y la imposición T5m = T5a en el caso subcrítico, y de ser un ciclo
supercrítico se tiene que añadir además una condición de diseño, que como se ha mencionado en otras
ocasiones, se trata de obligar a que los puntos 5b y 6a coincidan.
Los puntos intermedios que aparecen en las figuras (2.52) y (2.53) se obtienen mediante procesos
iterativos similares a los vistos hasta el momento, recurriendo a funciones auxiliares que permiten situar
los elementos conflictivos en puntos en los que la gráfica T q sea válida. Se recuerda que esto no altera
los outuputs del ciclo dado que los puntos característicos no se modifican, y solo se altera su teórico
posicionamiento en la caldera de recuperación de calor. Como se puede ver, las posibilidades valoradas
para la colocación del sobrecalentador de baja y el economizador de alta son las mismas que en el caso del
ciclo 2P en cascada sin recalentador. La novedad está por tanto en la colocación del sobrecalentador de
alta y el tramo de recalentamiento, para el cual se ha valorado la posibilidad de ue el punto 5a tenga una
temperatura superior a la de los GGCC de ese lugar, por lo que sería necesario partir el sobrecalentador
(o el tramo de intercambiador supercrítico si ese es el caso) para acercar este punto a un lugar en el que
los gases de combustión tengan más temperatura.
Los parámetros de entrada y de salida se mantienen invariables con respecto a los vistos para el
programa CicloVap_2P_Desg_Rec_Paralelo, aportando cada una de ellas la misma información. Se
recuerda que la variable q_caldera consta de cuatro componentes, siendo la última de ellas una novedad
con respecto a los ciclos sin recalentamiento, y almacenando el porcentaje del calor total utilizado en el
recalentamiento.
function [t5, Mt, qtot, q_caldera, x6, x_ext, w_TV, rend_TV, rend_CC, error] =...
CicloVap_2P_Desg_Rec_Cascada( p, p_cond, p_ext, AP, PP, DT, DI, x_alta,rend, perd_carga, ...
grafica, clearfigures,t1_g, tsal_g, x, ratio, rend_TG)
%%
% CICLO DE VAPOR, 2P, CON DESGASIFICADOR Y RECALENTADOR, EN CASCADA
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
No presenta modificaciones con respecto a la realizada en otros ciclos de 2P. Se recuerda que el
parámetro de entrada que almacena las pérdidas de presión consta de tres componentes, introduciendo
la posibilidad de que se produzca una bajada de presión en el tramo del recalentador.
Como ya se ha comentado, la diferencia principal está en la obtención de los puntos de vapor sobre-
calentado de alta y de baja, a partir de los cuales es inmediata la obtención de los puntos característicos
del recalentamiento, 4m y 5m.
A continuación se presenta el código utilizado para la obtención de estos puntos, diferenciando los
casos de ciclo de alta subcrítico o supercrítico.
Ciclo Subcrítico
p5_m=p5_b*(1-perd_carga_rec/100)
t5_m=t5_a;
h5_m=XSteam('h_pT', p5_m, t5_m);
s5_m=XSteam('s_pT', p5_m, t5_m);
% 5a
h5_a=XSteam('h_pT', p5_a, t5_a);
s5_a=XSteam('s_pT', p5_a, t5_a);
% 6sa
p6_as=p5_b;
s6_as=s5_a;
h6_as=XSteam('h_ps', p6_as, s6_as);
t6_as=XSteam('T_ps', p6_as, s6_as);
% 6a
p6_a=p6_as;
h6_a=h5_a-rend_s_turb*(h5_a-h6_as);
s6_a=XSteam('s_ph', p6_a, h6_a);
t6_a=XSteam('t_ph', p6_a, h6_a);
% 5b
s5_b=s6_a;
h5_b=XSteam('h_ps', p5_b, s5_b);
t5_b=XSteam('T_ps', p5_b, s5_b);
% 4m
p4_m=p5_b;
h4_m=x_alta*h6_a+x_baja*h5_b;
t4_m=XSteam('T_ph',p4_m, h4_m);
s4_m=XSteam('s_ph',p4_m, h4_m);
% 5m
t5_m=t5_a;
p5_m=p5_b*(1-perd_carga_rec/100);
h5_m=XSteam('h_pT', p5_m, t5_a);
s5_m=XSteam('s_pT', p5_m, t5_m);
Como ya se ha comentado, en este caso no se dispone de información suficiente para obtener el punto
5b mediante balances de energía, por lo que para su definición se recurre la imposición de s5b = s6a , lo
que implica que el vapor sobrecalentado de la línea de baja coincide termodinámicamente con el vapor
parcialmente expandido proveniente de la línea de alta. La función auxiliar
calculo_t5_2P_Desg_Rec_Cascada_sup tiene la misma funcionalidad que la utilizada para el ciclo sub-
crítico, pero incorpora la obtención del punto 5b, que antes era un parámetro de entrada.
Tras la obtención de los puntos característicos de las líneas de alta y de baja se inicia un proceso
de comprobación de si estos tienen temperaturas mayores que las de los GGCC en su posición. La
metodología de estos procesos es idéntica a la vista en las Secciónes (2.6.4.2) y (2.6.5.2), añadiendo el
caso de la posible división del tramo de recalentamiento. A continuación se muestra el código utilizado
para realizar este proceso, diferenciando los casos subcrítico y supercrítico.
Ciclo Subcrítico
Para obtener los puntos intermedios mostrados en las figuras (2.52) y (2.53) se utilizan funciones
auxiliares que iteran sobre el punto en el que se realizaría el corte del sobrecalentamiento del caudal de
alta hasta que el punto 5a se sitúa en un punto en el que su temperatura no sobrepasa la de los GGCC.
El problema que puede surgir es que la temperatura de dicho punto sea demasiado alta, y no se pueda
obtener un ciclo válido ni realizando esta modificación, puesto que aunque se conseguiría situar 5a en un
lugar aceptable, ahora sería el punto en el cual se realiza el corte el que sobrepasaría los límites permitidos.
Para estos casos sería necesario realizar más cortes hasta obtener en todo lugar Tgases comb > Tagua .
if t5_a>t2_g-DT_alta
% Punto intermedio del sobrecalentamiento
k2=fsolve(@(k)calculo_k_2P_Desg_Rec_Cascada_Rec(k, h5_a, t4_a, p4_a, h4_a, t5_a, ...
p5_a, Ma, Mt, DT_alta, p4_m, h4_m, p5_m, t3_g, h3_g, x, MW_gases_comb, ratio, ...
options),0.5, options);
tI2_superc=t4_a+k2*(t5_a-t4_a);
pI2_superc=p4_a+k2*(p5_a-p4_a);
hI2_superc=XSteam('h_pT', pI2_superc, tI2_superc);
% Punto intermedio de gas sobre I2_superc
% mg(h2gc-h3g)=ma(hI2_superc-h4a)
h2_g=h3_g+(1/Ma)*(hI2_superc-h4_a);
t2_g=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)- ...
h2_g/ratio*MW_gases_comb,t3_g,options);
t2_g=t2_g-273.15;
% Punto intermedio del recalentamiento
tI_rec=tI2_superc+(t5_a-tI2_superc)*k2;
pI_rec=p4_m+(p5_m-p4_m)*(tI_rec-t4_m)/(t5_m-t4_m);
hI_rec=XSteam('h_pT', pI_rec, tI_rec);
% Punto intermedio de gas sobre hI_rec2
% mg(h2gb-h2g)=mv(hI_rec-h4m)
h2_gb=h2_g+(1/Mt)*(hI_rec-h4_m);
t2_gb=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)- ...
h2_gb/ratio*MW_gases_comb,t2_g,options);
t2_gb=t2_gb-273.15;
% Punto intermedio de gas sobre h5_b
% mg(h2ga-h2gb)=ma(h5_a-hI2_superc)
h2_ga=h2_gb+(1/Ma)*(h5_a-hI2_superc);
t2_ga=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)- ...
h2_ga/ratio*MW_gases_comb,t2_gc,options);
t2_ga=t2_ga-273.15;
casoRec=2;
end
Ciclo Supercrítico
Se sigue el mismo procedimiento, utilizando la función auxuliar
calculo_k_2P_Desg_Rec_Cascada_Rec_sup.
Una vez hallados todos los puntos intermedios, se pasa a obtener los puntos 6s, 6, y ext, y a realizar
las comprobaciones de si ha tenido lugar algún error, de forma similar a la vista en otros programas.
Se realiza siguiendo procedimientos similares a otros programas, con diferencias debido a la adición del
proceso de recalentamiento. Para tener en cuenta las distintas posibilidades de configuración de la CRC
al trazar la curva T qse recurre a sentencias condicionales if y a las variables casoSobrec1 y casoRec,
que almacenan el caso de disposición del sobrecalentador de baja y del recalentamiento, respectivamente.
El primer paso para representar esta curva es la obtención de los calores indicados en las abcisas de
las figuras (2.52) y (2.53), y las curvas con la evolución de la temperatura del caudal supercrítico en dicho
caso. Para el ciclo subcrítico, este proceso es el siguiente:
q_econ_1=h7_g-h8_g; q1=q_econ_1;
q_evap_1=h6_g-h7_g; q2=q1+q_evap_1;
if casoSobrec1==1
q_sobrec_1=h5_g-h6_g; q3=q2+q_sobrec_1;
q_econ_2=h4_g-h5_g; q4=q3+q_econ_2;
elseif casoSobrec1==2
q_econ_2=h5_g-h6_g; q3=q2+q_econ_2;
q_sobrec_1=h4_g-h5_g; q4=q3+q_sobrec_1;
elseif casoSobrec1==3
q_econ_2A=h5_g-h6_g; q_int_23=q2+q_econ_2A;
q_sobrec_1=hIG-h5_g; q3=q_int_23+q_sobrec_1;
q_econ_2B=h4_g-hIG; q4=q3+q_econ_2B;
end
q_evap_2=h3_g-h4_g; q5=q4+q_evap_2;
if casoRec==1
q_sobrec_2=h2_g-h3_g; q6=q5+q_sobrec_2;
q_rec=(h1_g-h2_g); q7=q6+q_rec;
elseif casoRec==2
q_sobrec_2A=(h2_g-h3_g); q_int_56A=q5+q_sobrec_2A;
q_recA=(h2_gb-h2_g); q_int_56B=q_int_56A+q_recA;
q_sobrec_2B=(h2_ga-h2_gb); q6=q_int_56B+q_sobrec_2B;
q_recB=(h1_g-h2_ga); q7=q6+q_recB; % [q]=kJ/kg_aire
end
Para el caso supercrítico se necesita obtener las distintas curvas que almacenan con la evolución de
la temperatura del caudal de alta en los distintos tramos. Para facilitar el proceso, que se complica
en caso de que se realicen intercalamientos en el tramo del sobrecalentador de baja y en el tramo del
recalentamiento, se recurre a los puntos auxiliares rec a8 e inic a9 .
q_econ_1=h5_g-h6_g; q1=q_econ_1;
q_evap_1=h4_g-h5_g; q2=q1+q_evap_1;
if casoSobrec1==1
q_sobrec_1=h3_g-h4_g; q3=q2+q_sobrec_1;
q_superc=h2_g-h3_g; q4=q3+q_superc;
qtot_g32=h2_g-h3_g;
q_g32=linspace(0, qtot_g32, puntos);
P=linspace(p1_a,p_rec_a,puntos);
h_ia=zeros([1, puntos]);
t_ia=zeros([1, puntos]);
for i=1:1:puntos
h_ia(i)=h1_a+Ma*q_g32(i);
t_ia(i)=XSteam('T_ph',P(i),h_ia(i));
end
elseif casoSobrec1==2
q_supercA=h3_g-h4_g; q_23=q2+q_supercA;
q_sobrec_1A=hIG_sobrec1-h3_g; q3=q_23+q_sobrec_1A;
q_superc_B=h2_g-hIG_sobrec1; q4=q3+q_superc_B;
qtot_g43=h3_g-h4_g;
q_g43=linspace(0, qtot_g43, puntos);
P1=linspace(p1_a,pIA_sobrec1,puntos);
h_ia1=zeros([1, puntos]);
t_ia1=zeros([1, puntos]);
for i=1:1:puntos
h_ia1(i)=h1_a+Ma*q_g43(i);
t_ia1(i)=XSteam('T_ph',P1(i),h_ia1(i));
end
qtot_gIG1=h2_g-hIG_sobrec1;
q_gIG1=linspace(0, qtot_gIG1, puntos);
P2=linspace(pIA_sobrec1,p_rec_a,puntos);
h_ia2=zeros([1, puntos]);
t_ia2=zeros([1, puntos]);
for i=1:1:puntos
h_ia2(i)=hIA_sobrec1+Ma*q_gIG1(i);
8 El punto rec a es el último punto del caudal supercrítico antes de dar paso al recalentamiento. Por tanto, este punto
t_ia2(i)=XSteam('T_ph',P2(i),h_ia2(i));
end
end
if casoRec==1
q_supercB=h2_g-h3_g; q4=q3+q_supercB;
q_rec=h1_g-h2_g; q5=q4+q_rec;
qtot_g32=h2_g-h3_g;
q_g32=linspace(0, qtot_g32, puntos);
P1=linspace(p_inic_a,p_rec_a,puntos);
h_ia_1=zeros([1, puntos]);
t_ia_1=zeros([1, puntos]);
for i=1:1:puntos
h_ia_1(i)=h_inic_a+Ma*q_g32(i);
t_ia_1(i)=XSteam('T_ph',P1(i),h_ia_1(i));
end
elseif casoRec==2
q_supercB=h2_g-h3_g; q4=q3+q_supercB;
q_recA=h2_gb-h2_g; q_45A=q4+q_recA;
q_supercC=h2_ga-h2_gb; q_45B=q_45A+q_supercC;
q_recB=h1_g-h2_ga; q5=q_45B+q_recB;
qtot_g32c=h2_g-h3_g;
q_g32c=linspace(0, qtot_g32c, puntos);
if casoSobrec1==1
P1=linspace(p_inic_a,pI2_superc,puntos);
elseif casoSobrec1==2
P1=linspace(pIA_sobrec1,pI2_superc,puntos);
end
h_ia_1=zeros([1, puntos]);
t_ia_1=zeros([1, puntos]);
for i=1:1:puntos
h_ia_1(i)=h_inic_a+Ma*q_g32c(i);
t_ia_1(i)=XSteam('T_ph',P1(i),h_ia_1(i));
end
qtot_g2b2a=h2_ga-h2_gb;
q_g2b2a=linspace(0, qtot_g2b2a, puntos);
P2=linspace(pI2_superc,p5_a,puntos);
h_ia_2=zeros([1, puntos]);
t_ia_2=zeros([1, puntos]);
for i=1:1:puntos
h_ia_2(i)=hI2_superc+Ma*q_g2b2a(i);
t_ia_2(i)=XSteam('T_ph',P2(i),h_ia_2(i));
end
end
Con esta información, se procede a realizar la representación de las gráficas, de la misma forma vista
hasta el momento.
800
700
Simulación A
600
Simulación B
Temperature (ºC)
500
400
Simulación C
300
200
100
0
0 100 200 300 400 500 600 700 800 900
Exchanged Heat (kJ/kg of air)
800
700
Simulación A
600
Simulación B
Temperature (ºC)
500
400
Simulación C
300
200
100
0
0 1 2 3 4 5 6 7 8 9 10
Specific Entropy (kJ/(kgºC))
En estas simulaciones se ha tomado la primera (A) como base, respecto a la cual se ha disminuido la
presión de extracción en la segunda simulación (B), y se lleva hasta ciclo supercrítico en la tercera (C).
Se puede observar cómo aumenta la cantidad de calor disponible en caso de disminuir la presión de
extracción, además de disminuir notablemente la fracción de caudal de extracción. Además, en esa misma
siulación se puede ver que se ha tenido un caso en el que no se obtiene vapor recalentado en el ciclo
de baja, si no que debido a las modificaciones, el programa ha utilizado parte de la energía del ciclo de
baja para llevar a cabo el calentamiento en el economizador de alta. Esto puede verse en el cuadro de
resultados, dada la baja T5b , o en la gráfica (2.54), dado que no existe un incremento de temperatura tras
la evaporación en la simulación B.
Por otra parte, se puede observar también en la gráfica T q de resultados cómo la curva con la
evolución de la temperatura supercrítica se aproxima más a la de gases que en los otros dos casos.
También se comprueba que la simulación de mayor rendimiento es la de ciclo de alta supercrítico.
Por tanto, en vez de definir solamente los puntos inicial y final de la línea de expansión o compresión,
se definen puntos intermedios a partir del anterior, emulando la evolución a lo largo de los distintos
escalonamientos de la turbomáquina en la que se realice el proceso.
En el presente trabajo de fin de grado se ha realizado una adaptación de los programas CicloGas y
CicloVap_1P_SinDesg_Politrop en los que mediante una función auxiliar se obtendrán las curvas de
evolución politrópica. Este programa auxiliar, llamado politropica, consta de los siguientes parámetros
de entrada y de salida:
Variables de Entrada:
- comp: Vector de cuatro componentes que almacena las fracciones másicas de los gases de combus-
tión10 .
- n: Esta variables debe tomar como posibles valores 1, 2, ó 3, y en función de estos el programa
ejecuta una parte del código destinada al proceso identificado con dicho valor. Esta correspondencia
es la siguiente:
1: Compresión politrópica de aire.
2: Expansión politrópica de GGCC.
3: Expansión politrópica de vapor de agua.
- puntos: Número de puntos intermedios que se desea calcular.
Variables de Salida:
Aunque este programa ejecuta tres partes de código distintas según el proceso de interés, consta de
una inicialización común;
load janafJ.mat;
s_s=zeros(1,puntos);
t_s=zeros(1,puntos);
h_s=zeros(1,puntos);
dh=zeros(1,puntos);
dh_s=zeros(1,puntos);
Como se puede ver, la evolución de presiones se divide en ‘puntos’ escalonamientos, entre los cuales se
calcularán, a partor de los valores iniciales y del rendimiento politrópico, los valores isentrópicos y finales
correspondientes para dicho escalonamiento.Las variables acabadas en _int almacenarán los valores que
finalmente devolverá el programa mientras que las acabadas en _s contienen los puntos isentrópicos. Los
vectores dh y dh_s almacenarán los valores incrementales de entalpía.
Este programa es idéntico a CicloGas salvo por el método utilizado para obtener las curvas de
compresión 1p-2 y de expansión 3-4 y la creación de una nueva variable de salida, rend_equiv. Esta
variable es un vector de dos componentes con el rendimiento isentrópico equivalente necesario para obtener
proceso. Este rendimiento se calcula una vez obtenida la línea de compresión o expansión, utilizando los
puntos finales obtenidos para definir un rendimiento isentrópico;
hfinal s − hinicial
ηequiv s C =
hfinal p − hinicial
(2.43)
h − hfinal p
ηequiv s T = inicial
hinicial − hfinal s
dh_s(i)=h_s(i)-h_int(i-1);
dh(i)=dh_s(i)/rend;
h_int(i)=h_int(i-1)+dh(i);
t_int(i)=fsolve(@(t)x(1)*th_prop('h','O2', t)+x(2)*th_prop('h', 'N2', ...
t)-h_int(i),t_s(i),options);
s_int(i)=x(1)*th_prop('s','O2', t_int(i))+x(2)*th_prop('s', 'N2', ...
t_int(i))-R*(log(p(i)/1)+sM(1));
end
tf=t_int(puntos);
hf=h_int(puntos);
sf=s_int(puntos);
Como se puede ver, se utiliza el punto inicial para obtener los valores termodinámicos del punto siguiente,
y en la siguiente iteración se toma el punto hallado en la anterior como nuevo punto inicial. En la figura
450
400
350
Temperature (ºC)
300
250
200
150
100
50
0
0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3
Specific Entropy (kJ/(kgºC))
(2.56) pueden observarse las curvas resultantes de definir el compresor mediante el rendimiento politrópico
(en rojo) o el isentrópico equivalente (en azul).
De forma análoga al proceso anterior, en el programa principal se ejecutan las siguientes sentencias:
h4s=x(1)*th_prop('h','CO2',t4s)+x(2)*th_prop('h','H2O',t4s)+ ...
x(3)*th_prop('h','N2',t4s)+x(4)*th_prop('h','O2',t4s);
%4:
[t4,h4,s4,t_34, h_34, s_34]=politropica(t3, p3, p4, h3, s3, rend_pol_turb, x, 2, 50);
rend_equiv_t=(h3-h4)/(h3-h4s);
El programa auxiliar ejecuta un código similar al visto para el caso n=1, pero teniendo en cuenta de
que se trata de una expansión, y un de una compresión;
dh_s(i)=h_int(i-1)-h_s(i);
dh(i)=dh_s(i)*rend;
h_int(i)=h_int(i-1)-dh(i);
t_int(i)=fsolve(@(t)x(1)*th_prop('h','CO2',t)+x(2)*th_prop('h','H2O',t)+ ...
x(3)*th_prop('h','N2',t)+x(4)*th_prop('h','O2',t)- h_int(i),t_s(i),options);
s_int(i)=x(1)*th_prop('s','CO2',t_int(i))+x(2)*th_prop('s','H2O',t_int(i))+ ...
x(3)*th_prop('s','N2',t_int(i))+x(4)*th_prop('s','O2',t_int(i))- ...
R*(sM(2)+log(p(i)/1));
end
tf=t_int(puntos);
hf=h_int(puntos);
sf=s_int(puntos);
1500
1400
1300
Temperature (ºC)
1200
1100
1000
900
800
700
1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49
Specific Entropy (kJ/(kgºC))
Figura 2.57: Comparación entre expansión isentrópica y politrópica equivalentes de gases de combustión
(Elaboración propia)
En la figura (2.57) pueden observarse las curvas resultantes de definir la turbina mediante el rendi-
miento politrópico (en rojo) o el isentrópico equivalente (en azul).
En este caso sólo se ha implementado el rendimiento politrópico para los procesos de expansión en las
turbinas de vapor, dado que las compresiones del ciclo se producen en fluidos líquidos mediante bombas,
dando lugar a saltos entálpicos mucho menores, por lo que la diferencia apenas es apreciable.
Siguiendo la misma metodología que en CicloGas_Politrop, el programa se mantiene invariante
exceptuando la inclusión de la variable de salida rend_equiv. Por tanto, una vez llegado al cálculo del
punto 6, se ejecuta la llamada al programa auxiliar;
%6
p6=p_cond;
[t6,h6,s6, t_56,h_56,s_56]=politropica(t5, p5, p6, h5, s5, rend_pol_turb, 0, 3, 100);
x6=XSteam('x_ph', p6, h6);
rend_equiv=(h5-h6)/(h5-h6s);
Este programa ejecuta entonces la el código correspondiente al último caso contemplado; la expansión
politrópica de vapor sobrecalentado.
dh_s(i)=h_int(i-1)-h_s(i);
dh(i)=dh_s(i)*rend;
h_int(i)=h_int(i-1)-dh(i);
t_int(i)=XSteam('T_ph', p(i), h_int(i));
s_int(i)=XSteam('s_ph', p(i), h_int(i));
end
tf=t_int(puntos);
hf=h_int(puntos);
sf=s_int(puntos);
else
disp('n tiene que valer 1, 2 o 3');
end
Se puede ver que al final del programa se contempla la opción de que n sea distinto de 1, 2, ó 3, en
cuyo caso se muestra una advertencia por pantalla.
600
500
400
Temperature (ºC)
300
200
100
0
0 1 2 3 4 5 6 7 8 9
Specific Entropy (kJ/(kgºC))
(a) Diagrama T s
3600
3400
3200
Enthaply (kJ/kg)
3000
2800
2600
2400
2200
Figura 2.58: Comparación entre expansión isentrópica y politrópica equivalentes de vapor sobrecalentado
(Elaboración propia)
Como se puede ver, el programa consta de un elevado número de variables de entrada. Estas son:
Variables de entrada relacionadas con el Ciclo de Gas: Estas son t_ent_g, t_sal_g, x,
ratio, y rend_TG. Todas ellas han sido analizadas anteriormente. Las dos primeras son la temperatura
de entrada de los GGCC en la cámara de combustión y la mínima posible con la que pueden salir de la
misma. El vector x contiene las fracciones másicas de los GGCC, y ratio contiene la relación de caudales
entre el de GGCC y el de aire. Por último, rend_TG contiene el rendimiento del ciclo de gas, necesario
para calcular el rendimiento del ciclo de vapor.
Variables de entrada relacionadas con el Ciclo de Vapor: Este grupo lo conformanlas variables
del ciclo de vapor que no van a ser objeto de optimización. Por tanto, son las mismas variables que en
CicloVap_1P_SinDesg, a excepción de la presión y del PP. Son la presión a la que tiene lugar la con-
densación p_cond, el Approach Point AP, la diferencia terminal de temperaturas mínima DT, la diferencia
inicial de temperaturas DI, el vector rend con los rendimientos isentrópicos de las bombas y las turbinas,
y el vector perd_carga con las pérdidas de carga en el economizador y en el sobrecalentador.
Variables de entrada relacionadas con el AG:
Al principio se ofrece al usuario la posibilidad de no introducir algunos parámetros del ciclo de vapor, y
que a estos se les asigne un valor default. Aunque se ha implementado, esto no es muy recomendable dado
que la finalidad del AG es encontrar la solución que más beneficio dé, y para ello es conveniente realizar
introducir parámetros de acuerdo con las necesidades del usuario. En esta iniciailización se obtienen
también los puntos que se mantienen invariables a lo largo de la optimización; en este caso, el punto 7
(l’iquido saturado a la salida del condensador) y el de entrada de los gases de combustión a la CRC.
%% % DEFAULTS % % %
load janafJ.mat;
MW_gases_comb=x(1)*eval(['MolWeight.' 'CO2'])+x(2)*eval(['MolWeight.' 'H2O'])+...
x(3)*eval(['MolWeight.' 'N2'])+x(4)*eval(['MolWeight.' 'O2']);
if p_cond==-1
p_cond=0.0571;
end
if AP==-1
AP=5;
end
if DT==-1
DT=5;
end
if DI==-1
DI=20;
end
if rend==-1
rend=[0.9,0.88];
end
if perd_carga==-1
perd_carga=[3 3];
end
Para generalizar y realizar un tratamiento más parecido en los AG, se denomina h_anterior y
s_anterior a la entalpía y entropía del punto previo a la entrada en la CRC.
Tras haber inicializado el programa se pasa a llevar a cabo el proceso típico del AG explicado en la
Sección (1.3.2.2)).
El primer paso del proceso de optimización consiste en la generación aleatoria de los N individuos de la
primera iteración. Es un proceso importante en el que se debe tener especial cuidado en los valores máximo
mínimo que pueden tomar las variables optimizadas, en este caso la presión y el PP. Para la presión se ha
establecido un intervalo de valores de entre 40 y 220 bares (se recuerda que se trata de optimización del
ciclo subcrítico). El límite inferior se debe a que se sabe de antemano que el rendimiento aumenta con la
presión, por lo que notiene sentido iterar con presiones menores. Para el PP se ha establecido un límite
inferior de 2 grados Kelvin, dado que valores excesivamente bajos pueden llevar a un excesivo incremento
del precio de la planta y de la superficie necesaria por los intercambiadores, y uno máximo de 30 K.
En el programa principal se ejecutariían las siguientes sentencias para llevar a cbo el proceso de
creación de la primera población;
%% % 3 - Indicadores de evolucion
MEJOR_individuo=zeros([gen_max, 2]);
TEST_historial=zeros([gen_max, 3]);
MEJOR_individuo(1,:)=pob(posic,:);
TEST_historial(1,:)=test_generacion;
%% PROGRAMA
pob=zeros(N,2);
inputs_fitness=zeros(N,5);
p_min=40;
p_max=220;
PP_min=2;
PP_max=30;
for i=1:1:N
p=randi([p_min,p_max-1], 'double')+rand;
PP=randi([PP_min,PP_max-1], 'double')+rand;
[p, PP, h5, h6, h1, h7, M, h1_g, h4_g]=Comprobar_Inputs_1P_sinDesg_sub( p, p_cond, AP, ...
PP, DT_terminal, DT_inicial, s_anterior, h_anterior, rend, perd_carga, h1_g, t1_g, ...
t4_g, x, MW_gases_comb, ratio);
pob(i,:)=[p, PP];
inputs_fitness(i,:)=[h5, h6, h1, h7, M, h1_g, h4_g];
end
El procedimiento de creación de un individuo por tanto incluye un primer paso en el que se asignan
los valores aleatorios a dicho individuo y su posterior comprobación para ver si cumple con los criterios
necesarios para considerar que se trata de una solución válida. Esta comprobación se realiza mediante la
función Comprobar_Inputs_1P_sinDesg_sub, la cual comprueba que la temperatura del vapor sobreca-
lentado no es superior a la de entrada de los GGCC, y que el título de vapor a la salida de la turbina de
gas es mayor o igual a 0.85. A continuación se muestra dicha función;
function [p, PP, h5, h6, h1, h7, M, h1_g, h4_g]=Comprobar_Inputs_1P_sinDesg_sub( p, ...
p_cond, AP, PP, DT_terminal, DT_inicial,...
s_anterior, h_anterior, rend, perd_carga,...
h1_g, t1_g, t4_g, x, MW_gases_comb, ratio)
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
%%
p_min=40;
p_max=220;
PP_min=2;
PP_max=30;
if p<p_min
p=p_min;
elseif p>p_max
p=p_max;
end
if PP<PP_min
PP=PP_min;
elseif PP>PP_max
PP=PP_max;
end
[t5, x6, h5, h6, h1, h7, M, h1_g, h4_g]=Evaluar_Inputs_1P_sinDesg_sub( p, p_cond, AP, PP, ...
DT_inicial, s_anterior, h_anterior, rend, perd_carga, h1_g, t4_g, x, MW_gases_comb, ...
ratio);
t5_limite=t1_g-DT_terminal;
p_inicial=0;
PP_inicial=0;
p_nuevo=1;
PP_nuevo=1;
elseif x6<0.85
p_inicial=p;
PP_inicial=PP;
variacion2=rand;
if p-5*variacion2≥p_min
p=p-5*variacion2;
p_nuevo=p;
end
if PP-variacion2≥PP_min
PP=PP-variacion2;
PP_nuevo=PP;
end
[t5, x6, h5, h6, h1, h7, M, h1_g, h4_g]=Evaluar_Inputs_1P_sinDesg_sub( p, p_cond, ...
AP, PP, DT_inicial, s_anterior, h_anterior, rend, perd_carga, h1_g, t4_g, x, ...
MW_gases_comb, ratio);
if (p_inicial==p_nuevo && PP_inicial==PP_nuevo)
h5=h6;
end
end
end
if x6<0.85
h5=h6; h1=h7;
end
Esta función tiene el objetivo de corregir cada individuo de manera que aporte soluciones válidas. Este
proceso lo realiza la función mostrada y la subfunción Evaluar_Inputs_1P_sinDesg_sub. La primera
se encarga de evaluar los valores de T5 y x6 devueltos por la seunda, y actúa en consecuencia según
el caso en el que se encuentre. Esto se ha podido realizar porque al trabajar solo con dos variables es
sencillo determinar los pasos a seguir necesarios para conseguir un individuo válido; en la optimización
de 2P es más sencillo recurrir a penalizaciones dado que la cantidad de variables y la correlación entre las
mismas es considerablemente mayor. Las penalizaciones consisten en disminuir el fitness de un individuo
no válido de forma proporcional a la magnitud del fallo que tiene. Esta modificación de los valroes se
realiza mediante las variables auxiliares variacion1 y variable2, las cuales se asignan aleatoriamente
con el fin de mantener la esencia de los AG de crear individuos aleatoriamente, a pesar de que se esté
dirigiendo este proceso para corregir a los individuos.
Se ha tenido en cuenta la posibilidad de que para una determinada TG no se consiga alcanzar el mínimo
de x6 = 0,85, por lo que para evitar que el programa entre en un bucle infinito se han implementado las
variables p_inicial, p_final, PP_inicial y PP_final, que en caso de llegar a los valores máximo o
mínimo alcanzables por los individuos producir’an una detención de este proceso, asignando a h5 y h1
valores que producirán que el rendimiento de la turbina de vapor sea nulo, por lo que quedará ηCC = ηT G .
function [t5, x6, h5, h6, h1, h7, M, h1_g, h4_g]=Evaluar_Inputs_1P_sinDesg_sub( p, p_cond, ...
AP, PP, DT_inicial, s_anterior, h_anterior, rend, perd_carga,...
h1_g, t4_g, x, MW_gases_comb, ratio)
%% Desarrollador: Joaquin Corredoyra Alcaraz
% Tutor: Ruben Abbas Camara
% U.D. Motores Termicos
% ETS Ingenieros Industriales
% Universidad Politecnica de Madrid
% 2016
%%
% 7
h7=h_anterior;
%1s
p1=p*(1+perd_carga(1)/100);
h1s=XSteam('h_ps', p1, s_anterior);
%1 (1s-7)/(1-7)=rend
h1=h_anterior+(h1s-h_anterior)/rend(1);
t1=XSteam('T_ph', p1, h1);
%3
t3=XSteam('Tsat_p', p);
%4
h4=XSteam('hV_p',p);
%2
h2=XSteam('h_pT', p, t3-AP);
%3g
t3_g=t3+PP+273.15;
h3_g=(x(1)*th_prop('h','CO2',t3_g)+x(2)*th_prop('h','H2O',t3_g)+ ...
x(3)*th_prop('h','N2',t3_g)+x(4)*th_prop('h','O2',t3_g))/MW_gases_comb*ratio;
% Balance de energia-->ma(h3g-h4g)=mv(h2-h1); Sacamos M=ma/mv-->
if t1+DT_inicial>t4_g
t4_g=t1+DT_inicial+273.15;
else
t4_g=t4_g+273.15;
end
h4_g=(x(1)*th_prop('h','CO2',t4_g)+x(2)*th_prop('h','H2O',t4_g)+ ...
x(3)*th_prop('h','N2',t4_g)+x(4)*th_prop('h','O2',t4_g))/MW_gases_comb*ratio;
M=(h2-h1)/(h3_g-h4_g);
%Balance de energia-->ma(h2g-h3g)=mv(h4-h2); Sacamos el punto 2g-->
h2_g=h3_g+(1/M)*(h4-h2);
%Balance de energia-->ma(h1g-h2g)=mv(h5-h4)-->sacamos el punto 5
h5=h4+M*(h1_g-h2_g);
p5=p*(1-perd_carga(2)/100);
t5=XSteam('T_ph', p5, h5);
Como se puede ver, esta función se encarga de realizar el ciclo 1P subcrítico sin desgasificador de
forma acelerada con el fin de obtener los valores T5 y x6 . Aprovechando que se realiza una simulación del
ciclo, también se obtienen los valores necesarios para calcular el rendimiento del ciclo vapor; las entalpías
antes y después de la expansión en la turbina y de la compresión en la bomba de circulación a la salida del
condensador, la realción de caudales M , y la entalpía de los gases de combustión a la entrada y a la salida
de la CRC. Esto se realiza para evitar realizar una nueva simulación para cada individuo válido con el
fin de obtener su fitness; de esta forma, la función que asigna la fortaleza de cada individuo simplemente
tomará estos valores y realizará con ellos la operación necesaria para hallar dicho rendimiento.
Paso 2: Evaluación de la generación creada Una vez que se ha completado el paso 1 del AG,
se pasa a evaluar la población obtenida. Esto se realiza mediante el paso 2 del programa principal, por
medio de la función auxiliar Fitness_1P_sinDesg. Esta función toma como variables de entrada los
valores necesarios para calcular el rendimiento del ciclo de vapor, y el rendimiento del ciclo gas para el
cual se está realizando la optimización. Se trata de una función sencilla en la que se inicializan los valores
introducidos por el vector inputs_fitness y se obtiene el rendimiento. En caso de que el rendimiento no
exista porque se halla producido algún caso no previsto y alguno de los parámetros de entrada no halla
sido obtenido por las funciones anteriores debido a que no es físicamente posible, al rendimiento del ciclo
se le asigna el valor −1.
Una vez que se tiene la primera generación creada, evaluada y con sus valores pertinentes almacenados
en los registros, se inicia un bucle en el que se generará un total de ‘1 − ming eneraciones’ sin considerar
que se pueda haber alcanzado el criterio de convergencia, el cual se explicará más adelante. En cada
iteración de este bucle se llevará a cabo por tanto la creación de la nueva generación (incluyendo este
paso los procesos de selección, recombinación y mutación de la generación precedente) , su evaluación y
el reemplazamiento de la población anterior. A continuación puede verse la parte del programa principal
que realiza este proceso.
%% PRIMERAS ITERACIONES
INT_MUT=int_mut;
for i=2:1:min_generaciones
%% % 4 - Creacion de los descendientes
[pob_int, inputs_fitness_int]=Pobl_Intermedia_1P_sinDesg_sub(pob, fitness_pob, ...
prob_mut, INT_MUT, pres_seleccion, p_cond, AP, DT, DI, s_anterior, h_anterior, ...
rend, perd_carga, h1_g, t1_g, t4_g, x, MW_gases_comb, ratio);
%% % 6 - Rellenado de los registros totales, que contaran con las poblaciones ...
intermedias tambien
POB_tot=[pob; pob_int];
FIT_tot=[fitness_pob; fitness_int];
%% % 7 - Reemplazamiento de la poblacion
[pob, fitness_pob, test_generacion, ...
mejor_indiv]=Reemplazamiento_1P_sinDesg(POB_tot, FIT_tot, pres_seleccion, N);
A continuación se van a explicar los pasos del 4 al 6 que realiza el algoritmo genético, mostrando las
funciones auxiliares llamadas, que comprenden la creación de la descendencia de una población.
Paso 4: Creación de los descendientes En este paso se lleva a cabo la mayor parte del proceso
de generación de una población nueva; la selección, recombinación, y mutación de la generación anterior.
Esta población intermedia creada no tendrá solo N individuos, sino que contendrá los N individuos
de la población inicial, los N descendientes, y los individuos resultantes de la mutación. Esto se realiza
mediante la función auxiliar Pobl_Intermedia_1P_sinDesg_sub, que devuelve un vector con la población
descendiente y la mutada, y los valores respectivos con los que se evaluará su fitness.
[N,n_var]=size(pob);
num_progen=round(0.5*N);
num_mating_pool=round(0.75*N);
%% % CROSSOVER % % %
% SELECCION
[fit_max, ¬]=max(fitness);
[probabilidades]=Prob_Seleccion( fitness, fit_max, pres_seleccion);
[seleccionados_reprod, ¬]=Selec_Probab_Lineal(pob, probabilidades, num_mating_pool);
% RECOMBINACION
descendientes=zeros([2*num_progen, n_var]);
inputs_fitness_descendientes=zeros([2*num_progen, 5]);
for i=1:2:(2*num_progen)
a=round(num_mating_pool*rand+0.5); %Para que siempre coja un numero >0
b=round(num_mating_pool*rand+0.5);
progenitor1=seleccionados_reprod(a,:);
progenitor2=seleccionados_reprod(b,:);
[descendiente1, descendiente2]=Reproduccion_Uniforme(progenitor1, progenitor2);
descendientes(i,:)=descendiente1;
descendientes(i+1,:)=descendiente2;
end
% COMPROBACION DE LOS DESCENDIENTES
for i=1:1:2*num_progen
[descendientes(i, 1), descendientes(i, 2), h5, h6, h1, h7, M, h1_g, ...
h4_g]=Comprobar_Inputs_1P_sinDesg_sub(descendientes(i, 1), p_cond, AP, ...
descendientes(i, 2), DT_terminal, DT_inicial, s_anterior, h_anterior, rend, ...
perd_carga, h1_g, t1_g, t4_g, x, MW_gases_comb, ratio);
%% % MUTACION % % %
num_mut=round(0.5*N);
% SELECCION
[seleccionados_mut, ¬]=Selec_Probab_Lineal(pob, probabilidades, num_mut);
% MUTACION
descendencia_mutada=Mutacion_1P_sinDesg(seleccionados_mut, INT_MUT, prob_mut);
inputs_fitness_mut=zeros([num_mut, 5]);
% COMPROBACION DE LOS DESCENDIENTES
for i=1:1:num_mut
[descendencia_mutada(i, 1), descendencia_mutada(i, 2), h5, h6, h1, h7, M, h1_g, ...
h4_g]=Comprobar_Inputs_1P_sinDesg_sub(descendencia_mutada(i, 1), p_cond, AP, ...
descendencia_mutada(i, 2), DT_terminal, DT_inicial, s_anterior, h_anterior, rend, ...
perd_carga, h1_g, t1_g, t4_g, x, MW_gases_comb, ratio);
inputs_fitness_mut(i,:)=[h5, h6,h1, h7, M, h1_g, h4_g];
end
%% % POBLACION INTERMEDIA % % %
[pob_int]=[descendientes; descendencia_mutada];
[inputs_fitness_int]=[inputs_fitness_descendientes; inputs_fitness_mut];
end
Crossover:
En esta primera parte de la generación de la población intermedia se lleva a cabo la creación de la
mating pool1 mediante un proceso de selección y la obtención de la descendencia por recombinación.
Proceso de Selección: Primero se genera el vector selecionados_reprod con aquellos individuos
que conforman la mating pool. Para escogerlos, en primer lugar se le asigna una probabilidad de ser
elegido a cada individuo de la generación inicial mediante Prob_Seleccion. Esta función toma como
datos de entrada el vector con los rendimientos de todos lso individuos, el rendimiento del individuo
más fuerte, y la presión de selección. Se ha elegido asignar probabilidades de acuerdo con un proceso de
seleción similar al de tipo Boltzman explicado en la Sección (1.3.3.4) aunque con la modificación de la
inclusión en la ecuación (1.10) de la presión de selección (pressel ) en lugar de la temperatura. Este valor
es introducido por el usuario y no varía a lo largo del progograma, y se recuerda que cuanto mayor sea,
mayor será la diferencia entre la probabilidad de ser seleccionado de los individuos fuertes con respecto a
1 Se recuerda que la mating pool es un conjunto de posibles progenitores entre los cuales aleatoriamente se irán seleccio-
los débiles. Con esta modificación, la ecuación mediante la cual se asignan probabilidades a os individuos
de una población es la siguiente:
Pi = exp [−(ηmáx − ηi ) · pressel ] (3.1)
Al utilizar esta expresión también se introduce el elitismo, dado que el individuo de mayor fitness de la
población recibirá una probabilidad de ser elegido igual a 1, dado que Pi = 1 si ηi = ηmáx . Por tanto, de
esta forma el programa garantiza la inclusión del individuo más fuerte en la mating pool. El programa
auxiliar Prob_Seleccion es el siguiente:
El proceso de selección se completa mediante una selección por muestreo universal, como la explicada
en la Sección (1.3.3.4). Esto se realiza mediante la función auxiliar Selec_Probab_Lineal que, como se
puede ver a continuación, sigue la misma metodología que la explicada en dicha Sección.
suma_prob=sum(probabilidades);
intervalo=suma_prob/num_selecc;
%% % COLOCACION DE PUNTEROS % % %
punteros=zeros([num_selecc, 1]);
punteros(1)=intervalo*rand;
for i=2:1:num_selecc
punteros(i)=punteros(i-1)+intervalo;
end
%% % ORDENACION PROBABILIDADES % % %
[prob_ord, posic_inicial]=sort(probabilidades, 'descend');
contador=zeros([ length(prob_ord)+1, 1]);
for i=1:1:length(prob_ord)
contador(i+1)=contador(i)+prob_ord(i);
end
%% % SELECCION PROGENITORES % % %
for i=1:1:num_selecc
j=1;
while j≤length(prob_ord) && posicion_selec(i)==0
if contador(j)≤punteros(i) && punteros(i)≤contador(j+1)
seleccionados(i,:)=pob(posic_inicial(j),:);
posicion_selec(i)=posic_inicial(j);
end
j=j+1;
end
end
end
Esta función devuelve la matriz seleccionados con los individuos que formarán la mating pool, y el
vector posicion_selec, con su posción dentro de la población inicial.
Proceso de Recombinación: Una vez completado el proceso de selección, comienza el de recom-
binación. Mediante un bucle for se van seleccionando parejas de progenitores de entre los seleccionados
previamente, y se introducen estos individuos en la función auxiliar encargada de realizar dicha recom-
binación; Reproduccion_Uniforme. Dicha recombinación se realiza por medio de crossover uniforme,
aunque como en el programa analizado los individuos solo cuentan con dos componentes, la recombina-
ción pasa a ser un intercambio del primer gen de un progenitor con el del otro. No obstante, la función
Reproduccion_Uniforme ha sido desarrollada de forma que realice un crossover uniforme para cualquier
tamaño de individuo, de forma que no tendrá que ser modificada en posteriores algoritmos. Esta función
es la siguiente:
Se hace uso de un vector máscara indiv_aux formado por unos y ceros, de la misma longitud que
un individuo de la población. Este vector se usa en la recombinación de las variables de forma que si
en una posición determinada el vector toma valor 0, el primer descendiente (descendiente1) tomará
en dicha posición el valor que proporciona el primer progenitor (progenitor1) para dicha variable,
mientras que el segundo descendiente toma el valor que proporciona el segundo progenitor. Lo contrario
sucede si el valor del vector máscara en dicha posición es 1. Se puede ver que si el vector máscara
estuviera compuesto enteramente por ceros o por unos, no tendría lugr ninguna recombinación dado que
los descendientes recibirían todas las variables del mismo progenitor. Para evitar esto se introducen las
variables num_puntos_crossover y u. La primera contabiliza la cantidad de unos que contiene el vector
máscara, y de ser esta cantidad cero o n_var, lo que equivale a que el vector máscara esté compuesto
enteramente de unos, este vector se modifica en la posición aleatoria u para tomar un valor 1 o un valor
0, respectivamente. De esta forma se consigue que se intercambie al menos una de ls variables.
Al finalizar, se devuelven los dos vectores correspondientes a los dos descendientes obtenidos. Como
se ha dicho, este proceso se enmarca dentro de un bucle for, que se realiza hasta obtener N nuevos
descendientes.
Al finalizar este proceso, se comprueba que los descendientes obtenidos son válidos y se modifican de
no serlo.
Mutación:
Se ha escogido que mute la mitad de la población precedente. La mitad que será mutada se selec-
ciona primero mediante Selec_Probab_Lineal, y tras realizar esto se introduce en la función auxiliar
Mutacion_1P_sinDesg. Esta función se utilizará con muy pocas modificaciones en el resto de AGs, y
devuelve un vector con los descendientes resultado de la mutación. Para realizar la mutación se hace uso
de una matriz compuesta por tantos vectores máscara como individuos se desee mutar. La probabilidad
de que un elemento de esta matriz sea 0 es mayor que la de que valga o 1 a no ser que prob_mut tome
un valor mayor de 0.5, que hace que sea más probable que el valor sea 1. Esto es porque ‘rand-0.5*1’
devuelve números comprendidos en el intervalo (−0,5, 0,5), y es la adición de 1*prob_mut lo que permite
que se pueda tomar el valor 1. Para cada vector incluido en la matriz se realiza un proceso de comproba-
ción de que no está formado enteramente por ceros, dado que entonces no habría mutación. Después de
esto, y tras haber inicializdo una matriz que contendrá mutaciones aleatorias para componente de cada
individuo, se realiza la mutación de los individuos seleccionados para tal proceso. Es en la generación de
la matriz con las mutaciones en donde se diferenciará esta función auxiliar de la utilizada en otros AG.
A continuación se muestra el código de dicha función:
%% % MUTACION PROGENITORES % % %
descend_mut=seleccionados_mut+mutaciones.*matriz_aux;
end
Para realizar la matriz mutaciones se ha tenido en cuenta que los mayores rendimientos se obtienen para
valores altos de presi’on y bajos de PP, por lo que se favorece que la mutación tenga este efecto. Esto no
se puede realizar en algoritmos en los que no se tenga tan claro cuál es el efecto de todas y cada una de
las variables; en estos casos, las mutaciones serán puramente aleatorias, pudiendo elevar o disminuir el
valor de cada variable con la misma probabilidad. Se puede ver cómo int_mut modifica la intensidad de
la mutación; cuanto mayor sea, de mayor magnitud serán las variaciones producidas durante la mutación.
El proceso de mutación termina con una comprobación de los descendientes obtenidos, dando lugar a
soluciones válidas.
%% % TEST GENERACION % % %
FIT_media=sum(nuevos_fitness)/N;
FIT_max_rel=100*FIT_media/FIT_max;
test_generacion=[FIT_max, FIT_media, FIT_max_rel];
end
Como se puede ver, se aplica claramente el elitismo al reservar una plaza de la nueva generación para
el mejor individuo de la anterior. Los N − 1 individuos restantes se eligen utilizando la función auxiliar
Selec_Probab_Lineal ya explicada.
Paso 8: Rellenado de los registros de la nueva generación Se realiza de igual forma que el
Paso 3.
Antes de volver a realizar el bucle for en el que se crean las primeras generaciones tiene lugar la
modificación del parámetro IMT_MUT. Mientras que int_mut es un parámetro de entrada del programa
principal y se mantiene constante, INT_MUT va variando a lo largo de las iteraciones con el fin de adaptarse
a la generación evaluada. De esta forma, toma valores entre 0 e ‘int_mut’ dependiendo de un coeficiente
de mutación. Este coeficiente se calcula utilizando el fitness relativo de la generación creada y el de la
generación inicial, y disminuye a medida que el fitness medio de la generación se acerca al fitness máximo
de la misma. Este coeficiente es mayor cuanto más parecidos sean los fitness relativos de la población
nueva y la inicial, con el fin de favorecer la diversificación de la población.
%% % 9 - Recalculamiento de parametros
coef_mut=(100-test_generacion(end))/(100-FIT_max_rel);
INT_MUT=int_mut*coef_mut;
Tras haber realizado el bucle mostrado en la Sección (3.1.4) se inicia otro bucle, esta vez condicionado
por un while, en el que se van generando nuevas generaciones hasta alcanzar el número de generaciones
máximo o cumplir con el criterio de convergencia.
i=min_generaciones+1;
epsilon=50;
while (epsilon>criterio_parada || epsilon<0) && i≤gen_max
[pob_int,inputs_fitness_pob]=Pobl_Intermedia_1P_sinDesg_sub(pob, fitness_pob, ...
prob_mut, INT_MUT, pres_seleccion, p_cond, AP, DT, DI, s_anterior, h_anterior, ...
rend, perd_carga, h1_g, t1_g, t4_g, x, MW_gases_comb, ratio);
%% % Evaluacion de dicha poblacion intermedia
[fitness_int]=Fitness_1P_sinDesg(inputs_fitness_pob, rend_TG);
%% % Rellenado de los registros totales, que contaran con las poblaciones ...
intermedias tambien
POB_tot=[pob; pob_int];
FIT_tot=[fitness_pob; fitness_int];
%% % Reemplazamiento de la poblacion
[pob, fitness_pob, test_generacion, ...
mejor_indiv]=Reemplazamiento_1P_sinDesg(POB_tot, FIT_tot, pres_seleccion, N);
%% % Rellenado de los registros finales & registros de indicadores de evolucion
POB_historial(:,:,i)=pob;
FIT_historial(:,i)=fitness_pob;
MEJOR_individuo(i,:)=mejor_indiv;
TEST_historial(i,:)=test_generacion;
%% % Recalculado de parametros
INT_MUT=int_mut*(100-test_generacion(end))/(100-FIT_max_rel);
i=i+1;
end
Como se puede ver, este bucle es idéntico al anterior, exceptuando las condiciones por las que se detiene
y la adición de un nuevo paso, el Paso 10, en el cual se calcula el valor del criterio de convergencia, que
se explica a continuación.
Por tanto se compara el fitness medio de la generaci’on actual, i, con el de la generión ‘min generaciones’
anterior. Se recuerda que el objetivo de esto es permitir que las mutaciones tengan efecto. Por tanto, si las
citadas generaciones tienen un rendimiento medio muy similar, significará que no se puede realizar una
mejora significativa de las soluciones por mucho que se creen más generaciones, y el algoritmo se detiene.
La ventaja de utilizar para el criterio de convergencia el valor medio del rendimiento de la población
frente a utilizar el rendimiento del mejor individuo de la misma es que se alcanza un alto número de
soluciones buenas.
Inicialmente se le asigna a epsilon un valor sficientemente alto para que no entre en conflicto con
el valor del criterio de convergencia introducido por el usuario, evitando la posibilidad de no realizar el
bucle while.
También se puede ver que se le asigna a la variable i el valor de la generación que va a ser creada.
Esta variable se irá incrementando de uno en uno al final de cada iteración, y se utiliza como contador
de generaciones, para analizar si la generación que va a ser creada es superior al número máximo de
iteraciones definido.
Tanto los parámetros de entrada como los de salida se mantienen iguales, a excepción de que en este
caso no se pide al usuario que introduzca un valor de AP, dado que hallarlo es parte del proceso de
optimización. Debido a esto, los cromosomas de este algoritmo constan de tres genes, como se refleja en
el cuadro (3.1).
Esta variable extra obliga a modificar algunas de las funciones auxiliares utilizadas durante el proceso,
pero se mantiene intacta la estructura del algoritmo, dividida en la creación de la generación inicial (pasos
1-3); bucle while en el que se generan las primeras generaciones, cuyo número se define mediante el
parámetro de entrada min_generaciones (pasos 4-9); y un bucle for en el que se realizan iteraciones
hasta alcanzar alguno de los criterios de convergencia, ek de náximas generaciones o el del fitness medio
de la generación (repite los pasos del bucle while e incorpora el 10).
En esta sección se van a analizar las diferencias entre estos dos algoritmos, en el orden en el que se
implementan durante el desarrollo del algoritmo.
2 Se recuerda que DI es la diferencia inicial de temperaturas en la CRC, y que en los ciclos supercríticos debía ser mayor
Además de generar valores aleatorios de p y PP, se hace lo propio con el AP. Se ha estimado un
intervalo de valores para este gen de entre 1 y 10 ◦ C;
[p, PP, AP, h5, h6, h1, h9, M, h1_g, h4_g]=Comprobar_Inputs_1P_sinDesg_AP( p, p_cond, AP, ...
PP, DT_terminal, DT_inicial, s_anterior, h_anterior, rend, perd_carga, h1_g, t1_g, ...
t4_g, x, MW_gases_comb, ratio);
pob(i,:)=[p, PP, AP];
inputs_fitness(i,:)=[h5, h6, h1, h9, M, h1_g, h4_g];
end
Como se puede ver, en esta función secontempla también la posibilidad de que el individuo tenga un valor
de presión supercrítica al modificar el valor del PP maximo en dicho caso, para evitar que tome un valor
superior a la diferencia inicial de temperaturas, con los problemas que esto conlleva.
function [p, PP, AP, h5, h6, h1, h7, M, h1_g, h4_g]=Comprobar_Inputs_1P_sinDesg_AP( p, ...
p_cond, AP, PP, DT_terminal, DT_inicial,...
s_anterior, h_anterior, rend, perd_carga,...
h1_g, t1_g, t4_g, x, MW_gases_comb, ratio)
%% Desarrollador: Joaquin Corredoyra Alcaraz
% ... %
p_min=20;
p_max=250;
PP_min=2;
PP_max=30;
if p>220.5846
PP_max=DT_inicial;
end
AP_min=1;
AP_max=10;
if p<p_min
p=p_min;
elseif p>p_max
p=p_max;
end
if PP<PP_min
PP=PP_min;
elseif PP>PP_max
PP=PP_max;
end
[t5, x6, h5, h6, h1, h7, M, h1_g, h4_g] = Evaluar_Inputs_1P_sinDesg_AP( p, p_cond, AP, ...
PP, DT_terminal, DT_inicial, s_anterior, h_anterior, rend, perd_carga, h1_g, t1_g, ...
t4_g, x, MW_gases_comb, ratio);
t5_limite=t1_g-DT_terminal;
p_inicial=0; p_nuevo=1;
PP_inicial=0; PP_nuevo=1;
AP_inicial=0; AP_nuevo=1;
Se puede ver que la metodología es la misma que en el cso en el que no se optimiza el AP. Se recuerda
que las variables variacion1 y variacion2 se utilizan para modificar los genes del individuo, previa
comprovación de que dicha modificación no sobrepasará los valores límite de dichos genes. La funcionalidad
de las variables acabadas en _inicial y _final es analizar si se ha llegado ya a los valores límites y no
se ha podido realizar una variación de los genes; esto se comprueba en el bucle while y, de ser los tres
pares de valores iguales entre sí, se finaliza la iteración y se modifican los valores de h5 y h1 para que el
rendimiento del ciclo de vapor de un resultado nulo. Se recuerda que el motivo de esta metodología de
comprobación es que para ciclos de gas con una temperatura de entrada a la CRC demasiado baja no es
posible obtener x6 ≥ 0,85. Este problema se tiene sobre todo en ciclos supercríticos.
Se utiliza exactamente el mismo código para realizar las mutaciones con la excepción de que la matriz
mutaciones, que alberga las modificaciones aleatorias que se pueden llegar a producir en los genes de
todos los individuos del grupo de individuos seleccionados para la mutación. Esta matriz se ha adaptado
para albergar la variación de los genes correspondientes con el AP;
%% % MUTACIONES % % %
[N, n_var]=size(seleccionados_mut);
mutaciones=zeros([N, n_var]);
mutaciones(:,1)=int_mut*2*rand(N,1);
mutaciones(:,2)=int_mut*rand(N,1);
mutaciones(:,3)=int_mut*rand(N,1);
%% % VECTOR MASCARA % % %
%% % ... %%%
Se realiza de la misma forma que la mostrada en la Sección (3.1.3), pero en este caso el punto 7 no
tendrá la misma la importancia que en el programa anterior, dado que no es el punto inmediatamente
anterior a la CRC debido a la existencia del desgasificador entre medias.
Se añade la asignación del valor de la presión de extracción, que tomará valores comprendidos entre
la presión de condensación y 10 bares. Se ha tenido cuidado de añadir la condición de que esta presión
sea siempre menor ue la de línea, como puede verse a continuación;
p_ext_max_aux=p_ext_max;
for i=1:1:N
p=randi([p_min,p_max-1], 'double')+rand;
if p<p_ext_max
p_ext_max_aux=p;
end
p_ext=p_ext_min+(p_ext_max_aux-p_ext_min)*rand;
PP=randi([PP_min,PP_max-1], 'double')+rand;
Además, se puede ver que no se utiliza la variable inputs_fitness. Esto es porque, a diferencia de en
los programas vistos, los puntos exteriores a la CRC dependen de las variables optimizadas, y su obtención
supondría que Comprobar_Inputs_1P_ConDesg_sub tuviese que hallarlos para cada comprobación, lo que
ralentizaría enormemente el programa, sobre todo por tener que hallar el punto de extracción. Por tanto,
en la función que evalúa el fitness de los individuos, se realizará una simulación abreviada del ciclo a fin
de obtener las variables necesarias para calcular el rendimiento del mismo.
h3_g=(x(1)*th_prop('h','CO2',t3_g)+x(2)*th_prop('h','H2O',t3_g)+ ...
x(3)*th_prop('h','N2',t3_g)+x(4)*th_prop('h','O2',t3_g))/MW_gases_comb*ratio;
%4g
if t1+DT_inicial>t4_g
t4_g=t1+DT_inicial+273.15;
else
t4_g=t4_g+273.15;
end
h4_g=(x(1)*th_prop('h','CO2',t4_g)+x(2)*th_prop('h','H2O',t4_g)+ ...
x(3)*th_prop('h','N2',t4_g)+x(4)*th_prop('h','O2',t4_g))/MW_gases_comb*ratio;
%M
M=(h2-h1)/(h3_g-h4_g);
%2g
h2_g=h3_g+(1/M)*(h4-h2);
%5
h5=h4+M*(h1_g-h2_g);
p5=p*(1-perd_carga(2)/100);
s5=XSteam('s_ph', p5, h5);
%6s
h6s=XSteam('h_ps', p_cond, s5);
%6
h6=h5-rend(2)*(h5-h6s);
s6=XSteam('s_ph', p_cond, h6);
x6=XSteam('x_ph', p_cond, h6);
%ext
puntos=500;
[Dp, H, S]=aprox_ext(h5, h6, s5, s6 ,p_ext, puntos);
while Dp>0.0001
[Dp, H, S]=aprox_ext(H(1), H(2), S(1), S(2) ,p_ext, puntos);
end
h_ext=(H(1)+H(2))/2;
%(1-x)h8+x*h_ext=h9
x_ext=(h9-h8)/(h_ext-h8);
end
%% RESULTADOS
rend_TV=((h5-h6)-((h1-h9)+(1-x_ext)*(h8-h7)))/(M*(h1_g-h4_g))*100;
rend_CC=rend_TV+rend_TG-rend_TV*rend_TG/100;
if x6<0.85
rend_CC=0.4;
end
if isnan(rend_CC)
rend_Ciclo(i)=-1;
else
rend_Ciclo(i)=rend_CC;
end
end
El resto del programa no guarda diferencias significativas con lo visto hasta el momento, dado que el
primer AG se desarrolló con esa misma finalidad; que a partir de dicho algoritmo, se pudiera realizar una
adaptación a distintos ciclos de vapor con una variación mínima del código.
Resultados
En este Capítulo se va a realizar en primer lugar un análisis más extenso de los ciclos combinados
mediante el uso de los programas de simulación llevados acabo. Se irán dedicando distintas Secciones a
cada uno de los programas con el fin de comprender mejor los resultados que arrojan los mismos.
Tras finalizar el análisis de los resultados obtenidos en dichos programas, se mostrarán los que pro-
porcionan los algoritmos genéticos y se valorará su eficiencia.
En esta sección se va a analizar el efecto de las distintas variables de entrada sobre el ciclo 1P sin
desgasificador.
Como se ha mencionado a lo largo del trabajo, en este programa no son comparables los resultados
arrojados por los ciclos subcríticos y los supercríticos, debido en parte a las diferencias en los criterios
de simulación entre ambos. Para mostrar dicha discontinuidad se muestra a continuación la variación del
rendimiento de un ciclo combinado manteniendo constantes todas las variables a excepción de la presión
de línea:
56
Rendimiento del Ciclo Combinado (%)
55
54
53
52
51
50
40 60 80 100 120 140 160 180 200 220 240 260
Presión de la línea (bar)
Figura 4.1: Variación del rendimiento de un ciclo combinado 1P sin desgasificador en función de la presión
(Elaboración Propia)
Como se puede ver, el rendimiento aumenta conforme aumenta la presión de evaporación, hasta llegar
a las presiones supercríticas. Se produce una discontinuidad tras la cual desciende el rendimiento, para
a continuación volver a aumentar ligeramente con la presión. Se ha razonado que este fenómeno sucede
probablemente porque en los ciclos subcríticos se ha tomado la aproximación de que la temperatura
del agua asciende de forma lineal. Esta base de diseño se puede ver al realizar los balances de energía
al principio y al final de los distintos intercambiadores, al contrario que en los ciclos supercríticos, en
los que los balances se subdividen para hallar la evolución de temperatura del fluido en la CRC. Esta
curvatura precisamente es la causante de que el PP utilizado para definir el ciclo supercrítico tenga lugar
en el comienzo de la CRC en lugar de en zonas más alejadas del inicio, lo que habría permitido obtener
temperaturas de salida mayores con el consiguiente aumento del rendimiento.
En la figura (4.2a) se puede observar cómo la temperatura de salida en los casos supercríticos es menor
que en los subcríticos. Además en la figura inferior, se puede comprobar que el aumento de temperatura
800
700
600
Temperature (ºC)
500
400
p=40 bar
300 p=90 bar
p=150 bar
200
p=200 bar
100 p=230 bar
Gases Comb
0
0 100 200 300 400 500 600 700 800
Exchanged Heat (kJ/kg of air)
400
Localización del PP a 220 bar
350
300
Localización del PP a 230 bar
Temperature (ºC)
250
200
150
100
50
Figura 4.2: Comparación de la evolución de temperaturas dentro de la CRC para distintas presiones
(Elaboración propia)
del agua líquida supercrítica no sigue una evolución lineal, si no que consta de cierta curvatura. Esto
conduce, como se resalta en la figura (4.2b), a que el PP se sitúe antes en presiones supercríticas que
en subcríticas. Por tanto, se llega a la conclusión de que el procedimiento llevado a cabo para ciclos
subcríticos es erróneo a partir de cierta presión, puesto que deja de ser válida la hipótesis de que la
evolución de temperatura entre dos puntos calculados sigue una evolución recta.
Esto en la realidad no es un problema dado que no existen apenas ciclos combinados que operen a
presiones subcríticas tan altas en ciclos de un nivel de presión. Es más normal implementar presiones tan
elevadas cuando se trata de ciclos 2P, 3P, o más.
Una vez realizada esta aclaración, se pasa a analizar los resultados de ambos ciclos, teniendo en cuenta
que para presiones altas pero aún subcríticas, los rendimientos y otros parámetros de salida pueden ser
mayores de lo que serían en la realidad.
En esta sección se va a realizar un análisis detallado sobre los valores que toman las variables de salida
del programa para ciertos intervalos de las variables de entrada.
Efecto del AP (fig. 4.3): El efecto del AP es similar al que tiene el Pinch Point. En estos ciclos,
es fácil deducir que cuanto menor sea este valor, más calor será necesario aportar durante el economi-
zador, dado que el agua líquida se mantendrá en este intercambiador de calor hasta haber alcanzado la
temperatura de saturación a la presión de línea menos el AP. Como consecuencia de esto, y dado que
el punto 3 (vapor saturado) se mantiene fijo para una presión y Pinch Point dados, se deduce que la
cantidad de calor total que debe ser absorbida en ese tramo aumenta cuanto menor sea el AP, lo que
en el programa desarrollado equivale a que aumente la relación de caudales entre el aire y el agua, M
(figura 4.3c). Debido a este aumento del caudal de aire (que equivale a un incremento del caudal de gases
de combustión) se dispone de más cantidad de energía para intercambiar en los procesos de evaporación
y de sobrecalentamiento, traduciéndose en una mayor temperatura de salida de los gases de combustión
(figura 4.3a). Este aumento de temperatura provoca a su vez un mayor salto entálpico en la turbina de
vapor, con el consecuente aumento del rendimiento del ciclo (figura 4.3e), y en un aumento del título
de vapor (figura 4.3b), lo cual siempre es deseable para preservar los álabes de dicha turbina. El efecto
sobre los porcentajes de calor absorbidos en los distintos intercambiadores es más leve, pero se puede
concluir que un descenso del AP favorece un mayor porcentaje de calor absorbido en el economizador y
en el sobrecalentador, y un menos porcentaje del mismo en el evaporador (figura 4.3d).
En esta figura se han realizado simulaciones para distintos ciclos de gas, representados por la tem-
peratura de entrada de los GGCC en la caldera; 801◦ C en verde, 736.7◦ C en rojo, y 672.6◦ C en azul1 .
Se puede ver cómo su efecto sobre los parámetros de salida del ciclo es notablemente mayor al del AP,
favoreciendo el aumento de T5 con las consecuencias que ello implica, ya analizadas.
Efecto del PP (fig. 4.4): Tiene unos efectos sobre el ciclo análogos a los del AP. Esto se debe a
que un menor valor del PP ‘desplaza’ a la izquierda (inicio de la CRC) a la meseta de evaporación, lo que
conlleva un aumento del caudal necesario de gases de combustión para realizar el proceso de calentamiento
en el economizador en un tramo de menor longitud. De igual forma que sucede con el AP, esto conlleva
un aumento de temperatura a la salida de la CRC del vapor sobrecalentado, con sus correspondientes
aumentos de x6 y ηCC . Debido a que el efecto es muy similar, y para evitar repetir gráficas parecidas,
solo se presenta en la figura (4.4) la variación de estas dos últimas variables en función del PP y para los
mismos casos de ciclo de gas de la comparación anterior.
Efecto de la DI(fig. 4.5): El efecto de esta variable es más complicado de prever a primera vista,
pero es similar al del PP o el AP, aunque con mayor repercusión sobre los efectos finales. En primer lugar
se recuerda que DI se utiliza para fijar una temperatura mínima posible entre los gases de combustión a
su salida de la CRC y el agua a presión entrante en la misma. Esta variable por tanto solo empieza a hacer
efecto en los ciclos si la temperatura del agua entrante es lo suficientemente alta o si esta variable es mayor
que Tsalida gases − Tentrada agua . Es por esto que en las gráficas de la figura (4.5) se tiene un primer tramo
en el que no se produce ningún efecto ante la variación de DI. Una vez que DI supera el valor umbral
correspondiente al ciclo en cuestión, las gráficas comienzan a variar. A partir de este punto, un aumento
de DI implica, para empezar, que aumentan las pérdidas de energía al expulsar gases a una temperatura
mayor del mínimo posible. También implica que la relación de caudales M aumenta considerablemente, al
tener que conseguir calentar el fluido desde su temperatura de entrada hasta el la temperatura marcada
por Tsaturación − AP , ambas constantes, con una menor cantidad de calor específico disponible. Este
aumento de caudal implica que el sobrecalentamiento produce un incremento de la temperatura de salida
del vapor. Se puede ver en la gráfica (4.5a) que esta temperatura llega a sobrepasar el límite permitido,
Tentrada gases comb − DT , en el caso Tentrada gases comb = 801◦ C. Esto produce que el programa devuelva
los parámetros de salida con valor -2, lo que justifica el repentino descenso de las variables a partir
de DI ≈ 47◦ C. Hasta ese punto, el efecto del aumento de T5 tiene las mismas consecuencias sobre los
parámetros de salida que ya se han comentado en apartados anteriores. Cabe resaltar que el incremento
del rendimiento del ciclo combinado es escaso debido a que el aumento del trabajo obtenido en la turbina
de vapor no se da para un calor absorbido en la CRC constante, si no que este calor disminuye a medida
que aumenta DI.
1 En los siguientes gráficos, a no ser que se diga explícitamente lo contrario, se mantiene el código de colores para los
distintos casos de ciclo de gas
750
700
T entrada GGCC=672.6ºC
T entrada GGCC=736.7ºC
550
500
450
400
350
1 2 3 4 5 6 7 8 9 10
AP (ºC)
0.96
T entrada GGCC=672.6ºC
Titulo de vapor a la salida de la turbina , x6
0.94
T entrada GGCC=736.7ºC
0.92
T entrada GGCC=801 ºC
0.9
0.88
0.86
0.84
0.82
0.8
0.78
1 2 3 4 5 6 7 8 9 10
AP (ºC)
4.45
T entrada GGCC=672.6ºC
4.4 T entrada GGCC=736.7ºC
T entrada GGCC=801 ºC
M (kg aire/kg agua )
4.35
4.3
4.25
4.2
4.15
1 2 3 4 5 6 7 8 9 10
AP (ºC)
50
45
40
Calor absorbido (%)
35
30
q econ (%), T entrada GGCC=672.6ºC
25 q evap (%), " "
q sobrec (%), " "
20
q econ (%), T entrada GGCC=801 ºC
15 q evap (%), " "
q sobrec (%), " "
10
1 2 3 4 5 6 7 8 9 10
AP (ºC)
53
T entrada GGCC=672.6ºC
52.5
T entrada GGCC=736.7ºC
52 T entrada GGCC=801 ºC
51.5
rend CC (%)
51
50.5
50
49.5
49
1 2 3 4 5 6 7 8 9 10
AP (ºC)
0.9
0.85
0.8
0.75
0 2 4 6 8 10 12 14 16 18 20
PP (ºC)
(a) Efecto del PP sobre x6
53
52.5
52
51.5
rend CC (%)
51
50.5
50
49.5
49
48.5
0 2 4 6 8 10 12 14 16 18 20
PP (ºC)
850
T maxima de salida del vapor sobrecalentado
800
Temp vapor sobrecalentado (ºC)
750
700
650
600
550
500
450
400
20 25 30 35 40 45 50
DI (ºC)
4.9
4.8
M(kg aire/kg agua)
4.7
4.6
4.5
4.4
4.3
20 25 30 35 40 45 50
DI (ºC)
60
58
56
54
rend CC (%)
52
50
48
46
44
42
40
20 25 30 35 40 45 50
DI (ºC)
Efecto del PP en ciclos supercríticos (fig. 4.6): Las variables de entrada tienen un efecto en
los ciclos supercríticos similar a el que tienen en los subcríticos. Se ha elegido el PP para escenificar esta
afirmación.
750
700
Temp vapor sobrecalentado (ºC)
650
600
550
500
450
400
2 4 6 8 10 12 14 16 18 20
PP (ºC)
0.9
Titulo de vapor a la salida de la turbina, x6
0.88
0.86
0.84
0.82
0.8
0.78
0.76
0.74
0.72
0.7
2 4 6 8 10 12 14 16 18 20
PP (ºC)
4.45
4.4
4.35
4.3
M(kg aire/kg agua)
4.25
4.2
4.15
4.1
4.05
3.95
2 4 6 8 10 12 14 16 18 20
PP (ºC)
55
54.5
54
53.5
rend CC (%)
53
52.5
52
51.5
51
50.5
2 4 6 8 10 12 14 16 18 20
PP (ºC)
Figura 4.6: Resultados de la variación del Pinch Point en CicloVap_1P_SinDesg para ciclos supercríticos
Se observa claramente en la figura (4.6b) que el título de vapor obtenido en la salida de la turbina
de gas es menor del mínimo admisible para todos los valores de PP en los dos casos de ciclo de gas de
menor temperatura de entrada de los gases en la CRC.
El siguiente paso en el análisis de los resultados de este programa consiste en analizar cómo varían los
parámetros de salida con la variación de la presión y el Pinch Point simultáneamente. Se va a proceder a
mostrar y comentar gráficas de isocurvas en las que para la variación de dicho par de variables de entrada
se obtiene el resultado sobre uno de los parámetros de salida.
En esta sección se omitirá el estudio para distintos ciclos de gas, puesto que el efecto de la variación
de la temperatura de entrada de los gases de combustión a la CRC ha quedado bien definida; cuanto
mayor es la temperatura, mayor es el rendimiento obtenido, la temperatura del vapor sobrecalentado a la
salida,el porcentaje de calor absorbido en el sobrecalentador, y el título de vapor a la salida de la turbina.
Por contra, la relación de caudales de aire y de agua disminuye. Las gráficas han sido realizadas para el
caso intermedio de temperatura de entrada de los gases de combustión en la CRC 736.7◦ C.
A continuación se muestran las gráficas de isocurvas obtenidas para la variación de los distintos
parámetros de entrada citados;
T5 (º C)
220
700 650 600
600
650
180 550
600
550
160
600
550
140 500
p (bar)
600 550
500
120
550 500
100 450
500 450
80
550
400
60 450
500
400
40
5 10 15 20 25 30
PP (K)
Figura 4.7: Efecto de la variación conjunta de p y PP sobre la temperatura del vapor sobrecalentado en
CicloVap_1P_SinDesg
x6
220
0.87 0.86
0.88 0.84
200
0.8
5 0.83
6 4
180 7 0.8 0.8
0.8
160
83
82
140
p (bar)
0.
0.
0.85
120
0.84
0.8 0.
8 86
0.8
100 7
80 0.89
0.88 0.85 0.8
0.87 0.86 3
0.9 0.84
60
0.89
0.91 0.88
0.9 0.87 0.86 0.85
40
5 10 15 20 25 30
PP (K)
Figura 4.8: Efecto de la variación conjunta de p y PP sobre el título de vapor a la salida de la turbina en
CicloVap_1P_SinDesg
Como se ha comentado o se puede ver en las figuras de la Sección anterior, tanto el aumento de la
presión como el descenso del PP provocan un aumento de la temperatura a la salida del sobrecalentador,
la relación de caudales, el porcentaje de calor absorbido en el sobrecalentador y el rendimiento del ciclo,
y un descenso del porcentaje de calor absorbido en el evaporador. En estas gráficas, los efectos de la
modificación de estas variables se suman, dado que no se contraponen, y su efecto es más notable cuanto
más curvatura presentan las isolíneas. No pasa así con el resto de las variables, en donde estos efectos
son contradictorios.
LLama especialmente la atención la figura (4.8), en donde se puede observar claramente cómo el
aumento del PP provoca un aumento del título de vapor, pero el de la presión atraviesa variaciones en
su efecto; en un primer lugar tiende a disminuir el título de vapor, y al llegar a cierta presión de línea
cercana a los 140 bares, cambia la tendencia y el título de vapor tiende a aumentar. Este cambio de
tendencia tan claro se debe a que, para presiones bajas, el aumento de entropía que conlleva el aumento
de temperatura no es capaz de compensar la disminuciíon de entropía que implica aumentar la presión
del fluido, por lo que la expansión en la turbina comienza cada vez más a la izquierda en los diagrams
T s. Esto conlleva que la expansión finalice en una zona bifásica de cada vez menor título de vapor. Sin
embargo, llegado a cierto nivel de presión, la generación de entropía debida al constante incremento e la
temperatura supera la disminución de entropía que conlleva el aumento de presión, por lo que a partir
de esa p, el vapor sobrecalentado a la salida de la CRC tendrá una entropía mayor según aumente la
presión, obteniéndose un mayor x6 .
4.4
120 4.5 4.3
4.2
100 4.1
4.4
4.3
80 4.2
4.1
4.5
4
60
40
5 10 15 20 25 30
PP (K)
Figura 4.9: Efecto de la variación conjunta de p y PP sobre la la relación de caudales másicos en Ciclo-
Vap_1P_SinDesg
q_econ (%)
220 48
46
44 48
200 46
44 46
180 44 46
42
44
160 42
44
42 44
40 42
140
p (bar)
40 42
40 42
120 38 40
38 40
38 40
100 36 38
36 38
36 38
34 36
80 34 36
34 36
32 34
32 34
60 32 34
30 32
30 32
30 32
28 30
40 28 30
5 10 15 20 25 30
PP (K)
Figura 4.10: Efecto de la variación conjunta de p y PP sobre el porcentaje de calor absorbido por el
economizador en CicloVap_1P_SinDesg
q_evap (%)
220 10 10 10 10
15 15 15 15 15 15
200 20 20 20
20 20 20
180 25 25
25 25
25 25
160 30 30
30 30
30 30
140 35
p (bar)
35 35
35
35
35
120
40
40
40
40
100 40
40
45
45
45
80 45
45
45 50
50
60 50
50
50 55
50 55
40 55
5 10 15 20 25 30
PP (K)
Figura 4.11: Efecto de la variación conjunta de p y PP sobre el porcentaje de calor absorbido por el
evaporador en CicloVap_1P_SinDesg
q_sobrec (%)
220 45 40 40
40 40
40 40 35
35
200 35
35
35 30
35 30
180 30
30
160 30 25
30 25
25
140
p (bar)
25
20
120 25
20
25
100 20
20
80
15
60 20
15
40
5 10 15 20 25 30
PP (K)
Figura 4.12: Efecto de la variación conjunta de p y PP sobre el porcentaje de calor absorbido por el
sobrecalentador en CicloVap_1P_SinDesg
rend_CC (%)
220 54
54
200 53
54
53
180 53
53
160 53
52
53 52
140 52
p (bar)
52
120 52 51
52 51
51
100 51
51 50
51 50
80 50
50
50 49
60 49
50 49
49 48
49 48
40 48
5 10 15 20 25 30
PP (K)
Figura 4.13: Efecto de la variación conjunta de p y PP sobre el rendimiento del ciclo de combinado en
CicloVap_1P_SinDesg
El efecto de la variación simultánea de pares del resto de parámetros de entrada sobre el programa
CicloVap_1P_SinDesg es muy similar, y las distintas gr’aficas tienen entre sí formas análogas. A conti-
nuación se muestra como ejemplo cómo varía el rendimiento del ciclo global para variaciones conjuntas
de la diferencia inicial de temperaturas y el PP.
rend_CC (%)
20
49.6
18
49.8
50.6 50.4
50.2 50
16
14 49.8
50.8 50.6 50.4
50.2 50
12
DI (K)
4
51.4 51.2 50.8 50.6 50.4
51
2
2 4 6 8 10 12 14 16 18 20
PP (K)
Figura 4.14: Efecto de la variación conjunta de la DI y el PP sobre el rendimiento del ciclo de combinado
en CicloVap_1P_SinDesg
Dado que el anterior ciclo y este, de 1P con desgasificador, son muy similares y han seguido la misma
metodología para su simulación, en esta sección se va a analizar solo el efecto de la presión de extracción.
Se ha retomado la utilización de tres tipos distintos de ciclo de gas; los mismos que los utilizados en
la Sección (4.1.1.2), por lo que el código de colores usados se mantiene invariable. Se ha utilizado para
las simulaciones una presión de línea de 90 bares.
Puede observarse que un aumento de la presión de extracción conlleva un aumento de la temperatura
de salida, debido a que se necesita una mayor relación de caudales másicos, lo que conlleva que en el
tramo del sobrecalentador halla más calor total disponible. Debido a este aumento de temperatura de
salida aumenta el título de vapor a la salida de la turbina y el rendimiento del ciclo. Se recuerda que el
motivo por el cual no se utilizan presiones de extracción altas es que aunque aumente el rendimiento, el
calor total cedido por los gases de combustión es menor ya que salen de la CRC a temperaturas mayores.
Esto puede apreciarse claramente en la figura 4.20.
Se recuerda que, en la figura (4.18), las líneas continuas hacen referencia al porcentaje de calor
absorbido en el economizador; las curvas de trazo discontinuo toman los valores del porcentaje de calor
absorbido en el evaporador, y por último, las líneas de trazadas con puntos y rallas representan el
porcentaje de calor absorbido en el sobrecalentador. Se puede observar en dicha figura que con el aumento
de la presión de extracción, el porcentaje de calor absorbido en el sobrecalentador aumenta en detrimento
de los otros dos.
Temp vapor sobrecalentado (ºC)
800
700
600
500
400
0 2 4 6 8 10 12
p_ext (bar)
0.95
0.9
0.85
0.8
0 2 4 6 8 10 12
p_ext (bar)
5
M(kg aire/kg agua)
4.8
4.6
4.4
4.2
0 2 4 6 8 10 12
p_ext (bar)
60
Calor absorbido (%)
50
40
30
20
10
0 2 4 6 8 10 12
p_ext (bar)
50
rend CC (%)
45
40
35
0 2 4 6 8 10 12
p_ext (bar)
850
750
700
650
600
550
500
0 2 4 6 8 10 12
p_ext (bar)
Figura 4.20: Efecto de la variación de la presión de extracción sobre el calor total absorbido por el agua
en la CRC, en CicloVap_1P_ConDesg
Los cambios de curvatura que tienen lugar en torno a pext = 1 bar se deben a que para presiones
bajas de extracción, la temperatura de entrada del agua a la CRC es menor que Tsalida GGCC − DI. Por
tanto, y como se puede ver dada la mayor pendiente de las curvas en ese tramo, es ahí cuando la presión
de extracción tiene una mayor influencia sobre los parámetros relacionados con la CRC.
Los efectos de la presión de extracción sobre las variables de salida de los ciclos supercríticos son
análogos a los efectos en los ciclos subcríticos.
Esta es la pareja de variables que se ha elegido para estudiar, dado que los efectos del resto de variables
son más fácilmente predecibles. Otra vez, se realizará un estudio únicamente de los ciclos subcríticos, que
son los más comunes en 1P.
T5 (º C)
220 600 625
575
600 625
550 575 600
200 600
575 600
550 575
525 575
180 550 575
550
500 525 550
160 525 550
525
500 525
140 475
p (bar)
500 525
500
475
120 450 500
475 500
450 475
100 425 475
450
475
80 400 425 450
60 425
375 400 0
45 475
40
1 2 3 4 5 6 7 8 9 10
p_ext(bar)
Figura 4.21: Efecto de la variación conjunta de p y p_ext sobre la temperatura del vapor sobrecalentado
en CicloVap_1P_ConDesg
Como puede verse, el efecto de la presión de extracción es más difícil de prever que otros analizados.
Una primera apreciación es que el efecto de aumentar la misma es más intenso cuanto menor es la la
presión de exctracción; a medida que dicho valor va aumentando, su efecto disminuye. Esto se debe a
que, como se ha comentado en la Sección anterior, para presiones de extracción bajas no se modifican
apenas los las propiedades del fluido dentro de la CRC, y solo cuando se alcanza una presión tal que al
realizar la compresión desde el desgasificador hasta la presión de línea la temperatura resultante obliga a
expulsar gases de combustión a más temperatura de la mínima posible, y por tanto aumentan las pérdidas
energéticas, cuando disminuye su efecto sobre los parámetros de salida. También este efecto es mayor en
la mayoría de las variables de salida si se tienen presiones bajas en el ciclo. Esto puede ser debido a que
el valor relativo de la presión de extracción con respecto a la de línea es mayor para presiones de línea
x6
220 0.85
0.84
0. 0.83
82 0.85
200 0.84
0.83 0.84
180
0.
0.84
18 0.8 0.83
2
160
140
p (bar)
3
0.8
120
2 0.84
100 0.8
0.83
81
0.84
0.
80 0.84 0.85
0.83
0.82 0.84 0.85
0.85 0.86
60
0.83 0.84 0.86 0.87
0.85 0.86 0.87 0.88
0.85 0.86 0.87 0.88 0.89
40 0.9
1 2 3 4 5 6 7 8 9 10
p_ext(bar)
Figura 4.22: Efecto de la variación conjunta de p y p_ext sobre el título de vapor a la salida de la turbina
en CicloVap_1P_ConDesg
es mayor que para presiones altas. Una vez realizado este apunte, se pasa a comentar el efecto de estas
variables sobre los parámetros de salida.
Con respecto a la temperatura del vapor sobrecalentado (fig. 4.21), se puede afirmar que un aumento
de la presión de extracción favorece un aumento de temperatura, aunque dicho efecto es muy ligero
para presiones de línea altas. Similar a esta gráfica es la de la figura (4.24), pero se diferencia en que
la sensibilidad de la relación de caudales hacia la presión de extracción se mantiene durante un tramo
mayor de presiones de línea. Este aumento de T5 y de M se relaciona con el aumento del porcentaje de
calor requerido por el sobrecalentador (figura 4.27), cuya forma es similar, y del rendimiento del ciclo
combinado.
Se puede observar en la gráfica (4.22) que el efecto de pext sobre x6 es mayor para presiones altas
que para presiones bajas, al contrario que sucedía con otros parámetros. Al contrario también que otras
variables de salida, la fracción másica del caudal extraído hacia el desgasificador (figura 4.23) no se ve
afectado apenas por la presión e línea en los casos de baja presión de extracción, y que dicha influencia
va aumentando conforme aumenta la presión de extracción del ciclo.
x_ext
220
95
0.1
200
0.045
0.075
0.105
0.135
0.03
0.06
0.09
0.12
21
0.15
0.165
0.18
0.
180
160
5
0.22
140
p (bar)
120
0.195
0.2
100
0.045
0.075
0.105
0.135
0.03
0.06
0.09
0.12
0.15
0.165
1
0.18
80
60
0.21
0.195
40
1 2 3 4 5 6 7 8 9 10
p_ext(bar)
Figura 4.23: Efecto de la variación conjunta de p y p_ext sobre la fracción másica del caudal de extracción
en CicloVap_1P_ConDesg
Como se muestra en la figura (4.26), el porcentaje de calor necesario para llevar a cabo la evaporación
se mantiene prácticamente invariable con respecto a la presión de extracción, exceptuando el primer
tramo ya comentado.
140 4.9
p (bar)
4.8
4.
4.6
5
4.7
120
4.8
4.7
100 4.6
4.4
4.8
4.5
80
60 4.7
4.3
4.8
4.6 4.9
40
1 2 3 4 5 6 7 8 9 10
p_ext(bar)
Figura 4.24: Efecto de la variación conjunta de p y p_ext sobre la la relación de caudales másicos en
CicloVap_1P_ConDesg
q_econ (%)
220
40
200 35
35
180
40
45
35
160
35 30
140
p (bar)
30
35 30
40
120
30 25
100 25
30 25
35
80 25 20
20
25 20
60
30 20 15
15
40 25 20 15
1 2 3 4 5 6 7 8 9 10
p_ext(bar)
Figura 4.25: Efecto de la variación conjunta de p y p_ext sobre el porcentaje de calor absorbido por el
economizador en CicloVap_1P_ConDesg
q_evap (%)
220 15 15 15
15 15 15
20 20 20 20 20
20
200
25 25 25 25 25
25
180 30 30 30 30
30
30
35 35 35
160 35 35
35
40 40 40
140 40 40
p (bar)
40
45 45 45
120 45
45
45 50
50 50
100 50
50
50 55 55
55 55
80 55
55 60 60
60 60
60 60
60
65 65 65 65
40 65
1 2 3 4 5 6 7 8 9 10
p_ext(bar)
Figura 4.26: Efecto de la variación conjunta de p y p_ext sobre el porcentaje de calor absorbido por el
evaporador en CicloVap_1P_ConDesg
rend_CC (%)
220 59
57 58 60
54
53
55
200 56
59
180 58
57
59
160
58
56
52
140 55
p (bar)
57
54 58
120 53 56 57
51
100 55
57
56
54
80 55 56
52 53
50
54 55
60
49
53 54 55
51 52
40 53 54
1 2 3 4 5 6 7 8 9 10
p_ext(bar)
Figura 4.29: Efecto de la variación conjunta de p y p_ext sobre el rendimiento del ciclo de combinado en
CicloVap_1P_ConDesg
q_sobrec (%)
220 40 45 45 50 50
45 45
35 40 45
40
200 40
35 40
30 40
35
180 35
35
30 35
25 30
160 30
30
25 30
140
p (bar)
20 25
25
120
25
20 25
100
15 20
80 20
60
15
20
40
1 2 3 4 5 6 7 8 9 10
p_ext(bar)
Figura 4.27: Efecto de la variación conjunta de p y p_ext sobre el porcentaje de calor absorbido por el
sobrecalentador en CicloVap_1P_ConDesg
200
180
670
660
650
640
630
620
610
600
590
580
570
560
550
540
160
140
p (bar)
120
100
80
670
660
650
640
630
620
610
600
590
580
570
560
550
540
60
40
1 2 3 4 5 6 7 8 9 10
p_ext(bar)
Figura 4.28: Efecto de la variación conjunta de p y p_ext sobre el calor total absorbido en la CRC en
CicloVap_1P_ConDesg
Con esto se da por finalizado el análisis de los resultados de los ciclos 1P con desgasificador.
Dado que se ha analizado en detalle en la sección anterior cómo afectan cada una de las variables a
un ciclo simple, y este efecto se mantiene para el resto de los ciclos de vapor independientemente de sus
niveles de presión, no se va a realizar una explicación tan detallada. Se procederḿostrando algunas de
las gráficas obtenidas a partir de la variación simultánea de las presiones de alta y de baja presión.
En esta sección se analizará el primer par de programas ejecutados. Se recuerda que uno se dedicaba
al estudio de los ciclos de alta y baja en paralelo, y el otro exploraba la posibilidad de que el ciclo de alta
esté a continuación del de baja, o incluso que el sobrecalentador de baja se intercale con el economizador
de alta.
Como se ha comentado, se va a estudiar el efecto de la variación de las presiones de línea sobre un
ciclo de vapor de dos líneas de presión sin recalentamiento. No se va a realizar una diferenciación entre
los programas en paralelo y en cascada dado que a pesar de poder modificar la posición del sobreca-
lentador de baja, no se ha considerado que pueda colocarse tras el evaporador de alta, por lo que los
resultados obtenidos son muy similares para ambas simulaciones. Si se hubiera previsto esta posibilidad,
la temperatura del punto 5b podría tomar valores mucho mayores, y entonces las diferencias entre ambas
simulaciones sería notable.
Efecto sobre las temperaturas de salida de los caudales de vapor sobrecalentado de alta
y de baja (figs. 4.30 y 4.31): A continuación se muestran dos gráficas que permiten observar la
evolución de las temperaturas de salida del vapor sobrecalentado de alta y de baja presión; Como se
puede observar, las gráficas toman una forma muy distinta. Se puede apreciar que en ambas gráficas hay
zonas que no se han representado. Esto es debido a que para los valores para los cuales se realizaban esas
585
560
550
575
580
565
545
555
590
595
0
570
54
15
P B (bar)
545 0
0
55 0
60
56
5
58
60
5
5 5
55
57
56
0
10
58
0
0 0
57
61
59 5
59
5
550
61
555
560 0
565 62
560 570 575 580 585
565 600 625
570 590 595 605 630
575 575 580 610 615
5 585
60 80 100 120 140 160 180 200 220
P A (bar)
(a) T5a (◦ C)
26
240
230
250
240
260
220
15
210
25
P B (bar)
220
0
26
270 260
0
0 23
23
10 24 0 0
25 270 24
280 270
250 0 20 190
0
280 290 280 2
260 290 260 220 10
290 300 300 270
270 310
310 320 300 290 280 2
250240 30
280 300 320 330 320310
290 310 330 340 350 340 330 260
27
5 320 340 350 360 370 360 350 340330 320310300 290 2800
60 80 100 120 140 160 180 200 220
P A (bar)
(b) T5b (◦ C)
Figura 4.30: Efecto de la modificación de las presiones de línea sobre las temperaturas de salida de vapor
sobrecalentado
T 5B (ºC)
360
340
400
320
350
300
300
280
250
260
200
240
150
20 220
220
15 200
180 200
160
10 140
120
100
80
5 60
P B (bar) P A (bar)
simulaciones daban resultados no válidos. Por tanto, una primera conclusión que puede hacerse es que si
aumentan ambas presiones lo suficiente, aumentan las posibilidades de alcanzar temperaturas imposibles
dentro de la caldera.
Se puede apreciar claramente que T5a aumenta si aumenta la presi’on de la línea de alta, y desciende
si aumenta la de baja.
Por otra parte, T5b aumenta con la presión de la línea de alta (esto provoca que el sobrecalentador
de baja disponga de más espacio para absorber calor, dado que están en paralelo) hasta llegar a cierto
punto, tras el cual disminuye con el incremento de dicha presión. T5b desciende también si aumenta la
presión de baja, lo cual se debe a que cuanta mayor sea la presión a la que evapora el caudal de baja,
menos energía disponible queda para que se sobrecaliente, dado que en la simulación se toma como base
de diseño que el calentamiento del economizador de alta tiene que llevarse a cabo sí o sí.
Es de interés mostrar la gráfica 3D equivalente de la figura (4.30b), que ayuda a entender mejor el
efecto de las presiones sobre esta variable.
En esta figura (4.31) se ve más claramente cómo las mayores temperaturas se alcanzan para valores
intermedios de presión de alta y lo más bajos posibles de presión de baja.
Efecto sobre el título de vapor a la salida de la turbina (fig. 4.32): Como se puede obserbar,
y de igual forma que en los ciclos 1P, el t’itulo de vapor desciende si aumentamos las presiones de línea,
teniendo la variación de pa un efecto de mayor magnitud. La explicación a este fenómeno es la misma
que para los ciclos 1P; una menor presión conlleva una mayor generación de entropía en los procesos de
calentamiento, y al realizar la expansión se termina en un punto de equilibrio bifásico o incluso vapor
sobrecalentado (aunque ese no es el caso en esta simulación).
0.8
0.86
4
0.8
0.
5
38
0.8
15
7
P B (bar)
0.8
4 0.8
0.8 3
0.8 5
6
10 0.84
0.8
7 0.85
0.86
0.88
0.84
0.85
0.87 0.86
0.89
0.88 0.87 0.85
0.86
0.9 0.89 0.88 0.87 0.86
5
60 80 100 120 140 160 180 200 220
P A (bar)
Figura 4.32: Efecto de la modificación de las presiones de línea sobre el título de vapor a la salida de la
turbina
Efecto sobre la relación de caudales másicos de aire y de agua (fig. 4.33) Dado que durante
el primer tramo de la CRC, en el cual se realiza el balance de masas por el que se obtiene esta variable,
está formado exclusivamente por caudal de baja presión, el efecto de pa es nulo sobre este parámetro. Por
tanto, pb tiene el mismo efecto sobre esta variable que el que tenía la presión de línea en los ciclos 1P.
Cuanto menor sea esta presión, mayor será la relación de caudales, por tener que realizar el calentamiento
del economizador con una energía específica disponible menor.
Efecto sobre los porcentajes de calor absorbidos en cada tramo de la CRC (fig. 4.34)
Se recuerda que la información proporcionada por esta variable incluye el porcentaje de calor absorbido
por todo el caudal en el economizador de baja, qinicio , el cedido al evaporador y sobrecalentador de baja
juntos, qbaja , y al absorbido por el caudal de alta incluyendo su paso por el economizador, el evaporador
y el sobrecalentador de alta; qalta . Se puede ver que qinicio no varía con la presión de alta, de la misma
forma que sucedía con M . Por otra parte, qbaja aumenta con la presión de baja y disminuye si aumenta
la presión de alta. Por último, qalta sigue la evolución contraria que qbaja , dado que la suma de los tres
porcentajes tiene que dar el 100 %. De esta forma, qalta aumenta para valores menores de pb (dado que si
la presión de baja es menor, la relación de caudales másicos aumenta y esto deriva en una mayor cantidad
de calor disponible para sobrecalentar el vapor de alta), y disminuye para valores altos de presión de alta,
dado que en este caso la cantidad de calor necesaria para llevar a cabo la evaporación disminuye.
q CALDERA
20
5 71.25
3. 71.25
1 q alta
71.25 14.25 71.25 13
71.25
14.25 .5 q baja
14.2
5 72.5
15 72.5
q inicio
5 72.5
2 72.5
14. 72.5
P B (bar)
14.2
5 73.75
73.75 15
15 73.75 73.75
73.75 15 75
10 75
14.2
15 75 5
75 15
75 75 76.25
15.75
15.75 15.75
76.25
15 .25
76.7 15
76.25 5
15.75 76.25
16.5 76.25
16.5
16.5 .5
77.75
77.5 16.5 15
5
60 80 100 120 140 160 180 200 220
P A (bar)
Efecto sobre la fracción másica del caudal de extracción (fig. 4.35) En este caso, se puede
ver otra vez cómo para bajas presiones de la línea de baja se tiene que la magnitud del efecto de la
variación de dicha presión o la de alta sobre xext es notablemente mayor que para valores altos de pb .
Este efecto ya se ha razonado en secciones anteriores. Cabe destacar que xext aumenta también si lo hace
la presión de la línea de alta.
0.
12
0.1
0.
5
11
0.1
0.11
0.
1
9
6
11
17
8
4
15
P B (bar)
0.1
0.1 19
0.1
0.
0.1 0. 1 17 18
11
15 16
3
0.1
10 14
0.117 0.11
0.116 8
0.1 0.115
12
0.11 0.114
3 0.116 0.117
0.11 0.115
1 0.114
0.112 0.113 0.115 0.116
0.11 0.113 0.114
5 0.111 0.112 0.115
60 80 100 120 140 160 180 200 220
P A (bar)
Efecto sobre el rendimiento del ciclo combinado (fig. 4.36) Por último, pasamos a analizar
el efecto de las presiones sobre el rendimiento del ciclo global. Se puede ver que éste aumenta cuanto
mayores son las presiones de línea, y sobre todo para presiones elevadas de la línea de alta. Esto se debe
en parte a que en la simulación se ha introducido un valor de la fracción de caudal de alta mayor de 0.5.
rend CC (%)
20
54
54
55
.5
52
52.5
53
53.5
15
P B (bar)
54
54
.5
10
52
52.5
53
53
.5
54 54
.5
5
60 80 100 120 140 160 180 200 220
P A (bar)
660
660
680
15 660
72
0
P B (bar)
700 680
680
700 680
740 720
700
10 700
720 700
760 740 720
720 720
740
780 760 740
760 740 740
800 780
820 800
840
5 860
60 80 100 120 140 160 180 200
P A (bar)
Figura 4.37: Efecto de la modificación de las presiones de línea sobre T5a en un ciclo 2P con recalentamiento
350
450
400
300
350
300
250
250
50
200 200
100
150 150
5 200
10
15 250
20
P A (bar)
P B (bar)
Figura 4.38: Efecto de la modificación de las presiones de línea sobre T5b en un ciclo 2P con recalentamiento
En este caso, la presión de salida de la línea de alta, que es igual a la presión de salida del caudal
recalentado, aumenta para valores decrecientes de ambas presiones de línea. Esto es así porque de ser
menores, mayor es la cantidad de calor disponible para llevar a cabo el recalentamiento.
El efecto sobre la temperatura de salida de baja es más leve, y ha tenido que representarse en 3D para
poder apreciarlo. Se puede ver que esta temperatura aumenta conforme aumenta la presión de baja, y
que el efecto de la presión de alta es casi nulo.
18 1 1
P B (bar)
17.5
17
16.5
16
15.5
15
120 130 140 150 160 170 180 190 200 210
P A (bar)
Figura 4.39: Efecto de la modificación de las presiones de línea sobre x6 en un ciclo 2P con recalentamiento
0.999
0.998
1
0.998 0.997
0.996 0.996
50
0.994
100 0.995
0.992 150
5 0.994
10 200
15
250 P A (bar)
20
P B (bar)
Figura 4.40: Representación en 3D del efecto de la modificación de las presiones de línea sobre x6 en un
ciclo 2P con recalentamiento
Uno de los objetivos buscados que la implementación del tramo de recalentamiento es el aumento del
título de vapor. Como puede verse en las figuras (4.39) y (??), solo para presiones altas tanto en la línea
de baja como en la de alta se obtiene a la salida de la turbina un estado de equilibrio bifásico, y no calor
sobrecalentado. Se recuerda que en estos programas q_caldera cuenta con una cuarta componente, que
5 5 5 5 5 5
15
5.1 5.1 5.1 5.1 5.1 5.1
P B (bar)
Figura 4.41: Efecto de la modificación de las presiones de línea sobre M en un ciclo 2P con recalentamiento
almacena el valor del porcentaje de calor absorbido por el recalentador. Se puede ver que la forma de las
curvas qinicio y qbaja se mantiene, mientras que qalta varía con respecto a los ciclos sin recalentamiento.
Ambos descienden para presiones superiores en las líneas de alta y de baja.
El motivo de que en la gr’afica (4.43) no se aprecie el efecto da bajas presiones sobre xext es que
en dichos niveles la simulación da como resultado ciclos imposibles. Se aprecia bien en dicha figura que
cuanto mayor es la presión de alta, mayor debe ser la de baja para que el ciclo sea posible.
q CALDERA
20
21 5
75
3.
.5
qinicio
22
24.75
5
.25
.75
24
21 56 q
23
15 155 15 15 .2 15 15 baja
5 55
q
57
alta
.5
60
15 21 qrec
6.25
58
13.75 13.75 13.75 13.75 6.25
13.75 13.75
.75
75
P B (bar)
6.25
5 21. .5 6.25
22 56.2
5
5
12.5 12.5 6.2 12.5 57 12.5 12.5 12.5
.5
23.25
7.5 7.5
10
24
56.2
57.5
24
7.5
.7
11.25 6.25 11.25 11.25 11.25 11.25 11.25
5
22.5 5 58
7. .75
8.75 57.5 8.75
60
10 10 10 10 10 10 8.75
8.75
22.5
7.5
8.75 8.75
5
60 80 100 120 140 160 180 200
P A (bar)
Figura 4.42: Efecto de la modificación de las presiones de línea sobre qcaldera en un ciclo 2P con recalen-
tamiento
0.039
0.039
15 0.039
0.03 0.039
8 0.039
P B (bar)
0.038
0.038
0.038
0.038 0.038
0.037
10
0.037
0.037
0.037 0.037 0.037
0.036
0.036
0.036 0.036
0.035
0.035
0.034
5
60 80 100 120 140 160 180 200
P A (bar)
Figura 4.43: Efecto de la modificación de las presiones de línea sobre xext en un ciclo 2P con recalenta-
miento
rend CC (%)
20
54.6
55
.4
.8
.6
55
.2
54
55
55
8
55.
15
P B (bar)
55.8
55.6
55 55.4
.2
55 55.8
56
55.6 56
10 55.8
55.4 56
56.2
55.6 55.8 56 56.2
56.2 56.4
56 56.2 56.4
55.8 56.4
56.2
56
56.2
5
60 80 100 120 140 160 180 200
P A (bar)
Figura 4.44: Efecto de la modificación de las presiones de línea sobre el rendimiento de un ciclo combinado
2P con recalentamiento
Por último, se puede apreciar en la gráfica (4.44) que la presión de baja juega un papel mucho más
relevante en la determinación del rendimiento del ciclo combinado. Esto es porque el recalentamiento tiene
lugar precisamente a dicha presión, tras juntar el caudal de vapor sobrecalentado de baja y el caudal de
alta parcialmente expandido. Se puede ver cómo el rendimiento aumenta para presiones menores en la
línea de baja y presiones mayores en la línea de alta.
Con esto se da por concluido el análisis de los resultados arrojados por los programas de simulación.
Este programa es capaz de encontrar rápidamente un máximo aceptable, para los ciclos subcríticos.
Este resultaado obtenido puede variar dependiendo de algunas variables de entrada del AG, como por
ejemplo del numero de individuos. Cuanto mayor sea este parámetro, mayores serán las posibilidades de
dar con el máximo absoluto. En la siguiente figura puede verse una comparación de la simulación obtenida
utilizando N = 20 individuos y N = 100 individuos, manteniendo constantes el resto de parámetros.
55
54
53
52
51
Figura 4.45: Comparación de los resultados obtenidos en AG_1P_SinDesg_sub para distinto número de
individuos en cada población
Así mismo, la modificación de otros parámetros de entrada como la presión de selección o la intensidad
de mutación provocan que el algoritmo finalice antes. En el caso de la figura anterior, las soluciones dadas
por el AG para un ciclo de gas con una temperatura de entrada de los gases de combustión en la CRC es
de 800,01◦ C:
Se puede ver que las soluciones tienden a tener la máxima presión y el mínimo PP posible. También
de puede apreciar que las soluciones obtenidas por ambos algoritmos son muy similares, obteniendo un
fitness máximo apenas diferenciable como puede verse en la figura (4.45).
Este programa optimiza el mismo ciclo pero introduce también la el AP como parámetro a optimizar.
En la figura (4.46) puede observarse la evolución del fitnes máximo (trazo contínuo) y el medio (trazo
discontinuo) durante el avance de la iteración;
La simulación de la figura (4.46) ha sido realizada para un ciclo de gas en el que la temperatura
de entrada de los gases de combustión en la CRC es de 800,01◦ C, y el mejor individuo devuelto por la
55.5
55
54.5
54
53.5
53
0 10 20 30 40 50 60 70 80
Figura 4.46: Evolución de los fitness máximo y medio de cada población durante las iteraciones
función es tiene los siguientes genes; p=220,4272 bar; PP=10,0079 K; y AP=6,9234 K. Este resultado
refleja que a pesar de seguir buscando la presión máxima, en este caso el rendimiento máximo no se da
para el PP mínimo posible, si no que se busca una relación de compromiso con el AP.
Otra conclusión que se saca de la figura (4.46) es que el algoritmo da resultados correctos, dado que el
rendimiento máximo alcanzado es superior a los obtenidos por el AG que no contempla la optimización
del Approach Point.
3 1er contacto con el tutor0 días sáb 19/09/15 sáb 19/09/15 2 19/09
4 Primera Reunión con el 0 días jue 24/09/15 jue 24/09/15 3FC+5 días 24/09
tutor
5 Selección definitiva 1 día? vie 02/10/15 sáb 03/10/15 4FC+10 días
Página 1
Id Modo de Nombre de tarea Duración Comienzo Fin Predecesoras
3er trimestre 4º trimestre 1er trimestre 2º trimestre 3er trimestre
tarea ago sep oct nov dic ene feb mar abr may jun jul ago
14 Realización versiones 20 días sáb 30/01/16 lun 15/02/16
sinDesg
15 Realización versiones 10 días lun 15/02/16 lun 22/02/16 14
conDesg
16 Inicio Programas CicloVap 0 días lun 22/02/16 lun 22/02/16 15 22/02
2P
17 Realización Programas 16
CicloVap 2P
18 Implementación ciclos 71,4 días lun 02/05/16 jue 23/06/16
subcríticos 2P
19 Implementación ciclos 36,8 días jue 23/06/16 mié 20/07/16 18
supercríticos 2P
20 Investigación AG
21 Recopilación Información 15 días mar 01/03/16 vie 11/03/16
Ags; Lectura de TFG
Página 2
Id Modo de Nombre de tarea Duración Comienzo Fin Predecesoras
3er trimestre 4º trimestre 1er trimestre 2º trimestre 3er trimestre
tarea ago sep oct nov dic ene feb mar abr may jun jul ago
28 Inicio Ags de 2P 0 días lun 18/04/16 lun 18/04/16 27 18/04
29 Desarrollo AG 2P 1 día? lun 18/04/16 lun 18/04/16 28
Página 3
Capítulo 6
Hans-Georg Beyer and Hans-Paul Schwefel. Evolution strategies, a comprehensive introduction. Natural
Computing, 1(3):52, 2002.
D.G. Bogard. Gas turbine film cooling. Journal of Propulsion and Power, 22(2):22, 2006.
M. Duvison. Modelización y simulación térmica del precalentamiento del combustible de la turbina de gas
en una Central Térmica de Ciclo Combinado (CTCC) de tres niveles de presión y optimización de los
parámetros de diseño de la planta. PhD thesis, Universidad Politécnica de Madrid; Escuela Técnica
Superior de Ingenieros Industriales, 2016.
Santiago Sebugal García and Florentino Gómez Muñoz. Centrales Térmicas de Ciclo Combinado; Teoría
y Proyecto. Endesa, 2006. ISBN 84-7978-735-X.
John H. Holland. Adaptation in natural and artificial systems: An introductory analysis with applications
to biology, control, and artificial intelligence. Mit University Press Group Ltd, 1992. ISBN 978-
0262581110.
Dr. Ulrich Jecht. Análisis de gases de combustión en la industria. guía práctica para medir emisiones y
procesos. Technical report, Testo AG, 2004.
A. J.Rovira. Desarrollo de un Modelo para la Caracterización Termoeconómica de Ciclos Combinados de
Turbinas de Gas y de Vapor en Condiciones de Carga Variable. PhD thesis, Universidad Politécnica
de Madrid; Escuela Técnica Superior de Ingenieros Industriales, 2004.
A. C. Karaoglanli, K. Ogawa, A. Turk, and I. Ozdemir. Progress in Gas Turbine Performance. 2013.
ISBN 978-953-51-1166-5.
John R. Koza. Genetic Programming: On the Programming of Computers by Means of Natural Selection:
On the Programming of Computers by Means of Natural Selection v. 1 (Complex Adaptive Systems).
Mit University Press Group Ltd, 1992. ISBN 978-0262111706.
Zbigniew Michalewicz. Genetic Algorithms + Data Structures = Evolution Programs. Springer, 1991.
ISBN 978-3540606765.
Melanie Mitchell. An Introduction to Genetic Algorithms. MIT Press, 1999. ISBN 0−262−13316−4.
Jacobo Lansac Nieto. Optimización de un colector lineal fresnel mediante algoritmos genéticos, 2015.
J. L. Rapún. Modelo Matémático del Comportamiento de Ciclos Combinados de Turbinas de Gas y Vapor.
PhD thesis, Universidad Politécnica de Madrid; Escuela Técnica Superior de Ingenieros Industriales,
1999.
Renovetec. Calderas de recuperación, - -. URL http://www.plantasdecogeneracion.com/index.php/
calderas-de-recuperacion.
Staff Report. Agawam merchant gt24 combined cycle plant uses once-through hrsg. Technical report,
Modern Power Systems, 1999.
S. N. Sivanandam and S. N. Deepa. Introduction to Genetic Algorithms. Springer, 2007. ISBN 978-3-
540-73189-4.
University of Virginia Wadley Research Group. High temperature coatings: Thermal barrier coatings
systems, apr 2013. URL http://www.virginia.edu/ms/research/wadley/high-temp.html.