INSTITUTO TECNOLÓGICO DE MORELIA

151
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

Transcript of INSTITUTO TECNOLÓGICO DE MORELIA

Page 1: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 2: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 3: INSTITUTO TECNOLÓGICO DE MORELIA

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.

Page 4: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 5: INSTITUTO TECNOLÓGICO DE MORELIA

Í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

Page 6: INSTITUTO TECNOLÓGICO DE MORELIA

Í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

Page 7: INSTITUTO TECNOLÓGICO DE MORELIA

Í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

Page 8: INSTITUTO TECNOLÓGICO DE MORELIA

Í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

Page 9: INSTITUTO TECNOLÓGICO DE MORELIA

Í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

Page 10: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 11: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 12: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 13: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 14: INSTITUTO TECNOLÓGICO DE MORELIA

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.

Page 15: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 16: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 17: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 18: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 19: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 20: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 21: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 22: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 23: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 24: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 25: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 26: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 27: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 28: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 29: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 30: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 31: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 32: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 33: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 34: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 35: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 36: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 37: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 38: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 39: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 40: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 41: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 42: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 43: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 44: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 45: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 46: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 47: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 48: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 49: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 50: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 51: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 52: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 53: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 54: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 55: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 56: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 57: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 58: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 59: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 60: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 61: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 62: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 63: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 64: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 65: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 66: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 67: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 68: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 69: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 70: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 71: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 72: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 73: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 74: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 75: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 76: INSTITUTO TECNOLÓGICO DE MORELIA

5.3. Generación del ejecutable

Figura 5.6: Proceso realizado para generar la herramienta SICTER.

62

Page 77: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 78: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 79: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 80: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 81: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 82: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 83: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 84: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 85: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 86: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 87: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 88: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 89: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 90: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 91: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 92: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 93: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 94: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 95: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 96: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 97: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 98: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 99: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 100: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 101: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 102: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 103: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 104: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 105: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 106: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 107: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 108: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 109: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 110: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 111: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 112: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 113: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 114: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 115: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 116: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 117: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 118: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 119: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 120: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 121: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 122: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 123: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 124: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 125: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 126: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 127: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 128: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 129: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 130: INSTITUTO TECNOLÓGICO DE MORELIA

# 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

Page 131: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 132: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 133: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 134: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 135: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 136: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 137: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 138: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 139: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 140: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 141: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 142: INSTITUTO TECNOLÓGICO DE MORELIA

� 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

Page 143: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 144: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 145: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 146: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 147: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 148: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 149: INSTITUTO TECNOLÓGICO DE MORELIA

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

Page 150: INSTITUTO TECNOLÓGICO DE MORELIA

_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

Page 151: INSTITUTO TECNOLÓGICO DE MORELIA

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