Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
MORELIA, MICHOACÁN ENERO DE 2017
INSTITUTO TECNOLÓGICO DE MORELIA
DIVISIÓN DE ESTUDIOS PROFESIONALES
DEPARTAMENTO DE INGENIERÍA MECÁNICA
TESIS
SIMULACIÓN DEL CICLO TERMODINÁMICO DE UNA CENTRAL
NUCLEAR CON UN REACTOR TIPO BWR
QUE PARA OBTENER EL TÍTULO DE:
INGENIERO MECÁNICO
PRESENTA:
FELIPE DE JESÚS PAHUAMBA VALDEZ
ASESORES:
M. C. JOSÉ VICENTE XOLOCOSTLI MUNGUÍA
M. I. MOISÉS GARCÍA MONROY
INSTITUTO NACIONAL DE INVESTIGACIONES NUCLEARES
DEPARTAMENTO DE SISTEMAS NUCLEARES
Dedicatoria
A mi madre, Herlinda Valdez Estrada
Con profundo cariño
A mis hermanos, Berenice y Enrique
De quienes he aprendido mucho
In memoriam, Rafael Pahuamba, mi padre
Enriqueta Estrada, mi abuelita
De quienes tengo gratos recuerdos
Agradecimientos
A mí familia por acompañarme y apoyarme durante esta meta de mi vida.
Al Instituto Tecnológico de Morelia.
A los profesores de Ingeniería Mecánica por sus conocimientos y experiencias compartidas.
A mi tía Jose�na Valdez Estrada, por el apoyo, cuidado y consejos brindados durante mí
estadía en Toluca.
A mis compañeros de la carrera de Ing. Mecánica, con quienes compartí excelentes mo-
mentos durante nuestros estudios.
Al M. C. Vicente Xolocostli Munguía, por motivarme a realizar este proyecto y por su
adecuada asesoría.
Al M. I. Moisés García Monroy, por sus enseñanzas y por su asesoría en este proyecto.
A Guillermo Ibarra, por ayudarme con mis errores y dudas con Python y LATEX.
A los miembros del cubículo 16, Sam y Robert, por sus ocurrencias.
Al Dr. Arturo Delfín Loya y al Dr. Armando Gómez Torres, por su apoyo.
Al Instituto Nacional de Investigaciones Nucleares, por las facilidades brindadas.
Se agradece el apoyo �nanciero recibido del proyecto estratégico No. 212602 (AZTLAN
Platform), del Fondo Sectorial de Sustentabilidad Energética SENER�CONACYT.
La motivación para llevar a cabo este proyecto nace del proyecto AZTLAN platform que
es una iniciativa nacional liderada por el Instituto Nacional de Investigaciones Nucleares,
que reúne a las principales casas públicas de estudios superiores de México como son el
Instituto Politécnico Nacional, la Universidad Nacional Autónoma de México y la Univer-
sidad Autónoma Metropolitana en un esfuerzo por dar un paso signi�cativo rumbo a la
autonomía de cálculo y análisis que busca situar a México en el mediano plazo en un nivel
internacional competitivo en temas de software para análisis de reactores nucleares.
En este proyecto se modernizan, mejoran e integran los códigos neutrónicos, termohidráuli-
cos y termomecánicos, desarrollados en las instituciones mexicanas, en una plataforma
integrada, desarrollada y mantenida por expertos mexicanos, que utiliza las nuevas tec-
nologías de cómputo de alto rendimiento (HPC, del inglés High Performance Computing)
a efecto de reducir los tiempos en el proceso de cálculos numéricos [1] 1.
1Para más información, visitar http://www.aztlanplatform.mx
Índice general
Índice de �guras iii
Índice de tablas v
Nomenclatura vi
Resumen vii
Objetivos viii
Introducción ix
1. Fundamentos de termodinámica 11.1. Sistemas termodinámicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Propiedades termodinámicas . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1. Presión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.2. Temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Estado, fase, calidad, proceso y ciclo . . . . . . . . . . . . . . . . . . . . . 61.3.1. Estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3.2. Fase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.3. Calidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.4. Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.5. Ciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4. Sustancia pura y sus propiedades . . . . . . . . . . . . . . . . . . . . . . . 91.5. Calor y trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6. Primera ley de la termodinámica . . . . . . . . . . . . . . . . . . . . . . . 10
1.6.1. Primera ley para sistemas cerrados . . . . . . . . . . . . . . . . . . 111.6.2. Primera ley para sistemas abiertos . . . . . . . . . . . . . . . . . . 12
1.7. Segunda ley de la termodinámica . . . . . . . . . . . . . . . . . . . . . . . 141.7.1. Máquinas térmicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.7.2. Entropía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.7.3. E�ciencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2. Ciclos termodinámicos 172.1. El ciclo de gas de Carnot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
i
ÍNDICE GENERAL ii
2.2. El ciclo de vapor de Carnot . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3. El ciclo Otto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.4. El ciclo Diesel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.5. El ciclo Brayton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.6. El ciclo Rankine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3. El ciclo Rankine 263.1. Análisis de energía del ciclo Rankine . . . . . . . . . . . . . . . . . . . . . 273.2. Disminución de la presión de la turbina . . . . . . . . . . . . . . . . . . . . 293.3. El ciclo Rankine con sobrecalentamiento . . . . . . . . . . . . . . . . . . . 313.4. El ciclo Rankine con recalentamiento . . . . . . . . . . . . . . . . . . . . . 323.5. El ciclo Rankine regenerativo . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.5.1. El ciclo Rankine regenerativo con calentadores abiertos de agua dealimentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.5.2. El ciclo Rankine regenerativo con calentadores cerrados de agua dealimentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4. Descripción de una central nucleoeléctrica 374.1. Componentes de un reactor nuclear . . . . . . . . . . . . . . . . . . . . . . 384.2. La �sión nuclear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.3. Descripción de los reactores de potencia . . . . . . . . . . . . . . . . . . . 41
4.3.1. Reactor de agua a presión (PWR) . . . . . . . . . . . . . . . . . . . 434.3.2. Reactor de agua en ebullición (BWR) . . . . . . . . . . . . . . . . . 45
5. Desarrollo del simulador del ciclo termodinámico 475.1. Cálculo de las propiedades termodinámicas del agua . . . . . . . . . . . . . 47
5.1.1. Presión de saturación en función de la temperatura . . . . . . . . . 485.1.2. Temperatura de saturación en función de la presión . . . . . . . . . 485.1.3. Líquido saturado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.1.4. Vapor saturado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.1.5. Líquido comprimido . . . . . . . . . . . . . . . . . . . . . . . . . . 515.1.6. Vapor sobrecalentado . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.2. Diseño de la interfaz grá�ca del simulador . . . . . . . . . . . . . . . . . . 535.3. Generación del ejecutable . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6. Aplicación del simulador del ciclo termodinámico del BWR 636.1. Simulación del ciclo Rankine simple . . . . . . . . . . . . . . . . . . . . . . 646.2. Simulación del ciclo Rankine regenerativo con calentador de agua de ali-
mentación cerrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686.3. Aumento de la e�ciencia térmica . . . . . . . . . . . . . . . . . . . . . . . . 73
Conclusiones y recomendaciones 75
Apéndice A. Programación en Python y Qt Designer del simulador 79
Apéndice B. Solución completa de los problemas de referencia 120
Índice de �guras
1.1. Sistema abierto, sistema cerrado y sistema aislado. . . . . . . . . . . . . . 21.2. Presión absoluta, manométrica y de vacío. . . . . . . . . . . . . . . . . . . 41.3. Presión hidrostática. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4. Diagramas de los diferentes estados. . . . . . . . . . . . . . . . . . . . . . . 71.5. Máquina térmica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1. Diagrama P-v para el ciclo de gas de Carnot. . . . . . . . . . . . . . . . . . 192.2. Diagrama T-s para el ciclo de vapor de Carnot. . . . . . . . . . . . . . . . 212.3. Diagrama P-v para el ciclo Otto. . . . . . . . . . . . . . . . . . . . . . . . 222.4. Diagrama P-v para el ciclo Diesel. . . . . . . . . . . . . . . . . . . . . . . . 232.5. Diagramas P-v y T-s para el ciclo Brayton. . . . . . . . . . . . . . . . . . . 25
3.1. Diagrama T-s del ciclo Rankine ideal simple. . . . . . . . . . . . . . . . . . 273.2. Diagrama T-s del ciclo Rankine ideal simple. . . . . . . . . . . . . . . . . . 293.3. Efecto que provoca disminuir la presión en la salida de la turbina. . . . . . 303.4. Diagrama T-s del ciclo Rankine con sobrecalentamiento. . . . . . . . . . . 313.5. Diagrama T-s del efecto que produce incrementar la presión de la caldera
en el ciclo Rankine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.6. Diagrama T-s del ciclo Rankine con recalentamiento. . . . . . . . . . . . . 333.7. Esquema y diagrama T-s del ciclo Rankine regenerativo con calentador de
agua de alimentación abierto. . . . . . . . . . . . . . . . . . . . . . . . . . 353.8. Esquema y diagrama T-s del ciclo Rankine regenerativo con calentador de
agua de alimentación cerrado. . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1. Fisión nuclear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.2. Evolución de los reactores. . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.3. Esquema de una central nucleoeléctrica con un reactor tipo tipo PWR. . . 444.4. Esquema de una central nucleoeléctrica con un reactor tipo tipo BWR. . . 46
5.1. Ventana principal, pestaña Inicio. . . . . . . . . . . . . . . . . . . . . . . 555.2. Ventana principal, pestaña Acerca de. . . . . . . . . . . . . . . . . . . . . 565.3. Ventana secundaria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.4. Circuito termodinámico en el Sistema Internacional de Unidades. . . . . . 585.5. Circuito termodinámico en el Sistema Inglés de Ingeniería. . . . . . . . . . 585.6. Proceso realizado para generar la herramienta SICTER. . . . . . . . . . . . 62
iii
ÍNDICE DE FIGURAS iv
6.1. Esquema del ciclo Rankine diseñado para el SICTER. . . . . . . . . . . . . 646.2. Introducción de datos en el esquema del SICTER para el ciclo Rankine simple. 656.3. Introducción de datos para el ciclo Rankine simple en el SICTER. . . . . . 666.4. Parámetros de entrada del ciclo Rankine simple para el SICTER. . . . . . 666.5. Valores de salida del ciclo Rankine simple del SICTER. . . . . . . . . . . . 676.6. Archivo de salida del ciclo Rankine simple del SICTER. . . . . . . . . . . . 676.7. Activación del ciclo Rankine regenerativo en el SICTER. . . . . . . . . . . 696.8. Introducción de datos en el esquema del SICTER para el ciclo Rankine
regenerativo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706.9. Introducción de datos para el ciclo Rankine regenerativo en el SICTER. . . 716.10. Parámetros de entrada del ciclo Rankine regenerativo para el SICTER. . . 716.11. Valores de salida del ciclo Rankine regenerativo del SICTER. . . . . . . . . 726.12. Archivo de salida del ciclo Rankine regenerativo del SICTER. . . . . . . . 72
B1. Ciclo Rankine simple.(Cortesía curso nuclear básico) . . . . . . . . . . . . 121B2. Diagrama T-s del ciclo Rankine simple. . . . . . . . . . . . . . . . . . . . . 121B3. Ciclo Rankine regenerativo.(Cortesía curso nuclear básico) . . . . . . . . . 128B4. Diagrama T-s del ciclo Rankine regenerativo. . . . . . . . . . . . . . . . . . 129
Índice de tablas
1.1. Características de las fases de la materia. . . . . . . . . . . . . . . . . . . . 8
4.1. Clasi�cación de los reactores. . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.1. Coe�cientes para calcular la presión de saturación. . . . . . . . . . . . . . . 485.2. Coe�cientes para calcular la temperatura de saturación. . . . . . . . . . . . 495.3. Coe�cientes para calcular la entalpía especí�ca de líquido saturado. . . . . 495.4. Coe�cientes para calcular la entropía especí�ca de líquido saturado. . . . . 505.5. Coe�cientes para calcular la entalpía especí�ca de vapor saturado. . . . . . 505.6. Coe�cientes para calcular la entropía especí�ca de vapor saturado. . . . . . 51
6.1. Aumento de la e�ciencia térmica. . . . . . . . . . . . . . . . . . . . . . . . 73
v
Nomenclatura
SICTER Simulador de un ciclo termodinámico Rankineabs absolutaatm atmosféricaman manométricavac vacíohid hidrostáticasat saturaciónent entradasis sistemarev reversiblePMI Punto muerto inferiorPMS Punto muerto superior
vi
Resumen
En este trabajo se proporciona una herramienta de cómputo que sea capaz de simular el
ciclo termodinámico Rankine para un reactor nuclear tipo BWR de manera simpli�cada,
es decir, que contenga los elementos básicos del ciclo como son la caldera, la turbina, el
condensador y la bomba, así mismo se tenga la opción de añadir un pre-calentador del
agua de alimentación, tal y como se tiene en algunas centrales, como la que se analiza, por
lo que en el presente trabajo se muestra y describe el desarrollo del programa de cómputo
que simula el ciclo termodinámico Rankine, siendo capaz de simular problemas de ciclos
Rankine que se encuentran en la literatura. El desarrollo de la herramienta de cómputo
comprende tres partes, la primera, comprende el conocer a detalle la fenomenología de una
central nuclear, principalmente la terminología empleada en termodinámica y sus funda-
mentos, así como las características de los diferentes ciclos termodinámicos que se tienen;
la segunda, comprende el diseño y generación del simulador para lo cual se utilizaron di-
ferentes programas de software libre basados en el lenguaje Python, para la programación
de la interfaz se utilizaron correlaciones para los diferentes estados termodinámicos desde
líquido comprimido hasta vapor sobrecalentado. La tercera y última parte, corresponde a
la aplicación de la interfaz grá�ca del simulador a diferentes opciones del ciclo termodiná-
mico con o sin pre-calentador, así como diversos problemas tipos que se encuentran en la
literatura.
vii
Objetivos
El objetivo general del presente trabajo es generar una herramienta de cómputo, del tipo
independiente, capaz de simular un ciclo termodinámico Rankine para una central nuclear
con un reactor tipo BWR, la cual incluya funciones capaces de calcular las propiedades
termodinámicas del agua en sus diferentes estados (Líquido comprimido, líquido saturado,
vapor saturado y vapor sobrecalentado) y se acoplen en una interfaz grá�ca de usuario
para facilitar el uso de dicha herramienta.
Objetivos especí�cos
1. Familiarizarse con el ciclo termodinámico de una central nuclear.
2. Programar el modelo matemático para calcular las propiedades termodinámicas del
agua en diferentes sistemas de unidades.
3. Elaborar la interfaz grá�ca de usuario del simulador.
4. Acoplar la interfaz grá�ca de usuario con las propiedades termodinámicas del agua.
5. Programar los balances de energía correspondientes.
6. Generar el archivo ejecutable, a partir del código fuente.
viii
Introducción
En la generación de electricidad, una de las principales formas de producirla a gran es-
cala es generando vapor para mover una unidad turbogeneradora a partir de quemar un
combustible fósil (carbón, gas o combustóleo), o en su caso aprovechar el calor de la �sión
nuclear en la centrales nucleares, siendo de vital importancia conocer el comportamiento
del ciclo termodinámico involucrado en el proceso, en este caso el llamado ciclo Rankine,
por lo que se hace necesario conocer los fundamentos termodinámicos del sistema bajo
estudio.
La termodinámica es la ciencia que dicta lo que ocurre en la naturaleza, lo que no y por
qué. Así que, para entender mejor a la naturaleza, las implicaciones del uso de la energía
sobre el medio ambiente y la sostenibilidad de la que disfrutamos hoy en día, tenemos que
estudiar la termodinámica.
Conocer el ciclo termodinámico a detalle es fundamental para poder simularlo de manera
precisa puesto que los simuladores que ya existen no contemplan una buena precisión
al estar cerca de la zona del punto crítico, además de no tener mayor versatilidad para
analizar problemas de la literatura.
El desarrollo de este trabajo comienza con los fundamentos de la termodinámica, como se
mostrará en el capítulo uno.
En el capítulo dos se describen los diferentes ciclos termodinámicos que existen.
ix
INTRODUCCIÓN x
En el capítulo tres se describe a detalle el ciclo Rankine, y las variantes que se tienen del
mismo.
En el capítulo cuatro se muestra el funcionamiento de una central nucleoeléctrica, así como
algunas generalidades sobre la energía nuclear.
En el capítulo cinco se describe el desarrollo del simulador del ciclo termodinámico, así
como el proceso de implementación de las correlaciones para calcular las propiedades
termodinámicas del agua.
En el capítulo seis se analiza los resultados obtenidos con el Simulador para una central
nuclear con un reactor tipo BWR (SICTER), respecto a los valores que se tienen de
referencia, y que se tienen a detalle en el Apéndice B.
Finalmente, se presenta un apartado que contiene las conclusiones.
En los Apéndices A y B, se proporciona la secuencia de los archivos de programación en
Python y Qt del simulador, así como la solución completa de los problemas de referencia,
respectivamente.
Capítulo 1
Fundamentos de termodinámica
La termodinámica es una rama de la física que se ocupa del estudio de las transformaciones
e interacciones de la energía en forma de calor (Q) y trabajo (W ); la termodinámica clásica
se ocupa del mundo macroscópico mientras que la termodinámica estadística se ocupa del
nivel micróscopico de la materia.
Los campos de aplicación de la termodinámica clásica en ingeniería mecánica son la ge-
neración de potencia y los sistemas de calefacción (ventilación, refrigeración y acondi-
cionamiento de aire). En ingeniería nuclear la termodinámica es parte fundamental, ya
que los parámetros termohidráulicos y los parámetros neutrónicos se retroalimentan entre
sí, para realizar poder realizar el análisis del núcleo del reactor nuclear.
En este capítulo se explicarán algunos conceptos básicos de la termodinámica, así como
las leyes que forman parte de ella.
1.1. Sistemas termodinámicos
Un sistema termodinámico es una porción del espacio o cantidad de materia que se selec-
ciona para realizar un análisis termodinámico. La masa o región fuera del sistema se conoce
como alrededores. La super�cie real o imaginaria que separa al sistema de sus alrededores
1
1.2. Propiedades termodinámicas
se conoce como frontera [2]. Los sistemas termodinámicos se clasi�can en:
Sistema cerrado: Es un sistema en el cual solo existe intercambio de energía pero no
hay transferencia de masa con sus alrededores.
Sistema aislado: Es un sistema en el cual no hay transferencia de masa, ni de energía a
través de la frontera.
Sistema abierto: Es un sistema en el cual existe intercambios de energía y masa.
En la �gura 1.1 se muestran los sistemas termodinámicos descritos anteriormente.
Figura 1.1: Sistema abierto, sistema cerrado y sistema aislado.
1.2. Propiedades termodinámicas
Una propiedad termodinámica es cualquier característica observable y medible de un sis-
tema [3]. Las propiedades termodinámicas pueden ser:
Propiedades extensivas: Son aquellas cuyos valores dependen del tamaño o extensión
de un sistema, la masa total, volumen total y la cantidad de movimiento total son
algunos ejemplos de propiedades extensivas.
Propiedades intensivas: Son aquellas independientes de la masa de un sistema, como
2
Capítulo 1. Fundamentos de termodinámica
temperatura, presión y densidad.
Las propiedades extensivas pueden expresarse por unidad de masa, y se llaman propiedades
especí�cas.
1.2.1. Presión
La presión se de�ne como la fuerza normal que ejerce un �uido por unidad de área. Cuando
se habla de presión se hace referencia a un gas o un líquido, mientras que para los sólidos se
habla de esfuerzo normal, ya que es la fuerza que actúa perpendicularmente a la super�cie
por unidad de área [4].
La presión atmosférica varía de un punto a otro del planeta y según las condiciones
meteorológicas. Se ha convenido en tomar como condición estándar la presión de 101.325
kPa a nivel del mar.
La presión medida respecto al vacío absoluto se llama presión absoluta. La mayoría de
los dispositivos para medir la presión se calibran a cero en la atmósfera, por lo que estos
dispositivos muestran la diferencia entre la presión atmosférica local y la presión absoluta,
a esta diferencia se le conoce como presión manométrica (�gura 1.2).
Los dispositivos medidores de vacío son capaces de medir presiones por debajo de la
presión atmosférica local, a estas presiones se les conoce como presiones de vacío, las
cuales indican la diferencia entre las presiones atmosférica y absoluta (�gura 1.2) [4]. A
continuación se muestra como se relacionan las presiones absoluta, manométrica y de vacío
entre sí:
Pman = Pabs � Patm (1.1)
Pvac = Patm � Pabs (1.2)
3
1.2. Propiedades termodinámicas
Figura 1.2: Presión absoluta, manométrica y de vacío.
Un �uido, ya sea gas o líquido, ejerce presión no sólo en el fondo del recipiente que lo
contiene, también en las paredes del mismo, es decir, ejerce presión en todas direcciones,
a esta presión se le conoce como presión hidrostática.
Cuando se calcula la presión hidrostática, la fuerza aplicada no depende del área del
recipiente con el que el �uido tiene contacto, sino de la altura (profundidad) que tenga.
Phid = � � g � h (1.3)
donde:
� densidad del �uido.
g aceleración de la gravedad.
h altura.
Figura 1.3: Presión hidrostática.
La unidad de presión en el Sistema Internacional de Unidades es el Pascal (Pa), el cual
4
Capítulo 1. Fundamentos de termodinámica
se de�ne como la fuerza que un Newton (N), ejerce sobre el área de un metro cuadrado
(m2). En el Sistema Inglés de Ingeniería es la libra fuerza por pulgada cuadrada (lbf=in2),
la cual es conocida como psi (por sus siglas en inglés: pound-force per square inch). Las
equivalencias con otras unidades son:
1 bar = 105 Pa = 0:1 MPa
la atmósfera estándar, donde:
1 atm = 101:325 kPa = 14:696lbfin2
los kilogramos fuerza por centímetro cuadrado, donde:
1kgfcm2
= 9:807 � 104 Pa
y los milímetros de mercurio, donde:
760 mmHg = 1 atm
1.2.2. Temperatura
La temperatura puede de�nirse desde el punto de vista microscópico como la energía
cinética promedio de las moléculas [5]. El fundamento de la medición de la temperatura
se basa en la ley cero de la termodinámica que enuncia lo siguiente:
"Dos cuerpos en equilibrio térmico con un tercer cuerpo, están en equilibrio térmico
entre sí, incluso sino están en contacto."
Las escalas de temperatura usadas en el Sistema Internacional de Unidades son la escala
Celsius (�C) y la escala Kelvin (K) que es una escala independiente de las propiedades
de cualquier sustancia o sustancias.
Las escalas de temperatura usadas en el Sistema Inglés de Ingeniería son la escala Fahren-
heit (�F ) y la escala Rankine (R) que es una escala independiente de las propiedades de
5
1.3. Estado, fase, calidad, proceso y ciclo
cualquier sustancia o sustancias.
La escala Kelvin se relaciona con la escala Celsius mediante:
T (K) = T (�C) + 273:15 (1.4)
La escala Rankine se relaciona con la Fahrenheit mediante:
T (R) = T (�F ) + 459:67 (1.5)
Las escalas de temperatura en los dos sistemas de unidades se relacionan mediante:
T (R) = 1:8 T (K) (1.6)
T (�F ) = 1:8 T (�C) + 32 (1.7)
1.3. Estado, fase, calidad, proceso y ciclo
Se sabe que el agua comienza a evaporar, a 100 �C, pero lo hace a esa temperatura porque
la presión a la que se encuentra es la presión atmosférica al nivel del mar.
La temperatura a la cual una sustancia pura comienza a cambiar de fase (en éste caso el
agua), bien sea comenzando a transformarse de líquido a vapor (líquido saturado) o de
vapor a líquido (vapor saturado), se llama temperatura de saturación, y esta temperatura
de saturación siempre va a tener relacionada una presión que se conoce como presión de
saturación.
En resumen, temperatura de saturación es la temperatura de ebullición para una presión
determinada y presión de saturación es la presión de ebullición para una temperatura
determinada.
1.3.1. Estado
Un estado termodinámico es una condición determinada de una sustancia que se encuentra
de�nida por dos propiedades termodinámicas entre sí [3].
6
Capítulo 1. Fundamentos de termodinámica
Líquido comprimido: En este estado el líquido está a una presión mayor que la presión
de saturación (P > Psat), a una temperatura dada, o en términos de temperatura se
dice que el líquido está a una temperatura menor que la temperatura de saturación
(T < Tsat) para una presión dada. Este estado puede ser cualquier punto desde 1-2
de la �gura 1.4.
Líquido saturado: Es aquel líquido que está a punto de ebullir. Este estado se encuentra
justo en el punto 2 de la �gura 1.4.
Mezcla líquido-vapor: Este estado puede ser cualquier punto desde 2-4 de la �gura 1.4.
Vapor saturado: Es aquel vapor que está a punto de condensarse. Este estado se en-
cuentra justo en el punto 4 de la �gura 1.4.
Vapor sobrecalentado: En este estado el vapor está a una presión menor que la presión
de saturación (P < Psat), a una temperatura dada, o en términos de temperatura se
dice que el vapor está a una temperatura mayor que la temperatura de saturación
(T > Tsat) para una presión dada. Este estado puede ser cualquier punto desde 4-5
de la �gura 1.4.
(a) Diagrama T-v (b) Diagrama P-v
Figura 1.4: Diagramas de los diferentes estados.
7
1.3. Estado, fase, calidad, proceso y ciclo
1.3.2. Fase
Es una cantidad de materia con la misma estructura molecular en toda su extensión.
Cuando una sustancia existe en más de una fase, se separa de las demás fases por medio de
fronteras fácilmente identi�cables. En la tabla 1.1 se muestran algunas de las características
de las fases de la materia [3].
Fase Características
Gaseosa
Las moléculas se encuentran apartadas unas de otras.No existe orden molecular.Las moléculas se mueven aleatoriamente.Existe mayor nivel energético.
LíquidaLas moléculas no tienen posiciones �jas.Existe mayor espacio entre moléculas que en los sólidos.Existe orden molecular.
Sólida
Las moléculas están más próximas entre sí.Las fuerzas moleculares son más fuertes.El patrón de arreglo es tridimensional.Existe orden molecular.Las posiciones de las moléculas son �jas.Las moléculas oscilan en torno a su posición de equilibrio.
Tabla 1.1: Características de las fases de la materia.
1.3.3. Calidad
La calidad de vapor (x) es una propiedad que sirve para analizar una mezcla de vapor
húmedo, es decir, una mezcla de líquido saturado y vapor saturado, y es la razón entre la
masa de vapor y la masa total de la mezcla [4].
x =mvapor
mtotal(1.8)
1.3.4. Proceso
Un proceso termodinámico se de�ne como la serie de estados, los cuales de�nen la trayec-
toria, por los que pasa un sistema cuando experimenta un cambio de estado.
8
Capítulo 1. Fundamentos de termodinámica
Un proceso queda totalmente de�nido cuando se conocen los estados inicial y �nal, la
trayectoria seguida y las interacciones con los alrededores [3].
1.3.5. Ciclo
Cuando un sistema se somete a una serie de procesos y el estado inicial y �nal son idénticos,
se entiende que el sistema ha sido sometido a un ciclo [3].
1.4. Sustancia pura y sus propiedades
Una sustancia pura es aquella que tiene la composición química homogénea en cualquier
parte, el agua, el nitrógeno, el helio y el dióxido de carbono, son ejemplos de sustancias
puras [4].
1.5. Calor y trabajo
Las formas de energía que pueden cruzar la frontera de un sistema termodinámico cerrado
son: calor (Q) y trabajo (W ).
El calor se de�ne como la forma de energía que, a una temperatura dada, se trans�ere
a través de los límites de un sistema a otro sistema (o a su entorno) que está a una
menor temperatura y que sucede en virtud de la diferencia de temperatura entre los
dos sistemas [6].
El calor tiene unidades de energía, en el Sistema Internacional de Unidades, la unidad
de medida es el Joule (J) y en el Sistema Inglés de Ingeniería, la unidad de medida es el
Btu. La transferencia de calor de un sistema por unidad de masa se denota como (q) y se
9
1.6. Primera ley de la termodinámica
determina a partir de:
q =Q
m(kJ/kg) o (Btu/lbm) (1.9)
La cantidad de calor transferida por unidad de tiempo, es decir, el �ujo de calor, se
expresa como _Q, siendo sus unidades el Watt (W ) y el Btu/h, en el Sistema Internacional
de Unidades y en el Sistema Inglés de Ingeniería, respectivamente. Por otra parte, sobre
el trabajo desde el punto de vista de la mecánica, se tiene lo siguiente:
Un sistema realiza trabajo si el único efecto sobre el entorno (todo lo que es externo
al sistema) podría ser la elevación de un peso [6].
En termodinámica el concepto de trabajo es una generalización de la correspondiente
de�nición de trabajo en mecánica, y se puede de�nir como la cantidad de energía trans-
ferida de un sistema a otro mediante una fuerza cuando se produce un desplazamiento,
que se puede manifestar como un cambio de volumen en el sistema. El trabajo es también
una forma de energía como el calor y por lo tanto tiene unidades de energía, en el Sistema
Internacional de Unidades, la unidad de medida es el Joule (J) y en el Sistema Inglés de
Ingeniería, la unidad de medida es el Btu. El trabajo por unidad de masa de un sistema
se denota mediante (w) y se expresa como:
w =W
m(kJ/kg) o (Btu/lbm) (1.10)
La potencia es el trabajo realizado por unidad de tiempo, se denota como _W , siendo sus
unidades el Watt (W ) y el Btu/h, en el Sistema Internacional de Unidades y en el Sistema
Inglés de Ingeniería, respectivamente.
1.6. Primera ley de la termodinámica
La primera ley de la termodinámica, brinda una base sólida para estudiar las relaciones
entre las diferentes formas de interacción de energía. A partir de observaciones experimen-
tales, el principio de la conservación de la energía, se establece [4]:
10
Capítulo 1. Fundamentos de termodinámica
�La energía no se puede crear ni destruir durante un proceso; sólo puede cambiar de
forma.�
Un sistema que sufre una serie de procesos adiabáticos (sin transferencia de calor) desde
un estado especí�co 1 a otro estado 2, no involucran transferencia de calor, pero sí involu-
cran varías clases de interacción de trabajo. Las mediciones realizadas cuidadosamente
durante el experimento, constatan el siguiente enunciado [4]:
�Para todos los procesos adiabáticos entre dos estados determinados de un sistema
cerrado, el trabajo neto realizado es el mismo sin importar la naturaleza del sistema
cerrado ni los detalles del proceso.�
El enunciado anterior, basado en los experimentos llevados a cabo por James Prescott
Joule en la primera mitad del siglo XIX, no puede derivarse de ningún otro principio
físico, es conocido como principio fundamental o primera ley de la termodinámica.
En términos matemáticos la primera ley puede enunciarse para un sistema que sigue un
ciclo así: I�Q =
I�W (1.11)
1.6.1. Primera ley para sistemas cerrados
De la ecuación 1.11, puede llegarse fácilmente a la primera ley de la termodinámica para
un sistema cerrado:
�E = Q�W (1.12)
donde:
�E cambio en la energía total del sistema y puede calcularse de la siguiente manera:
�E = �U +�EC +�EP (1.13)
11
1.6. Primera ley de la termodinámica
donde:
�U = U2 � U1 cambio de la energía interna entre el estado inicial y el �nal.
�EC =m
2(V 2
2 � V 21 ) cambio de la energía cinética entre el estado inicial y el �nal.
�EP = mg(z2 � z1) cambio de la energía potencial entre el estado inicial y el �nal.
En los sistemas estacionarios, es posible despreciar los cambios de velocidad (energía
cinética) y los cambios de altura (energía potencial), y para estos sistemas la ecuación
de la primera ley se reduce a:
Q�W = �U = U2 � U1 = m (u2 � u1) (1.14)
En un ciclo termodinámico la variación de las propiedades alrededor del ciclo es cero,
entonces la primera ley para un sistema cerrado que se somete a un ciclo es:
Q�W = 0 (1.15)
1.6.2. Primera ley para sistemas abiertos
La primera ley de la termodinámica para sistemas abiertos, puede deducirse a partir de la
primera ley para sistemas cerrados, puede expresarse como:
Q�W +X
Eent �X
Esal = �Esis (1.16)
donde:
�E variación de la energía dentro del volumen de control.
Para que la masa �uya dentro y fuera del sistema, es necesario realizar un trabajo, conocido
como trabajo de �ujo:
W�ujo = F � L = P � A � L (1.17)
F es la fuerza necesaria para que la sustancia �uya una distancia L, conociendo la relación
entre (F ) y la presión (P ), se llega a la de�nición de trabajo que puede expresarse por
unidad de masa:
w�ujo = P � v (1.18)
12
Capítulo 1. Fundamentos de termodinámica
Por de�nición la entalpía (h) se de�ne como: h = u+Pv entonces la ecuación de primera
ley para un sistema abierto puede expresarse:
Q�W =X
msal (hsal+ecsal+epsal)�X
ment (hent+ecent+epent)+(E2�E1)sis (1.19)
En los sistemas abiertos la masa varía con el tiempo, por lo cual debe cumplirse la con-
servación de la masa, mejor conocida como ecuación de continuidad:Xment �
Xmsal = (m2 �m1)sis (1.20)
Las ecuaciones anteriores son aplicables para sistemas abiertos, tanto como para sistemas
cerrados, en el caso de los sistemas cerrados los términos que involucran masa entrante
(ment) y masa saliente (msal) se hacen cero.
Los sistemas abiertos pueden modelarse de dos formas:
1. Procesos de �ujo permanente, en los cuales se asume que:
a) El estado del volumen de control permanece constante durante el proceso.
b) Las propiedades termodinámicas de las masas que entran y salen del volumen
de control permanecen constantes en el tiempo, y pueden ser diferentes entre
cada entrada y salida.
c) Las interacciones de energía en forma de calor (Q) y trabajo (W ) entre el
volumen de control y los alrededores permanecen constantes en el tiempo.
Con estas características las ecuaciones de energía y continuidad para un proceso de �ujo
permanente, se calcula de la siguiente manera:
_Q� _W =X
_msal(hsal +v2sal2
+ gzsal)�X
_ment(hent +v2ent2
+ gzent) (1.21)X_ment =
X_msal (1.22)
donde:
_Q tasa de transferencia de calor en el tiempo.
_W potencia generada por el volumen de control.
_m �ujo de masa en la entrada o en la salida.
13
1.7. Segunda ley de la termodinámica
Cuando hay una sola masa que entra y sale del control y es posible despreciar los cambios
de energía cinética y potencial, la ecuación 1.21 se reduce a:
_Q� _W = _m(hsal � hent) (1.23)
2. Procesos de �ujo no permanente, en los cuales se asume que:
a) El estado del volumen de control cambia uniformemente con el tiempo durante
el proceso.
b) Las propiedades termodinámicas del �uido en cada una de las entradas y salidas
permanecen constantes en el tiempo.
Con estas características las ecuaciones de energía y continuidad para un proceso de �ujo
no permanente, se calcula de la siguiente manera:
Q�W =X
msal(hsal + v2sal + gzsal)�X
ment(hent + v2ent + gzent) (1.24)Xment �
Xmsal = (m2 �m1)sis (1.25)
Cuando es posible despreciar los cambios de energía cinética y potencial, para las masas
�uyendo, la ecuación 1.24 se reduce a:
Q�W =X
msalhsal �X
menthent + (m2u2 �m1u1)sis (1.26)
1.7. Segunda ley de la termodinámica
La segunda ley de la termodinámica se encarga de restringir la dirección en que ocurren los
procesos. Existen dos enunciados de la segunda ley, los cuales se mencionan a continuación:
Enunciado de Kelvin-Planck: Es imposible construir un aparato que funcione en
un ciclo y no produzca otro efecto que la elevación de un peso y el intercambio de
calor con un depósito simple [6].
Enunciado de Clausius: Es imposible construir un dispositivo que opere en un ciclo
y no produzca otro efecto que la transmisión de calor de un cuerpo frío a un cuerpo
14
Capítulo 1. Fundamentos de termodinámica
caliente [6].
1.7.1. Máquinas térmicas
Es un dispositivo que funciona en un ciclo termodinámico y que realiza cierta cantidad
de trabajo neto positivo (Wneto) a través de la transferencia de calor desde un cuerpo a
temperatura elevada (QH) y hacia un cuerpo a baja temperatura (QC) [6].
Figura 1.5: Máquina térmica.
1.7.2. Entropía
La necesidad de contar con una propiedad de estado del sistema que permita medir el
grado de irreversibilidad que tiene un proceso y otras características relacionadas con la
segunda ley de la termodinámica obligó a de�nir una serie de funciones diseñadas para tal
�n. La primera de ellas fue la entropía [5].
La entropía se de�ne a partir de la desigualdad de Clausius, que es una consecuencia de
la segunda ley aplicada a un ciclo: I�Q
T� 0 (1.27)
15
1.7. Segunda ley de la termodinámica
donde:I�Q
T= 0 Para procesos reversibles. (1.28)I
�Q
T< 0 Para procesos irreversibles. (1.29)
Es posible demostrar que la cantidad�Q
Tno depende de la trayectoria seguida por un
proceso sino de los estados inicial y �nal por lo tanto representa una propiedad termo-
dinámica que se de�ne como la entropía [3].
S1 � S2 =
Z 2
1
�Q
T(1.30)
1.7.3. E�ciencia
Este término es muy utilizado en termodinámica, ya que indica que tan bien se realiza
un proceso de conversión o transferencia de energía. En una máquina térmica, se puede
decir que, la e�ciencia es la relación de la energía que se busca (trabajo) y la energía de
la fuente de alta temperatura (calor) [6].
�térmica =W(energía deseada)
QH(energía requerida)
(1.31)
16
Capítulo 2
Ciclos termodinámicos
Como se mostró anteriormente el estudio de la termodinámica es muy importante para
dos aplicaciones muy utilizadas en la vida diaria, una de ellas es la generación de poten-
cia y la otra es la refrigeración. Estas aplicaciones se llevan a cabo utilizando un ciclo
termodinámico.
Los dispositivos utilizados para producir una salida de potencia neta, usualmente llamadas
máquinas térmicas, los cuales son empleados en los ciclos de potencia. Los dispositivos
utilizados para producir un efecto de refrigeración, usualmente son llamados refrigeradores,
bombas térmicas o acondicionadores de aire, los cuáles son empleados en los ciclos de
refrigeración.
Dentro de los ciclos termodinámicos existen varias clasi�caciones, una de ella depende de
la fase en la que se encuentra el �uido de trabajo (gas y vapor). La característica que
identi�ca a los ciclos de gas, es que el �uido de trabajo permanece en la fase gaseosa
durante todo el proceso, mientras que la característica que identi�ca a los ciclos de vapor,
es que el �uido de trabajo, durante una parte del proceso, permanece en la fase vapor y
en la otra parte permanece en la fase líquida.
Los ciclos termodinámicos también se pueden clasi�car como ciclos cerrados y abiertos,
que se basan en la manera en cómo circula el �uido de trabajo. Los ciclos cerrados, se
17
2.1. El ciclo de gas de Carnot
identi�can, porque existe recirculamiento del �uido de trabajo, ya que este vuelve a su
estado inicial al �nal del proceso, por otro lado, los ciclos abiertos, se identi�can, porque
el �uido de trabajo se renueva al �nal del proceso.
Otra clasi�cación existente dentro de los ciclos de potencia, especí�camente en las máquinas
térmicas, es la forma de suministrar el calor al �uido de trabajo. Las máquinas de com-
bustión externa, se caracterizan por suministrar el calor al �uido de trabajo desde una
fuente externa que puede ser una caldera, un pozo geotérmico o un reactor nuclear. Las
máquinas de combustión interna, se caracterizan por suministrar el calor al �uido de tra-
bajo dentro de los límites del sistema.
En este capítulo se abordaron los ciclos de potencia más conocidos, ya que el objetivo
principal es analizar el ciclo termodinámico de una central nucleoeléctrica en la cual el
�uido de trabajo es el agua en fase líquida y fase vapor.
2.1. El ciclo de gas de Carnot
Este ciclo puede funcionar como sistema cerrado o sistema de �ujo en régimen estacionario,
el cual está compuesto por dos procesos a temperatura constante (isotérmicos) e interna-
mente reversibles y dos procesos sin transferencia de calor (adiabáticos) e internamente
reversibles [7].
Expansión isotérmica (2-3): La temperatura del �uido de trabajo T�, en este caso gas,
y el fondo del cilindro está en contacto con una fuente de calor de gran capacidad para
que la temperatura T� del gas se mantenga constante durante el proceso. Cuando el
gas se expande lentamente, la temperatura tendería a disminuir T���T , donde �T
tiende a ser 0, condición necesaria para que el proceso sea reversible. La cantidad de
calor total transferido al gas durante el proceso 2-3 es Q23.
Expansión adiabática (3-4): La fuente de calor se elimina y se aísla el fondo del cilindro
18
Capítulo 2. Ciclos termodinámicos
de manera que el proceso sea adiabático. El gas continúa expandiéndose y realiza
trabajo sobre los alrededores hasta que su temperatura disminuye hasta Tc. El émbolo
no experimenta fricción, de modo que el proceso es reversible y adiabático.
Compresión isotérmica (4-1): Se retira el aislamiento del fondo del cilindro y el sis-
tema se pone en contacto con una fuente fría también de gran capacidad y, por tanto,
de temperatura constante Tc. El calor �uye del gas a la fuente fría durante el proceso
4-1 y a medida que el gas se comprime su temperatura tiende a incrementarse, pero
al estar en contacto con la fuente fría, esto no ocurre. El proceso será reversible
porque también ahora �T tiende a ser cero. La cantidad de calor rechazado del gas
durante el proceso es Q41.
Compresión adiabática (1-2): Se retira la fuente de baja temperatura, se aísla el sis-
tema a través del fondo del cilindro y se comprime el gas de manera reversible, de
esta forma el gas vuelve a su estado inicial T�, de esta manera se completa el ciclo.
Figura 2.1: Diagrama P-v para el ciclo de gas de Carnot.
La e�ciencia térmica de este ciclo se expresa como:
�t =T� � TcT�
(2.1)
19
2.2. El ciclo de vapor de Carnot
2.2. El ciclo de vapor de Carnot
Este ciclo teóricamente podría realizarse mediante dos procesos isotérmicos y dos procesos
isentrópicos. En un ciclo de Carnot de �ujo estacionario que tiene lugar dentro de la curva
de saturación de una sustancia pura, el �uido de trabajo se calienta a temperatura cons-
tante en una caldera (1-2); se expande isentrópicamente en una turbina (2-3); se condensa
a temperatura constante en un condensador (3-4) y se comprime isentrópicamente hasta
su estado inicial (4-1) [7]. Estas consideraciones asocian diversas situaciones imprácticas,
las cuales son:
1. Restringir los procesos de transferencia de calor a sistemas de dos fases limita la tem-
peratura máxima que puede utilizarse en el ciclo (tiene que permanecer debajo del
valor del punto crítico, el cual es de 374 �C para el agua) y restringir la temperatura
máxima en el ciclo afecta la e�ciencia térmica [4].
2. El proceso de expansión isentrópica (2-3) puede aproximarse bastante mediante una
turbina bien diseñada. Sin embargo, la calidad del vapor disminuye durante este
proceso (�gura 2.2). Por lo tanto, la turbina tiene que manejar vapor con baja
calidad. El choque de gotas líquidas sobre los álabes de la turbina produce erosión
y es una de las principales fuentes de desgaste [4].
3. El proceso de compresión isentrópica (4-1) implica la compresión de una mezcla de
líquido y vapor hasta un líquido saturado. Hay dos di�cultades asociadas con este
proceso: primero, no es fácil controlar el proceso de condensación de manera tan
precisa como para obtener �nalmente la calidad deseada en el estado 4; y segundo,
no es práctico diseñar un compresor que maneje dos fases [4].
20
Capítulo 2. Ciclos termodinámicos
Figura 2.2: Diagrama T-s para el ciclo de vapor de Carnot.
La e�ciencia térmica de este ciclo se expresa como:
�t =(h3 � h4)� (h2 � h1)
h3 � h2(2.2)
2.3. El ciclo Otto
Nicolaus Otto fue un ingeniero alemán que, a mediados del XIX, diseñó el motor que
lleva su nombre, generalmente, este ciclo es utilizado en los motores a gasolina de cuatro
tiempos [8].
Primer tiempo admisión: Es un proceso a presión constante (0-1), en este instante el
pistón se encuentra en el PMS, se abre la válvula de admisión y se inicia el descenso
del pistón hacia el PMI, entrando en el cilindro la mezcla comburente-combustible.
Segundo tiempo compresión: Es un proceso en el cual no existe transferencia de calor
(1-2), cuando el pistón llega al PMI, se cierra la válvula de admisión y el pistón inicia
su ascenso hasta el PMS comprimiendo la mezcla, a través de un trabajo negativo.
Tercer tiempo combustión-expansión: Es un proceso a volumen constante (2-3) y
sin transferencia de calor (3-4), cuando el pistón se encuentra próximo al PMS,
se produce una chispa, in�amando la mezcla y aumentando considerablemente la
21
2.4. El ciclo Diesel
presión dentro del cilindro. En este momento se inicia la carrera del pistón del PMS
al PMI.
Cuarto tiempo expulsión o escape: Es un proceso a volumen constante (4-1) y a pre-
sión constante (1-0), cuando el pistón llega de nuevo al PMI se abre la válvula de
escape provocando la evacuación de los gases quemados a la átmosfera, el resto de
los gases son expulsados por el pistón en su ascenso al PMS. Cuando llega al PMS
se cierra la válvula de escape y se abre la de admisión iniciándose un nuevo ciclo con
el descenso del pistón.
Figura 2.3: Diagrama P-v para el ciclo Otto.
La e�ciencia térmica de este ciclo se expresa como:
�t =W
Q1(2.3)
2.4. El ciclo Diesel
Rudolf Diesel fue un ingeniero alemán que, a �nales del siglo XIX, diseño el motor que
lleva su nombre, generalmente, este ciclo es utilizado en los motores a gasóleo o diesel de
cuatro tiempos [8].
Primer tiempo admisión: Es un proceso a presión constante (0-1), en este momento, el
22
Capítulo 2. Ciclos termodinámicos
pistón se encuentra en el PMS, se abre la válvula de admisión y se inicia el descenso
del pistón hacia el PMI, entrando en el cilindro sólo comburente.
Segundo tiempo compresión: Es un proceso en el cuál no existe transferencia de calor
(1-2), cuando el pistón llega al PMI, se cierra la válvula de admisión y el pistón
inicia su ascenso hacia el PMS comprimiendo el comburente, lo que conlleva a una
elevación considerable en la temperatura de este.
Tercer tiempo combustión-expansión: Es un proceso a volumen constante (2-3) y sin
transferencia de calor (3-4), cuando el pistón se encuentra próximo al PMS, se intro-
duce el combustible a gran presión, produciendo una explosión como consecuencia
del calor desprendido en el roce del aire con el combustible, aumentando la presión
dentro del cilindro. En este momento se inicia la carrera del pistón del PMS al PMI.
Cuarto tiempo expulsión o escape: Es un proceso a volumen constante (4-1) y a pre-
sión constante (1-0), cuando el pistón llega de nuevo al PMI se abre la válvula de
escape provocando la evacuación de los gases quemados hacia la atmósfera. El resto
de los gases son expulsados por el pistón en su ascenso al PMS. Cuando llega al PMS
se cierra la válvula de escape y se abre la admisión iniciándose un nuevo ciclo con el
descenso del pistón.
Figura 2.4: Diagrama P-v para el ciclo Diesel.
23
2.5. El ciclo Brayton
La e�ciencia térmica de este ciclo se expresa como:
�t =W
Q1(2.4)
2.5. El ciclo Brayton
El ciclo de Brayton es un modelo utilizado para evaluar los trabajos en las máquinas
térmicas de presión constante que utilizan un gas como �uido de trabajo. Este tipo de
máquinas pueden ser utilizadas como elemento motriz para impulsar un generador en
centrales eléctricas.
Si bien el ciclo se emplea en circuitos abiertos, con expulsión de los gases de escape de
la turbina a la atmósfera, se considera en forma teórica que los mismos son reutilizados
a la entrada del proceso [9]. Los procesos que integran un ciclo ideal de Brayton son los
siguientes:
Compresión isentrópica (1-2): Se comprime el aire que ingresa al sistema, se genera
un aumento en la presión y en la temperatura.
Combustión de la mezcla (2-3): El �uido comprimido inicia la combustión, median-
te la incorporación de combustible y la ignición de la mezcla.
Expansión isentrópica (3-4): El �uido de trabajo se expande en la turbina donde se
entrega energía mecánica al eje de la máquina.
Rechazo de calor (4-1): El �uido de trabajo rechaza calor para su reutilización. En la
práctica, el gas es expulsado a la atmósfera y se ingresa al sistema aire fresco.
24
Capítulo 2. Ciclos termodinámicos
Figura 2.5: Diagramas P-v y T-s para el ciclo Brayton.
La e�ciencia térmica de este ciclo se expresa como:
�t = 1 � T1
T2(2.5)
2.6. El ciclo Rankine
El ciclo de Rankine es el ciclo que sirve de base al funcionamiento de las centrales térmi-
cas con turbinas de vapor, las cuales producen actualmente la mayor parte de la energía
eléctrica que se consume en el mundo. La evolución de las centrales térmicas ha estado
condicionada por la búsqueda de mejoras en el rendimiento térmico del ciclo termodiná-
mico, ya que incluso pequeñas mejoras en el rendimiento signi�can grandes ahorros en los
requerimientos del combustible, impactando en la economía de la generación de energía.
25
Capítulo 3
El ciclo Rankine
Como se habló anteriormente, el ciclo de Carnot de vapor presenta algunos aspectos im-
prácticos, los cuáles pueden eliminarse, haciéndolo más real. Por eso se desarrolló otro
ciclo que pudiera eliminar los inconvenientes que presenta el ciclo de Carnot. El resultado
fue el ciclo Rankine, que se considera el mejor ciclo para las centrales eléctricas de vapor
[4].
El ciclo Rankine ideal no incluye ninguna irreversibilidad interna y se compone por los
siguientes procesos:
1. Compresión isentrópica en una bomba (4-1).
2. Adición de calor a presión constante en una caldera (1-2).
3. Expansión isentrópica en una turbina (2-3).
4. Rechazo de calor a presión constante en un condensador (3-4).
26
Capítulo 3. El ciclo Rankine
Figura 3.1: Diagrama T-s del ciclo Rankine ideal simple.
3.1. Análisis de energía del ciclo Rankine
Los componentes del ciclo Rankine (bomba, caldera, turbina y condensador) son disposi-
tivos de �ujo estacionario. Los cambios en la energía cinética y potencial del vapor suelen
ser pequeños respecto de los términos de trabajo y de transferencia de calor y, por con-
siguiente, casi siempre se ignoran [4].
Para la caldera:
qent = h2 � h1 por unidad de masa (3.1)
_Qent = _m(h2 � h1) por unidad de tiempo (3.2)
Para la turbina:
wturb = h2 � h3 por unidad de masa (3.3)
_Wturb = _m(h2 � h3) por unidad de tiempo (3.4)
Para el condensador:
qsal = h4 � h3 por unidad de masa (3.5)
_Qsal = _m(h4 � h3) por unidad de tiempo (3.6)
27
3.1. Análisis de energía del ciclo Rankine
Para la bomba:
wbom = h4 � h1 por unidad de masa (3.7)
_Wbom = _m(h4 � h1) por unidad de tiempo (3.8)
En el ciclo real se consideran las irreversibilidades en diversos componentes. La fricción
del �uido y las pérdidas de calor indeseables hacia los alrededores son las dos fuentes más
comunes de irreversibilidades.
De particular importancia son las irreversibilidades que suceden dentro de la bomba y la
turbina. Una bomba requiere una entrada de trabajo mayor, y una turbina produce una
salida de trabajo más pequeña como consecuencia de las irreversibilidades. En condiciones
ideales, el �ujo por estos dispositivos es isentrópico. La desviación de las bombas y turbinas
reales de las isentrópicas se compensa exactamente empleando e�ciencias adiabáticas [4].
Para la bomba:
�bom =_Wi
_Wr
=h1i � h4h1r � h4
(3.9)
Para la turbina:
�turb =_Wr
_Wi
=h2 � h3rh2 � h3i
(3.10)
Donde los estados 1r y 3r son los estados de salida reales de la bomba y la turbina
respectivamente, 1i y 3i son los estados correspondientes para el caso isentrópico, �gura
3.2.
28
Capítulo 3. El ciclo Rankine
Figura 3.2: Diagrama T-s del ciclo Rankine ideal simple.
La e�ciencia térmica de este ciclo se expresa como:
�térmica =_Wneto
_Qent
=_Wturb � _Wbom
_Qent
= 1 � qsalqent
(3.11)
3.2. Disminución de la presión de la turbina
Cuando se disminuye la presión del vapor a la salida de la turbina del valor P0 al valor P 0
0
se aumenta el trabajo producido por el ciclo (super�cie B), con respecto al trabajo que se
produce cuando la presión de salida del vapor es P0 (super�cie A).
El calor consumido en la caldera es el mismo, y el calor entregado en el condensador, que
antes era D, se incrementará hasta el área C.
29
3.2. Disminución de la presión de la turbina
Figura 3.3: Efecto que provoca disminuir la presión en la salidade la turbina.
La disminución de la presión de trabajo del condensador produce bene�cios pero también
trae problemas. Debido al hecho de que la presión de trabajo es menor que la atmosférica,
resulta prácticamente imposible evitar que penetre aire al interior del sistema por las
pequeñas grietas que se producen en las tuberías, uniones, etc. Se debe tener en cuenta
que una instalación de generación de vapor tiene muchos centenares de metros de tuberías,
que se expanden y contraen cada vez que se abre o cierra el paso del vapor generando
tensiones. Otros factores que inciden son las vibraciones producidas por las bombas, el
�ujo de los �uidos, y la posible presencia de �ujo bifásico que puede producir golpes de
ariete.
Todos estos factores hacen que sea prácticamente imposible mantener estable el sistema. De
ahí que siempre entre algo de aire que se mezcla con el vapor. En los sistemas que emplean
calderas de alta presión e incluso en algunos que usan calderas de media presión, resulta
totalmente intolerable la presencia de dióxido de carbono y de oxígeno en el condensado.
Ambas son sustancias corrosivas, que producen daños muy severos en la caldera y en la
turbina. En consecuencia se debe incluir en el circuito un elemento llamado �desaireador�
cuya misión es eliminar el aire disuelto en el condensado antes de que este retorne a la
caldera [5].
30
Capítulo 3. El ciclo Rankine
3.3. El ciclo Rankine con sobrecalentamiento
La temperatura promedio a la que el calor se trans�ere hacia el vapor puede ser incre-
mentada sin aumentar la presión de la caldera, gracias al sobrecalentamiento del vapor.
El área sombreada en la �gura 3.4 representa el aumento en el trabajo neto, mientras que
el área total bajo la curva del proceso 3� 30 representa el aumento en la entrada de calor.
El efecto total es un incremento en la e�ciencia térmica, porque aumenta la temperatura
promedio a la cual se añade calor.
Figura 3.4: Diagrama T-s del ciclo Rankine con sobrecalentamiento.
El sobrecalentamiento del vapor a temperaturas más altas, disminuye el contenido de
humedad del vapor a la salida de la turbina (la calidad del estado 40 es más alta que la
del estado 4), lo que es un efecto muy conveniente.
La temperatura a la que el vapor se sobrecalienta está limitada debido a consideraciones
metalúrgicas. Cualquier incremento en este valor depende del mejoramiento de los mate-
riales actuales o del descubrimiento de otros nuevos que puedan soportar temperaturas
más altas.
Otra manera de incrementar la temperatura promedio durante el proceso de adición de
calor es aumentar la presión de operación de la caldera, lo cual eleva automáticamente
la temperatura de saturación. Esto a su vez eleva la temperatura promedio a la cual se
31
3.4. El ciclo Rankine con recalentamiento
trans�ere calor al vapor y de ese modo incrementa la e�ciencia térmica del ciclo [4].
El efecto de aumentar la presión de la caldera en el desempeño de los ciclos de potencia
de vapor se ilustra en un diagrama T-s en la �gura 3.5.
Figura 3.5: Diagrama T-s del efecto que produce incrementar lapresión de la caldera en el ciclo Rankine.
Las presiones de operación de las calderas se han incrementado en forma gradual a lo
largo de los años desde 2.7 MPa (400 psia) en 1922, hasta más de 30 MPa (4500 psia) en
la actualidad, generando el su�ciente vapor para producir una salida neta de potencia de
1000 MW o más en una central eléctrica grande de vapor. Actualmente muchas de estas
modernas centrales operan a presiones supercríticas y tienen e�ciencias térmicas de 40 por
ciento en el caso de centrales que funcionan con combustibles fósiles y de 34 por ciento
para las nucleoeléctricas.
3.4. El ciclo Rankine con recalentamiento
El recalentamiento es un procedimiento mediante el cual no solamente puede lograrse un
aumento de la e�ciencia termodinámica de un ciclo de Rankine, sino también una reduc-
ción del grado de condensación en las turbinas. El ciclo con recalentamiento consiste en
permitir que el vapor de la caldera inicialmente sobrecalentado, se expanda primero en
32
Capítulo 3. El ciclo Rankine
una turbina de alta presión hasta una presión a la cual apenas comience la condensación,
luego volver a calentar el vapor mediante un proceso a presión constante, en un equipo
llamado recalentador (generalmente un haz de tubos en el interior de la caldera) y �nal-
mente expandirlo hasta la presión del condensador en una turbina de baja presión [10].
Este ciclo se muestra en la �gura 3.6.
Figura 3.6: Diagrama T-s del ciclo Rankine con recalentamiento.
La incorporación de un recalentamiento simple en una central eléctrica moderna eleva la
e�ciencia del ciclo en 4 o 5 por ciento, ya que se incrementa la temperatura promedio a la
cual el calor se trans�ere al vapor.
3.5. El ciclo Rankine regenerativo
Este procedimiento suele �sangrar� el vapor, extrayéndolo de la turbina en varias etapas,
en cada una de las cuales se usa el vapor sobrecalentado o saturado (en el caso de una
central nuclear) para precalentar el agua condensada que alimenta a la caldera. El cálculo
de la cantidad de vapor extraído en cada etapa se hace por medio de un balance de energía
en cada precalentador, comenzando por el que funciona a mayor presión. Las presiones a
las que se hacen las extracciones se eligen de modo que el calentamiento por cada etapa
tenga igual incremento de temperatura.
33
3.5. El ciclo Rankine regenerativo
La regeneración no sólo mejora la e�ciencia del ciclo, también proporciona un medio con-
veniente para desairear el agua de alimentación (al eliminar el aire que se �ltra al con-
densador) para evitar la corrosión en la caldera. Asimismo, ayuda a controlar el �ujo
volumétrico del vapor en las etapas �nales de la turbina. Por consiguiente, la regeneración
se utiliza en todas las centrales eléctricas de vapor modernas desde su introducción a
principios de la década de 1920 [5].
3.5.1. El ciclo Rankine regenerativo con calentadores abiertos de
agua de alimentación
Un calentador de agua de alimentación abierto, es una cámara de mezclado, donde el vapor
extraído de la turbina se mezcla con el agua de alimentación.
En un ciclo Rankine ideal regenerativo el vapor entra a la turbina a la presión de la
caldera (estado 5) y se expande isentrópicamente hasta una presión intermedia (estado 6).
Se extrae vapor en este estado y se envía al calentador de agua de alimentación, el vapor
restante continúa su expansión isentrópica hasta la presión del condensador (estado 7).
Este vapor sale del condensador como un líquido saturado a la presión del condensador
(estado 1). El agua condensada, entra luego a una bomba isentrópica, donde se comprime
hasta la presión del calentador del agua de alimentación (estado 2), y se envía al calentador
de agua de alimentación donde se mezcla con el vapor extraído de la turbina.
La fracción del vapor extraído es tal que la mezcla sale del calentador como un líquido
saturado a la presión del calentador (estado 3).
Una segunda bomba elevará la presión del agua hasta la presión de la caldera. El ciclo
concluye con el calentamiento del agua de la caldera hasta el estado de entrada de la
turbina (estado 5) [4].
34
Capítulo 3. El ciclo Rankine
Figura 3.7: Esquema y diagrama T-s del ciclo Rankineregenerativo con calentador de agua de alimentación abierto.
3.5.2. El ciclo Rankine regenerativo con calentadores cerrados de
agua de alimentación
En este calentador se trans�ere calor del vapor extraído al agua de alimentación sin que
suceda ninguna mezcla. En ese caso los dos �ujos pueden estar a presiones diferentes, ya
que no se mezclan.
En un calentador de agua de alimentación cerrado ideal el agua de alimentación se calienta
hasta la temperatura de salida del vapor extraído, que idealmente abandona el calentador
como líquido saturado a la presión de extracción.
En las centrales reales, el agua de alimentación sale del calentador con una temperatura
menor a la de la salida del vapor extraído, debido a que se requiere una diferencia de
temperatura de al menos unos cuantos grados para que se logre una transferencia de calor
efectiva [4].
35
3.5. El ciclo Rankine regenerativo
Figura 3.8: Esquema y diagrama T-s del ciclo Rankineregenerativo con calentador de agua de alimentación cerrado.
36
Capítulo 4
Descripción de una centralnucleoeléctrica
Una central nuclear es una instalación destinada a la obtención de energía eléctrica uti-
lizando energía nuclear, que es la energía que se obtiene al manipular el núcleo de los
átomos. Su funcionamiento es similar al de una central térmica. La diferencia está en que
la fuente de calor de una central nuclear proviene de la �sión nuclear de determinados
átomos mientras que en una central térmica la fuente de calor (energía térmica) proviene
de la combustión de uno o más combustibles fósiles. Al igual que en una central térmica
convencional el calor se utiliza para generar vapor de agua que impulsa una turbina de
vapor conectada a un generador que produce electricidad.
La energía térmica que utiliza la central nuclear para generar energía eléctrica es generada
por un reactor nuclear. Dentro del reactor se producen, de manera controlada, reacciones
de �sión en cadena. El elemento que se �siona es uranio natural o uranio enriquecido. El
uranio enriquecido es el uranio natural con una proporción mayor del isótopo Uranio-235.
Se suele considerar el tiempo de vida de operación de una central nuclear en unos cuarenta
años, aunque los reactores de tercera generación (ya en funcionamiento) tienen un diseño
de 60 años de vida útil [11].
37
4.1. Componentes de un reactor nuclear
4.1. Componentes de un reactor nuclear
Un reactor nuclear es un dispositivo donde se lleva a cabo la reacción de �sión nuclear,
la cual sirve para producir calor a partir de bombardear el núcleo de los átomos con
neutrones. Al escindirse cada núcleo en dos fragmentos de �sión, además de liberar calor,
también se emiten neutrones, que a su vez romperán otros núcleos, dando lugar a lo que se
conoce como reacción en cadena. En los reactores nucleares la refrigeración y la seguridad
son muy importantes [12].
Combustible: Formado por un material físil, generalmente un compuesto de uranio, en
el que tienen lugar las reacciones de �sión, y por tanto, es la fuente de generación
del calor.
Moderador: Disminuye la energía de los neutrones rápidos, llevándolos a neutrones lentos
o térmicos.
Refrigerante: Remueve el calor que se genera al chocar los productos de �sión con los
materiales.
Re�ector: Puede ser agua, agua pesada, gra�to o uranio. Reduce el escape de neutrones
y aumenta la e�ciencia del reactor.
Blindaje biológico: Reduce la fuga de radiación gamma y neutrones rápidos. Puede ser
concreto, plomo, acero o agua.
Material estructural: Proporciona soporte y con�namiento al combustible, moderador,
refrigerante y otras partes del reactor.
38
Capítulo 4. Descripción de una central nucleoeléctrica
4.2. La �sión nuclear
Dependiendo de la con�guración de combustible-moderador-refrigerante se tendrán diver-
sos tipos de reactores nucleares, para el caso de los reactores de agua ligera, contienen el
material nuclear en lo que se conoce como el núcleo del reactor, este consiste de un arreglo
de varios ensambles combustible formados por barras de zircaloy que contienen pastillas
de UO2 en geometría rectangular, en el caso de los reactores de agua ligera en especí�co
los reactores BWR, los ensambles combustible tienen arreglos de 8 � 8, 9 � 9 o 10 � 10
barras de zircaloy, estas barras a su vez son las que contienen el combustible cerámico en
forma de �pastillas� de UO2 en forma de pequeños cilindros de 1 cm de diámetro y 1 cm
de altura.
A lo largo del primer arranque del reactor, junto a los ensambles de combustible, encon-
tramos las fuentes emisoras de neutrones, que son necesarias para iniciar la �sión nuclear
por primera vez. Dentro del mismo y cerca de los ensambles de combustible se localizan
las barras de control, las cuales son de Boro o de Cadmio, y al ser desplazadas entre los
ensambles, como su nombre lo indica, sirven para controlar la población de neutrones, ya
que los materiales que contienen son absorbedores de neutrones.
Para comenzar la reacción en cadena es necesario extraer las barras de control, logrando
que los neutrones lleguen a las pastillas de Óxido de Uranio y sean absorbidas por el núcleo
del U-235, entrando a un estado de �excitación� que le permite partirse o �sionarse; una
vez que se produce la reacción de �sión, como ya se explicó, se libera una gran cantidad
de energía en forma de calor, además de neutrones que aparecen con una alta energía
(2.5 neutrones en promedio), radiación gamma y usualmente dos productos de �sión;
estos contienen energía cinética, los cuales al ir atravesando los materiales de la pastilla
producen fricción, generando calor, el cual trata de conducirse al exterior, incrementando
la temperatura de la pared de Zircaloy. Este calor será extraído por el refrigerante [13].
39
4.2. La �sión nuclear
Figura 4.1: Fisión nuclear.
A los neutrones rápidos que surgen en cada �sión, es necesario disminuirles su energía o
bien moderarlos de forma tal, que se incremente la probabilidad de �sionar a otros núcleos
U-235, y de esta manera poder alcanzar una reacción en cadena.
Si continuamos con el proceso de extracción de barras de control las �siones se incremen-
tarán cada vez más, alcanzándose una reacción en cadena estable, es decir, se da un punto,
en que al no extraer más barras de control, la reacción nuclear se autosostendrá y el reactor
habrá adquirido su primera criticidad.
La tabla 4.1 muestra las diferentes clasi�caciones de los reactores de acuerdo al uso, tipo
de combustible, tipo de moderador, etc.
40
Capítulo 4. Descripción de una central nucleoeléctrica
Clasi�cación Área de aplicación o Características
Según su uso
Investigación.Producción de radioisótopos.Producción de energía eléctrica.Propulsión naval.Reproductor de combustible.
Según la disposicióndel combustible
Heterogéneos: combustible en barras.Homogéneos: combustible disuelto en el moderador(en forma de sulfato de uranilo UO2SO4 disueltoen agua liviana actuando de moderador y refrigerante.Posee grandes problemas tecnológicos y de seguridad).
Según el tipo decombustible
Uranio natural (99.3% U238 y 0.7% U235).U235.U233.Pu239.
Según el moderador
H2O.D2O.Gra�to.Berilio.Compuestos orgánicos (difenilo).
Según el �uidorefrigerante
Líquidos: H2O, D2O, orgánicos.Gaseosos: Aire, CO2, Helio.Metales fundidos: Na, Aleaciones Na, K, Pb.
Según el recipientedel núcleo del reactor
Recipiente de presión de acero.Recipiente de presión de hormigón.Tubos de presión.
Según el aspectoneutrónico del reactor
(energía de losneutrones)
Térmicos (con moderador).Rápidos (sin moderador).
Tabla 4.1: Clasi�cación de los reactores.
4.3. Descripción de los reactores de potencia
Los reactores de potencia se pueden clasi�car de acuerdo a la energía de los neutrones con
los cuales se lleva a cabo la �sión, de la siguiente manera:
41
4.3. Descripción de los reactores de potencia
Reactores Térmicos
8>>>>>>>>>>><>>>>>>>>>>>:
Agua Ligera (LWR)
8><>:
PWR
BWR
Agua Pesada (PHWR)
�CANDU
Refrigerado por Gas y moderado por Gra�to
�AGR
Reactores Rápidos
8>>>>>>><>>>>>>>:
Sodio (LMFBR)
8>>>>>>><>>>>>>>:
Monju
BN-800
PHÉNIX
SUPERPHÉNIX
En la �gura 4.2 se muestra la evolución de los reactores nucleares a lo largo de las genera-
ciones que se tienen, desde los prototipos hasta la Generación IV.
Figura 4.2: Evolución de los reactores.
42
Capítulo 4. Descripción de una central nucleoeléctrica
Los reactores que se han venido utilizando en mayor medida para la generación de energía
eléctrica desde el inicio, son los reactores de agua ligera, por lo que a continuación se
describirán brevemente algunas características de los reactores tipo PWR y BWR.
4.3.1. Reactor de agua a presión (PWR)
El Reactor de Agua a Presión (PWR, por sus siglas en inglés) se desarrolló para el
equipamiento de los submarinos atómicos del tipo Nautilus; pero fueron tan satisfacto-
rios sus resultados que derivó en ser utilizado en centrales nucleares.
En la �gura 4.3 puede observarse un esquema simpli�cado de una central PWR, la cual
consta de dos circuitos, el primero se conoce como circuito primario dentro del cual el agua
permanece todo el tiempo en fase líquida, esto debido a la alta presión (de ahí su nombre
del reactor) con la cual circula siendo mayor a la presión de saturación, el �uido pasa
por una bomba, el reactor (en donde absorbe el calor) y el presurizador que se encarga
de mantener estable el nivel de presión. Del otro lado está el circuito secundario que
también lleva agua pero en este caso aquí si se le permite ebullir, y tiene los elementos
básicos del ciclo Rankine. La única interacción entre los dos circuitos es a través de un
intercambiador de calor cerrado, el cual se conoce como generador de vapor. Debido a que
tiene dos circuitos, la e�ciencia tiende a ser menor con respecto al tipo BWR, pero una
gran ventaja es que el circuito secundario donde se genera el vapor, es un circuito limpio
completamente. El combustible sigue siendo UO2 con uranio enriquecido al 2% o 3%.
43
4.3. Descripción de los reactores de potencia
Figura 4.3: Esquema de una central nucleoeléctricacon un reactor tipo tipo PWR.
La potencia eléctrica de este tipo de reactores abarca desde los 600 MW hasta 1400 MW
en los reactores de tercera generación [13].
La potencia del reactor es controlada a través de dos medios:
1. Barras absorbedoras, las cuales contienen principalmente carburo de boro como ma-
terial absorbedor.
2. Inyección de ácido bórico disuelto en agua.
La recarga de combustible se lleva a cabo con el reactor apagado, reemplazando anualmente
un tercio de la carga y reordenándose el resto de manera conveniente a �n de optimizar el
quemado. El elemento combustible irradiado se deposita en una alberca de enfriamiento,
conocida como alberca de combustible gastado, hasta que descienda lo su�ciente el calor
de decaimiento, como para permitir que sea reprocesado o almacenado.
44
Capítulo 4. Descripción de una central nucleoeléctrica
4.3.2. Reactor de agua en ebullición (BWR)
El nombre de este reactor se debe a que el agua contenida en el único circuito que posee,
se le permite ebullir. Utiliza uranio enriquecido como combustible con un grado que usual-
mente oscila alrededor del 3% siendo el agua el �uido de trabajo actuando como moderador
y refrigerante a la vez.
Debido a que es un sistema de ciclo directo, el vapor que se genera dentro del reactor
es dirigido a la turbina y desde ahí al condensador. El condensado se dirige luego a un
sistema de puri�cación conformado por resinas de intercambio iónico de lecho mezclado y
desde ahí es bombeado de manera directa hacia el reactor.
En el reactor, el agua de alimentación se agrega a la mezcla bifásica líquido-vapor que es
obligada a recircular a través del núcleo por las llamadas bombas de recirculación que se
encuentran en la periferia alrededor del mismo. Así mismo se tiene una con�guración para
que el ciclo sea del tipo regenerativo.
La con�guración del núcleo del reactor (muy parecida al del PWR), consiste en un conjunto
de ensambles combustible agrupados en una con�guración cuya periferia tiende a adoptar
la forma cilíndrica.
Cada ensamble combustible posee un arreglo en una matriz cuadrada de 8 � 8, 9 � 9 o
10 � 10 barras de zircaloy, el cual contiene en su interior pastillas de UO2 (dióxido de
uranio) enriquecido con U235.
La vasija es de una forma cilíndrica con base semiesférica, estando fabricado con acero al
carbón, el cual se encuentra recubierto en su interior con una capa de unos 7 mm de acero
inoxidable.
Dentro de la vasija, el agua �uye hacia arriba y al atravesar los ensambles se evapora en
forma parcial, constituyendo una mezcla bifásica (líquido-vapor) dejando el núcleo con
una calidad del 12% aproximadamente, posteriormente, la mezcla de vapor y agua pasa
45
4.3. Descripción de los reactores de potencia
a través de los separadores de vapor donde la parte líquida se separa, quedando vapor
con un poco de humedad, y �nalmente se obtiene vapor saturado al pasar después por los
secadores de vapor, saliendo del reactor con una calidad del 99.9%. Este vapor alimenta
en forma directa la etapa de alta presión de la turbina.
Al igual que en los reactores PWR, cuando se hace la recarga, los combustibles gastados
son llevados a la llamada alberca de combustible gastado, en la cual permanecen hasta
que disminuye el calor de decaimiento, lo su�ciente como para que puedan ser trasladados
a la planta de reprocesamiento o puestos en algún repositorio [13].
La turbina posee, como en la mayoría de las centrales nucleares, una sección de alta presión
y dos o tres de baja presión.
Figura 4.4: Esquema de una central nucleoeléctricacon un reactor tipo tipo BWR.
46
Capítulo 5
Desarrollo del simulador del ciclotermodinámico
En este capítulo se describe el proceso llevado a cabo para el desarrollo del simulador del
ciclo termodinámico para una central nuclear con un reactor tipo BWR.
Una de las primeras tareas en el desarrollo del simulador, fue la de generar u obtener las
correlaciones que se utilizarían en el simulador para calcular las propiedades termodinámi-
cas del agua en diferentes estados, lo cual también se muestra en este capítulo. Por otra
parte, se detalla el diseño de la interfaz grá�ca, así como el acoplamiento de estas partes
para lograr una herramienta �nal que fuera amigable con el usuario.
El simulador se desarrolló en el lenguaje de programación Python 3.4, un lenguaje libre y
de fuente abierta, disponible para los principales sistemas operativos, como son Linux, Mac
OS X y Windows2. A partir del código fuente de programación se desarrolló un ejecutable.
5.1. Cálculo de las propiedades termodinámicas del agua
Las funciones o correlaciones para calcular las propiedades termodinámicas del agua se
encuentran en función de la presión de saturación a una temperatura dada.
2Para más información, visitar https://www.python.org
47
5.1. Cálculo de las propiedades termodinámicas del agua
La temperatura de saturación (en función de una presión dada) se calcula para delimitar el
rango donde es válido utilizar las funciones de líquido comprimido o vapor sobrecalentado.
Para simular el ciclo termodinámico de una central nuclear con reactor tipo BWR, se nece-
sitan dos propiedades termodinámicas que son: entalpía especí�ca y entropía especí�ca.
5.1.1. Presión de saturación en función de la temperatura
La ecuación 5.1 es válida para un rango de temperatura desde 17.511 �C hasta 373 �C
y en la tabla 5.1 se indican los valores de los coe�cientes a, b y c para cada rango de
temperatura [14].
Ps(T ) =
�T + a
b
�c
(5.1)
Rango de temperatura (�C) a b c17:511 � T < 56:275 99.2 270.1210 7.406365056:275 � T < 90:880 78.2 254.6831 6.405821690:880 � T < 139:781 57.0 236.2315 5.6029720139:781 � T < 203:662 28.0 207.9248 4.7785040203:662 � T � 299:407 5.0 185.0779 4.3043760299:407 < T < 355:636 16.0 195.1819 4.4608430355:663 � T � 373:000 50.0 227.2963 4.9607850
Tabla 5.1: Coe�cientes para calcular la presión de saturación.
5.1.2. Temperatura de saturación en función de la presión
La ecuación 5.2 es válida para un rango de presión desde 0.002 MPa hasta 21.5 MPa y en
la tabla 5.2 se indican los valores de los coe�cientes a, b y c para cada rango de presión
[14].
Ts(P ) = aP b + c (5.2)
48
Capítulo 5. Desarrollo del simulador del ciclo termodinámico
Rango de Presión (MPa) a b c0:00200 � P < 0:01672 270.1210 0.135019 -99.20:01672 � P < 0:07250 254.6831 0.156108 -78.20:07250 � P � 0:35900 236.2315 0.1784767 -57.00:35900 < P � 1:67600 207.9248 0.2092705 -28.01:67600 < P � 8:51100 185.0779 0.2323217 -58:51100 < P < 17:69000 195.1819 0.2241729 -16.017:69000 � P � 21:500 227.2963 0.2015810 -50.0
Tabla 5.2: Coe�cientes para calcular la temperatura de saturación.
5.1.3. Líquido saturado
El cálculo de las propiedades termodinámicas del agua, como líquido saturado, se en-
cuentran en función de la presión de saturación. La correlación para obtener la entalpía
especí�ca del líquido saturado (hf ), ecuación 5.3, es válida para un rango de presión de
saturación desde 0.002 MPa hasta 21.5 MPa y en la tabla 5.3 se indican los valores de los
coe�cientes a, b y c para cada rango de presión de saturación de dicha ecuación, como se
muestra a continuación [14]:
hf (Ps) = aPsb + c (5.3)
Rango de Presión (MPa) a b c0:0020 � Ps < 0:0173 1128.7770 0.1351960 -413.720:0173 � Ps < 0:1028 1050.7085 0.1617970 -306.500:1028 � Ps < 0:9420 912.1779 0.2061637 -150.000:9420 � Ps < 4:0200 638.0621 0.2963192 125.004:0200 � Ps < 9:964 373.7665 0.4235532 415.009:964 � Ps < 16:673 75.38673 0.8282384 900.0016:673 � Ps < 20:396 0.1150827 2.711412 1440.0020:396 � Ps � 21:500 9:1417257� 10�14 11.47287 1752.00
Tabla 5.3: Coe�cientes para calcular la entalpía especí�ca de líquido saturado.
Por otro lado, para calcular la entropía especí�ca para líquido saturado (sf ) se tiene la
ecuación 5.4, la cual es válida para un rango de presión de saturación desde 0.002 MPa
49
5.1. Cálculo de las propiedades termodinámicas del agua
hasta 21.5 MPa, además en la tabla 5.4 se indican los valores de los coe�cientes a, b, c y
d para cada rango de presión de saturación, como se muestran a continuación:
sf (Ps) = a(Ps + b)c + d (5.4)
Rango de Presión (MPa) a b c d0:0020 � Ps < 0:0812 4.5397665 0.0 0.0829772 -2.4490:0812 � Ps < 1:6660 3.340244 0.0 0.125474 -1.2001:6660 � Ps < 8:8250 1.748203 0.0 0.2275611 0.4008:8250 � Ps < 16:6600 0.2549238 0.0 0.6381866 2.25016:6600 � Ps � 21:500 4:3632383� 10�5 -0.04 3.153273 3.500
Tabla 5.4: Coe�cientes para calcular la entropía especí�ca de líquido saturado.
5.1.4. Vapor saturado
Al igual que para el líquido saturado, las propiedades termodinámicas del vapor saturado se
encuentran en función de la presión de saturación. En este caso para la entalpía especí�ca
de vapor saturado, la ecuación 5.5 es válida para un rango de presión de saturación desde
0.002 MPa hasta 21.5 MPa y en la tabla 5.5 se indican los valores de los coe�cientes a, b,
c y d para cada rango de presión de saturación de dicha ecuación [14]:
hg(Ps) = a(Ps + b)2 + c(Ps + b) + d (5.5)
Tabla 5.5: Coe�cientes para calcular la entalpía especí�ca de vapor saturado.
Rango de Presión (MPa) a b c d0:0020 � Ps < 0:1379 Ver Nota 1 Ver Nota 1 Ver Nota 1 Ver Nota 10:1379 � Ps < 0:348 Ver Nota 2 Ver Nota 2 Ver Nota 2 Ver Nota 20:348 < Ps � 1:248 Ver Nota 3 Ver Nota 3 Ver Nota 3 Ver Nota 31:248 < Ps < 2:955 -7.835986 -3.001 -2.934312 2803.712:955 � Ps � 6:522 -1.347244 -2.999 -2.326913 2803.356:522 < Ps < 16:497 -0.9219176 -9.0 -16.38835 2742.0316:497 � Ps < 20:193 -3.532177 -8.0 29.81305 2565.0020:193 � Ps � 21:5 -22.92521 -18.0 44.23671 2415.01
yNota 1: hg(Psat) = 529:44008P0:108652sat
+ 2263:5yNota 2: hg(Psat) = �4:0381938� 10�6(3:0� Psat)
15:72364 + 2750:0yNota 3: hg(Psat) = �0:5767304e�1:66153(Psat�3:2) + 2800:0
50
Capítulo 5. Desarrollo del simulador del ciclo termodinámico
De la misma manera para la entropía especí�ca del vapor saturado, la ecuación 5.6 es
válida para un rango de presión de saturación desde 0.002 MPa hasta 21.5 MPa y en la
tabla 5.6 se indican los valores de los coe�cientes a, b, c y d para cada rango de presión
de saturación:
sg(Ps) = a(Ps + b)c + d (5.6)
Tabla 5.6: Coe�cientes para calcular la entropía especí�ca de vapor saturado.
Rango de Presión (MPa) a b c d0:0020 � Ps < 0:0916 16.644669 0 -0.0192733 -10.0390:0916 � Ps < 1:480 Ver Nota 1 Ver Nota 1 Ver Nota 1 Ver Nota 11:480 � Ps � 8:050 -1.227644 0 0.2481072 7.808:050 < Ps � 15:640 -0.084638514 0 0.9082161 6.3015:640 < Ps � 20:00 �3:6897161� 10�3 -7.80 2.012466 5.5020:000 < Ps � 21:5 -0.042830642 -18.7 1.779526 5.0
yNota 1: sg(Psat) = 6:58681� 0:335924 log(Psat)
5.1.5. Líquido comprimido
Por de�nición, un líquido comprimido es aquel que se encuentra a mayor presión que la
presión de saturación a una temperatura dada, de acuerdo con lo anterior para el cálculo
de las propiedades termodinámicas del agua en estado de líquido comprimido, se agrega el
efecto que tiene la presión adicional, respecto a la presión de saturación a una temperatura
dada [15].
Las correlaciones para las propiedades termodinámicas especí�cas de entalpía y entropía
se tienen como sigue:
Entalpía especí�ca de líquido comprimido o subenfriado:
h(P; T ) = hf [Ps(T )] +
�1:4� 169
369� T
�(P � Ps) (5.7)
Entropía especí�ca de líquido comprimido o subenfriado:
s(P; T ) = sf [Ps(T )] +
�0:0004� 0:325
370� T
�(P � Ps) (5.8)
51
5.1. Cálculo de las propiedades termodinámicas del agua
5.1.6. Vapor sobrecalentado
Por de�nición, un vapor sobrecalentado es aquel que se encuentra a mayor temperatura
que la temperatura de saturación a una presión dada, de acuerdo con lo anterior para el
cálculo de las propiedades termodinámicas del vapor sobrecalentado, se agrega el efecto
que tiene la temperatura adicional, respecto a la temperatura de saturación a una presión
dada.
Igualmente, las correlaciones para las propiedades termodinámicas especí�cas de entalpía
y entropía se tienen como sigue:
Entalpía especí�ca del vapor sobrecalentado:
h(P; T ) = hg(Ps(T )) +�4:5Pp
7:4529� 10�6T 3 � P 2+ 0:28e�0:008(T�162) � 100
T� 2:225
�(T � Ts)
(5.9)
Entropía especí�ca del vapor sobrecalentado:
s(P; T ) = sg(Ps(T )) +"0:004P 1:2p
3:025� 10�11(T + 46)5 � P 2+
0:00006pP
#(T � Ts)
+��4:125� 10�6T + 0:0053
�(T � Ts)
(5.10)
Las ecuaciones anteriores no permiten calcular las propiedades termodinámicas cuando
se intentan realizar cálculos cercanos a las condiciones de saturación, debido a que la
diferencia entre la temperatura y presión que existe dentro de la raíz cuadrada en ambas
ecuaciones tiende a ser negativa. Por lo tanto para esta región se utilizaron las tablas de
Vapor Sobrecalentado de la referencia [4], en conjunto con la referencia [16]3.
3Descargar en, https://www.nist.gov/sites/default/�les/documents/srd/NISTIR5078-Tab3.pdf
52
Capítulo 5. Desarrollo del simulador del ciclo termodinámico
5.2. Diseño de la interfaz grá�ca del simulador
Para generar el modelo de la interfaz grá�ca se utilizó Qt, que es una infraestructura digital
multiplataforma orientada a objetos ampliamente usada para desarrollar programas que
emplean interfaz grá�ca de usuario, así como también diferentes tipos de herramientas
para la línea de comandos y consolas para servidores que no necesitan una interfaz grá�ca
de usuario. Además Qt es compatible con Python.
Qt Designer es una herramienta de Qt para el diseño y la construcción de interfaces grá�cas
de usuario (GUI, del inglés Graphical User Interface). Elementos y formas creadas con Qt
Designer se integran a la perfección con el código programado, utilizando señales de Qt,
que le permite asignar fácilmente el comportamiento de los elementos grá�cos. Todas las
propiedades establecidas en Qt Designer se pueden cambiar dinámicamente dentro del
código4.
Dentro de la herramienta Qt Designer se tienen varios elementos disponibles para hacer
una interfaz grá�ca de usuario; a continuación se describen los elementos que se emplearon
en el simulador desarrollado:
Tab Widget: Este elemento permite crear pestañas dentro de una ventana.
Label: Permite insertar texto en una posición determinada de la ventana y también per-
mite insertar imágenes en la posición deseada en una ventana.
Push Button: Este elemento realiza alguna acción requerida por el usuario.
LineEdit: Es una casilla que permite al usuario introducir valores alfanuméricos en una
sola línea.
Radio Buttom: Es un botón de opción que se puede activar (seleccionado) o desactivar
(sin seleccionar). En un grupo de botones de este tipo, sólo un botón se puede selec-
4Para más información, visitar https://www.qt.io/es/
53
5.2. Diseño de la interfaz grá�ca del simulador
cionar a la vez; si el usuario selecciona otro botón, el botón seleccionado previamente
se desactiva.
Check Box: Es una casilla de veri�cación que se utilizan normalmente para representar
las opciones en una aplicación que pueden ser activadas o desactivadas, sin afectar
a las demás opciones.
La interfaz grá�ca de usuario desarrollada para el SICTER (Simulador de un ciclo termo-
dinámico Rankine), se compone de las siguientes partes:
1. Ventana principal: En la pestaña de Inicio se muestra el nombre y las depen-
dencias correspondientes donde se generó este simulador, así como las opciones de
iniciar y salir del SICTER, �gura 5.1.
54
Capítulo 5. Desarrollo del simulador del ciclo termodinámico
Figura 5.1: Ventana principal, pestaña Inicio.
En la pestaña Acerca de , se describe brevemente que es la plataforma AZTLAN y
las instituciones involucradas en este proyecto, �gura 5.2.
55
5.2. Diseño de la interfaz grá�ca del simulador
Figura 5.2: Ventana principal, pestaña Acerca de.
2. Ventana secundaria: Permite seleccionar el sistema de unidades, ya sea el Sistema
Inglés de Ingeniería o el Sistema Internacional de Unidades.
56
Capítulo 5. Desarrollo del simulador del ciclo termodinámico
Figura 5.3: Ventana secundaria.
3. Ventana terciaria: Muestra el esquema del ciclo termodinámico en las unidades
que previamente se seleccionó.
57
5.2. Diseño de la interfaz grá�ca del simulador
Figura 5.4: Circuito termodinámico en el Sistema Internacional de Unidades.
Figura 5.5: Circuito termodinámico en el Sistema Inglés de Ingeniería.
58
Capítulo 5. Desarrollo del simulador del ciclo termodinámico
Para crear el ejecutable del código, las imágenes dentro del diseño de la interfaz grá�ca
de usuario, se introducen en formato *.qrc, un archivo basado en XML, que permite la
portabilidad de los recursos asociados a este archivo. A continuación se muestra un ejemplo
de un archivo *.qrc.
<RCC>
<qresource pre�x=�archivoqrcqtpng�>
<�le>ININ_hor,300p.png</�le>
<�le>Aztlan1,300p.png</�le>
<�le>ININ Logo.png</�le>
<�le>Aztlanver,150p.png</�le>
</qresource>
</RCC>
5.3. Generación del ejecutable
PyInstaller es un programa que comprime códigos Python en ejecutables independientes,
bajo Windows, Linux y Mac OS X. Sus principales ventajas sobre otras herramientas
similares son que PyInstaller trabaja con Python 2.7 y 3.3 a 3.5, se crean ejecutables más
pequeños, es completamente multiplataforma y utiliza el soporte del sistema operativo
para cargar las bibliotecas dinámicas, lo que garantiza una compatibilidad total5.
Uno de los inconvenientes que presenta la herramienta PyInstaller, es que el código que
se desee comprimir (incluyendo la interfaz grá�ca de usuario y los archivos *.qrc), deben
estar en lenguaje Python, por lo que se tiene que convertir los archivos de Qt Designer
5Para más información, visitar http://www.pyinstaller.org/
59
5.3. Generación del ejecutable
con extensión *.ui a *.py y los archivos *.qrc a *.py. A continuación se describen los pasos
necesarios para convertir la Interfaz Grá�ca de Usuario a lenguaje Python:
1. Para convertir el archivo *.qrc, el cual contiene las imágenes png o jpg, a Python
*.py, se utiliza una herramienta de Qt Designer llamada pyrcc, este proceso se realiza
mediante el ambiente de desarrollo de Python, en este caso se utilizó PyCharm.
2. Para convertir los archivos *.ui en *.py, se utiliza una herramienta de Qt Designer
llamada uic, la cual se utiliza en la ventana de comandos de Windows (cmd).
Hasta este punto se ha completado la conversión de la interfaz grá�ca de usuario, con
sus respectivas imágenes, a lenguaje Python, ahora se debe implementar la lógica de
funcionamiento de los elementos que contiene la interfaz grá�ca de usuario, mediante
un código desarrollado en Python, en el que se declaran las señales propias de Qt para
indicar qué debe hacer cada elemento, para después acoplar la parte de interfaz grá�ca de
usuario y el funcionamiento de los botones, con las funciones programadas para calcular
las propiedades termodinámicas.
En esta parte el SICTER sólo es capaz de calcular las propiedades termodinámicas con
los parámetros de entrada que se introduzcan en la interfaz grá�ca de usuario (Presión y
temperatura). Para analizar los ciclos termodinámicos Rankine, se programan las correla-
ciones respectivas para cada ciclo en las que se llaman a las propiedades termodinámicas
requeridas, este apartado se describe con más detalle en el apéndice Programación en
Python y Qt Designer del simulador.
Una vez terminado el código fuente y habiendo sido veri�cado su funcionamiento, el paso
siguiente es crear el ejecutable, con la herramienta PyInstaller y mediante la ventana de
comandos de Windows (cmd).
En la ventana de comandos (cmd) se especí�ca la ruta que aloja el archivo que se desea
comprimir con las características �nales que se desea en el ejecutable. Windows comenzará
60
Capítulo 5. Desarrollo del simulador del ciclo termodinámico
la compresión del código, así como de las dependencias necesarias del mismo.
Una vez terminado el proceso, se creará una carpeta con el nombre del código fuente
(*.py) que se comprimió y dentro de ésta habrá una subcarpeta llamada �dist� en la que
se encontrará el archivo ejecutable (*.exe).
La �gura 5.6 muestra todo el proceso que se sigue para la generación del archivo ejecutable
del SICTER.
61
5.3. Generación del ejecutable
Figura 5.6: Proceso realizado para generar la herramienta SICTER.
62
Capítulo 6
Aplicación del simulador del ciclotermodinámico del BWR
En este capítulo se comparan los análisis realizados y que se muestran a detalle en el
apéndice Solución completa de los problemas de referencia para una central nuclear con
un reactor tipo BWR con respecto al cálculo que realiza la herramienta de simulación
SICTER, tanto para el ciclo Rankine simple como para el ciclo Rankine regenerativo.
En la �gura 6.1, se muestran los componentes del ciclo termodinámico Rankine simple y
regenerativo diseñados para el SICTER.
63
6.1. Simulación del ciclo Rankine simple
Figura 6.1: Esquema del ciclo Rankine diseñado para el SICTER.
6.1. Simulación del ciclo Rankine simple
Los datos que se tienen son los siguientes: La presión a la salida del reactor es de 7 MPa,
como vapor saturado. La presión a la salida de la turbina, que tiene una e�ciencia de
85%, es de 6.5 kPa. El �uido de trabajo sale del condensador como líquido saturado a una
presión de 6.5 kPa. Finalmente, el �uido de trabajo sale de la bomba, la cual tiene una
e�ciencia de 80%, como líquido comprimido a una presión de 7 MPa y a una temperatura
de 38 �C. El �ujo másico dentro del ciclo es de 253 kg/s.
Las �guras 6.2, 6.3 y 6.4 muestran la forma en que se introducen los datos dependiendo
de las condiciones dadas.
64
Capítulo 6. Aplicación del simulador del ciclo termodinámico del BWR
Figura 6.2: Introducción de datos en el esquema del SICTER para el ciclo Rankinesimple.
65
6.1. Simulación del ciclo Rankine simple
Figura 6.3: Introducción de datos para el ciclo Rankine simple en el SICTER.
Figura 6.4: Parámetros de entrada del ciclo Rankine simple para el SICTER.
66
Capítulo 6. Aplicación del simulador del ciclo termodinámico del BWR
Las �guras 6.5 y 6.6, muestran los datos de salida principales y el archivo de texto con los
datos completos de salida en cada punto analizado del ciclo, respectivamente:
Figura 6.5: Valores de salida del ciclo Rankine simple del SICTER.
Figura 6.6: Archivo de salida del ciclo Rankine simple del SICTER.
67
6.2. Simulación del ciclo Rankine regenerativo con calentador de agua de alimentacióncerrado
6.2. Simulación del ciclo Rankine regenerativo con ca-
lentador de agua de alimentación cerrado
Para la simulación del ciclo Rankine regenerativo, se sigue la misma metodología que para
el ciclo simple, con la diferencia que ahora a la válvula se le cambiará la posición de cerrada
a abierta, quedando habilitado el precalentador. Los datos que se tienen son los siguientes:
la presión a la salida del reactor es de 7 MPa, como vapor saturado. La presión a la salida
de la turbina de alta presión, que tiene una e�ciencia de 85%, es de 480 kPa. Parte del
�uido de trabajo continua su recorrido hasta el calentador de agua de alimentación de
tipo cerrado (los �uidos no se mezclan dentro del mismo), en donde cede energía a presión
constante de 480 kPa, posteriormente, el �uido se dirige a la segunda bomba, que tiene
una e�ciencia de 80%, la cual eleva su presión hasta 7 MPa. La parte complementaria del
�uido de trabajo sale de la turbina de baja presión a una presión de 6.5 kPa. Por otro
lado, el �uido de trabajo sale del condensador como líquido saturado a una presión de 6.5
kPa, para después dirigirse a la bomba uno, que tiene una e�ciencia de 80% igual que la
bomba dos. Una vez culminado este proceso el �uido de trabajo se dirige al calentador de
agua de alimentación, donde recibe la energía transferida de la extracción de la turbina
de alta presión. El �ujo másico total del ciclo es de 253 kg/s.
Como se mencionó al principio de este apartado, para activar este análisis dentro del
SICTER, se debe activar la opción de Abierta, la cual aparece abajo de la válvula del
esquema del ciclo Termodinámico, como se muestra en la �gura 6.7:
68
Capítulo 6. Aplicación del simulador del ciclo termodinámico del BWR
Figura 6.7: Activación del ciclo Rankine regenerativo en el SICTER.
Igual que para el ciclo simple la introducción de los datos se muestra en las �guras 6.8,
6.9 y 6.10:
69
6.2. Simulación del ciclo Rankine regenerativo con calentador de agua de alimentacióncerrado
Figura 6.8: Introducción de datos en el esquema del SICTER para el ciclo Rankineregenerativo.
70
Capítulo 6. Aplicación del simulador del ciclo termodinámico del BWR
Figura 6.9: Introducción de datos para el ciclo Rankine regenerativo en el SICTER.
Figura 6.10: Parámetros de entrada del ciclo Rankine regenerativo para el SICTER.
71
6.2. Simulación del ciclo Rankine regenerativo con calentador de agua de alimentacióncerrado
Los datos de salida, tanto en la interfaz del SICTER como en el archivo con los datos de
salida, se muestran en las �guras 6.11 y 6.12, respectivamente:
Figura 6.11: Valores de salida del ciclo Rankine regenerativo del SICTER.
Figura 6.12: Archivo de salida del ciclo Rankine regenerativo del SICTER.
72
Capítulo 6. Aplicación del simulador del ciclo termodinámico del BWR
Se puede observar que al utlizar un precalentador la e�ciencia del ciclo aumenta respecto
al ciclo simple en un 3.2%, de ahí la importancia de utilizar los precalentadores. Por otra
parte, los resultados de referencia que se tienen son: 31.528528% y 34.724222% para el
ciclo simple y regenerativo, respectivamente (ver Apéndice B). Al hacer la comparación
con los obtenidos con el SICTER, se tiene una diferencia de menos del 0.35%.
6.3. Aumento de la e�ciencia térmica
Como parte de un ejercicio adicional, se llevó a cabo un análisis, para diferentes condiciones
de presiones y temperaturas en un ciclo simple, considerando turbina y bomba isentrópicas,
variando solamente la presión, a la entrada a la turbina, así como a la salida de la turbina,
y con diferentes temperaturas máximas de entrada a la turbina, así mismo, se considera
que no hay pérdidas en las tuberías. Los resultados se muestran en la tabla 6.1.
Pent en MPa Psal en kPa Tmáx en �C �T %
2 10 400 32.326042 5 400 34.495424 10 400 35.344944 5 400 37.33462
2 10 600 35.640772 5 600 37.698694 10 600 38.406474 5 600 40.30919
Tabla 6.1: Aumento de la e�ciencia térmica.
Considerando los valores de referencia de Pent = 2 MPa, Psal = 10 kPa, y una Tm�ax = 400
�C, se puede observar lo siguiente:
Es más e�ciente aumentar la presión a la entrada que reducir el valor de la misma a
la salida, para los dos casos con diferentes temperaturas.
Cualquiera de los casos de aumento o disminución de presión con la temperatura
73
6.3. Aumento de la e�ciencia térmica
de referencia (siempre y cuando no sea la combinación de ambos), resultan en una
e�ciencia menor que el caso base pero con la segunda temperatura, que implica
un aumento del 50% de los grados Celsius de referencia (las presiones se aumen-
taron/disminuyeron al 100%).
74
Conclusiones y recomendaciones
Se desarrolló un simulador del ciclo Rankine para una central nuclear con un reactor
del tipo BWR (SICTER), el cual al ser una herramienta de cómputo independiente, no
requiere de librerías dinámicas para su funcionamiento, como otros programas, lo cual
reduce los tiempos de cálculo.
En México, la central nucleoeléctrica de Laguna Verde tiene este tipo de reactores, aunque
si se tratase de un reactor del tipo PWR, el SICTER podría simular el circuito secundario
del mismo.
En cuanto al desarrollo del programa SICTER es importante señalar que las correlaciones
que se utilizaron para el cálculo de las propiedades termodinámicas (entalpía y entropía)
fueron ampliamente veri�cadas, de tal manera que se tuvieran las mínimas diferencias
posibles con los valores tabulados en las tablas o�ciales de las propiedades termodinámicas.
De esta manera se pudo observar que las correlaciones que se tenían para la región de
vapor sobrecalentado mostraban resultados erróneos para valores cercanos a saturación,
así como para valores cercanos al punto crítico, por lo que se optó por utilizar las tablas
de vapor sobrecalentado o�ciales.
La siguiente tabla muestra una comparativa de los valores calculados por el SICTER con
los obtenidos en las tablas termodinámicas, en la que se aprecia el error que existe al
calcular las propiedades termodinámicas, considerando los valores de referencia de Pent =
2 MPa, Psal = 10 kPa, y una Tm�ax = 400 �C.
75
Entalpía Valores SICTER (kJ/kg) Valores de tablas (kJ/kg) Error %
h(2 MPa, 400 �C) 3248.4 3248.4 0hg(10 kPa, isentrópica) 2258.75698852 2258.685993 0.003
hf(10 kPa) 191.92223245727575 191.81 0.0585hf(10 kPa, isentrópica) 194.29380238950003 191.7828636 1.309
Comparación de las propiedades termodinámicas.
Así mismo, es necesario considerar la originalidad de la interfaz, ya que cada uno de los
componentes que conforman el ciclo (desde las tuberías hasta el reactor nuclear) se hicieron
a escala con programas de diseño asistido por computadora (CAD).
Más aún, el diseño sencillo y directo de la interfaz, dio como resultado un simulador fácil de
utilizar y que es capaz de resolver un ciclo termodinámico Rankine regenerativo para una
central térmica convencional, es decir, tiene la capacidad de simular vapor sobrecalentado
a la salida de la caldera (para el BWR es vapor saturado), lo que lo hace una herramienta
muy versátil para resolver incluso problemas que se encuentran en la literatura, o aquellos
ejercicios que simulan caídas de presión y descenso de temperatura en el túnel de vapor o
con turbinas y bombas que no son adiabáticas.
Para un trabajo futuro, se tiene pensado ampliar y mejorar el programa �SICTER�, siendo
algunas consideraciones las siguientes:
1. Programar las propiedades termodinámicas en base al modelo que proporciona The
International Association for the Properties of Water and Steam6, ya sea para uso
general o cientí�co (IAPWS-95), o para uso industrial (IAPWS-97).
2. Aumentar el número de calentadores de agua alimentación.
Finalmente, es necesario agregar que el SICTER es una herramienta académica que facilita
la enseñanza y el aprendizaje, al simular el ciclo Rankine en una central generadora, y
puede servir como apoyo al grupo de termohidráulica de la plataforma AZTLAN.
6Para más información, visitar http://www.iapws.org/
76
Bibliografía
[1] A. M. Gómez Torres, �Aztlan platform.� http://www.aztlanplatform.mx/acerca-
de/aztlan-platform-desarrollo-de-una-plataforma-mexicana-para-el-analisis-y-diseno-
de-reactores-nucleares/.
[2] M. del Carmen Maldonado Susano, �Primera ley de la termodinámica.�
[3] J. E. Tibaquirá, �Termodinámica.�
[4] Y. A. Çengel y Michael A. Boles, Termodinámica. McGraw-Hill, séptima ed., 2012.
[5] J. A. Rodriguez, �Introducción a la termodinámica con algunas aplicaciones de inge-
niería.�.
[6] R. E. Sonntag, C. Borgenakke, and G. J. Van Wylen, Fundamentals of Thermody-
namics. John Wiley & sons, sixth ed., 1983.
[7] S. F. Paredes, �Análisis termodinámico de los ciclos rankine.� Trabajo Final de Grado,
Abril 2015.
[8] �Principios de termodinámica y motores térmicos.� https://
tecnologiafuentenueva.wikispaces.com/file/view/Motorestermicos.pdf.
[9] �Centrales térmicas de gas ciclo brayton,� 2014.
[10] EcuRed, �Ciclo de rankine.� https://www.ecured.cu/Ciclo_de_Rankine.
[11] �Energía nuclear.� http://energia-nuclear.net/de�niciones/central-nuclear.html.
77
Bibliografía
[12] J. V. Xolocostli Munguía, �Clasi�cación de los reactores y terminología,� Octubre
2013.
[13] �Centrales eléctricas.� http://www.iae.org.ar/archivos/educ6.pdf.
[14] W. J. Garland, R. J. Wilson, J. Bartak, J. Cizek, M. Stasny, and I. Zentrich, �Ex-
tensions to the approximation functions for the fast calculation of saturated water
properties,� Nuclear Engineering and Design, 1992.
[15] W. J. Garlan and B. J. Hand, �Simple functions for the fast approximation of light
water thermodynamic properties,� Nuclear Engineering and Design, 1988.
[16] N. I. of Standards and Technology. https://www.nist.gov.
78
Apéndice A
Programación en Python y Qt Designer
del simulador
Lógica de funcionamiento de los botones
import os
import sys
from PyQt4 import QtCore , QtGui
from VS1 import Ui_VS1
from VS2 import Ui_VS2
from VS3SIU import Ui_Widget
from Ventana3 import Ventanaclase
from VS3SI import Ui_WidgetG
from Ventana3G import VentanaclaseG
vct = Ui_Widget
vctG = Ui_WidgetG
ventana1 = Ui_VS1
ventana2 = Ui_VS2
class ultimaventanaclassG(QtGui.QMainWindow , VentanaclaseG):
def __init__(self, parent=None):
super(ultimaventanaclassG , self).__init__(parent)
self.setupUi(self)
self.RBA.toggled.connect(self.rba_clicked)
self.RBC.toggled.connect(self.rbc_clicked)
self.CBP1.clicked.connect(self.p1op)
self.CBT1.clicked.connect(self.t1op)
self.CBX1.clicked.connect(self.x1op)
self.CBP2.clicked.connect(self.p2op)
self.CBT2.clicked.connect(self.t2op)
self.CBX2.clicked.connect(self.x2op)
79
self.CBV3.clicked.connect(self.cbv3_clicked)
self.CB1V3.clicked.connect(self.cb1v3_clicked)
self.CBP3.clicked.connect(self.p3op)
self.CBT3.clicked.connect(self.t3op)
self.CBV4.clicked.connect(self.cbv4_clicked)
self.CB1V4.clicked.connect(self.cb1v4_clicked)
self.CBP4.clicked.connect(self.p4op)
self.CBT4.clicked.connect(self.t4op)
self.CBP5.clicked.connect(self.p5op)
self.CBT5.clicked.connect(self.t5op)
self.CBX5.clicked.connect(self.x5op)
self.CBV6.clicked.connect(self.cbv6_clicked)
self.CB1V6.clicked.connect(self.cb1v6_clicked)
self.CBP6.clicked.connect(self.p6op)
self.CBT6.clicked.connect(self.t6op)
self.CBV7.clicked.connect(self.cbv7_clicked)
self.CB1V7.clicked.connect(self.cb1v7_clicked)
self.CBP7.clicked.connect(self.p7op)
self.CBT7.clicked.connect(self.t7op)
self.CBP8.clicked.connect(self.p8op)
self.CBT8.clicked.connect(self.t8op)
self.CBX8.clicked.connect(self.x8op)
self.CBV9.clicked.connect(self.cbv9_clicked)
self.CB1V9.clicked.connect(self.cb1v9_clicked)
self.CBP9.clicked.connect(self.p9op)
self.CBT9.clicked.connect(self.t9op)
self.CBV10.clicked.connect(self.cbv10_clicked)
self.CB1V10.clicked.connect(self.cb1v10_clicked)
self.CBP10.clicked.connect(self.p10op)
self.CBT10.clicked.connect(self.t10op)
self.BCalcular.clicked.connect(self.calculos)
class ultimaventanaclass(QtGui.QMainWindow , Ventanaclase):
def __init__(self, parent=None):
super(ultimaventanaclass , self).__init__(parent)
self.setupUi(self)
self.RBA.toggled.connect(self.rba_clicked)
self.RBC.toggled.connect(self.rbc_clicked)
self.CBP1.clicked.connect(self.p1op)
self.CBT1.clicked.connect(self.t1op)
self.CBX1.clicked.connect(self.x1op)
self.CBP2.clicked.connect(self.p2op)
self.CBT2.clicked.connect(self.t2op)
self.CBX2.clicked.connect(self.x2op)
self.CBV3.clicked.connect(self.cbv3_clicked)
self.CB1V3.clicked.connect(self.cb1v3_clicked)
self.CBP3.clicked.connect(self.p3op)
self.CBT3.clicked.connect(self.t3op)
self.CBV4.clicked.connect(self.cbv4_clicked)
self.CB1V4.clicked.connect(self.cb1v4_clicked)
self.CBP4.clicked.connect(self.p4op)
self.CBT4.clicked.connect(self.t4op)
self.CBP5.clicked.connect(self.p5op)
self.CBT5.clicked.connect(self.t5op)
80
Apéndice A. Programación en Python y Qt Designer del simulador
self.CBX5.clicked.connect(self.x5op)
self.CBV6.clicked.connect(self.cbv6_clicked)
self.CB1V6.clicked.connect(self.cb1v6_clicked)
self.CBP6.clicked.connect(self.p6op)
self.CBT6.clicked.connect(self.t6op)
self.CBV7.clicked.connect(self.cbv7_clicked)
self.CB1V7.clicked.connect(self.cb1v7_clicked)
self.CBP7.clicked.connect(self.p7op)
self.CBT7.clicked.connect(self.t7op)
self.CBP8.clicked.connect(self.p8op)
self.CBT8.clicked.connect(self.t8op)
self.CBX8.clicked.connect(self.x8op)
self.CBV9.clicked.connect(self.cbv9_clicked)
self.CB1V9.clicked.connect(self.cb1v9_clicked)
self.CBP9.clicked.connect(self.p9op)
self.CBT9.clicked.connect(self.t9op)
self.CBV10.clicked.connect(self.cbv10_clicked)
self.CB1V10.clicked.connect(self.cb1v10_clicked)
self.CBP10.clicked.connect(self.p10op)
self.CBT10.clicked.connect(self.t10op)
self.BCalcular.clicked.connect(self.calculos)
class ventanasecundariaclass(QtGui.QMainWindow , ventana2):
def __init__(self, parent=None):
super(ventanasecundariaclass , self).__init__(parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setupUi(self)
self.BSII.clicked.connect(self.bsii_clicked)
self.BSIU.clicked.connect(self.bsiu_clicked)
def bsii_clicked(self):
ventanater = ultimaventanaclassG(self)
ventanater.show()
def bsiu_clicked(self):
ventanater = ultimaventanaclass(self)
ventanater.show()
class ventanaprincipalclass(QtGui.QMainWindow , ventana1):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
self.BI.clicked.connect(self.bi_clicked)
self.BS.clicked.connect(self.bs_clicked)
def bi_clicked(self):
ventanasec = ventanasecundariaclass(self)
ventanasec.show()
def bs_clicked(self):
self.close ()
app = QtGui.QApplication(sys.argv)
MyWindow = ventanaprincipalclass(None)
MyWindow.show()
app.exec_ ()
81
Función programada para calcular las propiedades ter-
modinámicas de líquido comprimido
import math
def lcom(p,t):
#Ts
if p >= 0.002 and p < 0.01672:
a=270.1210
b=0.135019
c= -99.2
if p >= 0.01672 and p < 0.07250:
a=254.6831
b=0.156108
c= -78.2
if p >= 0.07250 and p <= 0.35900:
a=236.2315
b=0.1784767
c= -57.0
if p >0.35900 and p <= 1.67600:
a=207.9248
b=0.2092705
c= -28.0
if p > 1.67600 and p <= 8.511:
a=185.0779
b=0.2323217
c=-5.0
if p > 8.511 and p < 17.69:
a=195.1819
b=0.2241729
c= -16.0
if p >= 17.69 and p <= 21.5:
a=227.2963
b=0.2015810
c= -50.0
ts=a*p**b+c
if t >= 17.511 and t < 56.275:
a=99.2
b=270.1210
c=7.406365
if t >= 56.275 and t < 90.880:
a=78.2
b=254.6831
c=6.4058216
if t >= 90.880 and t < 139.781:
a=57.0
b=236.2315
c=5.6029720
if t >= 139.781 and t < 203.662:
a=28.0
b=207.9248
c=4.7785040
if t >= 203.662 and t <= 299.407:
82
Apéndice A. Programación en Python y Qt Designer del simulador
a=5.0
b=185.0779
c=4.3043760
if t > 299.407 and t < 355.636:
a=16.0
b=195.1819
c=4.4608430
if t >= 355.636 and t <= 373.000:
a=50.0
b=227.2963
c=4.9607850
ps = ((t+a)/b)**c
#Subcooled enthalpy , sublh
if ps >= 0.002 and ps < 0.0173:
a=1128.777
b=0.135196
c= -413.72
sublh= ((a*(ps**b))+c)+((1.4 -(169/(369 -t)))*(p-ps))
if ps >= 0.0173 and ps < 0.1028:
a=1050.7085
b=0.161797
c= -306.5
sublh= ((a*(ps**b))+c)+((1.4 -(169/(369 -t)))*(p-ps))
if ps >= 0.1028 and ps < 0.9420:
a=912.1779
b=0.2061637
c=-150
sublh= ((a*(ps**b))+c)+((1.4 -(169/(369 -t)))*(p-ps))
if ps >= 0.942 and ps < 4.02:
a=638.0621
b=0.2963192
c=125
sublh= ((a*(ps**b))+c)+((1.4 -(169/(369 -t)))*(p-ps))
if ps >= 4.02 and ps < 9.964:
a=373.7665
b=0.4235532
c=415
sublh= ((a*(ps**b))+c)+((1.4 -(169/(369 -t)))*(p-ps))
if ps >= 9.964 and ps < 16.673:
a=75.38673
b=0.8282384
c=900
sublh= ((a*(ps**b))+c)+((1.4 -(169/(369 -t)))*(p-ps))
if ps >= 16.673 and ps < 20.396:
a=0.1150827
b=2.711412
c=1440
83
sublh= ((a*(ps**b))+c)+((1.4 -(169/(369 -t)))*(p-ps))
if ps >= 20.396 and ps <= 21.5:
a=9.1417257e-14
b=11.47287
c=1752
sublh= ((a*(ps**b))+c)+((1.4 -(169/(369 -t)))*(p-ps))
#Subcooled entropy , subls
if ps >= 0.002 and ps < 0.0812:
a=4.5397665
b=0.0
c=0.0829772
d= -2.449
subls= ((a*(ps+b)**c)+d)+((0.0004 -(0.325/(370 -t))*(p-ps)))
if ps >= 0.0812 and ps < 1.6660:
a=3.340244
b=0.0
c=0.125474
d=-1.2
subls= ((a*(ps+b)**c)+d)+((0.0004 -(0.325/(370 -t))*(p-ps)))
if ps >= 1.6660 and ps < 8.8250:
a=1.748203
b=0.0
c=0.2275611
d=0.4
subls= ((a*(ps+b)**c)+d)+((0.0004 -(0.325/(370 -t))*(p-ps)))
if ps >= 8.8250 and ps < 16.660:
a=0.2549238
b=0.0
c=0.6381866
d=2.25
subls= ((a*(ps+b)**c)+d)+((0.0004 -(0.325/(370 -t))*(p-ps)))
if ps >= 16.660 and ps <= 21.5:
a=4.3632383e-5
b= -0.04
c=3.153273
d=3.5
subls= ((a*(ps+b)**c)+d)+((0.0004 -(0.325/(370 -t))*(p-ps)))
return sublh , subls , ts , ps
class Bomsal(object):
h_slc = None
s_slc = None
t_slc = None
p_slc = None
def __init__(self, temp , pres):
84
Apéndice A. Programación en Python y Qt Designer del simulador
self.temp = temp
self.pres = pres
self.calc_prop ()
def calc_prop(self):
self.h_slc , self.s_slc , self.t_slc , self.p_slc = \
lcom(self.temp , self.pres)
Ejemplo de acoplamiento de la interfaz grá�ca con las
funciones para calcular las propiedades termodinámicas
import os
import sys
from PyQt4 import QtCore ,QtGui
from VS3SIU import Ui_Widget
import ClaseVapSob
import ClaseVapSatP
import ClaseVapSatT
import ClaseLiqCom
import ClaseLiqSatP
import ClaseLiqSatT
import ClaseLiqComPs
import ClaseLiqComTs
from PyQt4 import QtCore , QtGui
from EPfr import Ui_Dialog
from ETfr import Ui_DialogT
from EVP import Ui_DialogEVP
from ECR import Ui_DialogECVR
EvP = Ui_DialogEVP
EP = Ui_Dialog
ET = Ui_DialogT
EcR = Ui_DialogECVR
vct = Ui_Widget
class ErrorECRclass(QtGui.QMainWindow , EcR):
def __init__(self, parent=None):
super(ErrorECRclass , self).__init__(parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setupUi(self)
class ErrorVPclass(QtGui.QMainWindow , EvP):
def __init__(self, parent=None):
super(ErrorVPclass , self).__init__(parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setupUi(self)
class ErrorPclass(QtGui.QMainWindow , EP):
def __init__(self, parent=None):
85
super(ErrorPclass , self).__init__(parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setupUi(self)
class ErrorTclass(QtGui.QMainWindow , ET):
def __init__(self, parent=None):
super(ErrorTclass , self).__init__(parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setupUi(self)
class Ventanaclase(QtGui.QWidget , vct):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setupUi(self)
def rba_clicked(self, enabled):
if enabled:
self.Fluxmas3.setEnabled(True)
self.EfiBom2.setEnabled(True)
self.P3.setEnabled(True)
self.T3.setEnabled(True)
self.GB3.setEnabled(True)
self.GB7.setEnabled(True)
self.CBP8.setEnabled(True)
self.CBT8.setEnabled(True)
self.CBX8.setEnabled(True)
self.GB9.setEnabled(True)
def rbc_clicked(self, enabled):
if enabled:
self.Fluxmas3.setDisabled(True)
self.EfiBom2.setDisabled(True)
self.P3.setDisabled(True)
self.T3.setDisabled(True)
self.X3.setDisabled(True)
self.P7.setDisabled(True)
self.T7.setDisabled(True)
self.P8.setDisabled(True)
self.T8.setDisabled(True)
self.X8.setDisabled(True)
self.P9.setDisabled(True)
self.T9.setDisabled(True)
self.GB3.setDisabled(True)
self.GB7.setDisabled(True)
self.GB9.setDisabled(True)
self.CBP3.setDisabled(True)
self.CBT3.setDisabled(True)
self.CBP7.setDisabled(True)
self.CBT7.setDisabled(True)
self.CBP8.setDisabled(True)
self.CBT8.setDisabled(True)
self.CBX8.setDisabled(True)
self.CBP9.setDisabled(True)
self.CBT9.setDisabled(True)
self.CBP3.setChecked(False)
86
Apéndice A. Programación en Python y Qt Designer del simulador
self.CBT3.setChecked(False)
self.CBV3.setChecked(False)
self.CB1V3.setChecked(False)
self.CBP7.setChecked(False)
self.CBT7.setChecked(False)
self.CBV7.setChecked(False)
self.CB1V7.setChecked(False)
self.CBP8.setChecked(False)
self.CBT8.setChecked(False)
self.CBX8.setChecked(False)
self.CBP9.setChecked(False)
self.CBT9.setChecked(False)
self.CBV9.setChecked(False)
self.CB1V9.setChecked(False)
self.EfiBom2.clear ()
self.P3.clear ()
self.T3.clear ()
self.X3.clear ()
self.P7.clear ()
self.T7.clear ()
self.P8.clear ()
self.T8.clear ()
self.P9.clear ()
self.T9.clear ()
def p1op(self, clicked):
if clicked:
self.P1.setEnabled(True)
self.CBX1.setDisabled(True)
else:
self.P1.setEnabled(False)
self.CBX1.setDisabled(False)
self.P1.clear ()
def t1op(self, clicked):
if clicked:
self.T1.setEnabled(True)
self.CBP1.setDisabled(True)
else:
self.T1.setEnabled(False)
self.CBP1.setDisabled(False)
self.T1.clear ()
def x1op(self, clicked):
if clicked:
self.CBT1.setDisabled(True)
else:
self.CBT1.setDisabled(False)
def p2op(self, clicked):
if clicked:
self.P2.setEnabled(True)
self.CBX2.setDisabled(True)
else:
87
self.P2.setEnabled(False)
self.CBX2.setDisabled(False)
self.P2.clear ()
def t2op(self, clicked):
if clicked:
self.T2.setEnabled(True)
self.CBP2.setDisabled(True)
else:
self.T2.setEnabled(False)
self.CBP2.setDisabled(False)
self.T2.clear ()
def x2op(self, clicked):
if clicked:
self.CBT2.setDisabled(True)
else:
self.CBT2.setDisabled(False)
def cb1v3_clicked(self, clicked):
if clicked:
self.CBP3.setEnabled(True)
self.CBT3.setEnabled(True)
self.CBV3.setDisabled(True)
self.P3.setDisabled(True)
self.T3.setDisabled(True)
self.P3.clear ()
self.T3.clear ()
else:
self.CBP3.setEnabled(False)
self.CBT3.setEnabled(False)
self.CBV3.setDisabled(False)
self.P3.setDisabled(False)
self.T3.setDisabled(False)
self.CBP3.setChecked(False)
self.CBT3.setChecked(False)
self.P3.clear ()
self.T3.clear ()
def cbv3_clicked(self, clicked):
if clicked:
self.CBP3.setEnabled(True)
self.CBT3.setEnabled(True)
self.P3.setDisabled(True)
self.T3.setDisabled(True)
self.X3.setEnabled(True)
self.CB1V3.setDisabled(True)
self.P3.clear ()
self.T3.clear ()
self.X3.clear ()
else:
self.CBP3.setEnabled(False)
self.CBT3.setEnabled(False)
self.CB1V3.setDisabled(False)
88
Apéndice A. Programación en Python y Qt Designer del simulador
self.CBP3.setChecked(False)
self.CBT3.setChecked(False)
self.P3.setDisabled(False)
self.T3.setDisabled(False)
self.X3.setEnabled(False)
self.P3.clear ()
self.T3.clear ()
self.X3.clear ()
def p3op(self, clicked):
if clicked:
self.P3.setEnabled(True)
self.CBT3.setDisabled(True)
else:
self.P3.setEnabled(False)
self.CBT3.setDisabled(False)
self.P3.clear ()
def t3op(self,clicked):
if clicked:
self.T3.setEnabled(True)
self.CBP3.setDisabled(True)
else:
self.T3.setEnabled(False)
self.CBP3.setDisabled(False)
self.T3.clear ()
def cb1v4_clicked(self, clicked):
if clicked:
self.CBP4.setEnabled(True)
self.CBT4.setEnabled(True)
self.CBV4.setDisabled(True)
self.P4.setDisabled(True)
self.T4.setDisabled(True)
self.P4.clear ()
self.T4.clear ()
else:
self.CBP4.setEnabled(False)
self.CBT4.setEnabled(False)
self.CBV4.setDisabled(False)
self.P4.setDisabled(False)
self.T4.setDisabled(False)
self.CBP4.setChecked(False)
self.CBT4.setChecked(False)
self.P4.clear ()
self.T4.clear ()
def cbv4_clicked(self, clicked):
if clicked:
self.CBP4.setEnabled(True)
self.CBT4.setEnabled(True)
self.P4.setDisabled(True)
self.T4.setDisabled(True)
self.X4.setEnabled(True)
89
self.CB1V4.setDisabled(True)
self.P4.clear ()
self.T4.clear ()
self.X4.clear ()
else:
self.CBP4.setEnabled(False)
self.CBT4.setEnabled(False)
self.CB1V4.setDisabled(False)
self.P4.setDisabled(False)
self.T4.setDisabled(False)
self.X4.setEnabled(False)
self.CBP4.setChecked(False)
self.CBT4.setChecked(False)
self.P4.clear ()
self.T4.clear ()
self.X4.clear ()
def p4op(self, clicked):
if clicked:
self.P4.setEnabled(True)
self.CBT4.setDisabled(True)
else:
self.P4.setEnabled(False)
self.CBT4.setDisabled(False)
self.P4.clear ()
def t4op(self,clicked):
if clicked:
self.T4.setEnabled(True)
self.CBP4.setDisabled(True)
else:
self.T4.setEnabled(False)
self.CBP4.setDisabled(False)
self.T4.clear ()
def p5op(self, clicked):
if clicked:
self.P5.setEnabled(True)
self.CBX5.setDisabled(True)
else:
self.P5.setEnabled(False)
self.CBX5.setDisabled(False)
self.P5.clear ()
def t5op(self, clicked):
if clicked:
self.T5.setEnabled(True)
self.CBP5.setDisabled(True)
else:
self.T5.setEnabled(False)
self.CBP5.setDisabled(False)
self.T5.clear ()
def x5op(self, clicked):
90
Apéndice A. Programación en Python y Qt Designer del simulador
if clicked:
self.CBT5.setDisabled(True)
else:
self.CBT5.setDisabled(False)
def cb1v6_clicked(self, clicked):
if clicked:
self.CBP6.setEnabled(True)
self.CBT6.setEnabled(True)
self.CBV6.setDisabled(True)
else:
self.CBP6.setEnabled(False)
self.CBT6.setEnabled(False)
self.CBV6.setDisabled(False)
self.CBP6.setChecked(False)
self.CBT6.setChecked(False)
self.P6.setEnabled(False)
self.T6.setEnabled(False)
self.P6.clear ()
self.T6.clear ()
def cbv6_clicked(self, clicked):
if clicked:
self.CBP6.setDisabled(True)
self.CBT6.setDisabled(True)
self.P6.setEnabled(True)
self.T6.setEnabled(True)
self.CB1V6.setDisabled(True)
else:
self.CBP6.setEnabled(False)
self.CBT6.setEnabled(False)
self.CB1V6.setDisabled(False)
self.P6.setEnabled(False)
self.T6.setEnabled(False)
self.P6.clear ()
self.T6.clear ()
def p6op(self, clicked):
if clicked:
self.P6.setEnabled(True)
self.CBT6.setDisabled(True)
else:
self.P6.setEnabled(False)
self.CBT6.setDisabled(False)
self.P6.clear ()
def t6op(self,clicked):
if clicked:
self.T6.setEnabled(True)
self.CBP6.setDisabled(True)
else:
self.T6.setEnabled(False)
self.CBP6.setDisabled(False)
self.T6.clear ()
91
def cb1v7_clicked(self, clicked):
if clicked:
self.CBP7.setEnabled(True)
self.CBT7.setEnabled(True)
self.CBV7.setDisabled(True)
else:
self.CBP7.setEnabled(False)
self.CBT7.setEnabled(False)
self.CBV7.setDisabled(False)
self.CBP7.setChecked(False)
self.CBT7.setChecked(False)
self.P7.setEnabled(False)
self.T7.setEnabled(False)
self.P7.clear ()
self.T7.clear ()
def cbv7_clicked(self, clicked):
if clicked:
self.CBP7.setDisabled(True)
self.CBT7.setDisabled(True)
self.P7.setEnabled(True)
self.T7.setEnabled(True)
self.CB1V7.setDisabled(True)
else:
self.CBP7.setEnabled(False)
self.CBT7.setEnabled(False)
self.CB1V7.setDisabled(False)
self.P7.setEnabled(False)
self.T7.setEnabled(False)
self.P7.clear ()
self.T7.clear ()
def p7op(self, clicked):
if clicked:
self.P7.setEnabled(True)
self.CBT7.setDisabled(True)
else:
self.P7.setEnabled(False)
self.CBT7.setDisabled(False)
self.P7.clear ()
def t7op(self,clicked):
if clicked:
self.T7.setEnabled(True)
self.CBP7.setDisabled(True)
else:
self.T7.setEnabled(False)
self.CBP7.setDisabled(False)
self.T7.clear ()
def p8op(self, clicked):
if clicked:
self.P8.setEnabled(True)
92
Apéndice A. Programación en Python y Qt Designer del simulador
self.CBX8.setDisabled(True)
else:
self.P8.setEnabled(False)
self.CBX8.setDisabled(False)
self.P8.clear ()
def t8op(self, clicked):
if clicked:
self.T8.setEnabled(True)
self.CBP8.setDisabled(True)
else:
self.T8.setEnabled(False)
self.CBP8.setDisabled(False)
self.T8.clear ()
def x8op(self, clicked):
if clicked:
self.CBT8.setDisabled(True)
else:
self.CBT8.setDisabled(False)
def cb1v9_clicked(self, clicked):
if clicked:
self.CBP9.setEnabled(True)
self.CBT9.setEnabled(True)
self.CBV9.setDisabled(True)
else:
self.CBP9.setEnabled(False)
self.CBT9.setEnabled(False)
self.CBV9.setDisabled(False)
self.CBP9.setChecked(False)
self.CBT9.setChecked(False)
self.P9.setEnabled(False)
self.T9.setEnabled(False)
self.P9.clear ()
self.T9.clear ()
def cbv9_clicked(self, clicked):
if clicked:
self.CBP9.setDisabled(True)
self.CBT9.setDisabled(True)
self.P9.setEnabled(True)
self.T9.setEnabled(True)
self.CB1V9.setDisabled(True)
else:
self.CBP9.setEnabled(False)
self.CBT9.setEnabled(False)
self.CB1V9.setDisabled(False)
self.P9.setEnabled(False)
self.T9.setEnabled(False)
self.P9.clear ()
self.T9.clear ()
def p9op(self, clicked):
93
if clicked:
self.P9.setEnabled(True)
self.CBT9.setDisabled(True)
else:
self.P9.setEnabled(False)
self.CBT9.setDisabled(False)
self.P9.clear ()
def t9op(self,clicked):
if clicked:
self.T9.setEnabled(True)
self.CBP9.setDisabled(True)
else:
self.T9.setEnabled(False)
self.CBP9.setDisabled(False)
self.T9.clear ()
def cb1v10_clicked(self, clicked):
if clicked:
self.CBP10.setEnabled(True)
self.CBT10.setEnabled(True)
self.CBV10.setDisabled(True)
else:
self.CBP10.setEnabled(False)
self.CBT10.setEnabled(False)
self.CBV10.setDisabled(False)
self.CBP10.setChecked(False)
self.CBT10.setChecked(False)
self.P10.setEnabled(False)
self.T10.setEnabled(False)
self.P10.clear ()
self.T10.clear ()
def cbv10_clicked(self, clicked):
if clicked:
self.CBP10.setDisabled(True)
self.CBT10.setDisabled(True)
self.P10.setEnabled(True)
self.T10.setEnabled(True)
self.CB1V10.setDisabled(True)
else:
self.CBP10.setEnabled(False)
self.CBT10.setEnabled(False)
self.CB1V10.setDisabled(False)
self.P10.setEnabled(False)
self.T10.setEnabled(False)
self.P10.clear ()
self.T10.clear ()
def p10op(self, clicked):
if clicked:
self.P10.setEnabled(True)
self.CBT10.setDisabled(True)
else:
94
Apéndice A. Programación en Python y Qt Designer del simulador
self.P10.setEnabled(False)
self.CBT10.setDisabled(False)
self.P10.clear ()
def t10op(self,clicked):
if clicked:
self.T10.setEnabled(True)
self.CBP10.setDisabled(True)
else:
self.T10.setEnabled(False)
self.CBP10.setDisabled(False)
self.T10.clear ()
def calculos(self):
if self.P1.isEnabled () and self.T1.isEnabled ():
try:
Pr1 = float(self.P1.text())
except ValueError:
self.P1.clear ()
return
try:
Tp1 = float(self.T1.text())
except ValueError:
self.T1.clear ()
return
if 0 <= Pr1 < 0.002 or Pr1 > 21.5:
ventanaErrorP = ErrorPclass(self)
ventanaErrorP.show()
self.P1.clear ()
return
if Pr1 < 0.0 or Tp1 < 0.0:
ventanaErrorVP = ErrorVPclass(self)
ventanaErrorVP.show()
self.P1.clear ()
self.T1.clear ()
return
else:
prop1ts = ClaseVapSob.RxsalTs(Pr1 ,Tp1)
if Tp1 <= prop1ts.t_s or Tp1 > 1300:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T1.clear ()
return
else:
prop1h = ClaseVapSob.Rxsalh(Pr1 , Tp1)
prop1s = ClaseVapSob.Rxsals(Pr1 , Tp1)
h1 = prop1h.h_s
s1 = prop1s.s_s
if self.P1.isEnabled () and self.CBX1.isChecked ():
try:
95
Pr1 = float(self.P1.text())
except ValueError:
self.P1.clear ()
return
if 0 <= Pr1 < 0.002 or Pr1 > 21.5 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P1.clear ()
return
if Pr1 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P1.clear ()
return
else:
prop1P = ClaseVapSatP.RxsalVSP(Pr1)
h1 = prop1P.h_sP
s1 = prop1P.s_sP
if self.T1.isEnabled () and self.CBX1.isChecked ():
try:
Tp1 = float(self.T1.text())
except ValueError:
self.T1.clear ()
return
if 0 <= Tp1 < 17.511 or Tp1 > 371.8:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T1.clear ()
return
if Tp1 < 0.0:
ventanaErrorVPT = ErrorVPclass(self)
ventanaErrorVPT.show()
self.T1.clear ()
return
else:
prop1T = ClaseVapSatT.RxsalVST(Tp1)
h1 = prop1T.h_sT
s1 = prop1T.s_sT
if self.P2.isEnabled () and self.T2.isEnabled ():
try:
Pr2 = float(self.P2.text())
except ValueError:
self.P2.clear ()
return
try:
Tp2 = float(self.T2.text())
except ValueError:
self.T2.clear ()
return
96
Apéndice A. Programación en Python y Qt Designer del simulador
if 0 <= Pr2 < 0.002 or Pr2 > 21.5:
ventanaErrorP = ErrorPclass(self)
ventanaErrorP.show()
self.P2.clear ()
return
if Pr2 < 0.0 or Tp2 < 0.0:
ventanaErrorVP = ErrorVPclass(self)
ventanaErrorVP.show()
self.P2.clear ()
self.T2.clear ()
return
else:
prop2ts = ClaseVapSob.RxsalTs(Pr2 ,Tp2)
if Tp2 <= prop2ts.t_s or Tp2 > 1300:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T2.clear ()
return
else:
prop2h = ClaseVapSob.Rxsalh(Pr2 , Tp2)
prop2s = ClaseVapSob.Rxsals(Pr2 , Tp2)
h2 = prop2h.h_s
s2 = prop2s.s_s
if self.P2.isEnabled () and self.CBX2.isChecked ():
try:
Pr2 = float(self.P2.text())
except ValueError:
self.P2.clear ()
return
if 0 <= Pr2 < 0.002 or Pr2 > 21.5 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P2.clear ()
return
if Pr2 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P2.clear ()
return
else:
prop2P = ClaseVapSatP.RxsalVSP(Pr2)
h2 = prop2P.h_sP
s2 = prop2P.s_sP
if self.T2.isEnabled () and self.CBX2.isChecked ():
try:
Tp2 = float(self.T2.text())
except ValueError:
self.T2.clear ()
return
97
if 0 <= Tp2 < 17.511 or Tp2 > 371.8:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T2.clear ()
return
if Tp2 < 0.0:
ventanaErrorVPT = ErrorVPclass(self)
ventanaErrorVPT.show()
self.T2.clear ()
return
else:
prop2T = ClaseVapSatT.RxsalVST(Tp2)
h2 = prop2T.h_sT
s2 = prop2T.s_sT
if self.P3.isEnabled () and self.CB1V3.isChecked ():
try:
Pr3 = float(self.P3.text())
except ValueError:
self.P3.clear ()
return
if 0 <= Pr3 < 0.002 or Pr3 > 21.5 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P3.clear ()
return
if Pr3 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P3.clear ()
return
else:
prop3gP = ClaseVapSatP.RxsalVSP(Pr3)
prop3fP = ClaseLiqSatP.BombsalLSP(Pr3)
hg3 = prop3gP.h_sP
sg3 = prop3gP.s_sP
hf3 = prop3fP.h_slP
sf3 = prop3fP.s_slP
if self.T3.isEnabled () and self.CB1V3.isChecked ():
try:
Tp3 = float(self.T3.text())
except ValueError:
self.T3.clear ()
return
if 0 <= Tp3 < 17.511 or Tp3 > 371.8 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.T3.clear ()
return
if Tp3 < 0.0:
98
Apéndice A. Programación en Python y Qt Designer del simulador
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.T3.clear ()
return
else:
prop3gT = ClaseVapSatT.RxsalVST(Tp3)
prop3fT = ClaseLiqSatT.BombsalLST(Tp3)
hg3 = prop3gT.h_sT
sg3 = prop3gT.s_sT
hf3 = prop3fT.h_slT
sf3 = prop3fT.s_slT
if self.P3.isEnabled () and self.CBV3.isChecked ():
try:
Pr3 = float(self.P3.text())
except ValueError:
self.P3.clear ()
return
if 0 <= Pr3 < 0.002 or Pr3 > 21.5:
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P3.clear ()
return
if Pr3 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P3.clear ()
return
else:
prop3gP = ClaseVapSatP.RxsalVSP(Pr3)
prop3fP = ClaseLiqSatP.BombsalLSP(Pr3)
hg3 = prop3gP.h_sP
sg3 = prop3gP.s_sP
hf3 = prop3fP.h_slP
sf3 = prop3fP.s_slP
if self.T3.isEnabled () and self.CBV3.isChecked ():
try:
Tp3 = float(self.T3.text())
except ValueError:
self.T3.clear ()
return
if 0 <= Tp3 < 17.511 or Tp3 > 371.8 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.T3.clear ()
return
if Tp3 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.T3.clear ()
return
99
else:
prop3gT = ClaseVapSatT.RxsalVST(Tp3)
prop3fT = ClaseLiqSatT.BombsalLST(Tp3)
hg3 = prop3gT.h_sT
sg3 = prop3gT.s_sT
hf3 = prop3fT.h_slT
sf3 = prop3fT.s_slT
if self.P4.isEnabled () and self.CB1V4.isChecked ():
try:
Pr4 = float(self.P4.text())
except ValueError:
self.P4.clear ()
return
if 0 <= Pr4 < 0.002 or Pr4 > 21.5 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P4.clear ()
return
if Pr4 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P4.clear ()
return
else:
prop4gP = ClaseVapSatP.RxsalVSP(Pr4)
prop4fP = ClaseLiqSatP.BombsalLSP(Pr4)
hg4 = prop4gP.h_sP
sg4 = prop4gP.s_sP
hf4 = prop4fP.h_slP
sf4 = prop4fP.s_slP
if self.T4.isEnabled () and self.CB1V4.isChecked ():
try:
Tp4 = float(self.T4.text())
except ValueError:
self.T4.clear ()
return
if 0 <= Tp4 < 17.511 or Tp4 > 371.8 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.T4.clear ()
return
if Tp4 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.T4.clear ()
return
else:
prop4gT = ClaseVapSatT.RxsalVST(Tp4)
prop4fT = ClaseLiqSatT.BombsalLST(Tp4)
hg4 = prop4gT.h_sT
100
Apéndice A. Programación en Python y Qt Designer del simulador
sg4 = prop4gT.s_sT
hf4 = prop4fT.h_slT
sf4 = prop4fT.s_slT
if self.P4.isEnabled () and self.CBV4.isChecked ():
try:
Pr4 = float(self.P4.text())
except ValueError:
self.P4.clear ()
return
if 0 <= Pr4 < 0.002 or Pr4 > 21.5:
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P4.clear ()
return
if Pr4 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P4.clear ()
return
else:
prop4gP = ClaseVapSatP.RxsalVSP(Pr4)
prop4fP = ClaseLiqSatP.BombsalLSP(Pr4)
hg4 = prop4gP.h_sP
sg4 = prop4gP.s_sP
hf4 = prop4fP.h_slP
sf4 = prop4fP.s_slP
if self.T4.isEnabled () and self.CBV4.isChecked ():
try:
Tp4 = float(self.T4.text())
except ValueError:
self.T4.clear ()
return
if 0 <= Tp4 < 17.511 or Tp4 > 371.8 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.T4.clear ()
return
if Tp4 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.T4.clear ()
return
else:
prop4gT = ClaseVapSatT.RxsalVST(Tp4)
prop4fT = ClaseLiqSatT.BombsalLST(Tp4)
hg4 = prop4gT.h_sT
sg4 = prop4gT.s_sT
hf4 = prop4fT.h_slT
sf4 = prop4fT.s_slT
101
if self.P5.isEnabled () and self.T5.isEnabled ():
try:
Pr5 = float(self.P5.text())
except ValueError:
self.P5.clear ()
return
try:
Tp5 = float(self.T5.text())
except ValueError:
self.T5.clear ()
return
if Pr5 < 0.0 or Tp5 < 0.0:
ventanaErrorVP = ErrorVPclass(self)
ventanaErrorVP.show()
self.P5.clear ()
self.T5.clear ()
return
if 0 <= Pr5 < 0.002 or Pr5 > 21.5:
ventanaErrorP = ErrorPclass(self)
ventanaErrorP.show()
self.P5.clear ()
return
if Tp5 <= 17.511 or Tp5 > 368.9:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T5.clear ()
return
else:
prop5 = ClaseLiqCom.Bomsal(Pr5 ,Tp5)
if Tp5 >= prop5.t_slc:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T5.clear ()
return
else:
prop5 = ClaseLiqCom.Bomsal(Pr5 , Tp5)
h5 = prop5.h_slc
s5 = prop5.s_slc
ps5 = prop5.p_slc
if self.P5.isEnabled () and self.CBX5.isChecked ():
try:
Pr5 = float(self.P5.text())
except ValueError:
self.P5.clear ()
return
if 0 <= Pr5 < 0.002 or Pr5 > 21.5 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P5.clear ()
102
Apéndice A. Programación en Python y Qt Designer del simulador
return
if Pr5 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P5.clear ()
return
else:
prop5P = ClaseLiqSatP.BombsalLSP(Pr5)
h5 = prop5P.h_slP
s5 = prop5P.s_slP
ps5 = Pr5
if self.T5.isEnabled () and self.CBX5.isChecked ():
try:
Tp5 = float(self.T5.text())
except ValueError:
self.T5.clear ()
return
if 0 <= Tp5 <= 17.511 or Tp5 > 371.8:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T5.clear ()
return
if Tp5 < 0.0:
ventanaErrorVPT = ErrorVPclass(self)
ventanaErrorVPT.show()
self.T5.clear ()
return
else:
prop5T = ClaseLiqSatT.BombsalLST(Tp5)
h5 = prop5T.h_slT
s5 = prop5T.s_slT
ps5 = prop5T.ps_slT
if self.P6.isEnabled () and self.T6.isEnabled ():
try:
Pr6 = float(self.P6.text())
except ValueError:
self.P6.clear ()
return
try:
Tp6 = float(self.T6.text())
except ValueError:
self.T6.clear ()
return
if Pr6 < 0.0 or Tp6 < 0.0:
ventanaErrorVP = ErrorVPclass(self)
ventanaErrorVP.show()
self.P6.clear ()
self.T6.clear ()
103
return
if 0 <= Pr6 < 0.002 or Pr6 > 21.5:
ventanaErrorP = ErrorPclass(self)
ventanaErrorP.show()
self.P6.clear ()
return
if Tp6 <= 17.511 or Tp6 > 368.9:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T6.clear ()
return
else:
prop6 = ClaseLiqCom.Bomsal(Pr6 ,Tp6)
if Tp6 >= prop6.t_slc:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T6.clear ()
return
else:
prop6 = ClaseLiqCom.Bomsal(Pr6 , Tp6)
h6r = prop6.h_slc
s6r = prop6.s_slc
if self.P6.isEnabled () and self.CB1V6.isChecked ():
try:
Pr6 = float(self.P6.text())
except ValueError:
self.P6.clear ()
return
if 0 <= Pr6 < 0.002 or Pr6 > 21.5 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P6.clear ()
return
if Pr6 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P6.clear ()
return
else:
prop6P = ClaseLiqComPs.BomsalPs(Pr6 ,ps5 ,s5)
h6 = prop6P.h_slcPs
if self.T6.isEnabled () and self.CB1V6.isChecked ():
try:
Tp6 = float(self.T6.text())
except ValueError:
self.T6.clear ()
return
104
Apéndice A. Programación en Python y Qt Designer del simulador
if 0 <= Tp6 <= 17.511 or Tp6 > 371.8:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T6.clear ()
return
if Tp6 < 0.0:
ventanaErrorVPT = ErrorVPclass(self)
ventanaErrorVPT.show()
self.T6.clear ()
return
else:
prop6T = ClaseLiqComTs.BomsalTs(Tp6 , s5)
h6 = prop6T.h_slcTs
if self.P7.isEnabled () and self.T7.isEnabled ():
try:
Pr7 = float(self.P7.text())
except ValueError:
self.P7.clear ()
return
try:
Tp7 = float(self.T7.text())
except ValueError:
self.T7.clear ()
return
if Pr7 < 0.0 or Tp7 < 0.0:
ventanaErrorVP = ErrorVPclass(self)
ventanaErrorVP.show()
self.P7.clear ()
self.T7.clear ()
return
if 0 <= Pr7 < 0.002 or Pr7 > 21.5:
ventanaErrorP = ErrorPclass(self)
ventanaErrorP.show()
self.P7.clear ()
return
if Tp7 <= 17.511 or Tp7 > 368.9:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T7.clear ()
return
if self.P7.isEnabled () and self.CB1V7.isChecked ():
try:
Pr7 = float(self.P7.text())
except ValueError:
self.P7.clear ()
return
if 0 <= Pr7 < 0.002 or Pr7 > 21.5 :
105
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P7.clear ()
return
if Pr7 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P7.clear ()
return
if self.T7.isEnabled () and self.CB1V7.isChecked ():
try:
Tp7 = float(self.T7.text())
except ValueError:
self.T7.clear ()
return
if 0 <= Tp7 <= 17.511 or Tp7 > 371.8:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T7.clear ()
return
if Tp7 < 0.0:
ventanaErrorVPT = ErrorVPclass(self)
ventanaErrorVPT.show()
self.T7.clear ()
return
if self.P8.isEnabled () and self.T8.isEnabled ():
try:
Pr8 = float(self.P8.text())
except ValueError:
self.P8.clear ()
return
try:
Tp8 = float(self.T8.text())
except ValueError:
self.T8.clear ()
return
if Pr8 < 0.0 or Tp8 < 0.0:
ventanaErrorVP = ErrorVPclass(self)
ventanaErrorVP.show()
self.P8.clear ()
self.T8.clear ()
return
if 0 <= Pr8 < 0.002 or Pr8 > 21.5:
ventanaErrorP = ErrorPclass(self)
ventanaErrorP.show()
self.P8.clear ()
return
106
Apéndice A. Programación en Python y Qt Designer del simulador
if Tp8 <= 17.511 or Tp8 > 368.9:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T8.clear ()
return
else:
prop8 = ClaseLiqCom.Bomsal(Pr8 ,Tp8)
if Tp8 >= prop8.t_slc:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T8.clear ()
return
else:
prop8 = ClaseLiqCom.Bomsal(Pr8 , Tp8)
h8 = prop8.h_slc
s8 = prop8.s_slc
ps8 = prop8.p_slc
if self.P8.isEnabled () and self.CBX8.isChecked ():
try:
Pr8 = float(self.P8.text())
except ValueError:
self.P8.clear ()
return
if 0 <= Pr8 < 0.002 or Pr8 > 21.5 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P8.clear ()
return
if Pr8 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P8.clear ()
return
else:
prop8P = ClaseLiqSatP.BombsalLSP(Pr8)
h8 = prop8P.h_slP
s8 = prop8P.s_slP
ps8 = Pr8
if self.T8.isEnabled () and self.CBX8.isChecked ():
try:
Tp8 = float(self.T8.text())
except ValueError:
self.T8.clear ()
return
if 0 <= Tp8 <= 17.511 or Tp8 > 371.8:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T8.clear ()
107
return
if Tp8 < 0.0:
ventanaErrorVPT = ErrorVPclass(self)
ventanaErrorVPT.show()
self.T8.clear ()
return
else:
prop8T = ClaseLiqSatT.BombsalLST(Tp8)
h8 = prop8T.h_slT
s8 = prop8T.s_slT
ps8 = prop8T.ps_slT
if self.P9.isEnabled () and self.T9.isEnabled ():
try:
Pr9 = float(self.P9.text())
except ValueError:
self.P9.clear ()
return
try:
Tp9 = float(self.T9.text())
except ValueError:
self.T9.clear ()
return
if Pr9 < 0.0 or Tp9 < 0.0:
ventanaErrorVP = ErrorVPclass(self)
ventanaErrorVP.show()
self.P9.clear ()
self.T9.clear ()
return
if 0 <= Pr9 < 0.002 or Pr9 > 21.5:
ventanaErrorP = ErrorPclass(self)
ventanaErrorP.show()
self.P9.clear ()
return
if Tp9 <= 17.511 or Tp9 > 368.9:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T9.clear ()
return
else:
prop9 = ClaseLiqCom.Bomsal(Pr9 , Tp9)
if Tp9 >= prop9.t_slc:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T9.clear ()
return
else:
prop9 = ClaseLiqCom.Bomsal(Pr9 , Tp9)
h9r = prop9.h_slc
s9r = prop9.s_slc
108
Apéndice A. Programación en Python y Qt Designer del simulador
if self.P9.isEnabled () and self.CB1V9.isChecked ():
try:
Pr9 = float(self.P9.text())
except ValueError:
self.P9.clear ()
return
if 0 <= Pr9 < 0.002 or Pr9 > 21.5 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P9.clear ()
return
if Pr9 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P9.clear ()
return
else:
prop9P = ClaseLiqComPs.BomsalPs(Pr9 , ps8 , s8)
h9 = prop9P.h_slcPs
if self.T9.isEnabled () and self.CB1V9.isChecked ():
try:
Tp9 = float(self.T9.text())
except ValueError:
self.T9.clear ()
return
if 0 <= Tp9 <= 17.511 or Tp9 > 371.8:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T9.clear ()
return
if Tp9 < 0.0:
ventanaErrorVPT = ErrorVPclass(self)
ventanaErrorVPT.show()
self.T9.clear ()
return
else:
prop9T = ClaseLiqComTs.BomsalTs(Tp9 , s8)
h9 = prop9T.h_slcTs
if self.P10.isEnabled () and self.T10.isEnabled ():
try:
Pr10 = float(self.P10.text())
except ValueError:
self.P10.clear ()
return
try:
Tp10 = float(self.T10.text())
except ValueError:
109
self.T10.clear ()
return
if Pr10 < 0.0 or Tp10 < 0.0:
ventanaErrorVP = ErrorVPclass(self)
ventanaErrorVP.show()
self.P10.clear ()
self.T10.clear ()
return
if 0 <= Pr10 < 0.002 or Pr10 > 21.5:
ventanaErrorP = ErrorPclass(self)
ventanaErrorP.show()
self.P10.clear ()
return
if Tp10 <= 17.511 or Tp10 > 368.9:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T10.clear ()
return
else:
prop10 = ClaseLiqCom.Bomsal(Pr10 ,Tp10)
if Tp10 >= prop10.t_slc:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T10.clear ()
return
else:
prop10 = ClaseLiqCom.Bomsal(Pr10 , Tp10)
h10r = prop10.h_slc
s10r = prop10.s_slc
if self.P10.isEnabled () and self.CB1V10.isChecked ():
try:
Pr10 = float(self.P10.text())
except ValueError:
self.P10.clear ()
return
if 0 <= Pr10 < 0.002 or Pr10 > 21.5 :
ventanaErrorPPF = ErrorPclass(self)
ventanaErrorPPF.show()
self.P10.clear ()
return
if Pr10 < 0.0:
ventanaErrorVPP = ErrorVPclass(self)
ventanaErrorVPP.show()
self.P10.clear ()
return
if self.T10.isEnabled () and self.CB1V10.isChecked ():
try:
110
Apéndice A. Programación en Python y Qt Designer del simulador
Tp10 = float(self.T10.text())
except ValueError:
self.T10.clear ()
return
if 0 <= Tp10 <= 17.511 or Tp10 > 371.8:
ventanaErrorTF = ErrorTclass(self)
ventanaErrorTF.show()
self.T10.clear ()
return
if Tp10 < 0.0:
ventanaErrorVPT = ErrorVPclass(self)
ventanaErrorVPT.show()
self.T10.clear ()
return
if self.RBC.isChecked ():
try:
fmt = float(self.FluxmasT.text())
except ValueError:
self.FluxmasT.clear ()
return
if 0 > fmt:
self.FluxmasT.clear ()
return
try:
nt = float(self.EficTurb.text())
except ValueError:
self.EficTurb.clear ()
return
if 0 > nt or nt > 100:
ventanaErrorRE = ErrorECRclass(self)
ventanaErrorRE.show()
self.EficTurb.clear ()
return
try:
nb = float(self.EfiBom1.text())
except ValueError:
self.EfiBom1.clear ()
return
if 0 > nb or nb > 100:
ventanaErrorRE = ErrorECRclass(self)
ventanaErrorRE.show()
self.EfiBom1.clear ()
return
#Para Rx
if self.P10.isEnabled () and self.CB1V10.isChecked ():
prop10P = ClaseLiqComPs.BomsalPs(Pr10 , ps5 , s5)
h10r = prop10P.h_slcPs
s10r = s5
if self.T10.isEnabled () and self.CB1V10.isChecked ():
prop10P = ClaseLiqComTs.BomsalTs(Tp10 , s5)
h10r = prop10P.h_slcTs
111
s10r = s5
qRx = h1 -h10r
PRx = (fmt*qRx)/1000
#Para Turbina
if self.X4.isEnabled ():
try:
Cx4 = float(self.X4.text())
except ValueError:
self.X4.clear ()
return
if 0 > Cx4 or Cx4 > 100:
ventanaErrorRE = ErrorECRclass(self)
ventanaErrorRE.show()
self.X4.clear ()
return
else:
x4 = Cx4 /100
else:
x4 = (s2-sf4)/(sg4 -sf4)
h4i = x4*(hg4)+((1-x4)*hf4)
wti = h2 - h4i
wtr = (nt /100)*wti
Pwtr = (fmt*wtr)/1000
#Para el condensador
h4r = h2 - (nt/100)*(wti)
qc = h4r - h5
Pc = (fmt*qc)/1000
#Para la bomba
if self.P6.isEnabled () and self.CB1V6.isChecked ():
wbi = h6 - h5
wbr = wbi/(nb /100)
h6r = wbr + h5
s6r = s5
if self.T6.isEnabled () and self.CB1V6.isChecked ():
wbi = h6 - h5
wbr = wbi/(nb /100)
h6r = wbr + h5
s6r = s5
wbr = h6r -h5
Pb = (wbr*fmt)/1000
#Eficiencia Termica del ciclo del ciclo
nterc = ((wtr -wbr)/qRx)*100
self.EfiCic.setText(str('{:10.5f}'.format(nterc)))
self.Fluxmas4.setText(str('{:10.5f}'.format(fmt)))
self.PotCal.setText(str('{:10.5f}'.format(PRx)))
self.PotTurb.setText(str('{:10.5f}'.format(Pwtr)))
if self.P6.isEnabled () and self.P6.isEnabled ():
aList = [('Flujo masico total en kg/s =', fmt), ('
Eficiencia de la turbina en % =', nt),('Eficiencia de la bomba en % =
', nb), ('h en 1 en kJ/kg =', h1), ('s en 1 en kJ/kg C =', s1), ('h
en 2 en kJ/kg =', h2), ('s en 2 en kJ/kg C =', s2), ('s isentropica
en 4 en kJ/kg C =', s2) ,('sf en 4 en kJ/kg C =', sf4), ('sg en 4 en
kJ/kg C =', sg4), ('Calidad en 4 en % =', x4*100) , ('hf en 4 en kJ/kg
=', hf4), ('hg en 4 en kJ/kg =', hg4), ('h isentropica en 4 en kJ/kg
112
Apéndice A. Programación en Python y Qt Designer del simulador
=', h4i), ('h real en 4 en kJ/kg =', h4r),('h en 5 en kJ/kg =', h5),
('s en 5 en kJ/kg C =', s5), ('h real en 6 en kJ/kg =', h6r), ('s en
6 en kJ/kg C =', s6r),('h en 10 en kJ/kg =', h10r), ('s en 10 en kJ/
kg C =', s10r) ,('Calor suministrado en el Reactor en kJ/kg =', qRx),
('Potencia Calorifica suministrada en el Reactor en MW =', PRx), ('
Trabajo Realizado en la Turbina en kJ/kg =', wtr), ('Potencia
Generada en la Turbina en MW =', Pwtr) ,('Calor Rechazado en el
Condensador en kJ/kg =', qc), ('Potencia Colorifica Rechazada en el
Condensador en MW =', Pc) ,('Trabajo Requerido en la Bomba en kJ/kg ='
, wbr), ('Potencia Requerida en la Bomba en MW =', Pb),
('Eficiciencia Termica del Ciclo en % =', nterc)]
dataFile = open('Ciclo Rankine Simple Sistema
Internacional de Unidades.txt', 'w')
for t in aList:
line = ' '.join(str(x) for x in t)
dataFile.write(line + '\n')
dataFile.close()
else:
aList = [('Flujo masico total en kg/s =', fmt), ('
Eficiencia de la turbina en % =', nt),('Eficiencia de la bomba en % =
', nb), ('h en 1 en kJ/kg =', h1), ('s en 1 en kJ/kg C =', s1), ('h
en 2 en kJ/kg =', h2), ('s en 2 en kJ/kg C =', s2), ('s isentropica
en 4 en kJ/kg C =', s2) ,('sf en 4 en kJ/kg C =', sf4), ('sg en 4 en
kJ/kg C =', sg4), ('Calidad en 4 en % =', x4*100) , ('hf en 4 en kJ/kg
=', hf4) ,('hg en 4 en kJ/kg =', hg4), ('h isentropica en 4 en kJ/kg
=', h4i), ('h real en 4 en kJ/kg =', h4r),('h en 5 en kJ/kg =', h5),
('s en 5 en kJ/kg C =', s5), ('s isentropica en 6 en kJ/kg C =', s5)
,('h isentropica en 6 en kJ/kg =', h6), ('h real en 6 en kJ/kg =',
h6r), ('s en 6 en kJ/kg C =', s6r), ('h en 10 en kJ/kg =', h10r), ('s
en 10 en kJ/kg C =', s10r), ('Calor suministrado en el Reactor en kJ
/kg =', qRx), ('Potencia Calorifica suministrada en el Reactor en MW
=', PRx), ('Trabajo Realizado en la Turbina en kJ/kg =', wtr), ('
Potencia Generada en la Turbina en MW =', Pwtr), ('Calor Rechazado en
el Condensador en kJ/kg =', qc), ('Potencia Calorifica Rechazada en
el Condensador en MW =', Pc), ('Trabajo Requerido en la Bomba en kJ/
kg =', wbr), ('Potencia Requerida en la Bomba en MW =', Pb), ('
Eficiciencia Termica del Ciclo en % =', nterc)]
dataFile = open('Ciclo Rankine Simple Sistema
Internacional de Unidades.txt', 'w')
for t in aList:
line = ' '.join(str(x) for x in t)
dataFile.write(line + '\n')
dataFile.close()
if self.RBA.isChecked ():
try:
fmt = float(self.FluxmasT.text())
except ValueError:
self.FluxmasT.clear ()
return
if 0 > fmt:
self.FluxmasT.clear ()
return
try:
113
nt = float(self.EficTurb.text())
except ValueError:
self.EficTurb.clear ()
return
if 0 > nt or nt > 100:
ventanaErrorRE = ErrorECRclass(self)
ventanaErrorRE.show()
self.EficTurb.clear ()
return
try:
nb1 = float(self.EfiBom1.text())
except ValueError:
self.EfiBom1.clear ()
return
if 0 > nb1 or nb1 > 100:
ventanaErrorRE = ErrorECRclass(self)
ventanaErrorRE.show()
self.EfiBom1.clear ()
return
try:
nb2 = float(self.EfiBom2.text())
except ValueError:
self.EfiBom2.clear ()
return
if 0 > nb2 or nb2 > 100:
ventanaErrorRE = ErrorECRclass(self)
ventanaErrorRE.show()
self.EfiBom1.clear ()
return
#Para Rx
if self.P10.isEnabled () and self.CB1V10.isChecked ():
prop10P = ClaseLiqComPs.BomsalPs(Pr10 , ps8 , s8)
h10r = prop10P.h_slcPs
s10r = s8
if self.T10.isEnabled () and self.CB1V10.isChecked ():
prop10P = ClaseLiqComTs.BomsalTs(Tp10 , s8)
h10r = prop10P.h_slcTs
s10r = s8
qRx = h1 -h10r
#Para Turbina Seccion de Alta presion(Propiedades)
if self.X3.isEnabled ():
try:
Cx3 = float(self.X3.text())
except ValueError:
self.X3.clear ()
return
if 0 > Cx3 or Cx3 > 100:
ventanaErrorRE = ErrorECRclass(self)
ventanaErrorRE.show()
self.X3.clear ()
return
else:
x3 = Cx3 /100
else:
114
Apéndice A. Programación en Python y Qt Designer del simulador
x3 = (s2-sf3)/(sg3 -sf3)
h3i = x3*hg3+((1-x3)*hf3)
wtapi = h2 - h3i
wtapr = (nt /100)*wtapi
h3r = h2 - ((nt/100)*wtapi)
x3r = (h3r - hf3)/(hg3 -hf3)
s3r = (x3r*(sg3 -sf3)) + sf3
#Para Turbina Seccion de Baja Presion (Propiedades)
if self.X4.isEnabled ():
try:
Cx4 = float(self.X4.text())
except ValueError:
self.X4.clear ()
return
if 0 > Cx4 or Cx4 > 100:
ventanaErrorRE = ErrorECRclass(self)
ventanaErrorRE.show()
self.X4.clear ()
return
else:
x4 = Cx4 /100
else:
x4 = (s3r -sf4)/(sg4 -sf4)
h4i = x4*hg4 +((1-x4)*hf4)
h4r =h3r -((nt /100) *(h3r -h4i))
wtbpr = h3r - h4r
#Para el condensador
qc = h4r -h5
#Para la bomba 1 (Propiedades)
if self.P6.isEnabled () and self.CB1V6.isChecked ():
wbIi = h6 - h5
wbIr = wbIi/(nb1 /100)
h6r = wbIr + h5
s6r = s5
if self.T6.isEnabled () and self.CB1V6.isChecked ():
wbi = h6 - h5
wbIr = wbi/(nb1 /100)
h6r = wbIr + h5
s6r = s5
wbIr = h6r - h5
#Para la bomba 2 (Propiedades)
if self.P9.isEnabled () and self.CB1V9.isChecked ():
wbIIi = h9 - h8
wbIIr = wbIIi /(nb2 /100)
h9r = wbIIr + h8
s9r = s8
if self.T9.isEnabled () and self.CB1V9.isChecked ():
wbIIi = h9 - h8
wbIIr = wbIIi /(nb2 /100)
h9r = wbIIr + h8
s9r = s8
wbIIr = h9r - h8
#Para el Precalentador de Agua
# fm3*h3r + fm6*h6r = fm7*h7 + fm8*h8
115
# fm3 = fm8; fm6 = fm7; h7 = h9r
# fm3*h3r + fm6*h6r = fm6*h7 + fm3*h8
# fm3*h3r - fm3*h8 = fm6*h7 - fm6*h6r
fm3ad = ((h9r -h6r)/(h3r -h8))
fm6 = fmt /(1+ fm3ad)
fm3 = fmt - fm6
#Potencia calorifica del reactor
PRx = (fmt*qRx)/1000
#Potencia de la Turbina Seccion de Alta Presion
Ptapr = (fmt*wtapr)/1000
#Potencia de la Turbina Seccion de Baja Presion
Ptbpr = (fm6*wtbpr)/1000
#Potencia total de la turbina
Ptt = Ptapr + Ptbpr
#Potencia calorifica rechazada en el condensador
Pc = (fm6*qc)/1000
#Potencia Bomba 1
PwbI= (fm6*wbIr)/1000
#Potencia Bomba 2
PwbII = (fm3*wbIIr)/1000
#Eficiencia Termica del ciclo
nterc = (( Ptapr + Ptbpr - PwbI - PwbII)/PRx)*100
self.EfiCic.setText(str('{:10.5f}'.format(nterc)))
self.Fluxmas3.setText(str('{:10.5f}'.format(fm3)))
self.Fluxmas4.setText(str('{:10.5f}'.format(fm6)))
self.PotCal.setText(str('{:10.5f}'.format(PRx)))
self.PotTurb.setText(str('{:10.5f}'.format(Ptt)))
if self.P6.isEnabled () and self.T6.isEnabled () and self.P9.
isEnabled () and self.T9.isEnabled ():
aList = [('Flujo masico total en kg/s =', fmt), ('
Eficiencia de la turbina en % =', nt),('Eficiencia de la bomba 1 en %
=', nb1), ('Eficiencia de la bomba 2 en % =', nb2), ('h en 1 en kJ/
kg =', h1), ('s en 1 en kJ/kg C =', s1), ('h en 2 en kJ/kg =', h2), (
's en 2 en kJ/kg C =', s2) ,('s isentropica en 3 en kJ/kg C =', s2), (
'sf en 3 en kJ/kg C =', sf3), ('sg en 3 en kJ/kg C =', sg3), ('
Calidad isentropica en 3 en % =', x3*100), ('hf en 3 en kJ/kg =', hf3
), ('hg en 3 en kJ/kg =', hg3), ('h isentropica en 3 en kJ/kg =', h3i
), ('h real en 3 en kJ/kg =', h3r), ('Calidad real en 3 en % =', x3r
*100) , ('s real en 3 en kJ/kg C =', s3r), ('s isentropica en 4 en kJ/
kg C =', s3r), ('sf en 4 en kJ/kg C =', sf4), (
'sg en 4 en kJ/kg C =', sg4), ('Calidad en 4 en % =', x4 *100), ('hf
en 4 en kJ/kg =', hf4),
('hg en 4 en kJ/kg =', hg4), ('h isentropica en 4 en kJ/kg =', h4i), ('h
real en 4 en kJ/kg =', h4r) ,('h en 5 en kJ/kg =', h5), ('s en 5 en
kJ/kg C =', s5), ('h en 6 en kJ/kg =', h6r), ('s en 6 en kJ/kg C =',
s6r),('h en 7 en kJ/kg =', h9r), ('h en 8 en kJ/kg =', h8), ('s en 8
en kJ/kg C =', s8) ,('h en 9 en kJ/kg =', h9r), ('s en 9 en kJ/kg C ='
, s9r), ('h en 10 en kJ/kg =', h10r), ('s en 10 en kJ/kg C =', s10r),
('Calor Suministrado en el Reactor en kJ/kg =', qRx), ('Potencia
Calorifica Suministrada en el Reactor en MW =', PRx) ,('Trabajo
Realizado en la Turbina de Alta Presion en kJ/kg =', wtapr), ('
Potencia Realizada en la Turbina de Alta Presion en MW =', Ptapr) ,('
Trabajo Realizado en la Turbina de Baja Presion en kJ/kg =', wtbpr),
('Potencia Realizada en la Turbina de Baja Presion en MW =', Ptbpr),
116
Apéndice A. Programación en Python y Qt Designer del simulador
('Potencia Total Generada en la Turbina en MW =',
Ptt), ('Calor Rechazado en el Condensador en kJ/
kg =', qc), ('Potencia Colorifica Rechazada en el Condensador en MW =
', Pc), ('Trabajo Requerido en la Bomba 1 en kJ/kg =', wbIr), ('
Potencia Requerida en la Bomba 1 en MW =', PwbI) ,('Trabajo Requerido
en la Bomba 2 en kJ/kg =', wbIIr), ('Potencia Requerida en la Bomba 2
en MW =', PwbII) ,('Eficiciencia Termica del Ciclo en % =', nterc)]
dataFile = open('Ciclo Rankine Regenerativo Sistema
Internacional de Unidades.txt', 'w')
for t in aList:
line = ' '.join(str(x) for x in t)
dataFile.write(line + '\n')
dataFile.close()
if self.P6.isEnabled () and self.T6.isEnabled () and self.P9.
isEnabled () or self.T9.isEnabled () and self.CB1V9.isChecked ():
aList = [('Flujo masico total en kg/s =', fmt), ('
Eficiencia de la turbina en % =', nt), ('Eficiencia de la bomba 1 en
% =', nb1), ('Eficiencia de la bomba 2 en % =', nb2), ('h en 1 en kJ/
kg =', h1), ('s en 1 en kJ/kg C =', s1), ('h en 2 en kJ/kg =', h2), (
's en 2 en kJ/kg C =', s2) ,('s isentropica en 3 en kJ/kg C =', s2), (
'sf en 3 en kJ/kg C =', sf3), ('sg en 3 en kJ/kg C =', sg3), ('
Calidad isentropica en 3 en % =', x3*100), ('hf en 3 en kJ/kg =', hf3
), ('hg en 3 en kJ/kg =', hg3), ('h isentropica en 3 en kJ/kg =', h3i
), ('h real en 3 en kJ/kg =', h3r), ('Calidad real en 3 en % =', x3r
*100) , ('s real en 3 en kJ/kg C =', s3r),('s isentropica en 4 en kJ/
kg C =', s3r),
('sf en 4 en kJ/kg C =', sf4), ('sg en 4 en kJ/kg C =', sg4), ('Calidad
en 4 en % =', x4*100) , ('hf en 4 en kJ/kg =', hf4),
('hg en 4 en kJ/kg =', hg4), ('h isentropica en 4 en kJ/kg =', h4i), ('h
real en 4 en kJ/kg =', h4r) ,('h en 5 en kJ/kg =', h5), ('s en 5 en
kJ/kg C =', s5), ('h en 6 en kJ/kg =', h6r), ('s en 6 en kJ/kg C =',
s6r), ('h en 7 en kJ/kg =', h9r), ('h en 8 en kJ/kg =', h8), ('s en 8
en kJ/kg C =', s8), ('s isentropica en 9 en kJ/kg =', s8), ('h
isentropica en 9 en kJ/kg =', h9) ,('h en 9 en kJ/kg =', h9r), ('s en
9 en kJ/kg C =', s9r), ('h en 10 en kJ/kg =', h10r), ('s en 10 en kJ/
kg C =', s10r), ('Calor Suministrado en el Reactor en kJ/kg =', qRx),
('Potencia Calorifica Suministrada en el Reactor en MW =', PRx) ,('
Trabajo Realizado en la Turbina de Alta Presion en kJ/kg =', wtapr),
('Potencia Realizada en la Turbina de Alta Presion en MW =', Ptapr) ,(
'Trabajo Realizado en la Turbina de Baja Presion en kJ/kg =', wtbpr),
('Potencia Realizada en la Turbina de Baja Presion en MW =', Ptbpr),
('Potencia Total Generada en la Turbina en MW =', Ptt), ('Calor
Rechazado en el Condensador en kJ/kg =', qc), ('Potencia Calorifica
Rechazada en el Condensador en MW =', Pc), ('Trabajo Requerido en la
Bomba 1 en kJ/kg =', wbIr), ('Potencia Requerida en la Bomba 1 en MW
=', PwbI), ('Trabajo Requerido en la Bomba 2 en kJ/kg =', wbIIr), ('
Potencia Requerida en la Bomba 2 en MW =', PwbII), ('Eficiciencia
Termica del Ciclo en % =', nterc)]
dataFile = open('Ciclo Rankine Regenerativo Sistema
Internacional de Unidades.txt', 'w')
for t in aList:
line = ' '.join(str(x) for x in t)
dataFile.write(line + '\n')
dataFile.close()
117
if self.P9.isEnabled () and self.T9.isEnabled () and self.P6.
isEnabled () or self.T6.isEnabled () and self.CB1V6.isChecked ():
aList = [('Flujo masico total en kg/s =', fmt), ('
Eficiencia de la turbina en % =', nt), ('Eficiencia de la bomba 1 en
% =', nb1), ('Eficiencia de la bomba 2 en % =', nb2), ('h en 1 en kJ/
kg =', h1), ('s en 1 en kJ/kg C =', s1),('h en 2 en kJ/kg =', h2), ('
s en 2 en kJ/kg C =', s2), ('s isentropica en 3 en kJ/kg C =', s2), (
'sf en 3 en kJ/kg C =', sf3), ('sg en 3 en kJ/kg C =', sg3), ('
Calidad isentropica en 3 en % =', x3*100), ('hf en 3 en kJ/kg =', hf3
), ('hg en 3 en kJ/kg =', hg3), ('h isentropica en 3 en kJ/kg =', h3i
), ('h real en 3 en kJ/kg =', h3r), ('Calidad real en 3 en % =', x3r
*100) , ('s real en 3 en kJ/kg C =', s3r), ('s isentropica en 4 en kJ/
kg C =', s3r),
('sf en 4 en kJ/kg C =', sf4), ('sg en 4 en kJ/kg C =', sg4), ('Calidad
en 4 en % =', x4*100) , ('hf en 4 en kJ/kg =', hf4),
('hg en 4 en kJ/kg =', hg4), ('h isentropica en 4 en kJ/kg =', h4i), ('h
real en 4 en kJ/kg =', h4r) ,('h en 5 en kJ/kg =', h5), ('s en 5 en
kJ/kg C =', s5), ('s isentropica en 6 en kJ/kg =', s5) ,('h
isentropica en 6 en kJ/kg =', h6), ('h en 6 en kJ/kg =', h6r), ('s en
6 en kJ/kg C =', s6r), ('h en 7 en kJ/kg =', h9r), ('h en 8 en kJ/kg
=', h8), ('s en 8 en kJ/kg C =', s8), ('h en 9 en kJ/kg =', h9r), ('
s en 9 en kJ/kg C =', s9r), ('h en 10 en kJ/kg =', h10r), ('s en 10
en kJ/kg C =', s10r), ('Calor Suministrado en el Reactor en kJ/kg =',
qRx), ('Potencia Calorifica Suministrada en el Reactor en MW =', PRx
),('Trabajo Realizado en la Turbina de Alta Presion en kJ/kg =',
wtapr), ('Potencia Realizada en la Turbina de Alta Presion en MW =',
Ptapr) ,('Trabajo Realizado en la Turbina de Baja Presion en kJ/kg =',
wtbpr), ('Potencia Realizada en la Turbina de Baja Presion en MW =',
Ptbpr) ,('Potencia Total Generada en la Turbina en MW =', Ptt) ,('
Calor Rechazado en el Condensador en kJ/kg =', qc), ('Potencia
Calorifica Rechazada en el Condensador en MW =', Pc) ,('Trabajo
Requerido en la Bomba 1 en kJ/kg =', wbIr), ('Potencia Requerida en
la Bomba 1 en MW =', PwbI) ,('Trabajo Requerido en la Bomba 2 en kJ/kg
=', wbIIr), ('Potencia Requerida en la Bomba 2 en MW =', PwbII),('
Eficiciencia Termica del Ciclo en % =', nterc)]
dataFile = open('Ciclo Rankine Regenerativo Sistema
Internacional de Unidades.txt', 'w')
for t in aList:
line = ' '.join(str(x) for x in t)
dataFile.write(line + '\n')
dataFile.close()
if self.P9.isEnabled () or self.T9.isEnabled () and self.CB1V9
.isChecked () and self.P6.isEnabled () or self.T6.isEnabled () and self.
CB1V6.isChecked ():
aList = [('Flujo masico total en kg/s =', fmt), ('
Eficiencia de la turbina en % =', nt),('Eficiencia de la bomba 1 en %
=', nb1), ('Eficiencia de la bomba 2 en % =', nb2), ('h en 1 en kJ/
kg =', h1), ('s en 1 en kJ/kg C =', s1),('h en 2 en kJ/kg =', h2), ('
s en 2 en kJ/kg C =', s2) ,('s isentropica en 3 en kJ/kg C =', s2) ,('
sf en 3 en kJ/kg C =', sf3), ('sg en 3 en kJ/kg C =', sg3), ('Calidad
isentropica en 3 en % =', x3*100) , ('hf en 3 en kJ/kg =', hf3),('hg
en 3 en kJ/kg =', hg3), ('h isentropica en 3 en kJ/kg =', h3i), ('h
real en 3 en kJ/kg =', h3r), ('Calidad real en 3 en % =', x3r *100) ,('
s real en 3 en kJ/kg C =', s3r) ,('s isentropica en 4 en kJ/kg C =',
118
Apéndice A. Programación en Python y Qt Designer del simulador
s3r),('sf en 4 en kJ/kg C =', sf4), ('sg en 4 en kJ/kg C =', sg4), ('
Calidad en 4 en % =', x4*100) , ('hf en 4 en kJ/kg =', hf4),
('hg en 4 en kJ/kg =', hg4), ('h isentropica en 4 en kJ/kg =', h4i), ('h
real en 4 en kJ/kg =', h4r) ,('h en 5 en kJ/kg =', h5), ('s en 5 en
kJ/kg C =', s5), ('s isentropica en 6 en kJ/kg =', s5) ,('h
isentropica en 6 en kJ/kg =', h6), ('h en 6 en kJ/kg =', h6r), ('s en
6 en kJ/kg C =', s6r), ('h en 7 en kJ/kg =', h9r), ('h en 8 en kJ/kg
=', h8), ('s en 8 en kJ/kg C =', s8), ('s isentropica en 9 en kJ/kg
=', s8), ('h isentropica en 9 en kJ/kg =', h9),('h en 9 en kJ/kg =',
h9r), ('s en 9 en kJ/kg C =', s9r), ('h en 10 en kJ/kg =', h10r), ('s
en 10 en kJ/kg C =', s10r), ('Calor Suministrado en el Reactor en kJ
/kg =', qRx), ('Potencia Calorifica Suministrada en el Reactor en MW
=', PRx),
('Trabajo Realizado en la Turbina de Alta Presion en kJ/kg =', wtapr), (
'Potencia Realizada en la Turbina de Alta Presion en MW =', Ptapr), (
'Trabajo Realizado en la Turbina de Baja Presion en kJ/kg =', wtbpr),
('Potencia Realizada en la Turbina de Baja Presion en MW =', Ptbpr),
('Potencia Total Generada en la Turbina en MW =', Ptt) ,('Calor
Rechazado en el Condensador en kJ/kg =', qc), ('Potencia Colorifica
Rechazada en el Condensador en MW =', Pc), ('Trabajo Requerido en la
Bomba 1 en kJ/kg =', wbIr), ('Potencia Requerida en la Bomba 1 en MW
=', PwbI), ('Trabajo Requerido en la Bomba 2 en kJ/kg =', wbIIr),('
Potencia Requerida en la Bomba 2 en MW =', PwbII) ,('Eficiciencia
Termica del Ciclo en % =', nterc)]
dataFile = open('Ciclo Rankine Regenerativo Sistema
Internacional de Unidades.txt', 'w')
for t in aList:
line = ' '.join(str(x) for x in t)
dataFile.write(line + '\n')
dataFile.close()
119
Apéndice B
Solución completa de los problemas dereferencia
En este apéndice se abordará a detalle el ciclo termodinámico de una central nuclear con
un reactor tipo BWR (Boiling Water Reactor), el cual se asume es un proceso de �ujo y
estado estable, por lo que se aplicará la ecuación 1.23, pero en forma especí�ca.
Las propiedades termodinámicas empleadas en la solución de los ciclos termodinámicos
se toman del libro de Termodinámica de Yunus A. Çengel y Michael A. Boles séptima
edición.
Análisis del ciclo Rankine simple
En la �gura B1 se muestra el ciclo termodinámico Rankine simple de una central nuclear
y en la �gura B2 se muestra el diagrama T-s, en el cual la presión a la salida del reactor
es de 7 MPa, como vapor saturado. La presión a la salida de la turbina, que tiene una
e�ciencia isentrópica de 85%, es de 6.5 kPa. El �uido de trabajo sale del condensador
como líquido saturado a una presión de 6.5 kPa. Finalmente, el �uido de trabajo sale de
la bomba, la cual tiene una e�ciencia isentrópica de 80%, como líquido comprimido a una
presión de 7 MPa y a una temperatura de 38 �C. El �ujo másico del ciclo es de 253 kg/s.
120
Apéndice B. Solución completa de los problemas de referencia
Figura B1: Ciclo Rankine simple.(Cortesía curso nuclear básico)
Figura B2: Diagrama T-s del ciclo Rankine simple.
El calor por unidad de masa para el reactor se calcula mediante la ecuación 3.1:
qRx = h2 � h1 (B.1)
donde:
h2 = hg(7 MPa)
h2 = 2772:6 kJ/kg
Debido a que en la tabla A-7 de agua líquida comprimida no se encuentra una presión de
121
7 MPa, interpolamos entre las presiones 5 y 10 MPa y entre las temperaturas de 20 �C y
40 �C para conocer el valor h1 utilizando la siguiente fórmula:
A1 A A2
B1 C11... C21
B � � � B2 C12 C22
= (A2 � A)C11(B2 � B) + C12(B� B1)
(A2 � A1)(B2 � B1)+ (A� A1)
C21(B2 � B) + C22(B� B1)
(A2 � A1)(B2 � B1)
Sustituyendo los valores de la tabla A-7 en la ecuación anterior, se tiene:
h1 = hf(7 MPa, 38 �C)
h1 = (10� 7)88:61(40� 38) + 171:95(38� 20)
(10� 5)(40� 20)
+ (7� 5)93:28(40� 38) + 176:37(38� 20)
(10� 5)(40� 20)
h1 = 165:394 kJ/kg
Sustituyendo h2 y h1 en la ecuación B.1, se tiene:
qRx = (2772:6� 165:394) kJ/kg
qRx = 2607:206 kJ/kg
Utilizando la ecuación 3.2, tenemos:
_QRx = _m � qRx_QRx = 253 kg/s(2607:206 kJ/kg)
_QRx = 659623:118 kW
_QRx = 660 MW
Para calcular el trabajo especí�co ideal de la turbina se utiliza la ecuación la ecuación 3.3:
wTur;I = h2 � h3 (B.2)
122
Apéndice B. Solución completa de los problemas de referencia
donde:
s3 = s2
s2 = sg(7 MPa)
s2 = 5:8148 kJ/kg � K
P3 = 6:5 kPa
s3 = 5:8148 kJ/kg � K
9>=>; = h3i
h3i = x3hg(6.5 kPa) + (1� x3)hf(6.5 kPa)
x3 =s3 � sf(6.5 kPa)
sg(6.5 kPa) � sf(6.5 kPa)
Para encontrar los valores de hg(6.5 kPa), hf(6.5 kPa), sg(6.5 kPa) y sf(6.5 kPa), se interpola entre
las presiones 5 y 7.5 kPa de la tabla A-5:
sg(6.5 kPa) =
�(6:5� 5)
8:2501� 8:3938
7:5� 5+ 8:3938
�kJ/kg �K
sg(6.5 kPa) = 8:30758 kJ/kg �K
sf(6.5 kPa) =
�(6:5� 5)
0:5763� 0:4762
7:5� 5+ 0:4762
�kJ/kg �K
sf(6.5 kPa) = 0:53626 kJ/kg �K
hg(6.5 kPa) =
�(6:5� 5)
2574:0� 2560:7
7:5� 5+ 2560:7
�kJ/kg
hg(6.5 kPa) = 2568:68 kJ/kg
hf(6.5 kPa) =
�(6:5� 5)
168:75� 137:75
7:5� 5+ 137:75
�kJ/kg
hf(6.5 kPa) = 156:35 kJ/kg
x3 =
�5:8148� 0:53626
8:30758� 0:53626
�kJ/kg � KkJ/kg � K
x3 = 0:679233386
h3i = [(0:679233386)(2568:68) + (1� 0:679233386)(156:35)] kJ/kg
h3i = 1794:885074 kJ/kg
123
wTur;I = (2772:6� 1794:885074) kJ/kg
wTur;I = 977:714926 kJ/kg
Para calcular el trabajo especí�co real de la turbina, se multiplica el trabajo especí�co
ideal por la e�ciencia isentrópica de la misma, entre otras palabras despejando la ecuación
3.10:
wTur;R = �Tur(wBom;I)
wTur;R = 0:85(977:714926) kJ/kg
wTur;R = 831:0576871 kJ/kg
Se obtiene la potencia de la turbina, usando la ecuación 3.4
_WTur = _m � wTur;R
_WTur = 253 kg/s(831:0576871 kJ/kg)
_WTur = 210257:5948 kW
_WTur = 210 MW
De la fórmula de e�ciencia de la turbina, ecuación 3.10, se despeja la entalpía real (h3r)
para utilizarla posteriormente en el cálculo del calor por unidad de masa rechazado en el
condensador:
�Tur =wTur;R
wTur;I
�Tur =h2 � h3rh2 � h3i
�Tur =2772:6� h3r
2772:6� 1794:885074
h3r = 2772:6� 0:85(2772:6� 1794:885074) kJ/kg
h3r = 1941:542313 kJ/kg
Para calcular el calor por unidad de masa rechazado en el condensador se utiliza la ecuación
124
Apéndice B. Solución completa de los problemas de referencia
3.5:
qCon = h3r � h4
qCon = h3r � hf(6.5 kPa)
qCon = (1941:542313� 156:35) kJ/kg
qCon = 1785:192313 kJ/kg
El �ujo de calor rechazo por el condensador, se calcula mediante la ecuación 3.6:
_QCon = _m � qcon_QCon = 253 kg/s(1785:192313 kJ/kg)
_QCon = 451653:6552 kW
_QCon = 451:653 MW
El trabajo especí�co ideal para la bomba se calcula mediante la ecuación 3.7:
wBom;I = h1i � h4 (B.3)
donde:
s1 = s4
s4 = sf(6.5 kPa)
s4 = 0:53626 kJ/kg � K
P1 = 7 MPa
s1 = 0:53626 kJ/kg � K
9>=>; = h1i
Para encontrar el valor de h1i, se interpola entre las presiones 5 y 10 MPa y entre el rango
de entropía correspondiente de la tabla A-7:
Agua líquida comprimida a 5 MPa y s = 0.53626 kJ/kg � K:
hs =
�(0:53626� 0:2954)
171:95� 88:61
0:5705� 0:2954+ 88:61
�kJ/kg
hs = 161:5771843 kJ/kg
125
Agua líquida comprimida a 10 MPa y s = 0.53626 kJ/kg � K:
hs =
�(0:53626� 0:2943)
176:37� 93:28
0:5685� 0:2943+ 93:28
�kJ/kg
hs = 166:6004099 kJ/kg
Agua líquida comprimida a 7 MPa y s = 0.53626 kJ/kg � K:
h1i =
�(7� 5)
166:6004099� 161:5771843
10� 5+ 161:5771843
�kJ/kg
h1i = 163:5864745 kJ/kg
wBom;I = (163:5864745� 156:35) kJ/kg
wBom;I = 7:2364745 kJ/kg
El trabajo real de la bomba, se obtiene mediante la ecuación 3.9:
wBom;R =wBom;I
�Bom
wBom;R =7:2364745
0:8kJ/kg
wBom;R = 9:045593125 kJ/kg
La potencia utilizada por la bomba, se calcula con la ecuación 3.8
_WBom = _m � wBom;R
_WBom = 253 kg/s(9:045593125 kJ/kg)
_WBom = 2288:535061 kW
_WBom = 2:288 MW
Mediante la fórmula de e�ciencia isentrópica, ecuación 3.9 para la bomba, se despeja la
h1r:
�Bom =h4 � h1ih4 � h1r
h1r = h4 �h4r � h1i�Bom
h1r =
�156:35� 156:35� 163:5864745
0:8
�kJ/kg
h1r = 165:3955931 kJ/kg
Con lo anterior se demuestra que la entalpía utilizada en el cálculo de calor por unidad de
126
Apéndice B. Solución completa de los problemas de referencia
masa generado en el Reactor, es adecuada, ya que la diferencia entre la h1 y la h1r es de
0.0015931 kJ/kg. La e�ciencia térmica del ciclo se calcula mediante la ecuación 3.11:
�T = 1� qsalqent
�T = 1� h3r � h4h2 � h1
�T = 1� 1941:542313� 156:35
2772:6� 165:394
kJ/kgkJ/kg
�T = 0:315285285
�T = 31:5285285%
Análisis del ciclo Rankine regenerativo con calentador de
agua de alimentación cerrado
En la �gura B3 se muestra el ciclo termodinámico Rankine regenerativo de una central
nuclear y en la �gura B4 se muestra el diagrama T-s, en el cual la presión a la salida del
reactor es de 7 MPa, como vapor saturado. La presión a la salida de la turbina de alta
presión, que tiene una e�ciencia isentrópica de 85%, es de 480 kPa. Parte del �uido de
trabajo continua su recorrido hasta el calentador de agua de alimentación cerrado, en el
cual cede energía a presión constante de 480 kPa, posteriormente se dirige a la segunda
bomba, que tiene una e�ciencia iséntropica de 80%, la cual eleva su presión hasta 7 MPa.
La parte complementaria del �uido de trabajo sale de la turbina de baja presión a una
presión de 6.5 kPa. Posteriormente el �uido de trabajo sale del condensador como líquido
saturado a una presión de 6.5 kPa, para después dirigirse a la primera bomba, que tiene
una e�ciencia isentrópica de 80%, una vez culminado este proceso el �uido de trabajo se
dirige al calentador de agua de alimentación, donde recibe energía. El �ujo másico total
del ciclo es de 253 kg/s.
Con el �n de simpli�car los cálculos, se realizan las siguientes suposiciones:
127
� Cada bomba succiona líquido saturado.
� En el punto U de la �gura B3 se tienen las mismas propiedades termodinámicas en
todas las corrientes, sólo los �ujos másicos son diferentes.
� El calentador de agua de alimentación cerrado está diseñado para condensar el vapor
de extracción.
Figura B3: Ciclo Rankine regenerativo.(Cortesía curso nuclear básico)
128
Apéndice B. Solución completa de los problemas de referencia
Figura B4: Diagrama T-s del ciclo Rankine regenerativo.
Datos:
P2 = 7 MPa
P3 = 480 kPa
P4 = 6.5 kPa
�Tur = 85%
�Bom;1 = 80%
�Bom;2 = 80%Para resolver este ciclo termodinámico, primero se calculan las propiedades termodinámi-
cas correspondientes y después se sustituyen en los balances de energía correspondientes.
P1 = P2 = P6 = P9 = P8 = 7 MPa
P3 = P7 = 480 kPa
P4 = P5 = 6:5 kPa
Del reactor sale vapor saturado a una presión de 7 MPa, con estos datos se buscan los
129
valores de entalpía y entropía en la tabla A-5, que son los siguientes:
h2 = hg(7 MPa)
h2 = 2772:6 kJ/kg
s2 = sg(7 MPa)
s2 = 5:8148 kJ/kg � K
Para la turbina de alta presión se tiene:
P3 = 480 kPa
s2 = s3i = 5:8148 kJ/kg � K
9>=>; = h3i
h3i = x3ihg(480 kPa) + (1� x3i)hf(480 kPa)
x3i =s3i � sf(480 kPa)
sg(480 kPa) � sf(480 kPa)
Para encontrar los valores de hg(480 kPa), hf(480 kPa), sg(480 kPa) y sf(480 kPa), se interpola entre
las presiones 450 y 500 kPa de la tabla A-5:
sg(480 kPa) =
�(480� 450)
6:8207� 6:8561
500� 450+ 6:8561
�kJ/kg �K
sg(480 kPa) = 6:83486 kJ/kg �K
sf(480 kPa) =
�(480� 450)
1:8604� 1:8205
500� 450+ 1:8205
�kJ/kg �K
sf(480 kPa) = 1:84444 kJ/kg �K
hg(480 kPa) =
�(480� 450)
2748:1� 2743:4
500� 450+ 2743:4
�kJ/kg
hg(480 kPa) = 2746:22 kJ/kg
hf(480 kPa) =
�(480� 450)
640:09� 623:14
500� 450+ 623:14
�kJ/kg
hf(480 kPa) = 633:31 kJ/kg
130
Apéndice B. Solución completa de los problemas de referencia
x3i =
�5:8148� 1:84444
6:83486� 1:84444
�kJ/kg � KkJ/kg � K
x3i = 0:795596362
h3i = (0:795596362)(2746:22) + (1� 0:795596362)(633:31) kJ/kg
h3i = 2314:333511 kJ/kg
De la fórmula de e�ciencia de la turbina, ecuación 3.10, se despeja la entalpía real (h3r).
�Tur =wTur;R
wTur;I
�Tur =h2 � h3rh2 � h3i
h3r = h2 � �Tur(h2 � h3i)
h3r = [2772:6� 0:85(2772:6� 2314:333511)] kJ/kg
h3r = 2383:073484 kJ/kg
Para la turbina de baja presión se tiene:
x3r =h3r � hf(480 kPa)
hg(480 kPa) � hf(480 kPa)
x3r =
�2383:073484� 633:31
2746:22� 633:31
�kJ/kg � KkJ/kg � K
x3r = 0:82812968
x3r =s3r � sf(480 kPa)
sg(480 kPa) � sf(480 kPa)
s3r = x3r(sg(480 kPa) � sf(480 kPa)) + sf(480 kPa)
s3r = [0:82812968(6:83486� 1:84444) + 1:84444] kJ/kg � K
s3r = 5:977154922 kJ/kg � K
P4 = 6:5 kPa
s4i = s3r = 5:977154922 kJ/kg � K
9>=>; = h4i
h4i = x4ihg(6.5 kPa) + (1� x4i)hf(6.5 kPa)
x4i =s4i � sf(6.5 kPa)
sg(6.5 kPa) � sf(6.5 kPa)
Para encontrar los valores de hg(6.5 kPa), hf(6.5 kPa), sg(6.5 kPa) y sf(6.5 kPa), se interpola entre
131
las presiones 5 y 7.5 kPa de la tabla A-5:
sg(6.5 kPa) =
�(6:5� 5)
8:2501� 8:3938
7:5� 5+ 8:3938
�kJ/kg � K
sg(6.5 kPa) = 8:30758 kJ/kg � K
sf(6.5 kPa) =
�(6:5� 5)
0:5763� 0:4762
7:5� 5+ 0:4762
�kJ/kg � K
sf(6.5 kPa) = 0:53626 kJ/kg � K
hg(6.5 kPa) =
�(6:5� 5)
2574:0� 2560:7
7:5� 5+ 2560:7
�kJ/kg
hg(6.5 kPa) = 2568:68 kJ/kg
hf(6.5 kPa) =
�(6:5� 5)
168:75� 137:75
7:5� 5+ 137:75
�kJ/kg
hf(6.5 kPa) = 156:35 kJ/kg
x4i =
�5:977154922� 0:53626
8:30758� 0:53626
�kJ/kg � KkJ/kg � K
x4i = 0:700124936
h4i = [0:700124936(2568:68) + (1� 0:700124936)(156:35)] kJ/kg
h4i = 1845:282388 kJ/kg
De la fórmula de e�ciencia de la turbina, ecuación 3.10, se despeja la entalpía real (h4r).
�Tur =h3r � h4rh3r � h4i
h4r = h3r � �Tur(h3r � h4i)
h4r = [2383:073484� 0:85(2383:073484� 1845:282388)] kJ/kg
h4r = 1925:951052 kJ/kg
Para la entrada de la bomba 1 se interpola entre las presiones de 5 y 7.5 kPa de la tabla A-5,
132
Apéndice B. Solución completa de los problemas de referencia
para conocer los valores de entalpía y entropía, los cuales ya se han calculado previamente:
h5 = hf(6.5 kPa)
h5 = 156:35 kJ/kg
s5 = sf(6.5 kPa)
s5 = 0:53626 kJ/kg � K
Para la salida de la bomba 1 se tiene:
P6 = 7 MPa
s6i = s5 = 0:53626 kJ/kg � K
9>=>; = h6i
Para encontrar el valor de h6i, se interpola entre las presiones 5 y 10 MPa y entre el rango
de entropía correspondiente de la tabla A-7:
Agua líquida comprimida a 5 MPa y s = 0.53626 kJ/kg � K:
hs =
�(0:53626� 0:2954)
171:95� 88:61
0:5705� 0:2954+ 88:61
�kJ/kg
hs = 161:5771843 kJ/kg
Agua líquida comprimida a 10 MPa y s = 0.53626 kJ/kg � K:
hs =
�(0:53626� 0:2943)
176:37� 93:28
0:5685� 0:2943+ 93:28
�kJ/kg
hs = 166:6004099 kJ/kg
Agua líquida comprimida a 7 MPa y s = 0.53626 kJ/kg � K:
h6i =
�(7� 5)
166:6004099� 161:5771843
10� 5+ 161:5771843
�kJ/kg
h6i = 163:5864745 kJ/kg
h6r = h5 �h5 � h6i�Bom;1
h6r =
�156:35� 156:35� 163:5864745
0:80
�kJ/kg
h6r = 165:3955931 kJ/kg
Para la entrada de la bomba 2 se interpola entre las presiones de 450 y 500 kPa de la
tabla A-5, para conocer los valores de entalpía y entropía, los cuales ya se han calculado
133
previamente:
h7 = hf(480 kPa)
h7 = 633:31 kJ/kg
s7 = sf(480 kPa)
s7 = 1:84444 kJ/kg � K
Para la salida de la bomba 2 se tiene:
P8 = 7 MPa
s8i = s7 = = 1:84444 kJ/kg � K
9>=>; = h8i
Para encontrar el valor de h8i, se interpola entre las presiones 5 y 10 MPa y entre el rango
de entropía correspondiente de la tabla A-7:
Agua líquida comprimida a 5 MPa y s = 1.84444 kJ/kg � K:
hs =
�(1:84444� 1:7344)
678:04� 592:18
1:9374� 1:7344+ 592:18
�kJ/kg
hs = 638:7220414 kJ/kg
Agua líquida comprimida a 10 MPa y s = 1.84444 kJ/kg � K:
hs =
�(1:84444� 1:7293)
681:01� 595:45
1:9316� 1:7293+ 595:45
�kJ/kg
hs = 644:1468779 kJ/kg
Agua líquida comprimida a 7 MPa y s = 1.84444 kJ/kg � K:
h8i =
�(7� 5)
644:1468779� 638:7220414
10� 5+ 638:7220414
�kJ/kg
h8i = 640:891976 kJ/kg
h8r = h7 �h7 � h8i�Bom;2
h8r =
�633:31� 633:31� 640:891976
0:80
�kJ/kg
h8r = 642:78747 kJ/kg
h8r = h9 = h1
Para calcular los �ujos másicos, se realiza el siguiente balance de energía en el calentador de
134
Apéndice B. Solución completa de los problemas de referencia
agua de alimentación cerrado, se desprecian los cambios en la energía cinética y potencial,
no hay trabajo ni transferencia de calor:X( _mh)ent =
X( _mh)sal
_m3h3r + _m6h6r = _m7h7 + _m9h9
_m3 = _m7 y _m6 = _m9
_m3h3r + _m6h6r = _m3h7 + _m6h9
_m3h3r � _m3h7 = _m6h9 � _m6h6r
_m3 = _m6
�h9 � h6rh3r � h7
�Sustituyendo los valores numéricos, se tiene:
_m3 = _m6
�642:78747� 165:3955931
2383:073484� 633:31
�kJ/kgkJ/kg
_m3 = 0:272832232 _m6
_m3 + _m6 = 253 kg/s
0:272832232 _m6 + _m6 = 253 kg/s
_m6 =253 kg/s
1:272832232
_m6 = 198:7693222 kg/s
_m6 = 54:23067783 kg/s
_m3 = _m7 = _m8 y _m6 = _m4 = _m5 = _m9
Para el reactor, se utiliza la ecuación 3.2:
_QRx = _m1(h2 � h1)
_QRx = 253 kg/s(2772:6 kJ/kg� 642:78747 kJ/kg)
_QRx = 538842:5701 kW
_QRx = 538:84 MW
Para la turbina de alta presión, se aplica la ecuación 3.4:
_WTur;AP = _m2(h2 � h3r)
135
_WTur;AP = 253 kg/s(2772:6 kJ/kg� 2383:073484 kJ/kg)
_WTur;AP = 98550:20855 kW
_WTur;AP = 98:55 MW
Para la turbina de baja presión, se sustituye la ecuación 3.4:
_WTur;BP = _m4(h3r � h4r)
_WTur;BP = 198:7693222 kg/s(2383:073484 kJ/kg� 1925:951052 kJ/kg)
_WTur;BP = 90861:91597 kW
_WTur;BP = 90:862 MW
Para el condensador, se utiliza la ecuación 3.6:
_QCon = _m4(h4r � h5)
_QCon = 198:7693222 kg/s(1925:951052 kJ/kg� 156:35 kJ/kg)
_QCon = 351742:4017 kW
_QCon = 351:74 MW
Para la bomba 1, se sustituye la ecuación 3.8:
_WBom;1 = _m5(h6r � h5)
_WBom;1 = 198:7693222 kg/s(165:3955931 kJ/kg� 156:35 kJ/kg)
_WBom;1 = 1797:986409 kW
_WBom;1 = 1:79 MW
Para la bomba 2, se emplea la ecuación 3.8:
_WBom;2 = _m7(h8r � h7)
_WBom;2 = 54:23067783 kg/s(642:78747 kJ/kg� 633:31 kJ/kg)
_WBom;2 = 513:9696222 kW
_WBom;2 = 0:514 MW
La e�ciencia térmica del ciclo se calcula mediante la ecuación 3.11:
�T =_WTur;AP + _WTur;BP � _WBom;1 � _WBom;2
_QRx
136
Apéndice B. Solución completa de los problemas de referencia
�T =
�98:55 + 90:862� 1:79� 0:514
538:84
�MWMW
�T = 0:347242224
�T = 34:7242224%
Se demuestra que existe un incremento del 3.195693904% en comparación con el ciclo
Rankine simple.
�T = 34:7242224%� 31:5285285%
��T = 3:195693904%
137