Memoria PFC Fouling - Universidad de Sevilla

Anuncio
Proyecto Fin de Carrera
Ingeniería Industrial
Desarrollo de un simulador para el análisis y
control del ensuciamiento en
intercambiadores de Carcasa y Tubos
Autor: María Rodríguez-Solís Sánchez
Tutor: Rocío González Falcón
Dept. de Ingeniería Energética
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2014
i
Proyecto Fin de Carrera
Ingeniería Industrial
Desarrollo de un simulador para el análisis y control del
ensuciamiento en intercambiadores de Carcasa y Tubos
Autor:
María Rodríguez-Solís Sánchez
Tutor:
Dra. Rocío González Falcón
Dept. de Ingeniería Energética
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2014
Proyecto Fin de Carrera: Desarrollo de un simulador para el análisis y control del ensuciamiento en
intercambiadores de Carcasa y Tubos
Autor:
María Rodríguez-Solís Sánchez
Tutor:
Rocío González Falcón
El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:
Presidente:
Vocales:
Secretario:
Acuerdan otorgarle la calificación de:
Sevilla, 2014
El Secretario del Tribunal
A mis padres, por su ilusión y entusiasmo
A mi hermana, Cristina, por su cariño
A Julio, por su apoyo y comprensión
A mi tutora, Rocío González, por su ayuda y dedicación
v
Resumen
El ensuciamiento en intercambiadores de calor da lugar a una reducción en la eficiencia de la
transmisión de calor, un aumento de la caída de presión en el intercambiador y otros problemas
como la corrosión o la obstrucción de los tubos. Así, este fenómeno tiene asociado un coste
económico considerable, tanto por el decremento de la eficiencia, como por las pérdidas de
producción asociadas a las paradas para limpieza y el coste asociado al mantenimiento y la
reparación de los equipos.
La importancia de este proceso ha motivado la realización del presente Proyecto Fin de Carrera,
cuyos objetivos son:
•
Conocer el proceso de ensuciamiento en intercambiadores de calor, sus causas y
consecuencias, y los mecanismos físico-químicos que intervienen en dicho proceso
•
Desarrollar una herramienta informática que permita:
o
Estudiar y comparar los distintos modelos matemáticos que describen el proceso
de ensuciamiento,
o
Utilizar los distintos modelos existentes para simular el proceso de
ensuciamiento en diferentes situaciones.
El primer objetivo se desarrolla en los dos primeros capítulos del Proyecto. En el Capítulo 1, se
presenta un desarrollo teórico sobre el proceso de ensuciamiento en intercambiadores de calor,
los mecanismos que intervienen en el proceso, las consecuencias del fenómeno y las medidas
que se pueden tomar para reducir o eliminar el ensuciamiento. En el Capítulo 2 se plantean los
modelos matemáticos que describen tanto el proceso general de ensuciamiento como los
mecanismos particulares que componen dicho proceso, y se seleccionan los modelos que se van
a integrar en la herramienta informática.
El Capítulo 3 se dedica al desarrollo de la herramienta informática. Tras una breve introducción
al entorno de desarrollo elegido, se explica la programación y el funcionamiento de todos los
componentes de la aplicación.
En el Capítulo 4 se exponen y analizan los resultados obtenidos con la herramienta desarrollada,
incluyendo el ajuste de los modelos elegidos a distintos conjuntos de datos, la comparación y
validación de dichos modelos, el uso de los modelos para simular el proceso de ensuciamiento,
y el análisis de la sensibilidad de los modelos a distintas variables de influencia.
Finalmente, en el Capítulo 5 se recopilan las conclusiones alcanzadas durante el desarrollo del
Proyecto, y se proponen varias aplicaciones prácticas de la herramienta desarrollada y algunas
posibles líneas de desarrollo a partir del trabajo realizado.
vii
Índice
Resumen ......................................................................................................................................... vii
Índice ............................................................................................................................................... ix
Notación ......................................................................................................................................... 11
1
Introducción al fouling .............................................................................................................. 13
1.1. Mecanismos de ensuciamiento ........................................................................................................ 13
1.1.1
Cristalización ......................................................................................................................... 13
1.1.2
Sedimentación ...................................................................................................................... 13
1.1.3
Fouling biológico ................................................................................................................... 14
1.1.4
Reacción química .................................................................................................................. 14
1.1.5
Corrosión............................................................................................................................... 14
1.1.6
Congelación........................................................................................................................... 14
1.2. Efectos del ensuciamiento ................................................................................................................ 15
1.3. Minimización y eliminación del ensuciamiento................................................................................ 15
1.3.1
Medidas preventivas en el diseño ........................................................................................ 15
1.3.2
Minimización del fouling durante la operación del intercambiador .................................... 17
1.3.3
Eliminación del fouling y mantenimiento ............................................................................. 17
1.4. Fouling en función del tipo de intercambiador ................................................................................ 18
2
Modelado matemático.............................................................................................................. 21
2.1. Parámetros representativos del fouling ........................................................................................... 21
2.2. Planteamientos ................................................................................................................................ 22
2.3. Modelos globales ............................................................................................................................. 24
2.3.1
Saleh ...................................................................................................................................... 24
2.3.2
Ebert y Panchal ..................................................................................................................... 24
2.3.3
Polley..................................................................................................................................... 25
2.3.4
Jafari Nasr y Majidi Givi......................................................................................................... 25
2.3.5
Francesco Coletti y Sandro Macchietto ................................................................................ 25
2.3.6
Kern y Seaton ........................................................................................................................ 26
2.3.7
Konak .................................................................................................................................... 26
2.3.8
Epstein................................................................................................................................... 27
2.4. Modelos específicos para los distintos mecanismos de fouling ....................................................... 27
2.4.1
Deposición de partículas ....................................................................................................... 27
2.4.2
Cristalización y formación de incrustaciones ........................................................................ 28
2.4.3
Congelación o solidificación de líquidos ............................................................................... 29
2.4.4
Corrosión............................................................................................................................... 29
2.4.5
Reacción química .................................................................................................................. 29
2.4.6
Crecimiento biológico ........................................................................................................... 31
2.5. Elección de modelos ......................................................................................................................... 33
3
Programación del simulador ...................................................................................................... 35
3.1. Herramientas de desarrollo.............................................................................................................. 35
3.1.1
Matlab ................................................................................................................................... 35
3.1.2
GUIDE .................................................................................................................................... 39
3.1.3
Deployment tool ................................................................................................................... 40
3.2. Estructura de la aplicación ............................................................................................................... 42
3.2.1
Calcular modelo .................................................................................................................... 42
3.2.2
Importar modelo ................................................................................................................... 46
3.2.3
Simular y comparar ............................................................................................................... 46
3.3. Entrada y salida de información....................................................................................................... 48
3.3.1
Importación de datos ............................................................................................................ 48
3.3.2
Recuperación de modelos guardados ................................................................................... 48
3.3.3
Configuración de análisis de sensibilidad.............................................................................. 49
3.3.4
Salidas ................................................................................................................................... 49
3.4. Elementos auxiliares......................................................................................................................... 49
3.4.1
Mensajes de aviso ................................................................................................................. 49
3.4.2
Ayuda .................................................................................................................................... 50
3.4.3
Salir ........................................................................................................................................ 50
4
Análisis de resultados ............................................................................................................... 51
4.1. Datos utilizados ................................................................................................................................ 51
4.2. Cálculo y validación de modelos....................................................................................................... 51
4.2.1
Conjunto de datos Light Australian Crude Oil ....................................................................... 51
4.2.2
Conjunto de datos Light Sour Blend ...................................................................................... 53
4.2.3
Conjunto de datos Cold Lake ................................................................................................ 55
4.3. Simulación de modelos ..................................................................................................................... 56
4.3.1
Ejemplo de simulación .......................................................................................................... 56
4.3.2
Simulación de un modelo con datos correspondientes a otro escenario............................. 62
4.4. Análisis de sensibilidad ..................................................................................................................... 64
4.4.1
Sensibilidad de un modelo a varios parámetros ................................................................... 64
4.4.2
Comparación de análisis de sensibilidad de distintos modelos ............................................ 70
5
Conclusiones y líneas de ampliación .......................................................................................... 73
5.1. Conclusiones ..................................................................................................................................... 73
5.2. Líneas de ampliación ........................................................................................................................ 73
6
Anexos ..................................................................................................................................... 75
6.1. Interfaz gráfica del simulador .......................................................................................................... 75
6.2. Código del programa ........................................................................................................................ 77
6.2.1
Código principal (sim_fouling) .............................................................................................. 77
6.2.2
Función reg_saleh ................................................................................................................. 94
6.2.3
Función reg_ebert ................................................................................................................. 95
6.2.4
Función reg_polley ................................................................................................................ 97
6.2.5
Función simular ..................................................................................................................... 98
6.2.6
Función calc_err_rel ............................................................................................................ 100
6.2.7
Función calc_err_cuad ........................................................................................................ 102
6.3. Datos utilizados para la simulación................................................................................................ 104
6.3.1
Light Australian Crude Oil ................................................................................................... 104
6.3.2
Light Sour Blend .................................................................................................................. 105
6.3.3
Cold Lake ............................................................................................................................. 106
Referencias ................................................................................................................................... 107
7
Índice de Tablas ...................................................................................................................... 109
8
Índice de Figuras ..................................................................................................................... 111
Notación
Re
Número de Reynolds
u
Velocidad del fluido en el interior de los tubos
D
Diámetro de los tubos
ν
Viscosidad cinemática del fluido
Q
Caudal
Resistencia térmica asociada al ensuciamiento
Coeficientes de los modelos matemáticos
p
Presión en los tubos
E
Energía de activación
R
Constante universal de los gases
Temperatura de película
Esfuerzo cortante en la pared del tubo
Densidad del fluido
Temperatura de la masa fluida
f
µ
Factor de fricción
Temperatura superficial de los tubos
Viscosidad dinámica del fluido
12
Introducción al fouling
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
13
1 INTRODUCCIÓN AL FOULING
El término fouling se refiere a la acumulación de residuos y sedimentos sobre la superficie de
intercambio de calor durante el funcionamiento de un intercambiador de calor. Esta
acumulación de material tiene como consecuencias una reducción de la transferencia de calor,
la obstrucción del flujo y un incremento de la caída de presión en el intercambiador [1]. En
definitiva, el fouling reduce la eficiencia de la transmisión de calor, lo cual puede dar lugar a
otros problemas en la instalación o planta, y tiene, además, un costo asociado considerable.
Los costes asociados al ensuciamiento de intercambiadores de calor incluyen tanto las pérdidas
de producción debidas al decremento de la eficiencia y a las paradas, planeadas o imprevistas,
como los costes de mantenimiento resultantes de la limpieza química y/o mecánica o de la
sustitución del equipamiento corroído o atascado. Según Pritchard y Thackery (Harwell
Laboratories), en torno al 15% de los costes de mantenimiento de una planta de proceso pueden
ser atribuidos a intercambiadores de calor y calderas. Afirman que, probablemente, el coste que
supone la mitad de dicho porcentaje sea a causa del fouling [2].
Debido al impacto económico mencionado, es importante conocer el proceso para tomar
medidas preventivas en el diseño y planificar la limpieza, seleccionando el método más
adecuado.
1.1. Mecanismos de ensuciamiento
Existen varios mecanismos básicos por los que se pueden crear depósitos de fouling. Cada uno
depende de varias variables, y se pueden encontrar combinados en una misma aplicación:
1.1.1
Cristalización
Algunas sales comunes en aguas naturales (en su mayor parte sulfato de calcio) ven reducida su
solubilidad al aumentar la temperatura del agua. Si el fluido entra en contacto con una pared
que está a una temperatura superior a la temperatura de saturación de la sal disuelta, dicha sal
cristalizará. La nucleación comenzará, tras un periodo de inducción, en lugares favorables como
grietas y fisuras. El proceso de acumulación continuará siempre que la superficie en contacto
con el fluido tenga una temperatura por encima de la de saturación. Las incrustaciones
resultantes son fuertes y adherentes, por lo que serán necesarios fuertes tratamientos mecánicos
o químicos para retirarlas [3].
1.1.2
Sedimentación
Muchos fluidos, entre ellos el agua de refrigeración, contienen partículas en suspensión que se
pueden depositar en la superficie de transferencia de calor. Este tipo de depósito no es
especialmente adherente, y es autolimitante: al aumentar su grosor, tiende a desprenderse
(debido a la reducción del área de paso efectiva y el consiguiente aumento de presión de la
corriente fluida). De este modo, el grosor del depósito, con el tiempo, tiende a un valor
Introducción al fouling
14
asintótico [3].
El ensuciamiento por sedimentación depende en gran medida de la velocidad del fluido y, en
menor medida, de la temperatura de la pared. Sin embargo, las altas temperaturas pueden
provocar un aumento de la adhesión del fluido a la pared, dificultando su eliminación [2].
La adhesión también depende de las propiedades superficiales del material de depósito y de la
rugosidad y la “mojabilidad” de la superficie donde se va a dar el ensuciamiento. Aunque las
superficies lisas pueden retrasar el ensuciamiento, su rugosidad aumenta al depositarse
partículas en ellas, por lo que habrá que tener en cuenta esta rugosidad. Por otro lado, la
deposición de partículas muy finas en superficies inicialmente rugosas puede tender a rellenar
los huecos, suavizándolas [2].
1.1.3
Fouling biológico
Algunas corrientes de proceso y aguas de refrigeración contienen organismos, que van desde
algas y limos microbianos hasta crustáceos y moluscos. La resistencia térmica asociada a estos
organismos puede ser considerable, incluso para capas de depósito muy finas.
Cuando los organismos presentes tienen forma macroscópica, el principal problema ya no es la
reducción de la transferencia de calor, sino la obstrucción de los conductos.
Las soluciones más comunes para este tipo de fouling son: eliminar los organismos por
cloración, ya sea continua o cloraciones intermitentes, o impedir el asentamiento de los
organismos en la superficie de transferencia de calor seleccionando aleaciones con alto
contenido en cobre para los tubos (por ejemplo, C70600) [3].
1.1.4
Reacción química
Otra fuente común de fouling en el lado del fluido de proceso son las reacciones químicas, que
pueden dar lugar a una fase sólida en la superficie de transmisión de calor, o cerca de ella.
Algunos ejemplos son la formación de depósitos de carbono (denominados coque) debido a la
degradación térmica de algún componente de la corriente de proceso, o la formación de una
capa dura de plástico de bajo grado o goma sintética debido a un proceso de polimerización. En
general, estos depósitos son muy tenaces, y pueden requerir medidas tan extremas como el
quemado del fouling para devolver el intercambiador a un estado de operación satisfactorio [3].
1.1.5
Corrosión
Las impurezas presentes en el fluido, como el sulfuro de hidrógeno, el amoniaco y el cloruro de
hidrógeno, pueden contribuir en gran medida al proceso de corrosión [2].
La corrosión puede destruir zonas de la superficie de los intercambiadores de calor. Sin
embargo, los productos de corrosión pueden ser esenciales para proteger el metal restante de
más corrosión. En este caso, cualquier intento de limpiar la superficie sólo provocará una
corrosión acelerada y el fallo del intercambiador [3].
1.1.6
Congelación
El fouling por congelación se produce como resultado de un subenfriamiento en la superficie de
transferencia de calor, dando lugar a la solidificación de algunos componentes del fluido [1].
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
15
1.2. Efectos del ensuciamiento
El fouling consiste en la formación de un depósito esencialmente sólido sobre la superficie, a
través del cual el calor debe ser transferido por conducción. Conocidos el grosor y la
conductividad térmica del fouling, el problema de transferencia de calor puede ser tratado de
forma sencilla incluyendo una resistencia de conducción en serie con la asociada a la pared del
tubo. Sin embargo, estos valores no suelen ser conocidos, por lo que en el cálculo del coeficiente
global de transferencia de calor, la resistencia adicional se considera en forma de factor de
ensuciamiento [2].
En un intercambiador de carcasa y tubos, el efecto del ensuciamiento en el interior de los tubos
no suele causar especial problema si en el diseño se han previsto la reducción de la
transferencia de calor y el pequeño incremento de la resistencia al flujo. Sin embargo, el
ensuciamiento fuera de tubos con aletas puede ser más complicado, ya que en situaciones
extremas es posible que el espesor de la capa de suciedad llegue a impedir el flujo entre las
aletas. Por esto, los tubos con muchas aletas normalmente se utilizan sólo con aire y otros gases
relativamente limpios y a baja presión. El ensuciamiento es en mayor parte deposición de
polvo, que se puede eliminar fácilmente mediante soplado [3].
Además de la reducción de la eficiencia de la transferencia de calor, el fouling, al reducir el área
efectiva de paso y aumentar la velocidad del fluido, provoca un aumento en la caída de presión
en el intercambiador.
Todo esto tiene, como se comentó al principio del capítulo, un impacto económico considerable:
los costes de limpieza se estiman entre 40000 y 50000$ por intercambiador y limpieza [2].
1.3. Minimización y eliminación del ensuciamiento
Existen distintos tipos de medidas y estrategias para reducir el fouling tanto en el diseño como
en la operación del intercambiador, además de los procedimientos de limpieza para su
eliminación:
1.3.1
Medidas preventivas en el diseño
En el diseño del intercambiador se tendrán en cuenta consideraciones para la minimización del
fouling relacionadas tanto con el diseño geométrico del mismo como con la elección de
materiales. Además, se utilizarán factores de seguridad (factores de ensuciamiento) para el
dimensionado del intercambiador, y se tomarán medidas para facilitar en lo posible las futuras
limpiezas del dispositivo.
Los niveles de turbulencia altos reducen la probabilidad de deposición de sedimentos en la
superficie del intercambiador, y favorecen el desprendimiento de los residuos ya depositados.
Por ello, resulta conveniente el uso de velocidades altas y uniformes en todo el intercambiador,
minimizando el número de giros a baja velocidad y zonas de remanso [1].
Por este mismo motivo se recomienda situar el fluido más “sucio” del lado de los tubos, donde
hay menor probabilidad de que aparezcan zonas de remanso, y se dispone de un mayor control
de la velocidad. Además, esta es la zona del intercambiador más fácil de limpiar.
Aunque, en principio, las superficies lisas dificultan el ensuciamiento (debido a la escasez de
poros, grietas y otras zonas favorables para la nucleación del depósito), se ha demostrado que el
uso de tubos corrugados reduce los efectos de al menos dos de los tipos de ensuciamiento más
Introducción al fouling
16
frecuentes [2]:
•
Ensuciamiento por deposición viscosa: se genera un mayor nivel de turbulencia a bajas
velocidades.
•
Ensuciamiento químico: el aumento de los coeficientes de transferencia de calor
producido por el tubo corrugado hace que la temperatura de la pared sea más cercana a
la del fluido, evitando así la degradación térmica de los componentes del mismo.
Otro aspecto a tener en cuenta es la orientación del intercambiador, pues puede facilitar la
limpieza del mismo, o reducir el ensuciamiento por efecto de la gravedad si el intercambiador
se dispone en posición vertical [2].
La selección de materiales se verá afectada por el tipo de fouling más probable (y, por tanto, el
que se desea evitar):
•
Para minimizar el fouling de tipo corrosivo se deberá elegir un material que no se corroa
fácilmente ni produzca grandes depósitos de los productos de corrosión, por ejemplo,
acero inoxidable o aleaciones de titanio o níquel. Si se planea hacer las limpiezas de tipo
químico, el material seleccionado también deberá ser resistente al ataque de las
soluciones de limpieza [2].
•
Para minimizar el fouling biológico se seleccionarán aleaciones de cobre como 90-10
cobre-níquel o 70-30 cobre-níquel. En general, las aleaciones con un contenido de cobre
superior al 70% son efectivas en la prevención o minimización de este tipo de fouling.
Sin embargo, conviene tener en cuenta que no se debe utilizar cobre en intercambiadores
de alta presión, y que existen medidas medioambientales que limitan su uso [3].
Además, si se va a emplear una velocidad de flujo alta como medida para controlar o minimizar
el fouling, se deberá considerar la posible erosión del metal y elegir materiales resistentes a ésta,
como el titanio o los aceros inoxidables [3]. También será necesario restringir la velocidad y/o la
duración de los periodos de empleo de altas velocidades para que el tubo tenga una vida útil
aceptable.
A la hora de diseñar el intercambiador no sólo habrá que elegir el material de construcción,
también el tratamiento superficial. Existe una gran variedad de tratamientos que contribuyen a
la minimización del fouling: ionización, revestimientos, radiación ultravioleta, acústica o
eléctrica y tratamiento con plásticos, vidrios o polímeros [2].
El efecto del fouling también se tendrá en cuenta a la hora de dimensionar el equipo, dotando al
intercambiador de una capacidad extra para compensar la pérdida de rendimiento, con el
objetivo de cumplir las condiciones de diseño durante todo el periodo transcurrido entre
paradas para limpieza. A efectos de cálculo, esto se traduce en el uso de factores de
ensuciamiento, que a menudo dan lugar a un aumento de la superficie del intercambiador.
Con la intención de hacer un diseño más seguro, se podría especificar un factor de
ensuciamiento mayor del necesario, lo cual resultaría contraproducente. Especificar un factor de
ensuciamiento demasiado grande dará lugar a un área de paso mayor y, por tanto, velocidades
más bajas, que propiciarán el ensuciamiento. Además, un intercambiador sobredimensionado
operando limpio tendrá un desempeño mejor del esperado, y una posible reacción sería reducir
el flujo de agua refrigerante, lo que reduciría la velocidad, aumentando el ensuciamiento [2].
Por último, el diseño debe considerar qué disposiciones mecánicas son necesarias para facilitar
el proceso de limpieza.
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
1.3.2
17
Minimización del fouling durante la operación del intercambiador
Algunas técnicas para prevenir o mitigar el fouling durante la operación del intercambiador
son: evitar el contacto de la alimentación con aire u oxígeno mediante un baño en nitrógeno, el
tratamiento previo de la alimentación, el uso de “anti-foulants” y aplicación de estrategias
mecánicas de mitigación continua o en línea (sin necesidad de detener el funcionamiento del
equipo) [2].
El tratamiento previo de la alimentación incluye procedimientos tales como limpieza cáustica,
desalación, filtrado o sedimentación. Tanto la limpieza cáustica, que elimina los compuestos de
sulfuro, como la desalación, que reduce la contaminación metálica, reducen la polimerización
[2].
El diseño de un filtro dependería de los parámetros del sistema (temperatura, viscosidad,
presión, concentración de sólidos, distribución de los tamaños de partículas y compatibilidad
del fluido con el material del filtro). Sin embargo, no siempre es conveniente utilizar esta
medida. El filtro sólo elimina las partículas más grandes y, además, requiere mantenimiento,
por lo que hay que considerar la posibilidad de que el coste del filtrado sea mayor que el que
provoca el ensuciamiento [2].
Algunos ejemplos de estrategias y dispositivos para la mitigación y reducción continua del
fouling son [2]:
•
Inversión periódica del sentido del flujo para retirar depósitos poco adheridos
•
Inyección intermitente de aire
•
Aumento de la velocidad de flujo o del nivel de turbulencia. Para aumentar la retirada
de depósitos de suciedad, la velocidad en los tubos debería ser >2 m/s, y ~1 m/s en el
lado de la carcasa.
•
Utilización de bolas o cepillos, haciéndolos circular por el interior de los tubos (Sistema
Amertap, Sistema M.A.N®)
1.3.3
Eliminación del fouling y mantenimiento
A pesar de las medidas de control y mantenimiento, el proceso de fouling se produce, por lo
que es necesaria la limpieza periódica del intercambiador para su eliminación. Esto requiere
paradas después de un período de baja eficiencia, lo cual tiene asociado un alto coste
económico. Las principales técnicas utilizadas son las limpiezas química y mecánica, aunque
hay otros procedimientos útiles para aplicaciones específicas, como la limpieza ultrasónica y la
abrasiva, o tratamientos térmicos en caso de ensuciamiento biológico [2].
La limpieza química es la técnica más conveniente (en los casos en los que puede ser utilizada),
ya que no exige la retirada del equipo o la extracción de los tubos [3].
En cuanto a la limpieza mecánica, existen varías técnicas. El raspado o cepillado rotativo está
limitado a las superficies a las que se puede acceder con la herramienta de raspado. En el lado
de la carcasa, este problema se puede resolver utilizando grandes espacios entre los tubos. El
uso de chorros de agua a gran velocidad también es muy común, tanto dentro como fuera de
los tubos, aunque en el lado de la carcasa no será muy efectivo para grandes bancos de tubos
[3].
En situaciones en las que es muy rentable mantener un alto grado de limpieza, por ejemplo,
condensadores de grandes plantas de potencia, es posible instalar un sistema para la limpieza
continua de las superficies interiores del tubo:
Introducción al fouling
18
•
El Sistema Amertap® utiliza bolas de goma que son constantemente recirculadas a
través de los tubos de forma aleatoria. En su recorrido por los tubos, las bolas eliminan
las incrustaciones y la acumulación de productos de corrosión. Una cesta en la tubería
de salida recoge las bolas, y una bomba las reinyecta en el flujo de agua de entrada. Las
bolas que tienen un abrasivo fijado a la superficie exterior debe utilizarse con gran
precaución, ya que la acción abrasiva continuada puede acortar la vida del tubo debido
a la eliminación de la película protectora formada en la corrosión del cobre y las
aleaciones de cobre [3].
•
El Sistema M.A.N.® consiste en la limpieza mediante el paso de cepillos por los tubos.
Se instalan cestas en ambos extremos de cada tubo, y se coloca el cepillo en una de ellas.
Periódicamente se invierte el sentido del flujo en los tubos, forzando el paso de los
cepillos a través de los tubos hasta la otra cesta. Tras esto, se restaura la dirección
normal de flujo. El cepillo vuelve a la cesta en el lado de descarga del tubo. Como el
sistema es relativamente simple, se puede utilizar en intercambiadores de cualquier
tamaño, siempre que sea posible invertir el sentido del flujo [3].
Tabla 1-1. Tipos de fouling y sus tratamientos
Tipo de fouling
Solución común
Cristalización
Reducir la temperatura de la
superficie de transferencia de
calor
Sedimentación
Control de velocidad
Biológico
Selección de material
Químico
Reducir la diferencia de
temperatura entre el fluido y la
superficie de transferencia de
calor
Corrosión
Selección del material
Congelación
Reducir la diferencia de
temperatura entre el fluido y la
superficie de transferencia de
calor
1.4. Fouling en función del tipo de intercambiador
El ensuciamiento depende del tipo de intercambiador y de la clase de fluido de trabajo. Debido
a la variedad de diseños, composiciones y fluidos, cada tipo de intercambiador sufrirá el
ensuciamiento de una forma distinta. En un intercambiador de carcasa y tubo, el lado de los
tubos suele ser fácil de limpiar, pero el de la carcasa puede ser de más difícil acceso. Los
intercambiadores de placas se pueden desmontar para limpiarlos por cambas caras. Algunos
intercambiadores se pueden limpiar cada noche cuando el equipo no está en uso, mientras otros
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
19
sólo se pueden limpiar una vez cada varios meses o años. Para reducir la cantidad de
ensuciamiento en un intercambiador, el equipo debería limpiarse con la mayor frecuencia
posible [1].
Si se prevé que un intercambiador de placas va a sufrir ensuciamiento y el espacio lo permite, se
pueden añadir placas extra para mejorar su rendimiento [1].
Tabla 1-2. Tipos de intercambiadores y fouling asociado
Tipo de intercambiador
Riesgo de fouling
Efecto del fouling
Carcasa y tubo
Muy bajo
Bajo
Placas
Muy bajo
Alto
Espiral
Alto
Alto
Aerorrefrigerado
Bajo
Muy bajo
Superficie aleteada
Bajo
Muy bajo
Doble tubo
Medio
Medio
Grafito
Medio
Bajo
Placas corrugadas
Muy alto
Alto
20
Introducción al fouling
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
21
2 MODELADO MATEMÁTICO
Como se ha visto en el capítulo 1, el fouling tiene un importante impacto económico, por lo que
será deseable tomar medidas para minimizar su efecto. Conocer el proceso de fouling y el efecto
de las posibles medidas es fundamental para tomar una buena decisión a la hora de programar
las paradas para limpieza del intercambiador o elegir otras posibles actuaciones para eliminar o
minimizar el fouling. El propósito de un modelo de fouling es asistir al diseñador o al operador
en la valoración del impacto del fouling en el rendimiento del intercambiador de calor, dadas
unas determinadas condiciones de operación [4].
2.1. Parámetros representativos del fouling
Existen varios parámetros para cuantificar el fouling, su evolución o su efecto: el espesor del
depósito (medido en ), la porosidad (%), el factor de ensuciamiento, la tasa de ensuciamiento
o incluso la variación del coeficiente de transferencia de calor.
La tasa de ensuciamiento es la carga media de superficie de depósitos por unidad de área en
una unidad de tiempo [2].
El factor de ensuciamiento representa la cantidad de ensuciamiento que se dará en un
intercambiador en unas determinadas condiciones, y se considera como una resistencia térmica
en serie con las demás a la hora de calcular la resistencia térmica total (o su inversa, el
coeficiente de transferencia total). No existe un cálculo directo para determinar el factor de
ensuciamiento correspondiente a un fluido determinado en una aplicación particular, aunque
existen unas directrices para hallar un factor de ensuciamiento apropiado [1]. Existen métodos
(empíricos o de otro tipo) para predecir la tasa de ensuciamiento en intercambiadores o estimar
el factor de ensuciamiento a utilizar en los cálculos de transferencia de calor. Además, la
Tubular Exchanger Manufacturers Association (TEMA) proporciona una compilación de los
factores de ensuciamiento más comunes, para diversos fluidos y aplicaciones:
Tabla 2-1: Factores de ensuciamiento más comunes [1]
Fluido
Resistencia de fouling ( )
Aceite de transformador
0.001
Vapor
0.0005
Aire comprimido
0.001
Fluido hidráulico
0.001
Soluciones de glicol
0.002
Aceite lubricante refinado
0.001
Modelado aeáico
22
0.0005 (hasta 125 ) 0.001 (más de 125 )
Agua de mar
Agua de torre de refrigeración
Agua de río (mínimo) (velocidad del tubo
3 fps)
Agua de río (mínimo) (velocidad del tubo ! 3 fps)
Agua de río (medio) (velocidad del tubo
3 fps)
Agua de río (medio) (velocidad del tubo ! 3 fps)
0.001 (hasta 125 ) 0.002 (más de 125 )
0.002 (hasta 125 ) 0.003 (más de 125 )
0.001 (hasta 125 ) 0.002 (más de 125 )
0.003 (hasta 125 ) 0.004 (más de 125 )
0.002 (hasta 125 ) 0.003 (más de 125 )
Agua de río (turbia o limosa) (velocidad del tubo 0.003 (hasta 125 ) 0.004 (más de 125 )
3 fps)
Agua de río (turbia o limosa) (velocidad del tubo 0.002 (hasta 125 ) 0.003 (más de 125 )
! 3 fps)
2.2. Planteamientos
Existen diversas formas de plantear un modelo de ensuciamiento: basado en los efectos,
modelado de cada uno de los procesos que contribuyen al ensuciamiento (biofouling, corrosión,
etc.), o desarrollo de un modelo genérico, en el que se expresa el ensuciamiento como una
función de las variables que influyen en él (como la temperatura o la velocidad).
Un modelo basado en los efectos del fouling es el de Bott y Walker [4], que expresa la variación
del coeficiente de transferencia de calor como suma de las consecuencias del fouling:
•
Adición de la resistencia a la transmisión de calor de la capa de ensuciamiento
•
Reducción de la velocidad: el aumento del grosor de la capa de ensuciamiento conlleva
una reducción del área de paso efectiva. Así, para el mismo caudal, aumenta la
velocidad y, por tanto, el número de Reynolds:
"# $ % &
() &
()
$
$
' *& ' *&'
(1)
/0#123 ) $ 45# 6 4373 8 & 9 "# :
•
Variación del nivel de turbulencia cerca de la superficie debido al cambio en su
rugosidad (que podría aumentar o disminuir). Si la rugosidad aumenta, el nivel de
turbulencia también lo hace, lo que favorece la transferencia de calor.
Sin embargo, este planteamiento requiere la inclusión de un conjunto extensivo de condiciones
en un modelo matemático, lo cual puede ser realmente difícil, o incluso imposible.
Para la construcción de modelos globales se consideran distintos posibles tipos de
comportamiento de la tasa de ensuciamiento, que dependerán de los mecanismos de
ensuciamiento y de las condiciones del problema [2]:
1. Comportamiento lineal: se considera una tasa de ensuciamiento estable, por lo que la
resistencia de ensuciamiento y el grosor del depósito aumentan linealmente con el
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
23
tiempo. Es el tipo más común, y ocurre cuando la temperatura del depósito en contacto
con el fluido permanece constante.
Se puede añadir a este modelo una condición umbral, identificando una combinación de
temperatura y velocidad bajo la cual la tasa de ensuciamiento es despreciable.
2. Tendencia decreciente: la tasa de ensuciamiento decae con el tiempo, aunque sin caer
nunca por debajo de un determinado valor mínimo, por lo que el grosor del depósito no
llega a alcanzar un valor constante.
3. Comportamiento acelerado: la tasa de ensuciamiento aumenta con el tiempo. Esto
ocurre cuando los depósitos son fuertes y adherentes, y la “autolimpieza” y el
envejecimiento son despreciables, así como cuando el ensuciamiento incrementa la
rugosidad de la superficie, o cuando la superficie del depósito es más propensa
químicamente al ensuciamiento que el material que tiene debajo.
4. Comportamiento asintótico: la tasa de ensuciamiento decrece con el tiempo hasta que la
tasa de deposición iguala a la de eliminación, momento en el que la tasa de
ensuciamiento es nula y el grosor del depósito se mantiene constante.
5. Dientes de sierra: representa un comportamiento cíclico de formación y
desprendimiento de la capa de ensuciamiento. Esta variación periódica puede ser
debida a pulsos de presión, desconchamiento o retención de aire en el interior de los
depósitos superficiales, y suele darse durante paradas, arranques y otros periodos de
funcionamiento transitorio.
Figura 2-1. Tipos de comportamiento de la tasa de
ensuciamiento
En principio, debería considerarse un periodo de iniciación antes de que la tasa de
ensuciamiento comience a crecer o decrecer [4]. Sin embargo, la mayoría de los modelos
matemáticos no lo tienen en cuenta, cometiendo un error mínimo, ya que:
Modelado aeáico
24
•
En muchos casos, el tiempo de iniciación es despreciable.
•
Cuando el periodo de iniciación es mayor, la tasa de ensuciamiento también suele ser
menor, por lo que las limpiezas del intercambiador se realizan tras grandes periodos de
tiempo. De esta forma, el periodo de iniciación representa una pequeña fracción del ciclo
de trabajo.
2.3. Modelos globales
Los modelos globales establecen una relación general entre la tasa de ensuciamiento y las
magnitudes físicas (o parámetros adimensionales obtenidos a partir de éstas) de influencia (que
varían de un modelo a otro), sin describir cada uno de los procesos físicos y químicos que
tienen lugar. En estos modelos sólo se propone la existencia de dicha relación, siendo necesario
calcular los coeficientes que ponderan cada término de la ecuación para cada caso particular.
2.3.1
Saleh
El modelo de Saleh [5] considera la evolución de la resistencia de fouling como una función de
la presión, la velocidad del flujo y la temperatura de película. Se trata de un modelo de tasa de
ensuciamiento creciente y no asintótica, ya que no incluye un término negativo representante
de la retirada del fouling debido al aumento de la presión en el conducto, consecuencia de la
reducción del área de paso efectiva al aumentar el grosor de la capa de ensuciamiento.
2";
D
$ < => % ? #@A BC
F
25
" E;
Los coeficientes <, H y I servirán para ajustar el modelo a la aplicación concreta.
2.3.2
(2)
Ebert y Panchal
El modelo de Ebert y Panchal (1997) incluye un término negativo, estableciendo el efecto de la
retirada del fouling como una función de la tensión cortante. La componente positiva se define
como una función de la temperatura de película y números adimensionales como el número de
Reynolds y el de Prandtl.
Este modelo se ha encontrado formulado de distintas formas (aunque similares) en la
bibliografía [2] [5]:
2";
D
$ < "# > =J K #@A BC
F C I LM
25
" E;
(3)
2";
D
$ < "# > #@A BC
F C I LM
25
" E;
(()
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
25
Donde
LM $
Siendo
2.3.3
(5)
O
P % 2
1S
ATJT OU%V3 UT701TJ
"#
]
O$R
WX2S(
WXWW35 Y ZX[ ATJT OU%V3 5%J\%U#153
"#
(S)
Polley
El modelo de Polley [5], similar al de Ebert y Panchal, considera el término negativo como una
función del número de Reynolds, en vez de la tensión cortante:
2";
D
$ < "# ^ZX_ =J ^ZX`` #@A aC
b C I "# ZX_
25
" EM
Donde EM es la temperatura de la pared del tubo.
2.3.4
(7)
Jafari Nasr y Majidi Givi
Jafari Nasr y Majidi Givi proponen un modelo similar al de Polley, basado en los resultados
experimentales de Saleh, y probado con otros conjuntos de datos. Los valores de los parámetros
se ajustan a los datos obtenidos para un petróleo crudo ligero de densidad 0.792 g/ml,
viscosidad 1.969 Mpa y un porcentaje en peso de asfaltenos del 0.05% [5]:
2";
D
$ < "# > #@A BC
F C I "# ZX[
25
" E;
(8)
E; $ Ee Y WX55 (Ef C Ee )
(9)
Donde E; es la temperatura de película, que se calcula como:
Siendo Ef la temperatura de la superficie y Ee la temperatura de la masa fluida.
2.3.5
Francesco Coletti y Sandro Macchietto
Se trata de un modelo distribuido, propuesto para intercambiadores tubulares multipaso que
sufren de fouling causado por petróleo crudo en el lado de los tubos. Las ecuaciones que lo
componen son [6]:
•
Lado de la carcasa:
yz
h
h
h
hEf
1
iPf 4jf Ef k $ C20Jf iPf 4jf Ef %f k Y amf
b Y o =pq rf iEf C Esq ]tuvwx k
h5
h5
hl
hl
nf
qv{
(1W)
Modelado aeáico
26
•
Pared del tubo:
Ps |js hEsq 1 hEsq h Esq
$
Y
ms
h5
J hJ
hJ •
2.3.6
(11)
Lado del tubo:
h
iP 4 E n
k$
h5 q jq q ;}~Mq
h
h
hEq
$ C20Jq iPq 4jq Eq %q n;}~Mq k Y amq n;}~Mq
b Y =q rq E€q ]tuvw‚ƒ„ C Eq …
hl
hl
hl
(12)
Kern y Seaton
Kern y Seaton proponen un modelo asintótico, sin periodo de iniciación, para la evolución de la
resistencia de fouling [7]:
";† $ ";‡ i1 C #@A(H 5)k
(13)
Donde ";‡ y H dependen del tipo de fouling y de las condiciones de operación por lo que, en
general, sólo se puede hallar experimentalmente.
Se tienen las siguientes particularizaciones para flujos tubular y turbulento (combinando, en
este último caso, el modelo con la relación de Blasius):
•
Flujo tubular:
2@;
$ ˆ{ 4 ‰ Š C ˆ L @;†
25
(1()
Donde
L $ O P %
•
Flujo turbulento:
@;‡ $ B2 ˆ{ 2.3.7
(15)
4 ‰ * ‹ P U[ Š`
F
ˆ
ˆ; (ŒA‡ )[
(1S)
Konak
Este modelo [4], también asintótico, considera como fuerza motriz del desarrollo del
ensuciamiento la diferencia entre la resistencia de ensuciamiento asintótica y la resistencia en t:
2";†
q
$ ˆ i";‡ C ";† k
25
(17)
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
De donde tenemos que:
2.3.8
Epstein
BU C ";† F
Ž
";‡

Ž

}^q
q^{
C U $ ˆ ";‡
5 ATJT 1 ‘ U
";†
CU1 B1 C
F $ ˆ 5 ATJT 1 $ U
";‡
]
27
(18)
El modelo propuesto por Epstein [4] considera una tasa de deposición de ensuciamiento
decreciente:
2";
ˆ
q“{
$
C "’q“{ $ ˆ (1 C 1) 5
q 9 i"’ Y "; k
25
i"’ Y "; k
(19)
Donde
"’ $
1
1
$ ”’ <
(2W)
siendo ”’ el coeficiente de transferencia de calor para “condiciones limpias” y < el coeficiente
de transferencia de calor superficial.
2.4. Modelos específicos para los distintos mecanismos de fouling
Los modelos específicos describen cada uno de los procesos físicos o químicos que dan lugar al
fouling. Aunque constituyen una descripción más precisa de la realidad que los modelos
globales, también necesitan más información, medidas de magnitudes que no siempre van a ser
accesibles. Además, el uso de estos modelos se complica cuando aparecen combinados (en la
mayoría de los casos), ya que los distintos procesos pueden estar relacionados entre sí (por
ejemplo, una reacción química podría dar lugar a un producto corrosivo con el que no se
contaba inicialmente).
2.4.1
Deposición de partículas
Este proceso está descrito por el modelo de Watkinson y Epstein [8], desarrollado sobre el
modelo de Kern y Seaton:
27
$ •– C •w $ ˆ† (4e C 4M ) $ ˆ† 4e (C=)
25
(21)
En el que = es la probabilidad de que la partícula de fouling se adhiera a la pared, y 4e y 4M son
las concentraciones de partículas en la masa fluida y en la pared, respectivamente. Estas
concentraciones se encuentran relacionadas mediante la probabilidad de adhesión:
4M $ 4e (1 C =)
(22)
Modelado aeáico
28
2.4.2
Cristalización y formación de incrustaciones
Se han desarrollado varios modelos para describir este fenómeno [9]:
2.4.2.1
Hasson y Bott
Considera un tiempo de inducción 5— aunque, como se justificó anteriormente, éste es
despreciable en la mayoría de los procesos industriales:
"; $ ";‡ ˜1 C #@A a
5 C 5—
b™
5’
(23)
Con:
";‡ $ B
27;
1
›œ
FB
Fa b
25
n š P; š mf
›
›œ
›
(25)
ˆ{
D
#@A aC
b i1 C #@A(Cˆ š 5)k
ˆ
" š Ef
(2S)
5’ $
Donde P; es la densidad del depósito, ›œ el parámetro de adhesión y › el esfuerzo cortante.
2.4.2.2
(2()
Taborek
La ecuación de este modelo es:
"; $
Donde Ef es la temperatura de la superficie, y las constantes ˆ{ y ˆ se calculan como sigue:
ˆ{ $ 4{ =— q
ˆ $ 4 L mf
ž
(27)
(28)
Los parámetros que aparecen en estas ecuaciones representan:
=— Ÿ AJ3\T\0U02T2 2# 2#A3 040¡1 2# 014J% 5T4031# Ÿ OT453J 2# 4TU02T2 2#U T‹%T
]
LŸ # O%#Jl3 43J5T15#
 m Ÿ 4312%450¢02T2 5£J704T 2# UT 014J% 5T40¡1
f
Ž
 žŸ OT453J 2# J# 0 5#140T 2# UT 014J% 5T40¡1

Ž
2.4.2.3
Hasson
El modelo es:
27;
D
$ ˆ ‰ n =  #@A aC
b
25
" Ef
(29)
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
29
Donde n representa el área donde se produce la cristalización, = la probabilidad de adhesión, y
 es un parámetro empírico que caracteriza la composición del agua y la fuerza impulsora de la
sobresaturación.
2.4.3
Congelación o solidificación de líquidos
El modelo para este proceso es [10]:
@f $
mf E; C E’
@¥ 1
C mf a Y b
<¤ E¤ C E;
m¥ < ’
(3W)
Donde mf y m¥ son las conductividades térmicas de la capa helada y del metal, respectivamente.
<¤ y <’ son los coeficientes de transferencia de calor entre el fluido caliente y la capa congelada,
y entre el metal y el refrigerante, respectivamente. @¥ es el espesor de la pared metálica y E; , la
temperatura de congelación.
De aquí se tiene que la temperatura mínima para evitar este tipo de fouling es:
E¤¥¦q $ E; Y a
2.4.4
E; C E’
1
b
@¥ 1
<¤
Y
m¥ < ’
(31)
Corrosión
Este modelo [11] describe la dependencia de la tasa de corrosión J’ con la concentración de
oxígeno 4§~ en la masa fluida:
J’ $ ˆ{ &Z¨ P¥ 4§©¨
7’ C ª P¥ Y &Z¨ P¥
ˆ©¨
(32)
Se explica a continuación el significado de los parámetros que intervienen en el modelo:
&Z¨ $ 20O% 0¢02T2 2#U 3@«‹#13
P¥ $ 2#1 02T2 2#U 7#5TU
7’ $ 7T T 2# 7#5TU A#J2023 A3J UT 43JJ3 0¡1 (A3J %102T2 2# áJ#T)]

ª $ # A# 3J 2# 7T5#J0TU J#50JT23 2# UT %A#JO040#
Ž
ˆ

©¨ $ 43#O040#15# 2# 5JT1 O#J#140T 2# 7T T 2# 3@«‹#13

Ž
2.4.5
Reacción química
Existen varios modelos referentes a este proceso [12]:
2.4.5.1
Atkin
Referido a procesos petrolíferos, propone el cálculo de la resistencia de ensuciamiento "; en
función del coeficiente de transferencia de calor <¦ en el interior del tubo, y las resistencias
térmicas debidas a las capas de coque y alquitrán formadas: ";’~¬­ y ";†®uu¯ , respectivamente:
"; $
1
Y ";’~¬­ Y ";†®uu¯
<¦
(33)
Modelado aeáico
30
2.4.5.2
Nijsing
Es un modelo para el cálculo de la tasa de ensuciamiento media en función de la concentración
del precursor de la reacción en la masa fluida:
J¥ $ •– < (4e & "#)ZX_°± 2.4.5.3
/4 ZX``
2
(3()
Fernández-Baujin y Solomon
Modela el flujo de masa de reactivo hacia la superficie. Supone que todo el material que llega a
la pared reacciona según una reacción de orden n:
²u $ ˆ† (4e C 4M ) $ ˆ 4Mq
Parámetros:
2.4.5.4
(35)
ˆ† $ 43#O040#15# 2# 5JT1 O#J#140T 2# 7T T
ˆ $ 431 5T15# 2# ¢#U3402T2 2# J#T440¡1 ATJT UT J#T440¡1 2# 3J2#1 1]
R
4e $ 4314#15JT40¡1 2# AJ#4%J 3J #1 UT 7T T OU%02T
4M $ 4314#15JT40¡1 2# J#T450¢3 #1 UT ATJ#2
Crittenden y Kolaczkowski
Este modelo viene descrito por la siguiente ecuación:
P (2 C 2 @){X_ Donde:
2"O
1
$
25
P; š m;
4ue
(/4u )ZX³°
4–¦
1
Y
C 1X213 m{ ´ZX µ ZX_ 1X213 m{ ´ZX µ ZX_ n #@A C D …
P (2 C 2 @){X_ (/4– )ZX³°
"E
E $ Ee Y
¶
WXW23 "# ZX_ =J ZX[
A temperaturas muy altas, se puede considerar 4–¦ $ W.
2.4.5.5
(3S)
(37)
Onifer y Knudsen
Este modelo de la polimerización de estireno es válido para condiciones de ebullición
subenfriada:
²u $ P; m; 2.4.5.6
2";
L
Y 4` ";
25
·
Otros
Otros modelo para el fouling por reacción química es:
(38)
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
2@
1
$
(²u C ²– )
25 P;
31
(39)
Donde los flujos másicos del precursor hacia la zona de reacción (²u ) y del foulant fuera de la
zona de reacción (²– ) se calculan como:
R
2.4.6
q
²u $ ˆ†u (4ue C 4u¦ ) $ ˆ 4u¦
$
²– $ ˆ†– (4–¦ C 4–e )
Crecimiento biológico
4ue
1
1
Y ]
ˆ†u ˆ
((W)
Este proceso también cuenta con una amplia variedad de modelos que lo describen [13]:
2.4.6.1
Trulear y Characklis
Cuya ecuación es:
nP
2.4.6.2
2@
$ ¸– C ¸w
25
((1)
Bryers y Characklis
Descrito por la ecuación:
2²œ
$ ˆ— (O{ ²œ ) Y ˆ¹ (O ²œ ) C ˆf (O` ²œ )
25
2.4.6.3
((2)
Capdeville
Capdeville establece que la biomasa total es la suma de la masa de microorganismos activos y la
masa de microorganismos desactivados:
Šº $ Šœ Y Š–
((3)
Modela el crecimiento de la masa de microorganismos activos como sigue:
a
2Šœ
nZ C n†
b $ J~ Šœ » 25 ®’’
nZ
((()
Siendo, para tiempos cortos:
Šœ $ (Šœ )Z #@A(JZ 5)
Donde (Šœ )Z es la biomasa activa inicial por unidad de área.
2.4.6.4
Belkhadir
Este modelo tiene la siguiente forma:
((5)
Modelado aeáico
32
a
2Šœ
b $ J¼œ C J¼–
25 ®’’
((S)
Donde cada uno de los términos se calcula como sigue:
J $ J~ Šœ ]
½ ¼œ
J¼– $ ˆ{ 4¦q Šœ
2.4.6.5
((7)
Otros
Existen otros cinco modelos para este proceso:
•
Transferencia de masa de los microorganismos a la superficie:
²œ $ C(&œ§ Y D– ) 24œ
2@
((8)
Integrando esta ecuación, se tiene:
²œ $ ˆ— 4œ¾
((9)
Donde:
ˆ— $ ˆ 'u •
=
ˆ Y %u =
(5W)
Transferencia de masa total como suma de masa activa y desactivada:
²†~†®} $ ²œ Y ²¼
(51)
Donde:
² $ ˆœ 4œ®¿ ]
½ œ
²¼ $ ˆ¼ 4¼®¿
•
(52)
Modelo de adhesión y crecimiento:
²œ $ ˆ 4œ (1 C À)
(53)
@ $ @º À
(5()
Donde À es la fracción de superficie cubierta por células adheridas:
@ $ 1Á7#J3 2# 4£U%UT A3J %102T2 2# áJ#T
]
½
@º $ 1Á7#J3 2# 4£U%UT J#¶%#J02T ATJT 4%\J0J UT %A#JO040# 437AU#5T
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
•
Suponiendo que la tasa de fijación de células se puede describir como una reacción de
primer orden:
J®—f $ ˆÂ®—f 4Â
•
33
(55)
Tasa de cambio en la concentración de biomasa:
24§Ã©
$ J¹ 4§Ã© C ˆ 4¦q 4§Ã©
25
(5S)
2.5. Elección de modelos
Como se comentó anteriormente, los modelos específicos para cada mecanismo de fouling
necesitan una gran cantidad de información, y parte de ella es difícil o imposible de obtener.
Además, se desconoce la influencia entre los distintos procesos cuando se dan de forma
simultánea. Por ello, se ha decidido incluir modelos globales en el simulador.
De entre los modelos globales, tras descartar los basados en parámetros distribuidos (por la
complejidad de toma de datos que implicaría su uso), finalmente se han elegido los modelos de
Saleh, Ebert y Panchal, y Polley.
Sin embargo, debido a la necesidad de linealidad de los modelos para el correcto
funcionamiento del simulador, no se ha utilizado el modelo de Ebert y Panchal tal y como se ha
presentado en este capítulo, sino la versión utilizada por D. Butterworth [8]:
2";
D
$ < "# ^ZX__ #@A BC
FCIL
25
" E;
(57)
Aunque existen tablas de valores típicos para varias aplicaciones, el comportamiento del
ensuciamiento depende de muchas variables e interacciones muy complejas (como se puede
observar en los modelos específicos para los distintos mecanismos de fouling), por lo que cada
problema debe ser examinado en busca de consideraciones especiales.
Por ello, varios autores muestran la necesidad de ajustar los modelos a cada caso concreto. Así
pues, la primera tarea del simulador a desarrollar será el cálculo de los coeficientes del modelo
de modo que éste se adapte a un conjunto de medidas proporcionadas por el usuario. Debido a
la forma de las ecuaciones que definen los modelos seleccionados (varias variables
independientes se combinan para dar la respuesta dependiente, es decir, la tasa de
ensuciamiento), este cálculo se hará mediante un Análisis de Regresión Múltiple (MRA).
34
Modelado aeáico
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
35
3 PROGRAMACIÓN DEL SIMULADOR
Como se ha comentado anteriormente, el objetivo de este Proyecto Fin de Carrera es la
programación de una herramienta informática capaz de calcular y simular los modelos
matemáticos seleccionados en el Capítulo 2. Las múltiples utilidades de dicha herramienta
(calcular y validar modelos adaptados a nuevos escenarios, predecir la evolución del
ensuciamiento para controlarlo, etc.) se expondrán en el Capítulo 4.
3.1. Herramientas de desarrollo
La herramienta elegida para desarrollar la aplicación ha sido Matlab®, ya que se trata de un
lenguaje de programación específico para el cálculo numérico, que además cuenta con
herramientas que facilitan la creación de interfaces gráficas (GUIDE).
MATLAB® es un lenguaje de alto nivel y un entorno interactivo para el cálculo numérico, la
visualización y la programación. Mediante MATLAB, es posible analizar datos, desarrollar algoritmos y
crear modelos o aplicaciones. El lenguaje, las herramientas y las funciones matemáticas incorporadas
permiten explorar diversos enfoques y llegar a una solución antes que con hojas de cálculo o lenguajes de
programación tradicionales, como pueden ser C/C++ o Java™. [4]
3.1.1
Matlab
Efectivamente, Matlab® es la herramienta apropiada para la programación de la aplicación
antes explicada, ya que algunas de sus características son [4]:
•
Lenguaje de alto nivel para el cálculo numérico, la visualización y el desarrollo de
aplicaciones
•
Funciones matemáticas para álgebra lineal, estadística, filtrado, optimización, etc.
•
Herramientas para crear gráficos personalizados
•
Herramientas de desarrollo para mejorar la calidad y el rendimiento código
•
Herramientas para crear aplicaciones con interfaces gráficas personalizadas
•
Funciones para integrar algoritmos basados en MATLAb con aplicaciones y lenguajes
externos tales como C y Microsoft® Excel®
3.1.1.1
Variables
En Matlab® no es necesario declarar las variables al comienzo del código: éstas se crearán al
ejecutar la primera sentencia que les asigne un valor. El tipo de variable dependerá de dicha
asignación inicial.
Algunos tipos de variables son:
•
Escalar: corresponde a una asignación del tipo:
Programación del simulador
36
a=5.3;
El formato del número (short, long, short e, long e, etc.) se puede cambiar con el
comando format, aunque esto sólo afecta a la representación por pantalla de la variable,
no a us valor ni a las operaciones que se realicen con ella.
•
Vector: se crea asignando a la variable un conjunto de valores, entre corchetes,
separados por espacios o comas si se quiere crear un vector fila, o por ‘;’ si se trata de un
vector columna. Otra forma de crear un vector columna es asignar a la variable un
vector fila traspuesto.
Así, las siguientes órdenes:
a=[1 2 3];
b=[1, 2, 3];
c=[1; 2; 3];
d=[1 2 3]’;
Crean los siguientes vectores:
T $ \ $ Å1
2
1
4 $ 2 $ Ç 2È
3
3Æ
Para acceder a una componente de un vector, el nombre de la variable debe ir seguido
de la posición de la componente entre paréntesis. Por ejemplo, para cambiar la segunda
componente del vector a anterior, la sentencia sería:
a(2)=5;
Con lo que quedaría:
T $ Å1
5
3Æ
También es posible acceder a un subconjunto de componentes, indicando un vector de
posiciones entre paréntesis. Por ejemplo, la orden:
c([1 3])=2;
Cambiará el valor de las componentes primera y tercera, quedando el vector como
sigue:
2
4 $ 2 $ Ç2È
2
•
Matriz: se crea con una asignación similar a la del vector (un vector es una matriz de una
dimensión), separando los elementos de una misma fila por espacios o comas, y unas
filas de otras con ‘;’. La línea de código:
A=[1 2 3; 4 5 6; 7 8 9];
Crea la matriz:
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
1
n $ Ç(
7
2
5
8
37
3
SÈ
9
Al igual que con los vectores, es posible acceder a componentes particulares de las
matrices, y a subconjuntos de componentes. Por ejemplo:
A(1,2)=1;
A(3,[1 2])=0;
Con lo que la matriz A quedaría:
1
n $ Ç(
W
1
5
W
3
SÈ
9
También es posible acceder a filas o columnas completas de la matriz, con el operador dos
puntos:
A(2,:)=[10 11 12];
Esta sentencia asigna un nuevo valor a la segunda fila de la matriz, que queda:
1
n $ Ç1W
W
1
11
W
3
12È
9
Las matrices pueden ser de tantas dimensiones como se desee, y es posible trababajar
con ellas manejando subconjuntos de dos dimensiones mediante el operador dos puntos.
•
Carácter: para asignar un carácter a una variable, éste se debe escribir entre ‘’:
letra=’a’;
•
String: también se puede asignar una cadena de caracteres a una variable, que se puede
tratar como un vector:
palabra=’abcde’;
La asignación:
palabra(5)=’f’;
Haría que el contenido de la variable palabra quedase abcdf.
Es posible crear una “lista” de cadenas, asignando a cada fila de una matriz una cadena
de caracteres. Al hacer esto, es necesario que todas las cadenas tengan la misma
longitud, para que las dimensiones de la matriz sean consistentes.
•
Cell array: es una variable formada por un conjunto de celdas. Cada celda puede
contener datos de distinto tipo y tamaño. Puede ser útil, por ejemplo, para crear una
lista de cadenas de caracteres de distinta longitud. La asignación sería de la siguiente
forma:
lista={‘rojo’,’verde’,’amarillo’};
Programación del simulador
38
Hay varias formas de acceder a las componentes de la variable: indicando la posición
entre paréntesis (como se hacía con los vectores), se accede a la celda; indicando la
posición entre llaves, se accede al contenido de la celda.
•
Estructuras: Matlab® también permite crear estructuras, es decir, agrupaciones de datos
(que pueden ser de distinto tipo), que serán almacenados en los distintos campos de la
misma variable. Por ejemplo:
estructura.campo1=’ejemplo’;
estructura.campo2=[1 2 3];
estructura.campo3={‘cell’,’array’};
Tras esto, al representar la variable estructura por pantalla, obtendremos lo siguiente:
estructura =
campo1: 'ejemplo'
campo2: [1 2 3]
campo3: {'cell' 'array'}
3.1.1.2
Sintaxis
Como se ha visto en los ejemplos de asignaciones en el apartado anterior, las sentencias de
Matlab® tienen la siguiente forma:
variable=expresión;
Donde expresión puede ser otra variable, un valor (un número o una cadena asignados
directamente, no calculados ni copiados), una expresión matemática o una llamada a una
función.
Los operadores disponibles para conformar expresiones matemáticas son los comunes:
Tabla 3-1. Operadores de Matlab
+
Suma
-
Resta
*
Multiplicación
/
División
^
Potencia
Además, se pueden agrupar expresiones con paréntesis, y se puede utilizar el operador punto
(precediendo al operador algebraico) para que la operación entre matrices se realice
componente a componente, y no de forma matricial. Por ejemplo, el código:
A=[1 2; 3 4];
B=[3 3; 2 2];
C=A*B;
D=A.*B;
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
Dará como resultado:
7
|$É
17
7
Ê
17
&$É
3
S
39
S
Ê
8
Es posible escribir comentarios (líneas de código que no se ejecutan), comenzando con el
carácter ‘%’.
Además, se pueden utilizar bucles y bifurcaciones. Se presenta a continuación la sintaxis de los
utilizados para programar la aplicación: if, switch y for.
if condicion1
%conjunto de sentencias
else if condicion2
%conjunto de sentencias
…
else
%conjunto de sentencias
end
switch expresión
case 1
%conjunto de sentencias
case 2
%conjunto de sentencias
…
end
for índice=valor_inicial:valor_final
%conjunto de sentencias para cada iteración
end
Donde condicion1 y condicion2 son expresiones lógicas, para las que se pueden utilizar los
siguientes operadores relacionales: <, <=, ==, >=, >, ~=, y lógicos: &&, ||.
3.1.1.3
Funciones
La aplicación creada está formada por un conjunto de funciones de dos tipos: unas llamadas al
interactuar con los elementos que component la interfaz gráfica, otras anidadas en las
anteriores. Todas las funciones tienen la siguiente forma:
function [var_out1 var_out2] = nombre_funcion ( var_in1, var_in2)
%...
%conjunto de sentencias
%...
Donde var_out1 y var_out2 son las variables de salida de la función, y var_in1 y var_in2, las
de entrada. En ambos casos, puede haber tantas variables como se desee.
Por defecto, las variables utilizadas en una función serán consideradas variables locales,
inaccesibles desde la “función padre” a menos que se establezcan como variables de salida, o
que se declaren como variables globales:
global var;
Donde var es el nombre de la variable. Esta sentencia se debe incluir en todas las funciones en
las que se desee utilizar la variable global.
3.1.2
GUIDE
La herramienta de Matlab® GUIDE es el editor de GUI (Graphical User Interface, es decir,
interfaz gráfica de usuario). Se trata de un editor gráfico e interactivo que, de forma automática,
Programación del simulador
40
genera las funciones asociadas a cada elemento de la interfaz.
Los elementos disponibles para diseñar la interfaz son [5]:
•
Push Button: botón que genera una acción al ser pulsado.
•
Slider: barra deslizadora que permite una entrada numérica dentro de un rango.
•
Radio Button: similar a una Check Box, con la particularidad de que la selección Radio
Buttons del mismo grupo esmutuamente excluyente.
•
Check Box: cuadro que puede generar una acción al ser marcado, e indicar su estado
(marcado/no marcado).
•
Edit Text: campo de texto editable.
•
Static Text: texto estático, que no puede ser modificado de forma interactiva por el
usuario, aunque la aplicación sí puede cambiarlo durante su ejecución.
•
Pop-up Menu: menú emergente que muestra una lista de opciones al pulsar la flecha.
•
Listbox: cuadro que muestra una lista de elementos, permitiendo al usuario seleccionar
uno o más.
•
Toggle Button: botón que genera una acción, y necesita ser pulsado una segunda vez
para liberarse.
•
Table: representa una tabla que puede ser estática o editable.
•
Axes: permite representar gráficos e imágenes.
•
Panel: permite agrupar componentes.
•
Button Group: permite agrupar Radio Buttons y Toggle Buttons para habilitar el
comportamiento de selección excluyente.
El archivo de código generado por GUIDE está compuesto por una serie de funciones que habrá
que editar para conseguir que la interfaz tenga el comportamiento deseado. El editor genera por
defecto una variable de tipo estructura llamada handles en la que se almacenan los handles
(identificadores de las figuras y elementos de la aplicación) e información personalizada. La
función guidata, llamada al final de varias de las funciones que componen el código, almacena
información en los datos de la aplicación.
3.1.3
Deployment tool
Mencionar los pasos para la exportación a un archivo ejectutable autónomo.
Deployment Tool es una herramienta de desarrollo de Matlab® que permite exportar un proyecto
GUI a aplicaciones en otros lenguajes (C++, Java, .NET…). En este caso se ha utilizado para
crear un archivo ejecutable autónomo para Windows (un archivo con extensión ‘.exe’).
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
Figura 3-1. Deployment Tool
41
Programación del simulador
42
3.2. Estructura de la aplicación
Como se muestra en la figura, la aplicación está compuesta por tres bloques:
Figura 3-2. Aplicación "Simulafor Fouling"
3.2.1
Calcular modelo
La función de este bloque es calcular, por regresión, los coeficientes de un modelo que se ajuste
a los datos proporcionados. Para ello, cuenta con:
•
Un menú desplegable que permite elegir el tipo de modelo a calcular:
Tabla 3-2. Modelos integrados en la herramienta
Saleh
Ebert y Panchal
Polley
2";
D
$ < A> % ? #@A BC
F
25
" E;
2";
D
$ < "# ^ZX__ #@A BC
F C I LM
25
" E;
2";
$ < "# ^ZX__ =J
25
^ZX``
#@A BC
D
F C I "# ZX_
" E;
(2)
(57)
(7)
•
Una casilla de texto editable para introducir el nombre que se le quiere dar al modelo
calculado
•
Un cuadro de texto que representará los datos necesarios para calcular el modelo, una
vez seleccionado el tipo
•
El botón Importar medidas, que abre un explorador de archivos en el que se debe
seleccionar el documento de Microsoft Excel (.xls) que contiene las medidas (variables
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
43
con el tiempo) indicadas en el cuadro de texto anterior, con el formato indicado en el
documento de ayuda que acompaña a la aplicación.
•
Una serie de casillas de texto editable en las que se deben introducir las medidas
constantes necesarias para calcular el modelo (según las indicaciones del texto sobre
cada casilla).
•
El botón CALCULAR MODELO que, en función de toda la información introducida
anteriormente, calcula los coeficientes del modelo, quedando éste en el espacio de
trabajo (se añadirá a la lista de Modelos disponibles).
•
El botón Mostrar ajuste, que genera dos gráficas útiles para la validación del modelo: la
primera muestra la tasa de ensuciamiento calculada con el modelo y la tasa de
ensuciamiento medida; la segunda, muestra la evolución del error relativo en el cálculo
de la tasa de ensuciamiento.
•
El botón Guardar modelo, que guarda (en el directorio donde se encuentra el archivo
ejecutable) un archivo ‘.mat’, con el nombre elegido para el modelo, y cuyo contenido es
un vector coef de cuatro componentes:
43#O $ Å 50A3 D < H I Æ
Donde tipo es un índice que representa el tipo de modelo (1 = Saleh, 2 = Ebert y
Panchal, 3 = Polley), E es la energía de activación y son los coeficientes del
modelo (con valor 0 si el modelo no contiene dicho coeficiente).
3.2.1.1
Cálculo de la energía de activación
Tal y como plantean M.R.J. Nasr y M.M. Givi [6], la energía de activación se ha calculado por
regresión lineal, como proporcional a la pendiente de la recta que relaciona el logaritmo de la
tasa de ensuciamiento con la inversa de la temperatura de película. A esta relación se llega
considerando un modelo de ensuciamiento que sólo considere un término positivo de
deposición, sin tener en cuenta el término negativo asociado a la retirada natural del
ensuciamiento (el modelo de Saleh sería de este tipo, aunque no los otros dos modelos
considerados):
2";
2";
D
D
$ n #@A aC b 9 U1 B
F $ U1(n) C
25
"E
25
"E
(58)
Así, caracterizando la recta:
6 $ T @ Y \
(59)
donde:
6 $ U1 a
2"O
1
b@ $ 25
E
(SW)
44
se obtendrá un valor de la pendiente T, que será:
Programación del simulador
D
T$C "
(S1)
por lo que es posible calcular la energía de activación como:
D $ CT "
(S2)
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
45
Figura 3-3. Cálculo de la energía de activación
Para esto se ha utilizado la función integrada de Matlab® polyfit, que calcula los coeficientes
del polinomio (del grado indicado en los argumentos de la función) que mejor se ajusta a los
datos proporcionados en el sentido de los mínimos cuadrados.
3.2.1.2
Cálculo de los coeficientes
Los tres modelos considerados se pueden expresar como ecuaciones lineales en múltiples
variables:
Tabla 3-3. Expresión lineal de los modelos
Saleh
Ebert y Panchal
Polley
9 U1 B
2";
D
$ < A> #@A BC
F9
25
" E;
2";
D
F $ U1(<) Y H U1(A) Y I U1(%) C
25
" E;
2";
D
$ < "# ^ZX__ #@A BC
F C I LM
25
" E;
2";
$ < "# ^ZX__ =J
25
^ZX``
#@A BC
D
F C I "# ZX_
" E;
(2)
(S3)
(57)
(7)
Los coeficientes ( ) se han obtenido haciendo uso de la función integrada de Matlab®
regress, que ejecuta una regresión lineal múltiple con los datos proporcionados, permitiendo
así el cálculo de los coeficientes de los modelos.
Programación del simulador
46
3.2.2
Importar modelo
Este bloque permite importar modelos calculados previamente con la herramienta, o mediante
otros métodos, siempre que se almacene en un archivo ‘.mat’ con el formato adecuado. Para
ello, el bloque cuenta con los siguientes elementos:
•
Una casilla de texto editable para introducir el nombre con el que aparecerá el modelo
en la lista de Modelos disponibles del bloque Simular y comparar.
•
El botón IMPORTAR MODELO, que abre un explorador de archivos en el que se debe
seleccionar el archivo ‘.mat’ que contiene el vector coef con los cuatro valores
representativos del modelo.
3.2.3
Simular y comparar
Este bloque permite el análisis, la validación y la comparación de los modelos calculados e
importados previamente. Para ello cuenta con los siguientes elementos:
•
Una lista de Modelos disponibles para el análisis, que permite hacer una selección múltiple
de hasta 10 modelos.
•
La casilla de verificación Análisis para verificación de los modelos, que hará que se
represente también la tasa de ensuciamiento medida en las gráficas resultantes de las
simulaciones, permitiendo así validar los modelos.
•
El botón Ver información necesaria que, al ser pulsado, hará que se muestren en los dos
cuadros inferiores las medidas (variables y constantes) necesarias para simular los
modelos seleccionados.
•
El botón Importar medidas, que abre un explorador de archivos en el que se debe
seleccionar el o los (las variables y las constantes deben estar en documentos separados)
documentos de Microsoft Excel (.xls) que contienen las medidas indicadas en los
cuadros de texto anteriores, con el formato indicado en el documento de ayuda que
acompaña a la aplicación.
•
Una lista de Análisis disponibles para realizar sobre los modelos seleccionados. Esta lista
(cuyos elementos se explican a continuación) permite hacer una selección múltiple para
ejecutar varios análisis simultáneamente.
Tabla 3-4. Análisis disponibles en la herramienta
Simular
Crea una figura para cada modelo seleccionado,
en la que representa la evolución de la tasa de
ensuciamiento calculada (y la medida si la casilla
de verificación está marcada).
Comparar simulaciones
Crea una única figura en la que representa la
evolución de las tasas de ensuciamiento
calculadas con todos los modelos seleccionados
(y la medida si la casilla de verificación está
marcada).
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
Calcular errores relativos
Crea una figura para cada modelo seleccionado,
en la que representa la evolución del error
relativo en el cálculo de la tasa de ensuciamiento.
(*)
Comparar errores relativos
Crea una única figura en la que representa la
evolución de los errores relativos de todos los
modelos seleccionados. (*)
Calcular errores cuadráticos
Crea una figura para cada modelo seleccionado,
en la que representa la evolución del error
cuadrático en el cálculo de la tasa de
ensuciamiento. (*)
Comparar errores cuadráticos
Crea una única figura en la que representa la
evolución de los errores cuadráticos de todos los
modelos seleccionados. (*)
Sensibilidad al diámetro
Crea una figura para cada modelo seleccionado
en la que representa las tasas de ensuciamiento
para distintos valores del diámetro.
Sensibilidad a la densidad
Crea una figura para cada modelo seleccionado
en la que representa las tasas de ensuciamiento
para distintos valores de la densidad.
Sensibilidad a la viscosidad
Crea una figura para cada modelo seleccionado
en la que representa las tasas de ensuciamiento
para distintos valores de la viscosidad.
Sensibilidad a la energía de
activación
Crea una figura para cada modelo seleccionado
en la que representa las tasas de ensuciamiento
para distintos valores de la energía de activación.
Sensibilidad a la velocidad
Crea una figura para cada modelo seleccionado
en la que representa las tasas de ensuciamiento
para distintos conjuntos de valores de la
velocidad.
Sensibilidad a la temperatura
superficial
Crea una figura para cada modelo seleccionado
en la que representa las tasas de ensuciamiento
para distintos conjuntos de valores de la
temperatura.
47
(*)Para ejecutar este análisis, es necesario que la casilla de verificación esté marcada.
•
El botón EJECUTAR ANÁLISIS, que da comienzo a los cálculos seleccionados (que
aparecerán representados en forma de gráficas en ventanas emergentes).En caso de
haber seleccionado uno o varios análisis de sensibilidad, se abrirá una ventana
emergente con una tabla editable en la que se deberán introducir los parámetros que
Programación del simulador
48
configuran dicho análisis: tamaño del paso (incremento en la magnitud que se va a
considerar variable en el análisis ) y número de pasos (número de valores distintos de la
variable que se van a simular).
3.3. Entrada y salida de información
Se explica a continuación el desarrollo de los elementos de entrada y salida de información.
3.3.1
Importación de datos
La importación de datos consiste en leer archivos de Excel (.xls), seleccionados mediante un
explorador de archivos que se abre al pulsar el botón correspondiente de la aplicación. Para esto
se han utilizado las siguientes funciones integradas de Matlab®:
•
uigetfile: abre el explorador de archivos, mostrando sólo los archivos con la extensión
especificada como argumento de la función, y, una vez hecha la selección, devuelve la
ruta y el nombre del archivo elegido.
•
xlsread: lee el archivo de Excel proporcionado como argumento de la función, y
devuelve una matriz con el contenido númerico del archivo y una cadena de celdas,
cada una con el texto de las celdas de texto del Excel.
Al pulsar los botones Importar medidas de la aplicación, se ejecuta el siguiente código:
[FileName Path]=uigetfile({'*.xls'},'Importar medidas');
[datos nom_datos]=xlsread(strcat(Path,FileName));
msgbox('Datos importados con exito','Fin tarea');
Con lo que los nombres de las variables quedan almacenados en la cadena de celdas nom_datos,
y el contenido de dichas variables (vectores columna) queda en la matriz datos.
Como la información importada varía de un modelo a otro, son éstas las variables que se
pasarán como argumento a las funciones anidadas (las que calculan los coeficientes de los
modelos y las simulaciones). Es dentro de estas funciones donde se interpretan los datos,
creando variables con los nombres contenidos en nom_datos y asignándoles la columna de
valores correspondiente de datos, con un bucle del tipo:
for i=1:length(nom_datos)
eval([nom_datos{i} '=datos(:,i);']);
end
3.3.2
Recuperación de modelos guardados
En el bloque Importar modelo también se utiliza la función uigetfile para abrir el archivo .mat
que contiene los coeficientes del modelo. En este caso, debido al tipo de archivo (y como se ha
establecido la condición de que contenga un vector llamada coef), tras obtener el nombre y la
ruta se carga la variable contenida en el archivo al espacio de trabajo con la función load, y
después se copia el contenido de la variable coef a la variable que contiene todos los modelos
disponibles. Todo esto se haría con el siguiente código:
[FileName Path]=uigetfile({'*.mat'},'Importar coeficientes');
load(strcat(Path,FileName));
num_mod=num_mod+1;
lista_modelos{num_mod}=nombre_mod_i;
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
49
handles.coefmodelos(num_mod,:)=coef;
set(handles.s_lista_MODELOS,'String',lista_modelos);
guidata(hObject, handles);
3.3.3
Configuración de análisis de sensibilidad
Como se comentó anteriormente, en el bloque Simular y comparar, si se selecciona alguno de los
análisis de sensibilidad en la lista de análisis disponibles, al pulsar el botón EJECUTAR se abrirá
una pantalla emergente con una tabla editable en la que se deben introducir el tamaño del paso
y el número de pasos a simular para cada uno de los análisis de sensibilidad seleccionados.
La primera simulación se realizará con las medidas importadas y, tras esto, se sumará el
incremento especificado y se volverá a simular hasta alcanzar el número de simulaciones
indicadas en la tabla. En el caso de los análisis de sensibilidad a la velocidad y a la temperatura
superficial, ambas variables en el tiempo, se sumará el incremento a todas las componentes del
vector que representa la evolución temporar de la variable.
3.3.4
Salidas
Gráficos, con valores significativos en la leyenda, pero no variables (porque se iba a exporter a
.exe).
Las salidas del programa son las gráficas que aparecen en ventanas emergentes al pulsar el
botón EJECUTAR. El programa no devuelve ninguna variable, ya que se programó con el
objetivo de convertirlo en un fichero ejecutable autónomo. Sin embargo, sí se proporcionan
algunos valores numéricos de interés en las leyendas de algunas de las gráficas generadas.
Además, ejecutando la aplicación desde Matlba®, es posible acceder a la variable handles que,
como se explicó en el apartado sobre GUIDE, contiene los handles de los elementos e
información personalizada (por ejemplo, los coeficientes de los modelos disponibles).
3.4. Elementos auxiliares
Además de los cálculos numéricos y la entrada y salida de información, la aplicación cuenta con
algunas funcionalidades para facilitar su uso:
3.4.1
Mensajes de aviso
La aplicación cuenta con mensajes de error que advierten del mal uso de la misma. Por ejemplo,
si se pulsa el botón CALCULAR MODELO sin haber seleccionado previamente el tipo de
modelo, se abrirá una ventana de diálogo avisando del fallo. Esto se consigue llamando a la
función integrada de Matlab® errordlg cuando se dé la situación de error.
opc=errordlg('No ha seleccionado ningún modelo','Error');
Programación del simulador
50
Figura 3-4. Mensaje de error
La herramienta también cuenta con mensajes de aviso de fin de tarea, por ejemplo, a la hora de
importar datos desde Excel o al ejecutar las simulaciones, ya que estas tareas no son inmediatas,
y no se debe interactuar con la aplicación durante su ejecución.
msgbox('Datos importados con exito','Fin tarea');
Figura 3-5. Aviso de
fin de tarea
3.4.2
Ayuda
El botón Ayuda abre un documento de ayuda, en formato PDF, que explica la utilidad de todos
los elementos de la aplicación y comenta las precauciones a tener en cuenta para su uso.
3.4.3
Salir
El botón Salir abre una ventana de diálogo que pide la confirmación para cerrar el programa,
procediendo a un cierre seguro si se pulsa Sí y volviendo a la aplicación si se pulsa No.
4 ANÁLISIS DE RESULTADOS
Una vez desarrollado el simulador (ver Anexos), se ha utilizado esta herramienta para calcular
los coeficientes de los modelos elegidos para varios conjuntos de datos, y así poder estudiar el
comportamiento de los modelos en distintas situaciones.
4.1. Datos utilizados
Se han calculado y simulado los modelos con varios conjuntos de datos (ver Anexos): el
correspondiente a los experimentos de Saleh et al. [5] [17], con un petróleo crudo ligero de
procedencia australiana (que en adelante se nombrará como en la bibliografía: Light Australian
Crude Oil), y a dos conjuntos de datos de crudo pesado canadiense: Light Sour Blend y Cold Lake
[18].
4.2. Cálculo y validación de modelos
A continuación se presenta el ajuste de los modelos calculados, así como una comparación entre
dichos modelos, para cada conjunto de datos.
4.2.1
Conjunto de datos Light Australian Crude Oil
Los valores para la energía de activación y los modelos de Saleh, Ebert y Panchal, y Polley para
este conjunto de datos son:
Tabla 4-1: Coeficientes de los tres modelos para Light Australian Crude Oil
E
<
H
I
Saleh
Ebert y Panchal
Polley
2731.7068
2731.7068
3315.8993
0.1009
2449.2466
303.8027
0.30711
-
-
-1.2068
156.2489
0.00023187
Es posible observar que la energía de activación es diferente para el modelo de Polley. Esto se
debe a que este modelo se basa en la temperatura superficial, en lugar de utilizar la temperatura
de película.
Al comparar las tasas de ensuciamiento calculadas con los tres modelos y la medida (Figura
4-1), se observa que el modelo de Saleh se ajusta mejor a las caídas en la tasa de ensuciamiento y
a las zonas en las que ésta varía poco. El modelo de Polley se ajusta mejor a los incrementos
bruscos de la tasa de ensuciamiento, mientras que el modelo de Ebert y Panchal muestra unas
características intermedias, ajustándose mejor que el modelo de Polley a los descensos bruscos y
52
Análisis de resultados
mejor que el modelo de Saleh a los ascensos bruscos.
Figura 4-1. Comparación de la tasa calculada con los tres modelos y la medida
para Light Australian Crude Oil
Efectivamente, el error relativo (Figura 4-2) cometido por el modelo de Polley aumenta
considerablemente en los puntos con grandes descensos de la tasa de ensuciamiento (llegando a
alcanzar el 40%). Finalmente, es el modelo de Ebert y Panchal el que presenta un error relativo
medio menor (10%), aunque la diferencia entre la media de errores relativos de los tres modelos
es mínima.
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
53
Figura 4-2. Comparación de los errores relativos de los tres modelos para Light
Australian Crude Oil
4.2.2
Conjunto de datos Light Sour Blend
Para este conjunto de datos, los modelos obtenidos son:
Tabla 4-2: Coeficientes de los tres modelos para Light Sour Blend
E
<
H
I
Saleh
Ebert y Panchal
Polley
3883.4144
3883.4144
7185.8255
4.1845e13
333200.7556
96424.7901
0.-3.5096
-
-
-0.46712
-20117.7972489
-0.024555
Al comparar la tasa medida y la calculada con cada uno de los tres modelos para este conjunto
de datos (Figura 4-3), se observa una tendencia similiar a la anterior: el modelo de Saleh se
ajusta mejor a los descensos de la tasa de ensuciamiento, mientras que el de Polley es más
preciso en los ascensos.
54
Análisis de resultados
Figura 4-3. Comparación de la tasa calculada con los tres modelos y la medida
para Light Sour Blend
Aunque esta simulación ha sido útil para el estudio y la comparación de los distintos modelos
integrados en el simulador, los errores (Figura 4-4) cometidos para este conjunto de datos son
excesivos. Si se necesitase predecir la tasa de ensuciamiento para este escenario, sería
recomendable estudiar otros modelos.
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
55
Figura 4-4. Comparación de los errores relativos de los tres modelos para Light
Sour Blend
4.2.3
Conjunto de datos Cold Lake
Para este conjunto de datos se han obtenido los siguientes valores característicos de los
modelos:
Tabla 4-3: Coeficientes de los tres modelos para Cold Lake
E
<
H
I
Saleh
Ebert y Panchal
Polley
159.922
159.922
829.9229
1
121139.9463
113938.0953
0.66707
-
-
0
28350.9808
0.79638
Para este conjunto de datos, como para Light Australian Crude Oil, los errores relativos (Figura
4-5) tienen valores medios en torno al 10%, aunque en este caso es el modelo de Polley el que
mejor se ajusta. Esto demuestra la conveniencia (como se sugiró para el conjunto de datos
anterior) de comparar distintos modelos para elegir el que mejor se adapte a la situación que se
desea simular.
56
Análisis de resultados
Figura 4-5. Comparación de los errores relativos de los tres modelos para Cold
Lake
4.3. Simulación de modelos
4.3.1
Ejemplo de simulación
Se presenta a continuación un ejemplo del uso de la herramienta para la predicción de la tasa de
ensuciamiento. Se han calculado los coeficientes del modelo de Ebert y Panchal para una parte
de los datos Light Australian Crude Oil, reservando la parte restante del conjunto para su uso en
simulación.
Tabla 4-4: Coeficientes del modelo de Ebert y Panchal para una parte del conjunto de datos
Light Australian Crude Oil
E
Ebert y Panchal
4391.8765
<
6933.03355
I
-106.2739
El modelo calculado tiene un comportamiento muy bueno, con un error relativo (Figura 4-6)
menor que en todos los ejemplos anteriores (7%):
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
57
Figura 4-6. Error relativo del modelo de Ebert y Panchal parcial para Light
Australian Crude Oil
La simulación para el resto de datos del conjunto da como resultado el mostrado en laFigura
4-7:
58
Análisis de resultados
Figura 4-7. Simulación del modelo Ebert y Panchal parcial para el resto de datos
de Light Australian Crude Oil
Al hacer uso de las opciones del simulador para la validación de modelos, simulando para el
conjunto de datos completo (Figura 4-8), se observa que, a partir del octavo ensayo, el error
relativo (Figura 4-9) aumenta considerablemente, ya que el modelo no simula de forma
adecuada los descensos bruscos de la tasa de ensuciamiento. Esto se debe a que los coeficientes
se han calculado para ajustarse a un comportamiento bastante estable de la tasa de
ensuciamiento (ensayos 1 a 8).
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
Figura 4-8. Simulación del modelo de Ebert y Panchal parcial para todo el
conjunto de datos Light Australian Crude Oil
59
60
Análisis de resultados
Figura 4-9. Errores relativos en la simulación del modelo de Ebert y Panchal
parcial para Light Australian Crude Oil
Aunque la predicción no sea exacta, la simulación puede ser útil para estimar la tendencia de la
tasa de ensuciamiento, haciendo una predicción algo mayor que dará lugar a una predicción
algo mayor que el valor real, por lo que el control basado en esta predicción quedaría del lado
de la seguridad.
Al hacer el ensayo contrario (calcular el modelo para la zona de mayor variación de la tasa de
ensuciamiento, y predecir la zona estable), se obtienen unos resultados considerablemente
mejores, con un error relativo medio del 11% (Figura 4-11):
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
Figura 4-10. Simulación del modelo de Ebert y Panchal parcial opuesto para
Light Australian Crude Oil
61
62
Análisis de resultados
Figura 4-11. Errores relativos de la simulación del modelo de Ebert y Panchal
parcial opuesto para Light Australian Crude Oil
De esto se deduce que no sólo es importante la elección del modelo a utilizar, sino también el
conjunto de datos al que se va a ajustar dicho modelo. Para que el modelo calculado se adapte
de forma aceptable a cambios en la tasa se ensuciamiento, los datos utilizados deben
corresponder a un conjunto de situaciones lo suficientemente variadas, de modo que sean
representativos del comportamiento del sistema.
4.3.2
Simulación de un modelo con datos correspondientes a otro escenario
Al utilizar el conjunto de datos Cold Lake para simular los modelos calculados para Light Sour
Blend, la estimación de la tasa de ensuciamiento obtenida es muy deficiente. Aunque el modelo
de Polley sigue mejor la tendencia, no se ajusta los suficientemente bien a los valores medidos.
Los otros dos modelos tienen una repsuesta todavía más lenta.
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
63
Figura 4-12. Modelos calculados para los datos Light Sour Blend y simulados
para Cold Lake
Efectivamente, en la Figura 4-13 se puede observar que el modelo de Polley es el que comete un
error menor, aunque los errores en los tres casos son considerables (el modelo de Ebert y
Panchal llega a cometer un error del 76%). Con esto se confirma la necesidad de ajustar los
coeficientes del modelo para cada escenario (fluido, equipos, etc).
64
Análisis de resultados
Figura 4-13. Errores relativos cometidos al simular los modelos calculados para
Light Sour Blend con los datos Cold lake
4.4. Análisis de sensibilidad
4.4.1
Sensibilidad de un modelo a varios parámetros
Por último, la herramienta desarrollada permite hacer análisis de sensibilidad de los modelos a
distintas variables. Al realizar dicho análisis sobre el modelo que mejor se ajusta a los valores
medidos (Ebert y Panchal para Light Australian Crude Oil), se obtienen los siguientes resultados:
Aplicando cinco incrementos del 10% sobre el diámetro, es decir, cinco pasos de tamaño 1.5
mm, se obtiene un decremento uniforme de la tasa de ensuciamiento de un 8%.
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
65
Figura 4-14. Sensibilidad del modelo de Ebert y Panchal al diámetro
Aplicando cinco incrementos del 10% sobre la densidad, es decir, cinco pasos de tamaño 0.08
g/ml, se obtiene un decremento uniforme de la tasa de ensuciamiento de un 11%.
Figura 4-15. Sensibilidad del modelo de Ebert y Panchal a la densidad
Aplicando cinco incrementos del 10% sobre la viscosidad, es decir, cinco pasos de tamaño 0.2
mPa·s, se obtiene un aumento medio de la tasa de ensuciamiento del 10%. Se puede observar
que el primer paso produce una variación mayor que los demás.
66
Análisis de resultados
Figura 4-16. Sensibilidad del modelo de Ebert y Panchal a la viscosidad
Aplicando cinco incrementos del 10% sobre la energía de activación, es decir, cinco pasos de 270
J/mol, se observa un descenso medio de un 24% del valor medio de la tasa de ensuciamiento.
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
67
Figura 4-17. Sensibilidad del modelo de Ebert y Panchal a la energía de
activación
También es posible estudiar la sensibilidad a variaciones en el valor medio de la evolución
temporal de variables como la velocidad o la temperatura superficial.
Aplicando el análisis de sensibilidad a la velocidad con cinco pasos de tamaño 0.03 m/s (10% de
la media de velocidades), se obtiene un descenso medio de la tasa de ensuciamiento del 15%.
68
Análisis de resultados
Figura 4-18. Sensibilidad del modelo de Ebert y Panchal a la velocidad
Aplicando el análisis de sensibilidad a la temperatura superficial con cinco pasos de tamaño 25
Ë (10% de la media de temperaturas superficiales), se obtiene un aumento medio de la tasa de
ensuciamiento del 15%.
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
69
Figura 4-19. Sensibilidad del modelo de Ebert y Panchal a la temperatura
superficial
Al comparar el incremento relativo del valor medio de la tasa de ensuciamiento frente a
incrementos del 10% de cada uno de los parámetros estudiados, se observa que la energía de
activación es la que más influencia tiene sobre la tasa de ensuciamiento. Se trata de un
parámetro calculado por regresión de los datos proporcionados, por lo que se deberá prestar
especial atención tanto a la selección de dichos datos como al propio cálculo de la variable para
conseguir una predicción acertada de la tasa de ensuciamiento.
También se puede observar que la sensibilidad del modelo decrece al aumentar la viscosidad o
la temperatura superficial, y aumenta con la energía de activación y la velocidad.
70
Análisis de resultados
Figura 4-20. Comparación de la sensibilidad del modelo de Ebert y Panchal a
distintos parámetros
4.4.2
Comparación de análisis de sensibilidad de distintos modelos
Además de la herramienta para la simulación ya explicada, se ha desarrollado una pequeña
herramienta complementaria que permite la comparación de la sensibilidad de distintos
modelos a un mismo parámetro.
Se presentan a continuación los análisis de sensibilidad al diámetro y a la energía de activación,
configurados con el mismo tamaño de paso y número de pasos que en el apartado anterior, y
aplicados a los tres modelos calculados con los datos Light Australian Crude Oil.
En la comparación de la sensibilidad al diámetro (Figura 4-21), se observa que el modelo de
Ebert y Panchal y el modelo de Polley tienen una tendencia muy similar, mientras que el de
Saleh no se ve afectado por el cambio de diámetro. Esto se debe a que se han considerado el
resto de condiciones de ensayo constantes, y el diámetro no aparece en la ecuación de Saleh,
que utiliza variables como la presión y la velocidad, en lugar de parámetros adimensionales
(Re, Pr), como hacen los otros dos modelos.
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
71
Figura 4-21. Comparación de la sensibilidad de los
tres modelos al diámetro
La energía de activación sí da lugar a una variación de la tasa de ensuciamiento similar en los
tres modelos.
72
Análisis de resultados
Figura 4-22. Comparación de la sensibilidad de los
tres modelos a la energía de activación
5 CONCLUSIONES Y LÍNEAS DE AMPLIACIÓN
5.1. Conclusiones
Tras estudiar el proceso de ensuciamiento en intercambiadores de calor de carcasa y tubos, los
distintos mecanismos físico-químicos que intervienen en dicho proceso, se han presentado las
ecuaciones matemáticas que modelan el proceso de forma general o cada mecanismo particular.
Después de comparar los modelos matemáticos expuestos, se han seleccionado tres de ellos
(modelo de Saleh, modelo de Ebert y Panchal y modelo de Polley) como base para el desarrollo
de una herramienta informática que permita tanto la validación y comparación de los modelos
matemáticos como su utilización para simular el proceso de ensuciamiento.
La herramienta informática, desarrollada con MATLAB® (y después exportada a un archivo
ejecutable autónomo), cumple con los objetivos propuestos:
•
Adapta los modelos integrados a distintos conjuntos de datos, calculando los
coeficientes que ponderan cada término mediante una regresión lineal múltiple.
•
Incluye funcionalidades para la validación de los modelos, así como la comparación
entre el desempeño de los distintos modelos calculados.
•
Permite estudiar la sensibilidad de los modelos a distintas variables de influencia.
Además, se ha desarrollado una pequeña herramienta complementaria para hacer una
representación alternativa de dicho análisis, permitiendo la comparación de los análisis
de sensibilidad de distintos modelos a una misma variable.
•
Utiliza los modelos calculados para simular la evolución de la tasa de ensuciamiento en
un escenario determinado.
Finalmente se han valorado los resultados obtenidos con la herramienta desarrollada,
confirmando la necesidad de adaptar el modelo a cada situación particular. Se han comparado
los comportamientos de los tres modelos (el modelo de Saleh se adapta mejor a datos estables y
a los descensos de la tasa de ensuciamiento, el de Polley se adapta mejor a los ascensos bruscos,
y el de Ebert y Panchal tiene un comportamiento intermedio), llegando a la conclusión de que
es conveniente comparar cuál de los tres se adapta mejor al escenario que se desee estudiar, y
que en algunos casos será necesario considerar también otros modelos.
También se ha puesto de manifiesto la necesidad de utilizar un conjunto de datos
representativo del sistema (con valores lo suficientemente variados) para que el modelo
calculado estime una tasa de ensuciamiento acertada en el futuro.
5.2. Líneas de ampliación
Además del estudio teórico de los modelos matemáticos, se proponen varias aplicaciones
74
Conclusiones y líneas de ampliación
prácticas de la herramienta desarrollada:
•
Utilización de la predicción de la tasa de ensuciamiento proporcionada por el
intercambiador para la planificación de las paradas para la limpieza del mismo,
mediante el establecimiento de umbrales de ensuciamiento aceptable.
•
Utilización de la predicción de la tasa de ensuciamiento proporcionada por el
intercambiador para desarrollar un sistema de control o automatismo que gestione de
manera autónoma los sistemas de limpieza en línea del intercambiador.
•
Detección de problemas y anomalías en el sistema mediante la comparación del
ensuciamiento previsto y el medido.
También se proponen algunas posibles ampliaciones de la herramienta informática
desarrollada:
•
Integración de más modelos generales.
•
Integración de modelos para los mecanismos particulares, cuyo uso puede ser útil para
simular sistemas conocidos en detalle en los que haya un mecanismo claramente
predominante sobre los demás. También puede añadirse la posibilidad de hacer una
suma ponderada de la predicción según los distintos mecanismos, permitiendo al
usuario variar la ponderación con el objetivo de encontrar un modelo general (para un
sistema concreto) combinación de modelos particulares.
•
Incluir la simulación del sistema completo, integrando la tasa de ensuciamiento para
sumar la resistencia de ensuciamiento a la resistencia del sistema y calcular la
transferecia de calor del intercambiador, así como su rendimiento.
6 ANEXOS
6.1. Interfaz gráfica del simulador
Se presenta a continuación el diseño de la interfaz gráfica del simulador, con las etiquetas que
servirán para identificar cada elemento en el código el programa:
76
Anexos
Figura 6-1. Etiquetas de los bloques "Calcular modelo" e "Importar modelo"
Figura 6-2. Etiquetas del bloque "Simular y comparar"
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
6.2. Código del programa
A continuación se presenta el código de todas las funciones que conforman la aplicación.
6.2.1
Código principal (sim_fouling)
function varargout = sim_fouling(varargin)
% SIM_FOULING M-file for sim_fouling.fig
%
SIM_FOULING, by itself, creates a new SIM_FOULING or raises the existing
%
singleton*.
%
%
H = SIM_FOULING returns the handle to a new SIM_FOULING or the handle to
%
the existing singleton*.
%
%
SIM_FOULING('CALLBACK',hObject,eventData,handles,...) calls the local
%
function named CALLBACK in SIM_FOULING.M with the given input arguments.
%
%
SIM_FOULING('Property','Value',...) creates a new SIM_FOULING or raises the
%
existing singleton*. Starting from the left, property value pairs are
%
applied to the GUI before sim_fouling_OpeningFcn gets called. An
%
unrecognized property name or invalid value makes property application
%
stop. All inputs are passed to sim_fouling_OpeningFcn via varargin.
%
%
*See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
%
instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help sim_fouling
% Last Modified by GUIDE v2.5 07-Sep-2014 17:43:22
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @sim_fouling_OpeningFcn, ...
'gui_OutputFcn', @sim_fouling_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback',
[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before sim_fouling is made visible.
function sim_fouling_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject
handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% varargin
command line arguments to sim_fouling (see VARARGIN)
% Choose default command line output for sim_fouling
handles.output = hObject;
%Inicializacion de variables:
handles.modelo=4;
handles.check_val=0;
global num_mod;
global lista_modelos;
global T_s T_inf u p dR_f
num_mod=0;
77
78
Anexos
lista_modelos={' '};
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes sim_fouling wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = sim_fouling_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject
handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on selection change in c_menu_MODELO.
function c_menu_MODELO_Callback(hObject, eventdata, handles)
% hObject
handle to c_menu_MODELO (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns c_menu_MODELO contents as
cell array
%
contents{get(hObject,'Value')} returns selected item from c_menu_MODELO
% Determine the selected data set.
str = get(hObject, 'String');
val = get(hObject,'Value');
% Set current data to the selected data set.
switch str{val};
case 'Saleh'
handles.modelo = 1;
case 'Ebert y Panchal'
handles.modelo = 2;
case 'Polley'
handles.modelo = 3;
case '--'
handles.modelo = 4;
end
med_mod(:,:,1)=['Temperatura superficial(ºC)
';'Temperatura infinito(ºC)
';'Tasa de ensuciamiento((m^2*K/kJ)E6)';'Velocidad(m/s)
';'Presion(kPa)
'];
med_mod(:,:,2)=['Temperatura superficial(ºC)
';'Temperatura infinito(ºC)
';'Tasa de ensuciamiento((m^2*K/kJ)E6)';'Velocidad(m/s)
';'
'];
med_mod(:,:,3)=med_mod(:,:,2);
med_mod(:,:,4)=['
';'
';'
';'
';'
'];
cte_mod(:,:,1)=['-';'-cte_mod(:,:,2)=['Densidad:
';'Viscosidad:
cte_mod(:,:,3)=cte_mod(:,:,2);
cte_mod(:,:,4)=cte_mod(:,:,1);
uds_mod(:,:,1)=['
';'
';'
uds_mod(:,:,2)=['(g/ml) ';'(mPa*s)';'(mm)
uds_mod(:,:,3)=uds_mod(:,:,2);
uds_mod(:,:,4)=uds_mod(:,:,1);
';'-'];
';'Diametro tubo:'];
'];
'];
set(handles.c_texto_MEDIDAS,'String',med_mod(:,:,handles.modelo));
set(handles.c_texto_CTE1,'String',cte_mod(1,:,handles.modelo));
set(handles.c_texto_CTE2,'String',cte_mod(2,:,handles.modelo));
set(handles.c_texto_CTE3,'String',cte_mod(3,:,handles.modelo));
set(handles.c_texto_UD1,'String',uds_mod(1,:,handles.modelo));
set(handles.c_texto_UD2,'String',uds_mod(2,:,handles.modelo));
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
set(handles.c_texto_UD3,'String',uds_mod(3,:,handles.modelo));
% Save the handles structure.
guidata(hObject,handles)
% --- Executes during object creation, after setting all properties.
function c_menu_MODELO_CreateFcn(hObject, eventdata, handles)
% hObject
handle to c_menu_MODELO (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function c_edit_NOMBRE_Callback(hObject, eventdata, handles)
% hObject
handle to c_edit_NOMBRE (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of c_edit_NOMBRE as text
%
str2double(get(hObject,'String')) returns contents of c_edit_NOMBRE as a
double
global nombre_mod_c;
nombre_mod_c=get(hObject,'String');
% --- Executes during object creation, after setting all properties.
function c_edit_NOMBRE_CreateFcn(hObject, eventdata, handles)
% hObject
handle to c_edit_NOMBRE (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function i_edit_NOMBRE_Callback(hObject, eventdata, handles)
% hObject
handle to i_edit_NOMBRE (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of i_edit_NOMBRE as text
%
str2double(get(hObject,'String')) returns contents of i_edit_NOMBRE as a
double
global nombre_mod_i;
nombre_mod_i= get(hObject,'String');
% --- Executes during object creation, after setting all properties.
function i_edit_NOMBRE_CreateFcn(hObject, eventdata, handles)
% hObject
handle to i_edit_NOMBRE (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
79
80
Anexos
% --- Executes on button press in i_boton_IMP_MODELO.
function i_boton_IMP_MODELO_Callback(hObject, eventdata, handles)
% hObject
handle to i_boton_IMP_MODELO (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global num_mod nombre_mod_i lista_modelos
[FileName Path]=uigetfile({'*.mat'},'Importar coeficientes');
if isequal(FileName,0)
return
else
load(strcat(Path,FileName)); %Tiene que ser un archivo previamente guardado con
el simulador (o, en su defecto, un archivo .mat en el que se haya guardado la
variable 'coef'
end
num_mod=num_mod+1;
lista_modelos{num_mod}=nombre_mod_i;
handles.coefmodelos(num_mod,:)=coef;
set(handles.s_lista_MODELOS,'String',lista_modelos);
guidata(hObject, handles);
function c_edit_CTE1_Callback(hObject, eventdata, handles)
% hObject
handle to c_edit_CTE1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of c_edit_CTE1 as text
%
str2double(get(hObject,'String')) returns contents of c_edit_CTE1 as a
double
global cte1;
cte1=0;
cte1= str2double(get(hObject,'String'));
% --- Executes during object creation, after setting all properties.
function c_edit_CTE1_CreateFcn(hObject, eventdata, handles)
% hObject
handle to c_edit_CTE1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in c_boton_IMP_MEDIDAS.
function c_boton_IMP_MEDIDAS_Callback(hObject, eventdata, handles)
% hObject
handle to c_boton_IMP_MEDIDAS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global datos;
global nom_datos;
if handles.modelo==4
opc=errordlg('No ha seleccionado ningún modelo','Error');
else
[FileName Path]=uigetfile({'*.xls'},'Importar medidas');
[datos nom_datos]=xlsread(strcat(Path,FileName));
msgbox('Datos importados con exito','Fin tarea');
end
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
81
% --- Executes on button press in c_boton_CALC_MODELO.
function c_boton_CALC_MODELO_Callback(hObject, eventdata, handles)
% hObject
handle to c_boton_CALC_MODELO (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global nom_datos datos num_mod lista_modelos nombre_mod_c cte1 cte2 cte3;
switch handles.modelo
case 1
coef=reg_saleh(nom_datos,datos);
case 2
coef=reg_ebert(nom_datos,datos,cte1,cte2,cte3);
case 3
coef=reg_polley(nom_datos,datos,cte1,cte2,cte3);
case 4
opc=errordlg('No ha seleccionado ningún modelo','Error');
end
if coef(1)==1
aviso_ok=strcat('Modelo "',nombre_mod_c,'" calculado con exito:
E=',num2str(coef(2)),', alpha=', num2str(coef(3)), ', beta=', num2str(coef(4)), ',
gamma=', num2str(coef(5)),'.');
else
aviso_ok=strcat('Modelo "',nombre_mod_c,'" calculado con exito:
E=',num2str(coef(2)),', alpha=', num2str(coef(3)), ', gamma=', num2str(coef(5)),'.');
end
msgbox(aviso_ok,'Modelo calculado');
%Actualizacion de s_lista_MODELOS:
num_mod=num_mod+1;
handles.coefmodelos(num_mod,:)=coef;
lista_modelos{num_mod}=nombre_mod_c;
set(handles.s_lista_MODELOS,'String',lista_modelos);
guidata(hObject, handles);
% --- Executes on button press in c_boton_AJUSTE.
function c_boton_AJUSTE_Callback(hObject, eventdata, handles)
% hObject
handle to c_boton_AJUSTE (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global num_mod nom_datos datos T_s T_inf u dR_f p lista_modelos cte1 cte2 cte3
for i=1:length(nom_datos)
eval([nom_datos{i} '=datos(:,i);']);
end
R=8.315; %Constante universal de los gases (J/mol K)
E=handles.coefmodelos(num_mod,2);
alpha=handles.coefmodelos(num_mod,3);
beta=handles.coefmodelos(num_mod,4);
gamma=handles.coefmodelos(num_mod,5);
switch handles.modelo
case 1
T_f=(T_s+T_inf)./2;
dR_f_calc=alpha.*(p.^beta).*(u.^gamma).*exp(-E./(R.*T_f));
case 2
ro=cte1;
mi=cte2;
D=cte3;
T_f=(T_s+T_inf)./2;
Re=ro*u*D/mi*1000; %Numero de Reynolds
if Re<2300
82
Anexos
f=16./Re;
else
f=0.0035+0.264./Re.^0.42;
end
tau=f/2.*ro.*u.^2;
dR_f_calc=alpha*(Re.^-0.88).*exp(-E./(R*T_f))-gamma*tau;
case 3
ro=cte1;
mi=cte2;
D=cte3;
Re=ro*u*D/mi*1000;
cp=1940+3*T_inf;
k=0.145-0.0001*T_inf;
Pr=cp*mi./k*1e-6;
dR_f_calc=alpha*(Re.^-0.8).*(Pr.^-0.33).*exp(-E./(R*T_s))-gamma*Re.^0.8;
case 4
opc=errordlg('No ha seleccionado ningún modelo','Error');
end
No=1:length(dR_f);
inter=1:0.1:length(dR_f);
interp_med=spline(No,dR_f,inter);
interp_calc=spline(No,dR_f_calc,inter);
figure;
plot(No,dR_f,'ob',No,dR_f_calc,'sr');
hold on;
xlabel('Run No');
ylabel('Tasa de ensuciamiento ((m^2 K/kJ) e6)');
legend('Medida','Calculada segun modelo');
title(strcat('Ajuste del modelo "',lista_modelos{num_mod} ,'" a la tasa medida'));
plot(inter,interp_med,'b',inter,interp_calc,'r');
err_rel=abs(dR_f-dR_f_calc)./dR_f*100;
interp_err=spline(No,err_rel,inter);
figure;
plot(No,err_rel,'om',inter,interp_err,'-m');
title(strcat('Error relativo medio "',lista_modelos{num_mod},'"=
',num2str(mean(err_rel)),'%'));
xlabel('Run No');
ylabel('Error relativo (%)');
axis([1 length(err_rel) 0 100]);
grid;
% --- Executes on button press in c_boton_GUARDAR.
function c_boton_GUARDAR_Callback(hObject, eventdata, handles)
% hObject
handle to c_boton_GUARDAR (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global nombre_mod_c num_mod
coef=handles.coefmodelos(num_mod,:);
save(nombre_mod_c,'coef');
% --- Executes on button press in s_boton_IMP_MEDIDAS.
function s_boton_IMP_MEDIDAS_Callback(hObject, eventdata, handles)
% hObject
handle to s_boton_IMP_MEDIDAS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global datos_sim nom_datos_sim ctes_sim nom_ctes_sim
mod_selec;
[FileName Path]=uigetfile({'*.xls'},'Importar medidas variables');
[datos_sim nom_datos_sim]=xlsread(strcat(Path,FileName));
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
83
ind_modelos=handles.coefmodelos(mod_selec,1);
if find(ind_modelos>=2)>=1
[FileName Path]=uigetfile({'*.xls'},'Importar medidas constantes');
[ctes_sim nom_ctes_sim]=xlsread(strcat(Path,FileName));
end
msgbox('Datos importados con exito','Fin tarea');
% --- Executes on selection change in s_lista_MODELOS.
function s_lista_MODELOS_Callback(hObject, eventdata, handles)
% hObject
handle to s_lista_MODELOS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns s_lista_MODELOS contents
as cell array
%
contents{get(hObject,'Value')} returns selected item from s_lista_MODELOS
global mod_selec;
mod_selec=get(hObject,'Value');
% --- Executes during object creation, after setting all properties.
function s_lista_MODELOS_CreateFcn(hObject, eventdata, handles)
% hObject
handle to s_lista_MODELOS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns called
% Hint: listbox controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on selection change in s_lista_ANALISIS.
function s_lista_ANALISIS_Callback(hObject, eventdata, handles)
% hObject
handle to s_lista_ANALISIS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns s_lista_ANALISIS contents
as cell array
%
contents{get(hObject,'Value')} returns selected item from s_lista_ANALISIS
global analisis_selec;
analisis_selec=get(hObject,'Value');
% --- Executes during object creation, after setting all properties.
function s_lista_ANALISIS_CreateFcn(hObject, eventdata, handles)
% hObject
handle to s_lista_ANALISIS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns called
% Hint: listbox controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in s_boton_EJECUTAR.
function s_boton_EJECUTAR_Callback(hObject, eventdata, handles)
% hObject
handle to s_boton_EJECUTAR (see GCBO)
84
Anexos
% eventdata
% handles
reserved - to be defined in a future version of MATLAB
structure with handles and user data (see GUIDATA)
global analisis_selec mod_selec datos_sim nom_datos_sim lista_modelos ctes_sim
nom_ctes_sim;
colores='grcmykwgrcmykw';
var_analisis_param={'Diametro', 'Densidad', 'Viscosidad', 'Energia de activacion',
'Velocidad', 'Temperatura superficial'};
if find(analisis_selec>=7)
f = figure('Position',[450 400 444 172],'NumberTitle','off','Name','Configurar
analisis de sensibilidad');
cnames = {'Tamaño del paso','Numero de pasos'};
m=1;
for k=1:length(analisis_selec)
if analisis_selec(k)>6
rnames{m}=var_analisis_param{analisis_selec(k)-6};
m=m+1;
end
end
t =
uitable('Parent',f,'ColumnName',cnames,'RowName',rnames,'Data',zeros(length(rnames),2)
,'Position',[20 40 404 122],'ColumnEditable',true(1,2));
uicontrol('Style', 'pushbutton', 'Callback',
'uiresume(gcbf)','String','Ok','FontSize',10, 'Position', [200 6 50 30]);
uiwait(f);
conf_sensib=get(t,'Data');
close(f);
ind_sensib=1;
end
if find(analisis_selec==1)
%Llamada a simulaciones independientes para todos los modelos
%seleccionados
for i=1:length(mod_selec)
[nom_res res]=simular(handles.coefmodelos(mod_selec(i),:),nom_datos_sim,
datos_sim, nom_ctes_sim, ctes_sim);
for j=1:length(nom_res)
eval([nom_res{j} '=res(:,j);']);
end
%Representacion grafica:
No=1:length(dR_f_calc);
inter=1:0.1:length(dR_f_calc);
interp_calc=spline(No,dR_f_calc,inter);
figure;
p_hand=plot(No,dR_f_calc,'sr',inter,interp_calc,'r');
hold on;
if handles.check_val==1
%Modo validacion del modelo activado: la grafica compara la
%tasa de ensuciamiento medida con la calculada.
interp_med=spline(No,dR_f,inter);
p_hand_med=plot(No,dR_f,'ob',inter,interp_med,'b');
legend([p_hand(1) p_hand_med(1)],strcat('Modelo
"',lista_modelos{mod_selec(i)},'"'),'Medida');
else
legend(strcat('Modelo "',lista_modelos{mod_selec(i)},'"'));
end
xlabel('Run No');
ylabel('Tasa de ensuciamiento ((m^2 K/kJ) e6)');
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
title(strcat('Simulacion del modelo "',lista_modelos{mod_selec(i)},'"'));
hold off;
clear p_hand p_hand_med;
end
end
if find(analisis_selec==2)
%Llamada a simulacion conjunta de los modelos seleccionados
figure;
for i=1:length(mod_selec)
[nom_res res]=simular(handles.coefmodelos(mod_selec(i),:),nom_datos_sim,
datos_sim, nom_ctes_sim, ctes_sim);
for j=1:length(nom_res)
eval([nom_res{j} '=res(:,j);']);
end
No=1:length(dR_f_calc);
inter=1:0.1:length(dR_f_calc);
%Representacion grafica:
if i==length(mod_selec) && handles.check_val==1
%Modo validacion del modelo activado: la grafica compara la
%tasa de ensuciamiento medida con las calculadas.
interp_med=spline(No,dR_f,inter);
p_hand=plot(No, dR_f, 'ob', inter, interp_med, 'b');
hold on;
p_hand_legend(i+1)=p_hand(1);
leyenda{i+1}='Medida';
end
interp_calc=spline(No,dR_f_calc,inter);
p_hand=plot(No,dR_f_calc,strcat('s',colores(i)), inter,
interp_calc,colores(i));
hold on;
p_hand_legend(i)=p_hand(1);
leyenda{i}=strcat('Modelo "',lista_modelos{mod_selec(i)},'"');
end
xlabel('Run No');
ylabel('Tasa de ensuciamiento ((m^2 K/kJ) e6)');
title('Comparacion entre modelos');
legend(p_hand_legend,leyenda);
hold off;
clear leyenda p_hand p_hand_legend;
end
if find(analisis_selec==3)
%Llamada a calculo de errores relativos (independientes) de los modelos
%seleccionados
for i=1:length(mod_selec)
[err_rel_med
err_rel]=calc_err_rel(handles.coefmodelos(mod_selec(i),:),nom_datos_sim, datos_sim,
nom_ctes_sim, ctes_sim);
%Representacion grafica:
No=1:length(err_rel);
inter=1:0.1:length(err_rel);
interp_err=spline(No,err_rel,inter);
figure;
h_plot=plot(No,err_rel,'om',inter,interp_err,'-m');
title(strcat('Error relativo del modelo
"',lista_modelos{mod_selec(i)},'"'));
legend(h_plot(1),strcat(lista_modelos{mod_selec(i)},' , ',
num2str(err_rel_med),'%'));
xlabel('Run No');
ylabel('Error relativo (%)');
85
86
Anexos
axis([1 length(err_rel) 0 100]);
grid;
hold off;
end
end
if find(analisis_selec==4)
%Llamada a representacion conjunta de los errores relativos
figure;
for i=1:length(mod_selec)
[err_rel_med
err_rel]=calc_err_rel(handles.coefmodelos(mod_selec(i),:),nom_datos_sim, datos_sim,
nom_ctes_sim, ctes_sim);
%Representacion grafica:
No=1:length(err_rel);
inter=1:0.1:length(err_rel);
interp_err=spline(No,err_rel,inter);
p_hand=plot(No,err_rel,strcat('o',colores(i)),inter,interp_err,colores(i));
hold on;
p_hand_legend(i)=p_hand(1);
leyenda{i}=strcat(lista_modelos{mod_selec(i)},' : ',
num2str(err_rel_med),'%');
end
title('Comparacion de errores relativos');
xlabel('Run No');
ylabel('Error relativo (%)');
legend(p_hand_legend,leyenda);
axis([1 length(err_rel) 0 100]);
grid;
hold off;
clear leyenda;
end
if find(analisis_selec==5)
%Llamada a calculo de los errores cuadraticos (independientes) de los
%modelos seleccionados
for i=1:length(mod_selec)
[err_cuad_med
err_cuad]=calc_err_cuad(handles.coefmodelos(mod_selec(i),:),nom_datos_sim, datos_sim,
nom_ctes_sim, ctes_sim);
%Representacion grafica:
No=1:length(err_cuad);
inter=1:0.1:length(err_cuad);
interp_err=spline(No,err_cuad,inter);
figure;
p_hand=plot(No,err_cuad,'om',inter,interp_err,'-m');
legend(p_hand(1),strcat(lista_modelos{mod_selec(i)},' : ',
num2str(err_cuad_med)));
title(strcat('Error cuadratico del modelo
"',lista_modelos{mod_selec(i)},'"'));
xlabel('Run No');
ylabel('Error cuadratico (((m^2 K/kJ) e6)^2)');
grid;
hold off;
end
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
87
end
if find(analisis_selec==6)
%Llamada a la representacion conjunta de los errores cuadraticos
figure
for i=1:length(mod_selec)
[err_cuad_med
err_cuad]=calc_err_cuad(handles.coefmodelos(mod_selec(i),:),nom_datos_sim, datos_sim,
nom_ctes_sim, ctes_sim);
%Representacion grafica:
No=1:length(err_cuad);
inter=1:0.1:length(err_cuad);
interp_err=spline(No,err_cuad,inter);
p_hand=plot(No,err_cuad,strcat('o',colores(i)),inter,interp_err,colores(i));
hold on;
p_hand_legend(i)=p_hand(1);
leyenda{i}=strcat(lista_modelos{mod_selec(i)},' , ',
num2str(err_cuad_med),'(((m^2 K/kJ) e6)^2)');
end
title('Comparacion de errores cuadraticos');
xlabel('Run No');
ylabel('Error cuadratico (((m^2 K/kJ) e6)^2)');
grid;
legend(p_hand_legend,leyenda);
hold off;
clear leyenda;
end
if find(analisis_selec==7)
%Analisis de sensibilidad al diametro
for i=1:length(mod_selec)
ctes_sim1=ctes_sim;
pos_D= not(cellfun('isempty', strfind(nom_ctes_sim,'D')));
figure;
for j=1:conf_sensib(ind_sensib,2)
[nom_res res]=simular(handles.coefmodelos(mod_selec(i),:),nom_datos_sim,
datos_sim, nom_ctes_sim, ctes_sim1);
for k=1:length(nom_res)
eval([nom_res{k} '=res(:,k);']);
end
%Representacion grafica:
No=1:length(dR_f_calc);
inter=1:0.1:length(dR_f_calc);
interp_calc=spline(No,dR_f_calc,inter);
p_hand=plot(No,dR_f_calc,strcat('s',colores(j)),inter,interp_calc,colores(j));
p_hand_leg(j)=p_hand(1);
leyenda{j}=strcat('D=',num2str(ctes_sim1(1,pos_D)),' mm');
hold on;
%Cambio del valor de la variable parametrica
ctes_sim1(pos_D)=ctes_sim1(pos_D)+conf_sensib(ind_sensib,1);
end
88
Anexos
xlabel('Run No');
ylabel('Tasa de ensuciamiento ((m^2 K/kJ) e6)');
title(strcat('Sensibilidad del modelo "',lista_modelos{mod_selec(i)},'" al
diametro'));
legend(p_hand_leg, leyenda);
hold off;
clear p_hand p_hand_leg leyenda;
end
ind_sensib=ind_sensib+1;
end
if find(analisis_selec==8)
%Analisis de sensibilidad a la densidad
for i=1:length(mod_selec)
ctes_sim1=ctes_sim;
pos_ro= not(cellfun('isempty', strfind(nom_ctes_sim,'ro')));
figure;
for j=1:conf_sensib(ind_sensib,2)
[nom_res res]=simular(handles.coefmodelos(mod_selec(i),:),nom_datos_sim,
datos_sim, nom_ctes_sim, ctes_sim1);
for k=1:length(nom_res)
eval([nom_res{k} '=res(:,k);']);
end
%Representacion grafica:
No=1:length(dR_f_calc);
inter=1:0.1:length(dR_f_calc);
interp_calc=spline(No,dR_f_calc,inter);
p_hand=plot(No,dR_f_calc,strcat('s',colores(j)),inter,interp_calc,colores(j));
p_hand_leg(j)=p_hand(1);
leyenda{j}=strcat('ro=',num2str(ctes_sim1(1,pos_ro)),' g/ml');
hold on;
%Cambio del valor de la variable parametrica
ctes_sim1(pos_ro)=ctes_sim1(pos_ro)+conf_sensib(ind_sensib,1);
end
xlabel('Run No');
ylabel('Tasa de ensuciamiento ((m^2 K/kJ) e6)');
title(strcat('Sensibilidad del modelo "',lista_modelos{mod_selec(i)},'" a la
densidad'));
legend(p_hand_leg, leyenda);
hold off;
clear p_hand p_hand_leg leyenda;
end
ind_sensib=ind_sensib+1;
end
if find(analisis_selec==9)
%Analisis de sensibilidad a la viscosidad
for i=1:length(mod_selec)
ctes_sim1=ctes_sim;
pos_mi= not(cellfun('isempty', strfind(nom_ctes_sim,'mi')));
figure;
for j=1:conf_sensib(ind_sensib,2)
[nom_res res]=simular(handles.coefmodelos(mod_selec(i),:),nom_datos_sim,
datos_sim, nom_ctes_sim, ctes_sim1);
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
89
for k=1:length(nom_res)
eval([nom_res{k} '=res(:,k);']);
end
%Representacion grafica:
No=1:length(dR_f_calc);
inter=1:0.1:length(dR_f_calc);
interp_calc=spline(No,dR_f_calc,inter);
p_hand=plot(No,dR_f_calc,strcat('s',colores(j)),inter,interp_calc,colores(j));
p_hand_leg(j)=p_hand(1);
leyenda{j}=strcat('mi=',num2str(ctes_sim1(1,pos_mi)),' mPa s');
hold on;
%Cambio del valor de la variable parametrica
ctes_sim1(pos_mi)=ctes_sim1(pos_mi)+conf_sensib(ind_sensib,1);
end
xlabel('Run No');
ylabel('Tasa de ensuciamiento ((m^2 K/kJ) e6)');
title(strcat('Sensibilidad del modelo "',lista_modelos{mod_selec(i)},'" a la
viscosidad'));
legend(p_hand_leg, leyenda);
hold off;
clear p_hand p_hand_leg leyenda;
end
ind_sensib=ind_sensib+1;
end
if find(analisis_selec==10)
%Analisis de sensibilidad a la energia de activacion
for i=1:length(mod_selec)
coef1=handles.coefmodelos(mod_selec(i),:);
figure;
for j=1:conf_sensib(ind_sensib,2)
[nom_res res]=simular(coef1,nom_datos_sim, datos_sim, nom_ctes_sim,
ctes_sim);
for k=1:length(nom_res)
eval([nom_res{k} '=res(:,k);']);
end
%Representacion grafica:
No=1:length(dR_f_calc);
inter=1:0.1:length(dR_f_calc);
interp_calc=spline(No,dR_f_calc,inter);
p_hand=plot(No,dR_f_calc,strcat('s',colores(j)),inter,interp_calc,colores(j));
p_hand_leg(j)=p_hand(1);
leyenda{j}=strcat('E=',num2str(coef1(2)),' (J/mol)');
hold on;
%Cambio del valor de la variable parametrica
coef1(2)=coef1(2)+conf_sensib(ind_sensib,1);
end
xlabel('Run No');
ylabel('Tasa de ensuciamiento ((m^2 K/kJ) e6)');
title(strcat('Sensibilidad del modelo "',lista_modelos{mod_selec(i)},'" a la
energia de activacion'));
legend(p_hand_leg, leyenda);
90
Anexos
hold off;
clear p_hand p_hand_leg leyenda;
end
ind_sensib=ind_sensib+1;
end
if find(analisis_selec==11)
%Analisis de sensibilidad a la velocidad
for i=1:length(mod_selec)
datos_sim1=datos_sim;
pos_u= not(cellfun('isempty', strfind(nom_datos_sim,'u')));
figure;
for j=1:conf_sensib(ind_sensib,2)
[nom_res res]=simular(handles.coefmodelos(mod_selec(i),:),nom_datos_sim,
datos_sim1, nom_ctes_sim, ctes_sim);
for k=1:length(nom_res)
eval([nom_res{k} '=res(:,k);']);
end
%Representacion grafica:
No=1:length(dR_f_calc);
inter=1:0.1:length(dR_f_calc);
interp_calc=spline(No,dR_f_calc,inter);
p_hand=plot(No,dR_f_calc,strcat('s',colores(j)),inter,interp_calc,colores(j));
p_hand_leg(j)=p_hand(1);
leyenda{j}=strcat('u_m=',num2str(mean(datos_sim1(:,pos_u))),' m/s');
hold on;
%Cambio del valor de la variable parametrica
datos_sim1(:,pos_u)=datos_sim1(:,pos_u)+conf_sensib(ind_sensib,1);
end
xlabel('Run No');
ylabel('Tasa de ensuciamiento ((m^2 K/kJ) e6)');
title(strcat('Sensibilidad del modelo "',lista_modelos{mod_selec(i)},'" a la
velocidad'));
legend(p_hand_leg, leyenda);
hold off;
clear p_hand p_hand_leg leyenda;
end
ind_sensib=ind_sensib+1;
end
if find(analisis_selec==12)
%Analisis de sensibilidad a la temperatura superficial
for i=1:length(mod_selec)
datos_sim1=datos_sim;
pos_Ts= not(cellfun('isempty', strfind(nom_datos_sim,'T_s')));
figure;
for j=1:conf_sensib(ind_sensib,2)
[nom_res res]=simular(handles.coefmodelos(mod_selec(i),:),nom_datos_sim,
datos_sim1, nom_ctes_sim, ctes_sim);
for k=1:length(nom_res)
eval([nom_res{k} '=res(:,k);']);
end
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
91
%Representacion grafica:
No=1:length(dR_f_calc);
inter=1:0.1:length(dR_f_calc);
interp_calc=spline(No,dR_f_calc,inter);
p_hand=plot(No,dR_f_calc,strcat('s',colores(j)),inter,interp_calc,colores(j));
p_hand_leg(j)=p_hand(1);
leyenda{j}=strcat('Ts_m=',num2str(mean(datos_sim1(:,pos_Ts))),' ºC');
hold on;
%Cambio del valor de la variable parametrica
datos_sim1(:,pos_Ts)=datos_sim1(:,pos_Ts)+conf_sensib(ind_sensib,1);
end
xlabel('Run No');
ylabel('Tasa de ensuciamiento ((m^2 K/kJ) e6)');
title(strcat('Sensibilidad del modelo "',lista_modelos{mod_selec(i)},'" a la
temperatura superficial'));
legend(p_hand_leg, leyenda);
hold off;
clear p_hand p_hand_leg leyenda;
end
ind_sensib=ind_sensib+1;
end
msgbox('Los analisis seleccionados se han realizado con exito.','Fin');
% --- Executes on button press in boton_SALIR.
function boton_SALIR_Callback(hObject, eventdata, handles)
% hObject
handle to boton_SALIR (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
opc=questdlg('¿Desea salir del simulador?','Salir','Si','No','No');
if strcmp(opc,'No')
return;
end
clear,clc,close all
% --- Executes on button press in boton_AYUDA.
function boton_AYUDA_Callback(hObject, eventdata, handles)
% hObject
handle to boton_AYUDA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
winopen('Ayuda.pdf');
function c_edit_CTE2_Callback(hObject, eventdata, handles)
% hObject
handle to c_edit_CTE2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of c_edit_CTE2 as text
%
str2double(get(hObject,'String')) returns contents of c_edit_CTE2 as a
double
global cte2;
cte2=0;
cte2= str2double(get(hObject,'String'));
92
Anexos
% --- Executes during object creation, after setting all properties.
function c_edit_CTE2_CreateFcn(hObject, eventdata, handles)
% hObject
handle to c_edit_CTE2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function c_edit_CTE3_Callback(hObject, eventdata, handles)
% hObject
handle to c_edit_CTE3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of c_edit_CTE3 as text
%
str2double(get(hObject,'String')) returns contents of c_edit_CTE3 as a
double
global cte3;
cte3=0;
cte3= str2double(get(hObject,'String'));
% --- Executes during object creation, after setting all properties.
function c_edit_CTE3_CreateFcn(hObject, eventdata, handles)
% hObject
handle to c_edit_CTE3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in s_boton_VERINFO.
function s_boton_VERINFO_Callback(hObject, eventdata, handles)
% hObject
handle to s_boton_VERINFO (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global mod_selec
med_mod(:,:,1)=['Temperatura
';'Velocidad(m/s)
ensuciamiento((m^2*K/kJ)E6)'];
med_mod(:,:,2)=['Temperatura
';'Velocidad(m/s)
'];
med_mod(:,:,3)=['Temperatura
';'Velocidad(m/s)
'];
med_mod(:,:,4)=['Temperatura
';'Velocidad(m/s)
'];
superficial(ºC)
';'Temperatura infinito(ºC)
';'Presion(kPa)
';'Tasa de
superficial(ºC)
';'Temperatura infinito(ºC)
';'Tasa de ensuciamiento((m^2*K/kJ)E6)';'
superficial(ºC)
';'Temperatura infinito(ºC)
';'Presion(kPa)
';'
superficial(ºC)
';'
ctes_mod(:,:,1)=['Densidad(g/ml)
tubo(mm)'];
ctes_mod(:,:,2)=['
'];
';'Viscosidad(mPa*s)
';'Diametro del
';'
';'
ind_modelos=handles.coefmodelos(mod_selec,1);
if handles.check_val==1
';'Temperatura infinito(ºC)
';'
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
if find(ind_modelos==1)>=1
set(handles.s_texto_MEDIDAS,'String',med_mod(:,:,1));
else
set(handles.s_texto_MEDIDAS,'String',med_mod(:,:,2));
end
else
if find(ind_modelos==1)>=1
set(handles.s_texto_MEDIDAS,'String',med_mod(:,:,3));
else
set(handles.s_texto_MEDIDAS,'String',med_mod(:,:,4));
end
end
if find(ind_modelos>=2)>=1
set(handles.s_texto_CTES,'String',ctes_mod(:,:,1));
else
set(handles.s_texto_CTES,'String',ctes_mod(:,:,2));
end
% --- Executes on button press in s_check_VALIDACION.
function s_check_VALIDACION_Callback(hObject, eventdata, handles)
% hObject
handle to s_check_VALIDACION (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of s_check_VALIDACION
handles.check_val=get(hObject,'Value');
guidata(hObject, handles);
93
94
Anexos
6.2.2
Función reg_saleh
function [ coef ] = reg_saleh( nom_datos, datos )
%REG_SALEH Calcula los coeficientes del modelo de Saleh por regresión de
%los datos importados.
%------------------------------------------------------------------------%ADECUACION DE LOS DATOS DE ENTRADA:
global T_s T_inf u p dR_f;
for i=1:5
eval([nom_datos{i} '=datos(:,i);']);
end
%------------------------------------------------------------------------%------------------------------------------------------------------------%MODELO DE SALEH:
%dR_f/dt=alpha*(p^beta)*(u^gamma)*exp(-E/(R*T_f))
%
%Expresiones auxiliares:
%T_f=(T_s+T_inf)/2
%
%------------------------------------------------------------------------T_f=(T_s+T_inf)./2;
R=8.315; %Constante universal de los gases (J/mol K)
%------------------------------------%Calculo de la energia de activacion:
%------------------------------------y=log(dR_f);
x=1./T_f;
pol=polyfit(x,y,1);
E=-pol(1)*R;
%Energia de activacion (J/mol)
%------------------------------------%Linealizamos el modelo tomando logaritmo y calculamos los coeficientes por
%regresion multiple:
%------------------------------------%ln(dR_f/dt)=ln(alpha)+beta*ln(p)+gamma*ln(u)-E/(R*T_f)
Y=y+E./(R.*T_f);
X=[ones(length(p),1) log(p) log(u)];
B=regress(Y,X);
alpha=exp(B(1));
beta=B(2);
gamma=B(3);
coef=[ 1, E, alpha, beta, gamma ]; %El primer elemento indica el tipo de
modelo
end
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
6.2.3
Función reg_ebert
function [ coef ] = reg_ebert( nom_datos, datos, ro, mi, D)
%REG_EBERT Calcula los coeficientes del modelo de Ebert y Panchal por
%regresión de los datos importados.
%------------------------------------------------------------------------%ADECUACION DE LOS DATOS DE ENTRADA:
global T_s T_inf u dR_f
for i=1:5
eval([nom_datos{i} '=datos(:,i);']);
end
%------------------------------------------------------------------------%------------------------------------------------------------------------%MODELO DE EBERT Y PANCHAL (formulación según David Butterworth (...25X)):
%dR_f/dt=alpha*(Re^-0.88)*exp(-E/(R*T_f))-gamma*tau
%
%Expresiones auxiliares:
%T_f=(T_s+T_inf)/2
%
%tau=f/2*ro*u^2
%
%Si flujo laminar, f=16/Re; si flujo turbulento, f=0.0035+0.264/Re^0.42
%
%------------------------------------------------------------------------T_f=(T_s+T_inf)./2;
R=8.315; %Constante universal de los gases (J/mol K)
Re=ro*u*D/mi*1000;
%Numero de Reynolds
if Re<2300
f=16./Re;
else
f=0.0035+0.264./Re.^0.42;
end
tau=f/2.*ro.*u.^2;
%------------------------------------%Calculo de la energia de activacion:
%------------------------------------y=log(dR_f);
x=1./T_f;
pol=polyfit(x,y,1);
E=-pol(1)*R;
%Energia de activacion (J/mol)
%------------------------------------%Calculamos los coeficientes por regresion multiple:
%------------------------------------%dR_f/dt=alpha*(Re^-0.88)*exp(-E/(R*T_f))-gamma*tau
Y=dR_f;
X=[(Re.^-0.88).*exp(-E./(R*T_f)) tau];
B=regress(Y,X);
alpha=B(1);
95
96
Anexos
gamma=-B(2);
coef=[ 2, E, alpha, 0, gamma ]; %El primer elemento indica el tipo de
modelo. Este modelo no tiene beta, por lo que se ha puesto un 0 en su lugar.
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
6.2.4
Función reg_polley
function [ coef ] = reg_polley( nom_datos, datos, ro, mi, D)
%REG_POLLEY Calcula los coeficientes del modelo de Ebert y Panchal por
%regresión de los datos importados.
%------------------------------------------------------------------------%ADECUACION DE LOS DATOS DE ENTRADA:
global T_s T_inf u dR_f
for i=1:5
eval([nom_datos{i} '=datos(:,i);']);
end
%------------------------------------------------------------------------%------------------------------------------------------------------------%MODELO DE POLLEY:
%dR_f/dt=alpha*(Re^-0.8)*(Pr^-0.33)*exp(-E/(R*T_s))-gamma*Re^0.8
%
%Expresiones auxiliares:
%Re=ro*u*D/mi
%
%------------------------------------------------------------------------R=8.315; %Constante universal de los gases (J/mol K)
Re=ro*u*D/mi*1000;
cp=1940+3*T_inf;
k=0.145-0.0001*T_inf;
Pr=cp*mi./k*1e-6;
%------------------------------------%Calculo de la energia de activacion:
%------------------------------------y=log(dR_f);
x=1./T_s;
pol=polyfit(x,y,1);
E=-pol(1)*R;
%Energia de activacion (J/mol)
%------------------------------------%Calculamos los coeficientes del modelo por regresion multiple:
%------------------------------------%dR_f/dt=alpha*(Re^-0.8)*(Pr^-0.33)*exp(-E/(R*T_s))-gamma*Re^0.8
Y=dR_f;
X=[(Re.^-0.8).*(Pr.^-0.33).*exp(-E./(R*T_s)) Re.^0.8];
B=regress(Y,X);
alpha=B(1);
gamma=-B(2);
coef=[ 3, E, alpha, 0, gamma ]; %El primer elemento indica el tipo de
modelo. Este modelo no tiene beta, por lo que se ha puesto un 0 en su lugar.
97
98
Anexos
6.2.5
Función simular
function [ nom_res res] = simular( coef, nom_datos_sim, datos_sim,
nom_ctes_sim, ctes_sim )
%SIMULAR Simula y representa el modelo determinado por el vector coef,
%evaluando los datos contenidos en nom_datos_sim y datos_sim.
%------------------------------------------------------------------------%ADECUACION DE LOS DATOS DE ENTRADA:
% global T_s T_inf u p dR_f;
global dR_f T_s T_inf u p ro mi D;
for i=1:length(nom_datos_sim)
eval([nom_datos_sim{i} '=datos_sim(:,i);']);
end
for i=1:length(nom_ctes_sim)
eval([nom_ctes_sim{i} '=ctes_sim(:,i);']);
end
E=coef(2);
alpha=coef(3);
beta=coef(4);
gamma=coef(5);
%------------------------------------------------------------------------R=8.315; %Constante universal de los gases (J/mol K)
%------------------------------------------------------------------------%CALCULO DE LA TASA DE ENSUCIAMIENTO SEGUN EL MODELO:
switch coef(1)
case 1
%Modelo de Saleh
T_f=(T_s+T_inf)./2;
dR_f_calc=alpha.*(p.^beta).*(u.^gamma).*exp(-E./(R.*T_f));
case 2
%Modelo de Ebert y Panchal
T_f=(T_s+T_inf)./2;
Re=ro*u*D/mi*1000; %Numero de Reynolds
if Re<2300
f=16./Re;
else
f=0.0035+0.264./Re.^0.42;
end
tau=f/2.*ro.*u.^2;
dR_f_calc=alpha*(Re.^-0.88).*exp(-E./(R*T_f))-gamma*tau;
case 3
%Modelo de Polley
Re=ro*u*D/mi*1000;
cp=1940+3*T_inf;
k=0.145-0.0001*T_inf;
Pr=cp*mi./k*1e-6;
dR_f_calc=alpha*(Re.^-0.8).*(Pr.^-0.33).*exp(-E./(R*T_s))gamma*Re.^0.8;
end
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos
%------------------------------------------------------------------------%SALIDA DE LA FUNCION:
es_dR_f=strfind(nom_datos_sim,'dR_f');
if find(not(cellfun('isempty', es_dR_f)))
nom_res={'dR_f','dR_f_calc'};
res=[dR_f dR_f_calc];
else
nom_res={'dR_f_calc'};
res=dR_f_calc;
end
%------------------------------------------------------------------------end
99
100
Anexos
6.2.6
Función calc_err_rel
function [ err_rel_med err_rel] = calc_err_rel( coef, nom_datos_sim,
datos_sim, nom_ctes_sim, ctes_sim )
%CALC_ERR_REL Calcula el error cometido por el modelo en la estimacion de la
%resistencia de fouling.
%------------------------------------------------------------------------%ADECUACION DE LOS DATOS DE ENTRADA:
global T_s T_inf u p dR_f ro mi D;
for i=1:length(nom_datos_sim)
eval([nom_datos_sim{i} '=datos_sim(:,i);']);
end
for i=1:length(nom_ctes_sim)
eval([nom_ctes_sim{i} '=ctes_sim(:,i);']);
end
E=coef(2);
alpha=coef(3);
beta=coef(4);
gamma=coef(5);
%------------------------------------------------------------------------R=8.315; %Constante universal de los gases (J/mol K)
%------------------------------------------------------------------------%CALCULO DE LA TASA DE ENSUCIAMIENTO SEGUN EL MODELO:
switch coef(1)
case 1
%Modelo de Saleh
T_f=(T_s+T_inf)./2;
dR_f_calc=alpha.*(p.^beta).*(u.^gamma).*exp(-E./(R.*T_f));
case 2
%Modelo de Ebert y Panchal
T_f=(T_s+T_inf)./2;
Re=ro*u*D/mi*1000; %Numero de Reynolds
if Re<2300
f=16./Re;
else
f=0.0035+0.264./Re.^0.42;
end
tau=f/2.*ro.*u.^2;
dR_f_calc=alpha*(Re.^-0.88).*exp(-E./(R*T_f))-gamma*tau;
case 3
%Modelo de Polley
Re=ro*u*D/mi*1000;
cp=1940+3*T_inf;
k=0.145-0.0001*T_inf;
Pr=cp*mi./k*1e-6;
dR_f_calc=alpha*(Re.^-0.8).*(Pr.^-0.33).*exp(-E./(R*T_s))gamma*Re.^0.8;
end
%-------------------------------------------------------------------------
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos 101
err_rel=abs(dR_f-dR_f_calc)./dR_f*100;
err_rel_med=mean(err_rel);
end
102
Anexos
6.2.7
Función calc_err_cuad
function [ err_cuad_med
err_cuad] = calc_err_cuad( coef, nom_datos_sim,
datos_sim, nom_ctes_sim, ctes_sim )
%CALC_ERR_REL Calcula el error cuadratico cometido por el modelo en la
%estimacion de la resistencia de fouling.
%------------------------------------------------------------------------%ADECUACION DE LOS DATOS DE ENTRADA:
global T_s T_inf u p dR_f ro mi D;
for i=1:length(nom_datos_sim)
eval([nom_datos_sim{i} '=datos_sim(:,i);']);
end
for i=1:length(nom_ctes_sim)
eval([nom_ctes_sim{i} '=ctes_sim(:,i);']);
end
E=coef(2);
alpha=coef(3);
beta=coef(4);
gamma=coef(5);
%------------------------------------------------------------------------R=8.315; %Constante universal de los gases (J/mol K)
%------------------------------------------------------------------------%CALCULO DE LA TASA DE ENSUCIAMIENTO SEGUN EL MODELO:
switch coef(1)
case 1
%Modelo de Saleh
T_f=(T_s+T_inf)./2;
dR_f_calc=alpha.*(p.^beta).*(u.^gamma).*exp(-E./(R.*T_f));
case 2
%Modelo de Ebert y Panchal
T_f=(T_s+T_inf)./2;
Re=ro*u*D/mi*1000; %Numero de Reynolds
if Re<2300
f=16./Re;
else
f=0.0035+0.264./Re.^0.42;
end
tau=f/2.*ro.*u.^2;
dR_f_calc=alpha*(Re.^-0.88).*exp(-E./(R*T_f))-gamma*tau;
case 3
%Modelo de Polley
Re=ro*u*D/mi*1000;
cp=1940+3*T_inf;
k=0.145-0.0001*T_inf;
Pr=cp*mi./k*1e-6;
dR_f_calc=alpha*(Re.^-0.8).*(Pr.^-0.33).*exp(-E./(R*T_s))gamma*Re.^0.8;
end
%-------------------------------------------------------------------------
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos 103
err_cuad=(dR_f-dR_f_calc).^2;
err_cuad_med=mean(err_cuad);
end
6.3. Datos utilizados para la simulación
6.3.1
Light Australian Crude Oil
Tabla 6-1. Datos de Light Australian Crude Oil (I)
ρ (g/ml)
µ (mPa·s)
D (mm)
0.792
1.969
14.3
Tabla 6-2. Datos de Light Australian Crude Oil (II)
d Г
Ba b 1W³ F
d
ÍÎ
‡ (Ë)
(Ë)
u (m/s)
p (kPa)
80
180
0.25
379
80
200
0.25
379
0.2872
80
220
0.25
379
0.3989
80
240
0.25
379
0.4797
80
260
0.25
379
0.4795
80
245
0.25
379
0.4806
80
245
0.25
510
0.4592
80
245
0.25
655
0.5361
80
245
0.35
379
0.2847
100
245
0.35
379
0.2911
120
245
0.35
379
0.5199
80
245
0.25
379
0.5004
80
245
0.3
379
0.3496
80
245
0.35
379
0.2661
80
245
0.4
379
0.2351
0.2003
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos 105
6.3.2
Light Sour Blend
Tabla 6-3. Datos de Light Sour Blend (I)
ρ (g/ml)
µ (mPa·s)
D (mm)
0.701775
0.60534375
10.7
Tabla 6-4. Datos de Light Sour Blend (II)
d Г
Ba b 1W³ F
d
ÍÎ
p (kPa)
34.6
965.3
0.75
12.9
1103.2
371
0.75
56.7
861.875
256.5
350.5
0.75
39.1
861.875
270.6
370
0.75
66.9
861.875
282.7
375.5
0.75
35.1
861.875
255.5
354
0.75
102.7
861.875
256.5
355
0.75
41.6
861.875
272
355
0.75
41.6
861.875
274
335
0.75
30.6
861.875
285.7
360.5
0.75
49
861.875
272.8
362.5
0.75
200
861.875
247.5
357
0.75
35
861.875
275.6
375
0.35
69.8
861.875
276.3
375
0.15
99.1
861.875
280.4
363.5
0.75
67.5
861.875
‡ (Ë)
(Ë)
u (m/s)
134.4
250
0.3
211.8
297
275.4
106
6.3.3
Anexos
Cold Lake
Tabla 6-5. Datos de Cold Lake (I)
ρ (g/ml)
µ (mPa·s)
D (mm)
0.793625
2.9721
10.7
Tabla 6-6. Datos de Cold Lake (II)
‡ (Ë)
(Ë)
u (m/s)
266.2
382
0.75
252.9
352.5
234.3
247.2
d Г
Ba b 1W³ F
d
ÍÎ
p (kPa)
94.4
861.875
0.75
68.4
861.875
335.5
0.75
92.9
861.875
342.5
0.75
87.8
861.875
REFERENCIAS
[1] Delta T Heat Exchangers, «Fouling in Heat Exchangers».
[2] H. IBRAHIM, «Fouling in Heat Exchangers, MATLAB - A Fundamental Tool for Scientific
Computing and Engineering Applications,» InTech, 2012. [En línea]. Available:
http://www.intechopen.com/books/matlab-a-fundamental-tool-for-scientific-computingand-engineering-applications-volume-3/fouling-in-heat-exchangers.
[3] K. BELL y A. MUELLER, «Wolverine tube heat transfer data book,» Wolverine Tube Inc,
2001.
[4] T. BOTT, «General Models of Fouling,» de Fouling of Heat Exchangers, School of Chemical
Engineering, University of Birmingham, Elsevier, 1995, pp. 23-32.
[5] M. NASR y M. GIVI, «Modeling of crude oil fouling in preheat exchangers of refinery
distillation units,» Applied Thermal Engineering, nº 26, pp. 1572-1577, 2006.
[6] F. COLETTI y S. MACCHIETTO, «A Dynamic, Distributed Model of Shell-and-Tube Heat
Exchangers Undergoing Crude Oil Fouling,» Industrial Chemistry Research, nº 50, pp. 45154533, 2011.
[7] Fouling os Heat Exchanger Surfaces. General Principles. 86038, London: ESDU
International PLC, 1989.
[8] T. BOTT, «Particulate Deposition,» de Fouling of Heat Exchangers, School of Chemical
Engineering, University of Birmingham, Elsevier, 1995, pp. 55-96.
[9] T. BOTT, «Crystallisation and Scale Formation,» de Fouling of Heat Exchangers, School of
Chemical Engineering, University of Birmingham, Elsevier, 1995, pp. 97-135.
[10] T. BOTT, «Freezing Fouling or Liquid Solidification,» de Fouling of Heat Exchangers, School
of Chemical Engineering, University of Birmingham, Elsevier, 1995, pp. 137-148.
[11] T. BOTT, «Fouling Due to Corrosion,» de Fouling of Heat Exchangers, School of Chemical
Engineering, University of Birmingham, Elsevier, 1995, pp. 149-183.
[12] T. BOTT, «Chemical Reaction Fouling,» de Fouling of Heat Exchangers, School of Chemical
Engineering, University of Birmingham, Elsevier, 1995, pp. 185-221.
[13] T. BOTT, «Biological Growth on Heat Exchanger Surfaces,» de Fouling of Heat Exchangers,
School of Chemical Engineering, University of Birmingham, Elsevier, 1995, pp. 223-267.
108
Referencias
[14] D. BUTTHERWORTH, «Design of shell-and-tube heat exchangers when the fouling
depends on local temperature and velocity,» Applied Thermal Engineering, nº 22, pp. 789-801,
2002.
[15] The MathWorks, Inc, «Matlab. Descripción general,» [En línea].
http://www.mathworks.es/products/matlab. [Último acceso: Septiembre 2014].
Available:
[16] The MathWorks, Inc., Matlab(R) Creating Graphical User Interfaces, 2014.
[17] Z. SALEH, R. SHEIKHOLESLAMI y A. WATKINSON, «Fouling Characteristics of a Light
Australian Crude Oil,» de Heat Exchanger Foulinf and Cleaning: Fundamentals and
Applications, Engineering Conferences International, 2003.
[18] M. SRINIVASAN, «Heat exchanger fouling of some Canadian crude oils,» Vancouver,
2008.
7 Índice de Tablas
Tabla 1-1. Tipos de fouling y sus tratamientos
18
Tabla 1-2. Tipos de intercambiadores y fouling asociado
19
Tabla 2-1: Factores de ensuciamiento más comunes [1]
21
Tabla 3-1. Operadores de Matlab
38
Tabla 3-2. Modelos integrados en la herramienta
42
Tabla 3-3. Expresión lineal de los modelos
45
Tabla 3-4. Análisis disponibles en la herramienta
46
Tabla 4-1: Coeficientes de los tres modelos para Light Australian Crude Oil
51
Tabla 4-2: Coeficientes de los tres modelos para Light Sour Blend
53
Tabla 4-3: Coeficientes de los tres modelos para Cold Lake
55
Tabla 4-4: Coeficientes del modelo de Ebert y Panchal para una parte del conjunto de datos
Light Australian Crude Oil
56
Tabla 6-1. Datos de Light Australian Crude Oil (I)
104
Tabla 6-2. Datos de Light Australian Crude Oil (II)
104
Tabla 6-3. Datos de Light Sour Blend (I)
105
Tabla 6-4. Datos de Light Sour Blend (II)
105
Tabla 6-5. Datos de Cold Lake (I)
106
Tabla 6-6. Datos de Cold Lake (II)
106
110
Índice de Tablas
Desarrollo de un simulador para el análisis y control del ensuciamiento en intercambiadores de Carcasa y Tubos 111
8 Índice de Figuras
Figura 2-1. Tipos de comportamiento de la tasa de ensuciamiento
23
Figura 3-1. Deployment Tool
41
Figura 3-2. Aplicación "Simulafor Fouling"
42
Figura 3-3. Cálculo de la energía de activación
45
Figura 3-4. Mensaje de error
50
Figura 3-5. Aviso de fin de tarea
50
Figura 4-1. Comparación de la tasa calculada con los tres modelos y la medida para Light
Australian Crude Oil
52
Figura 4-2. Comparación de los errores relativos de los tres modelos para Light Australian Crude
Oil
53
Figura 4-3. Comparación de la tasa calculada con los tres modelos y la medida para Light Sour
Blend
54
Figura 4-4. Comparación de los errores relativos de los tres modelos para Light Sour Blend 55
Figura 4-5. Comparación de los errores relativos de los tres modelos para Cold Lake
56
Figura 4-6. Error relativo del modelo de Ebert y Panchal parcial para Light Australian Crude Oil
57
Figura 4-7. Simulación del modelo Ebert y Panchal parcial para el resto de datos de Light
Australian Crude Oil
58
Figura 4-8. Simulación del modelo de Ebert y Panchal parcial para todo el conjunto de datos
Light Australian Crude Oil
59
Figura 4-9. Errores relativos en la simulación del modelo de Ebert y Panchal parcial para Light
Australian Crude Oil
60
Figura 4-10. Simulación del modelo de Ebert y Panchal parcial opuesto para Light Australian
Crude Oil
61
Figura 4-11. Errores relativos de la simulación del modelo de Ebert y Panchal parcial opuesto
para Light Australian Crude Oil
62
Figura 4-12. Modelos calculados para los datos Light Sour Blend y simulados para Cold Lake63
Figura 4-13. Errores relativos cometidos al simular los modelos calculados para Light Sour Blend
con los datos Cold lake
64
Figura 4-14. Sensibilidad del modelo de Ebert y Panchal al diámetro
65
Figura 4-15. Sensibilidad del modelo de Ebert y Panchal a la densidad
65
Figura 4-16. Sensibilidad del modelo de Ebert y Panchal a la viscosidad
66
Figura 4-17. Sensibilidad del modelo de Ebert y Panchal a la energía de activación
67
Figura 4-18. Sensibilidad del modelo de Ebert y Panchal a la velocidad
68
112
Índice de Figuras
Figura 4-19. Sensibilidad del modelo de Ebert y Panchal a la temperatura superficial
69
Figura 4-20. Comparación de la sensibilidad del modelo de Ebert y Panchal a distintos
parámetros
70
Figura 4-21. Comparación de la sensibilidad de los tres modelos al diámetro
71
Figura 4-22. Comparación de la sensibilidad de los tres modelos a la energía de activación 72
Figura 6-2. Etiquetas del bloque "Simular y comparar"
76
Figura 6-1. Etiquetas de los bloques "Calcular modelo" e "Importar modelo"
76
Descargar