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 Eq ]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 4e ) 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