Está en la página 1de 120

Luis O.

Moncada Albitres

Luis D. Moncada Torres

Módulos de simulación
con MATLAB
Módulos de simulación con Matlab

Autores:

Luis O. Moncada Albitres

Luis D. Moncada Torres

Editor:

© Luis David Moncada Torres

Jr. Negrón Ugarte N°957 – Las Quintanas

luisd.moncada@hotmail.com

Trujillo – Perú

Primera edición digital, noviembre 2020

ISBN: 978-612-00-5704-9

HECHO EL DEPÓSITO LEGAL EN LA BIBLIOTECA NACIONAL DEL PERÚ N° 202009059

Libro digital disponible en www.ingenieriaquimica.tech


PROLOGO

El presente libro Módulos de simulación con MATLAB presenta la resolución


de diferentes ejemplos de simulación iniciando con algunos sistemas simples
hasta procesos más realistas y complejos, con la finalidad de ilustrar como se
manipula un número grande de ecuaciones utilizando un software matemático.

Algunas de las ecuaciones lineales o ecuaciones diferenciales simples que


simularemos pueden, desde luego, ser resueltas analíticamente para obtener
soluciones generales. Sin embargo la gran mayoría no pueden, en general, ser
resueltas analíticamente, y usualmente es requerida la simulación por
computador.

Se debe tener presente, que se debe ingresar los valores numéricos


específicos de los parámetros, condiciones iniciales, y funciones impulsoras y
así obtener los valores numéricos específicos de la solución. No se puede
conseguir una solución general en términos de valores arbitrarios, entradas no
especificadas, parámetros, etc. como sí es posible con una solución analítica.

Así mismo se asume un conocimiento básico de lenguaje de programación


usando MATLAB, por lo que los programas serán escritos en MATLAB. Para
quienes prefieran otro lenguaje, la conversión será fácil ya que los programas
serán simples traslaciones de las ecuaciones al código de la fuente. Así mismo
podrán usar otro paquete diferente a MATLAB de acuerdo a la disponibilidad y
conocimiento. Todos los programas pueden ser corridos en cualquier tipo de
computador.
INDICE
1. AJUSTE DE CONCENTRACIÓN EN UN TANQUE 1
2. MEZCLA DE CORRIENTES GASEOSAS 13
3. ETAPA DE ABSORCIÓN NO ESTACIONARIA 20
4. ANALISIS DE UN CSTR 31
5. DESTILACIÓN MEZCLAS BINARIAS 40
6. TANQUE CALENTADO POR RESISTENCIA 48
7. DEREACCIÓN EXOTERMICA
EN UN SISTEMA DE CSTR 53
8. REACTOR PISTÓN CON INTERCAMBIADOR 65
9. REACCIÓN EN FASE GAS
EN UN REACTOR PISTÓN 77
10. ESTUDIO DINÁMICO DE UN REACTOR
PISTÓN ISOTERMO 84
11. ESTUDIO DINÁMICO DE UN REACTOR
PISTÓN ADIABÁTICO 92
12. TRANSMISION DE CALOR EN UNA
PLACA PLANA 104
Módulos de Simulación con MATLAB

1. AJUSTE DE CONCENTRACIÓN EN UN
TANQUE
Se busca obtener el modelo para el estudio de la evolución del nivel y
concentración de sal en un tanque.

𝑄𝑒1 𝐶𝑒1
𝑄𝑒2 𝐶𝑒2

ℎ 𝐶
1 2
𝑄𝑠

Datos del sistema con tanque

Sección de la piscina: 𝑆 = 100𝑚2


Sección de salida del conducto: 𝑆𝑐 = 0.01𝑚2
Caudales máximos de entrada: 𝑄𝑒1𝑚𝑎𝑥 = 0.015 𝑚3 ⁄𝑠 𝑄𝑒2𝑚𝑎𝑥 =
0.015 𝑚3 ⁄𝑠
Concentraciones de entrada: 𝐶𝑒1𝑚𝑎𝑥 = 0.1 𝑚𝑜𝑙 ⁄𝑚3 𝐶𝑒2𝑚𝑎𝑥 =
5.0 𝑚𝑜𝑙 ⁄𝑚3
Factor de pérdidas en la salida: 0.005𝑎
𝛼(𝑎) =
1 + 0.5𝑎
Pérdida de carga en la salida: 1
ℎ𝑓 (𝑄, 𝑎) = ( ) 𝑄2
𝛼(𝑎)

1. Si el sistema parte del siguiente estado inicial de nivel y


concentración:
ℎ0 = 0.2𝑚 𝐶0 = 1 𝑚𝑜𝑙 ⁄𝑚3

1
Módulos de Simulación con MATLAB

Obtener la evolución durante un tiempo de 4h si los caudales de


entrada adoptan sus valores máximos y la apertura tiene un
valor𝑎 = 0.5
2. Calcúlese de forma exacta el estacionario que alcanzará.
3. Determinar los caudales y la apertura de válvula para alcanzar un
estacionario con el nivel, concentración y caudal de renovación
siguientes:
ℎ𝑒𝑠𝑡_𝐼𝐼 = 0.5𝑚 𝐶est_II = 3 𝑚𝑜𝑙 ⁄𝑚3 𝑄𝑆_𝑒𝑠𝑡_𝐼𝐼 = 0.02 𝑚3 ⁄𝑠
4. Obténgase la evolución del sistema durante una maniobra que,
partiendo del estacionario calculado en el Apartado 2, permita
obtener el estacionario definido en el Apartado 3 acercándose lo
antes posible a la concentración deseada. Determínese el tiempo
para el cual se alcanza la concentración objetivo.

DESARROLLO DEL MODELO


El balance de materia total M, a un sistema de volumen V, se expresaría
como:
𝑑𝑀
= 𝑚𝑒1 + 𝑚𝑒2 − 𝑚𝑠
𝑑𝑡

𝑚𝑒 : flujos de materia entrante


𝑚𝑠 : flujos de materia saliente

Siendo la masa dentro del sistema:


𝑀 = 𝜌𝑉
Por lo tanto:
𝑑(𝜌𝑉)
= (𝜌𝑒1 𝑄𝑒1 + 𝜌𝑒2 𝑄𝑒2 ) − 𝜌𝑠 𝑄𝑠
𝑑𝑡

Para facilitar el desarrollo asumimos que la densidad de la disolución es


similar a la del fluido puro y que existe una mezcla perfecta dentro del tanque.

𝜌𝑒1 ≈ 𝜌𝑒2 ≈ 𝜌 = 𝜌𝑠

Simplificamos:
𝑑𝑉
= (𝑄𝑒1 + 𝑄𝑒2 ) − 𝑄𝑠
𝑑𝑡

Siendo el volumen:
𝑉 = 𝑆ℎ

2
Módulos de Simulación con MATLAB

Por lo tanto:
𝑑ℎ (𝑄𝑒1 + 𝑄𝑒2 ) − 𝑄𝑠
=
𝑑𝑡 𝑆

El caudal de salida es función del nivel del tanque y la apertura de la válvula.


Aplicamos la ecuación de Bernouilli.

Siendo la ecuación de Bernouilli:

𝑃 𝑣2
+ + 𝑔𝑧 = 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒
𝜌 2
𝑣: velocidad del fluido
𝑃: presión
𝑔: aceleración gravitatoria (g = 9,81 m/s2)
𝑧: altura en la dirección de la gravedad

Reescribimos la ecuación en función del peso específico (𝛾 = 𝜌𝑔)

𝑃 𝑣2
+ + 𝑧 = 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒
𝛾 2𝑔

Aplicando la ecuación entre el fondo del depósito (1) y un punto a la salida


del conducto (2) se tiene:

𝑃1 𝑣12 𝑃2 𝑣22
[ + + 𝑧1 ] = [ + + 𝑧2 ] + ℎ𝑓
𝛾 2𝑔 𝛾 2𝑔

Siendo la presión:
𝑃1 = 𝜌𝑔ℎ
ℎ: altura del fluido

Además:
𝑄
𝑣1 = 0; 𝑧1 = 𝑧2 = 0; 𝑃2 = 0; 𝑣2 =
𝑆𝑐

Se obtiene:
𝑄 2
( ) 𝑄2
𝑆𝑐
[ℎ + 0 + 0] = 0 + +0 +
2𝑔 𝛼(𝑎)
[ ]

3
Módulos de Simulación con MATLAB

Despejando:
𝛼(𝑎)
𝑄𝑠 (ℎ, 𝑎) = ℎ
√ 𝛼(𝑎)
1+ 2
2𝑔𝑆𝑐

Por lo tanto:
𝑑ℎ (𝑄𝑒1 + 𝑄𝑒2 ) − 𝑄𝑠 (ℎ, 𝑎)
=
𝑑𝑡 𝑆

Para determinar la evolución de la concentración se parte de la ecuación de


balance aplicada a la conservación de componente:

𝑑(𝑉𝐶)
= (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − 𝑄𝑠 𝐶𝑠
𝑑𝑡

Derivando por partes y considerando que en el tanque se da una mezcla


completa 𝐶 = 𝐶𝑠 se llega a la siguiente ecuación:

𝑑𝐶 𝑑𝑉
𝑉 +𝐶 = (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − 𝑄𝑠 𝐶𝑠
𝑑𝑡 𝑑𝑡

Sustituimos en la ecuación la expresión de la derivada del volumen:

𝑑𝐶
𝑉 + 𝐶((𝑄𝑒1 + 𝑄𝑒2 ) − 𝑄𝑠 ) = (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − 𝑄𝑠 𝐶𝑠
𝑑𝑡

Despejamos:
𝑑𝐶 (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − (𝑄𝑒1 + 𝑄𝑒2 )𝐶
=
𝑑𝑡 𝑉

Siendo 𝑉 = 𝑆ℎ
𝑑𝐶 (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − (𝑄𝑒1 + 𝑄𝑒2 )𝐶
=
𝑑𝑡 𝑆ℎ

La ecuación continúa acoplada con la de variación de altura por aparecer ℎ


en el denominador, por lo que ambas EDO deben resolverse conjuntamente.

4
Módulos de Simulación con MATLAB

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

Qe1=0.015; %m3/s Caudal máximo de entrada 1


Qe2=0.015; %m3/s Caudal máximo de entrada 2
Sc=0.01; %m2 Sección de salida del conducto
S=100; %m2 Sección del tanque
g=9.81; %m/s2 gravedad
a=0.5; %apertura
alfa=0.005*a/(1+0.5*a); %Factor de pérdidas en la salida
en función de apertura
Ce1=0.1; %kg/m3 Concentración entrada 1
Ce2=5; %kg/m3 Concentración entrada 2

Creamos un vector llamado x0 en el cual ingresaremos los valores iniciales,


siendo la columna 1 la altura inicial mientras que la columna 2 la
concentración inicial.

%Condiciones iniciales
x0=zeros(1,2); %vector con valores inciales
x0(1)=0.2; %altura inicial
x0(2)=1; %Concentración incial

Utilizamos el comando ode45 (se basa en una fórmula explícita de Runge-


Kutta) para resolver ambas EDO.

%Resolución EDO
f=@(t,x) [(Qe1+Qe2-
(((alfa/(1+alfa/(2*g*Sc^2)))*x(1))^(1/2)))/S;((Qe1*Ce1+Qe
2*Ce2)-(Qe1+Qe2)*x(2))/(S*x(1))]; %x(1) es altura y x(2)
es la concentración
tspan=[0 14400]; %intervalo de tiempo de 0 a 4horas
(4*3600)

[t,x]=ode45(f,tspan,x0); %resolvemos sistema de


ecuaciones diferenciales

5
Módulos de Simulación con MATLAB

La solución de la línea anterior, devuelve el vector x el cual tiene dos


columnas, siendo la primera columna los valores de la variación de la altura
mientras que los de la segunda columna los de la concentración.

Luego de ello graficamos cada columna del vector x versus el tiempo en


horas.

T=t./3600; %creamos vector con tiempo en horas

plot(T,x(:,1),'r') %Graficamos t vs valores de h


title('Nivel')
xlabel('t')
ylabel('h')
axis([0 4 0 1])
figure
plot(T,x(:,2),'g') %Graficamos t vs valores de C
title('Concentración de salida')
xlabel('t')
ylabel('C')
axis([0 4 0 3])

6
Módulos de Simulación con MATLAB

Se observa como la altura del fluido y el nivel de concentración en el tanque


aumentan, teniendo a sus valores estacionarios. Para la altura final, el caudal
de salida tiende a igualarse con el caudal total entrante.

Para graficar la variación del caudal de salida 𝑄𝑠 (ℎ, 𝑎) ingresamos el


siguiente código:

Qs=((alfa/(1+alfa/(2*g*Sc^2))).*x(:,1)).^(1/2); %Caudal
de salida en función de los valores de X(1)
figure
plot(T,Qs,'b') %Graficamos t vs valores de Qs
title('Caudal de salida')
xlabel('t')
ylabel('Qs')
axis([0 4 0 0.035])

7
Módulos de Simulación con MATLAB

Apartado 2:

Para calcular la altura y la concentración en el estado estacionario, se igualan


las EDO a cero y se resuelve como si se tratase de un sistema de
ecuaciones.

𝑑ℎ (𝑄𝑒1 + 𝑄𝑒2 ) − 𝑄𝑠 (ℎ, 𝑎)


0= =
𝑑𝑡 𝑆

𝑑𝐶 (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − (𝑄𝑒1 + 𝑄𝑒2 )𝐶


0= =
𝑑𝑡 𝑆ℎ

Utilizamos el comando solve para resolver el sistema de ecuaciones del


modo siguiente:

syms hest2 Csest2


f1=((Qe1+Qe2)-
(((alfa/(1+alfa/(2*g*Sc^2)))*hest2)^(1/2)))/S;
f2=((Qe1*Ce1+Qe2*Ce2)-(Qe1+Qe2)*Csest2)/(S*hest2);
[x,y]=solve(f1,f2);
hest2=eval(y);

8
Módulos de Simulación con MATLAB

Csest2=eval(x);
fprintf('Altura en estado estacionario: %d.\n',hest2);
fprintf('Concentración en estado estacionario:
%d.\n',Csest2);

Se obtiene como resultado:


Altura en estado estacionario: 9.087156e-01.
Concentración en estado estacionario: 2.550000e+00.

Apartado 3:

Se desea un nuevo estado estacionario definido por:

ℎ𝑒𝑠𝑡_𝐼𝐼 = 0.5𝑚 𝐶est_II = 3 𝑚𝑜𝑙 ⁄𝑚3 𝑄𝑆_𝑒𝑠𝑡_𝐼𝐼 = 0.02 𝑚3 ⁄𝑠

Ingresamos los valores del nuevo estado estacionario deseado:

hest3=0.5; %Altura al estado estacionario


Csest3=3.5; %Concentración al estado estacionario
Qsest3=0.02; %Caudal al estado estacionario

Encontramos la nueva apertura de válvula utilizando el comando solve para


el nuevo caudal de salida.

syms a3
alfa3=0.005*a3/(1+0.5*a3);
Qs3=((alfa3/(1+alfa3/(2*g*Sc^2)))*hest3)^(1/2); %Caudal
de salida al estado estacionario en función de a
a3=solve(Qsest3-Qs3);
a3=eval(a3); %Apertura al estado estacionario
fprintf('Apertura de válvula: %d.\n',a3);
Qs3=eval(Qs3);

De igual modo para tener un estado estacionario con la altura y


concentración deseada debemos encontrar los caudales que consigan igualar
las EDO a 0.

syms Qe13 Qe23


f1=((Qe13+Qe23)-Qs3)/S;
f2=((Qe13*Ce1+Qe23*Ce2)-(Qe13+Qe23)*Csest3)/(S*hest3);
[x,y]=solve(f1,f2);
Qe13=eval(x);

9
Módulos de Simulación con MATLAB

Qe23=eval(y);
fprintf('Caudal de entrada 1: %d.\n',Qe13);
fprintf('Caudal de entrada 2: %d.\n',Qe23);

Se obtiene como resultado:


Apertura de válvula: 3.123458e-01.
Caudal de entrada 1: 6.122449e-03.
Caudal de entrada 2: 1.387755e-02.

Apartado 4:

La altura del estado estacionario calculado en el Apartado 2 es 9.087156e-01


mientras que la concentración 2.550000e+00. Obsérvese que para
acercarnos al estado estacionario del Apartado 3, se debe disminuir la altura
y aumentar la concentración. Para hacerlo de forma rápida, se puede abrir
totalmente la válvula y alimentar con la disolución más concentrada, es decir:

a4=1; %apertura
alfa4=0.005*a4/(1+0.5*a4); %Factor de pérdidas en la
salida en función de apertura
Qe14=0;
Qe24=Qe2; %m3/s Caudal máximo de entrada 2

Creamos un nuevo vector columna llamado x04 en el cual ingresaremos los


valores iniciales, siendo los valores obtenidos en el apartado 2.

%Condiciones iniciales
x04=zeros(1,2); %vector con valores inciales
x04(1)=hest2; %altura inicial
x04(2)=Csest2; %Concentración incial

Utilizamos el comando ode45 para resolver ambas EDO.

%Resolucion EDO
f4=@(t,x) [(Qe14+Qe24-
(((alfa4/(1+alfa4/(2*g*Sc^2)))*x(1))^(1/2)))/S;((Qe14*Ce1
+Qe24*Ce2)-(Qe14+Qe24)*x(2))/(S*x(1))]; %x(1) es altura y
x(2) es la concentración
tspan=[0 3600]; %intervalo de tiempo de 0 a 4horas
(4*3600)

10
Módulos de Simulación con MATLAB

[t,x]=ode45(f4,tspan,x04); %resolvemos sistema de


ecuaciones diferenciales

Graficamos cada columna del vector x versus el tiempo en horas.

T=t./3600; %creamos vector con tiempo en horas

%Graficamos
figure
plot(T,x(:,1),'r') %Graficamos t vs valores de h
title('Nivel')
xlabel('t')
ylabel('h')
axis([0 1 0 1])
figure
plot(T,x(:,2),'g') %Graficamos t vs valores de C
title('Concentración de salida')
xlabel('t')
ylabel('C')
axis([0 1 0 6])

11
Módulos de Simulación con MATLAB

Para obtener el tiempo en el que se alcanza la concentración objetivo


utilizamos el comando interp1:

t1=interp1(x(:,2),T,Csest3)

Resultando que en 0.6447 horas llegamos a la concentración de 3.5.


Asimismo la altura en ese momento vale 0.5649 m, obtenida con el siguiente
código:

h1=interp1(T,x(:,1),0.6447)

A partir de ese tiempo deben establecerse los caudales determinados en el


Apartado 3 con el fin de que la concentración no varíe. Una vez alcanzada la
altura objetivo, deberemos fijar la apertura de válvula en el valor del mismo
apartado.

12
Módulos de Simulación con MATLAB

2. MEZCLA DE CORRIENTES GASEOSAS


Un tanque de regulación está conectado a dos líneas que transportan gases.
La primera línea transporta un gas puro B y la segunda un gas puro A.

1
𝐵 𝑃𝑒1 𝑃𝑆
𝑃 𝑦𝑆
𝑃𝑒2 2
𝐴

El flujo molar de gas a través de las válvulas se calcula a partir de la raíz de


la diferencia de presión entre ambos extremos de la válvula por un coeficiente
𝛽.

𝑛𝑣 = 𝛽√∆

El tanque se puede considerar isotermo. Las presiones manométricas a la


entrada y a la salida son constantes. Inicialmente circula componente B, con
la válvula de la línea 2 totalmente cerrada.

Datos del tanque

Volumen del tanque: 𝑉 = 2𝑚3


Temperatura: 𝑇 = 298K
Coeficiente de la válvula de entrada 1: 𝛽𝑒1 = 0.1𝑚𝑜𝑙. 𝑚−3 . 𝑃𝑎−0.5
Coeficiente de la válvula 2 tras 𝛽𝑒2 = 0.2𝑚𝑜𝑙. 𝑚−3 . 𝑃𝑎−0.5
abrirse:
Coeficiente de la válvula de salida: 𝛽𝑆 = 0.1𝑚𝑜𝑙. 𝑚−3 . 𝑃𝑎−0.5
Presión manométrica de la línea de 𝑃𝑚𝑎𝑛1_𝑒 = 100𝑃𝑎
entrada 1:
Presión manométrica de la línea de 𝑃𝑚𝑎𝑛2_𝑒 = 100𝑃𝑎
entrada 2:
Presión manométrica de la línea de 𝑃𝑚𝑎𝑛_𝑠 = 0𝑃𝑎
salida:

13
Módulos de Simulación con MATLAB

1. Valor de la presión estacionaria.


2. Se abre la válvula 2 instantáneamente hasta el valor indicado en la
Tabla 2. Obténgase la evolución de la composición en la salida.

DESARROLLO DEL MODELO


Al ser el contenido del sistema gaseoso, conviene realizar los balances de
materia en moles. Por haber dos gases basta con usar la fracción de uno de
ellos como variable de estado representativa de la composición, en este caso
tomaremos y como la fracción de A. Los balances total y para componente
específico, para un sistema sin difusión por el contorno y si reacción resultan:

𝑑𝑁
= (𝑛𝑒1 + 𝑛𝑒2 ) − 𝑛𝑆
𝑑𝑡

𝑑(𝑁𝑦)
= (𝑛𝑒1 . 0 + 𝑛𝑒2 . 1) − 𝑛𝑆 𝑦𝑆
𝑑𝑡

Teniéndose, por ser el modelo globalizado:

𝑦𝑆 = 𝑦

Desarrollamos la segunda EDO:

𝑁𝑑𝑦
= 𝑛𝑒2 − 𝑛𝑆 𝑦𝑆
𝑑𝑡
Siendo: 𝑛𝑆 = 𝑛𝑒1 + 𝑛𝑒2

Obtenemos:
𝑑𝑦 𝑛𝑒2 − 𝑦. (𝑛𝑒1 + 𝑛𝑒2 )
=
𝑑𝑡 𝑁

Como los flujos están en función de presiones, conviene que la presión sea
variable de estado. Se hace uso de la ecuación del gas ideal:

𝑃𝑉
𝑁=
𝑅𝑇

Sustituimos está ecuación en ambas EDO, consideramos que el volumen y la


temperatura son constantes:

14
Módulos de Simulación con MATLAB

𝑑𝑃 𝑅𝑇
= (𝑛𝑒1 + 𝑛𝑒2 − 𝑛𝑆 )
𝑑𝑡 𝑉

𝑑𝑦 𝑅𝑇
= (𝑛𝑒1 − 𝑦. (𝑛𝑒1 + 𝑛𝑒2 ))
𝑑𝑡 𝑉𝑃

La variable 𝑃 debe representar presión absoluta ya que se está trabajando


con la ecuación de gases ideales.

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

V=2; %m3 Volumen del tanque


T=298; %K temperatura
Be1=0.1; %mol.m-3.Pa-0.5 Coeficiente de la válvula de
entrada 1
Be2=0.2; %mol.m-3.Pa-0.5 Coeficiente de la válvula 2 tras
abrirse
Bs=0.1; %mol.m-3.Pa-0.5 Coeficientet de la válvula de
salida
Pm1=100; %Pa Presión manométrica de la línea de entrada 1
Pm2=100; %Pa Presión manométrica de la línea de entrada 2
Pms=0; %Pa Presión manométrica de la línea de salida
R=8.314; %J/mol.K Constante de gases ideales

Calculamos las presiones absolutas

%Cálculo de presiones absolutas


Patm=101300;
Pe1=Pm1+Patm; Pe2=Pm2+Patm; Ps=Pms+Patm;

Si la válvula 2 está cerrada, el flujo entrante por la línea 2 es nulo, entonces:

𝑑𝑃 𝑅𝑇
= (𝑛𝑒1 + 0 − 𝑛𝑆 )
𝑑𝑡 𝑉
𝑅𝑇
0 = (𝑛𝑒1 + 0 − 𝑛𝑆 )
𝑉

15
Módulos de Simulación con MATLAB

En régimen estacionario la derivada de la presión es nula, por lo tanto


desarrollamos la ecuación con el comando solve:

syms P
ne1=Be1*(Pe1-P)^(1/2); %Flujo válvula 1
ns=Bs*(P-Ps)^(1/2); %Flujo válvula de salida
f1=(ne1+0)-ns;
Pest=solve(f1);
Pe=Pest-Patm;
fprintf('Presión manométrica al estado estacionario:
%d.\n',Pe);

Se obtiene como resultado:


Presión manométrica al estado estacionario: 50.

Apartado 2:

Creamos un vector llamado x0 en el cual ingresaremos los valores iniciales,


siendo la columna 1 la altura inicial mientras que la columna 2 la
concentración inicial.

%Condiciones iniciales
x0=zeros(1,2); %vector con valores inciales
x0(1)=Pest; %presión inicial
x0(2)=0; %fraccion incial

Utilizamos el comando ode45 para resolver ambas EDO.

%Resolucion EDO
f=@(t,x) [((Be1*(Pe1-x(1))^(1/2)+Be2*(Pe2-x(1))^(1/2))-
Bs*(x(1)-Ps)^(1/2))*R*T/V;(Be2*(Pe2-x(1))^(1/2)-
x(2)*(Be1*(Pe1-x(1))^(1/2)+Be2*(Pe2-
x(1))^(1/2)))*R*T/(x(1)*V)]; %x(1) es la presión y x(2)
fracción mol
tspan=[0 0.5]; %intervalo de tiempo de 0 a 4horas
(4*3600)

[t,x]=ode45(f,tspan,x0); %resolvemos sistema de


ecuaciones diferenciales

16
Módulos de Simulación con MATLAB

La solución de la línea anterior, devuelve el vector x el cual tiene dos


columnas, siendo la primera columna los valores de la variación de la presión
absoluta mientras que los de la segunda columna los de la fracción mol.

Creamos un nuevo vector en presión manométrica y graficamos.

P=x(:,1)-ones(length(x(:,1)),1).*Patm; %creamos vector P-


Patm

plot(t,P,'r') %Graficamos t vs valores de h


xlabel('t')
ylabel('P-Patm')
figure
plot(t,x(:,2),'g') %Graficamos t vs valores de C
xlabel('t')
ylabel('y')

17
Módulos de Simulación con MATLAB

Se observa que la presión se estabiliza casi instantáneamente en


comparación con la concentración lo que significa que el sistema de EDO
tiene carácter rígido. Si se utiliza el ode45 para tiempos mayores el cálculo
fallaría.

En este caso es conveniente utilizar el comando ode15s (algoritmo de orden


variable basado en las Fórmulas de Diferenciación Numérica NDF).

%Resolucion EDO
f=@(t,x) [((Be1*(Pe1-x(1))^(1/2)+Be2*(Pe2-x(1))^(1/2))-
Bs*(x(1)-Ps)^(1/2))*R*T/V;(Be2*(Pe2-x(1))^(1/2)-
x(2)*(Be1*(Pe1-x(1))^(1/2)+Be2*(Pe2-
x(1))^(1/2)))*R*T/(x(1)*V)]; %x(1) es la presión y x(2)
fracción mol
tspan=[0 600]; %intervalo de tiempo de 0 a 4horas
(4*3600)

[t,x]=ode15s(f,tspan,x0); %resolvemos sistema de


ecuaciones diferenciales

Graficamos:

18
Módulos de Simulación con MATLAB

Vemos que la fracción molar de A se estabiliza, calculándose con el siguiente


código:

Y=x(end,2);
fprintf('Presión manométrica al estado estacionario:
%d.\n',Y);

Se obtiene como resultado:


Fracción mol de A: 6.659600e-01.

19
Módulos de Simulación con MATLAB

3. ETAPA DE ABSORCIÓN NO ESTACIONARIA


En una columna húmeda se realiza la absorción de un gas A en continuo, la
columna es atravesada por una corriente líquida y una corriente gaseosa. La
relación de equilibrio en fracciones molares para el componente absorbido
es:

𝑦𝑒𝑞 (𝑥) = 𝑚𝑒𝑞 𝑥

𝐺𝑆 , 𝑦 𝐿𝑒 , 𝑥𝑒

𝑀𝐿

𝐺𝑒 , 𝑦𝑒 𝐿𝑆 , 𝑥

Datos relevantes

Pendiente de la línea de equilibrio: 𝑚𝑒𝑞 = 0.5


Flujo molar de líquido inerte: 𝐿𝑒 = 𝐿𝑆 = 1.3 𝑘𝑚𝑜𝑙 ⁄𝑚𝑖𝑛
Flujo molar de gas inerte (mol/min): 𝐺𝑒 = 𝐺𝑆 = 1.7 𝑘𝑚𝑜𝑙 ⁄𝑚𝑖𝑛
Moles de líquido en volumen: 𝑀𝐿 = 1𝑘𝑚𝑜𝑙

20
Módulos de Simulación con MATLAB

Fracción molar de A en el líquido 𝑥𝑒 = 0


entrante:
Fracción molar de A en el gas entrante: 𝑦𝑒 = 0.0909

Suponiendo que la etapa se comporta como ideal:


1. Representar la evolución de las concentraciones de A en las
corrientes gaseosa y líquida salientes desde el momento en el que
pasa a inyectarse un gas con una fracción de componente A igual a
𝑦𝑏 (supóngase que inicialmente el líquido del tanque está
desprovisto de componente). Calcúlese el estacionario de forma
exacta.
2. Realizar un estudio paramétrico para ver el efecto de emplear
valores inferiores de 𝐿𝑠 sobre la evolución de las concentraciones de
gas y líquido salientes, así como sobre los valores estacionarios.

DESARROLLO DEL MODELO


El volumen de líquido en el tanque es constante. Se considera la
simplificación de que la relación entre el volumen que ocupa el gas y el
líquido no varía apreciablemente, por lo tanto:
𝑉 = 𝑉𝐿 + 𝑉𝐺 ≈ 𝑉𝐿

Otra simplificación es que la masa del líquido va a estar constituida


principalmente por el componente inerte (componentes no transferidos) y
que, en consecuencia, la densidad va a ser aproximadamente constante. De
todo ello se deduce que los moles totales presentes en el tanque son
aproximadamente los mismos y prácticamente iguales a los moles de inerte
cuando se trabaja con concentraciones no demasiado elevadas:
𝑀𝐿 = 𝐶𝑡 𝑉𝐿 ≈ 𝑀𝐿𝑆

El balance de moles del componente A, se expresa como:

𝑑𝑀𝐴
= 𝑚̇𝐴𝑒 − 𝑚̇𝐴𝑠
𝑑𝑡

• 𝑚̇𝐴𝑒 : flujos de molar de A entrante


• 𝑚̇𝐴𝑠 : flujos de molar de A saliente

Sabemos que el flujo molar de un componente es igual al flujo molar total por
la razón molar. Siendo las razones molares ([moles de A] / [mol de inerte]):

21
Módulos de Simulación con MATLAB

𝑥 y
𝑋= ,𝑌 =
1−x 1−y

Se obtiene:
𝑑𝑀𝐴
= 𝑚̇𝐴𝑒 − 𝑚̇𝐴𝑠 = (𝐿𝑆 𝑋𝑒 + 𝐺𝑆 𝑌𝑒 ) − (𝐿𝑆 𝑋 + 𝐺𝑆 𝑌)
𝑑𝑡

Donde se ha tenido en cuenta que la concentración de salida es la del interior


de la torre, tras asumir que el contenido es aproximadamente homogéneo.

De forma más compacta se tiene:

𝑑𝑀𝐴
= 𝐿𝑆 (𝑋𝑒 − 𝑋) + 𝐺𝑆 (𝑌𝑒 − 𝑌)
𝑑𝑡

Por otra parte la cantidad de A que se tiene en el plato es:

𝑀𝐴 = 𝑀𝐿𝑆 𝑋 + 𝑀𝑉𝑆 𝑌

Existiendo un equilibrio entre el gas y el líquido por lo que, las razones


molares de equilibrio pueden relacionarse a través del siguiente cambio:

𝑦𝑒𝑞 (𝑥)
𝑌𝑒𝑞 (𝑋) =
1 − 𝑦𝑒𝑞 (𝑥)
Siendo:
𝑋
𝑥=
1+𝑋

De donde se tiene que los moles totales de A son iguales a los moles totales
en el líquido por la razón molar del líquido más los moles totales en el gas por
la razón molar del gas:

𝑀𝐴 = 𝑀𝐿𝑆 𝑋 + 𝑀𝑉𝑆 𝑌𝑒𝑞 (𝑋)

Si se asume que los moles de gas presentes en el volumen de control son


despreciables, se obtiene que:

𝑀𝐴 = 𝑀𝐿𝑆 𝑋

Reemplazando en la ecuación diferencial anterior, se tiene:

22
Módulos de Simulación con MATLAB

𝑑(𝑀𝐿𝑆 𝑋)
= 𝐿𝑆 (𝑋𝑒 − 𝑋) + 𝐺𝑆 (𝑌𝑒 − 𝑌𝑒𝑞 (𝑋))
𝑑𝑡

𝑑𝑋 𝐿𝑆 (𝑋𝑒 − 𝑋) + 𝐺𝑆 (𝑌𝑒 − 𝑌𝑒𝑞 (𝑋))


=
𝑑𝑡 𝑀𝐿𝑆

La única variable de estado es la razón de A en el líquido del sistema. La


razón de A en el gas saliente estará en equilibrio con la del líquido

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

meq=0.5; %Pendiente de la línea de equilibrio


Ls=1.3; %kmol/min Flujo molar de líquido inerte
Gs=1.7; %kmol/min Flujo molar de gas inerte
ML=1; %kmol Moles de líquido en el volumen
xe=0; %Fracción molar de A en el líquido entrante
ye=0.0909; %Fraccion molar de A en el gas entrante

Calculamos las razones molares

Xe=xe/(1-xe);
Ye=ye/(1-ye);

Creamos un vector llamado x0 en el cual ingresaremos la razón molar del


componente en el líquido.

%Condiciones iniciales
X0=0; %razón molar inicial

Utilizamos el comando ode45 para resolver nuestra EDO.

f=@(t,X) (Ls*(Xe-X)+ Gs*(Ye-(0.5*(X/(1+X))/(1-


0.5*(X/(1+X))))))/ML;
tspan=[0 10]; %intervalo de tiempo

[t,X]=ode45(f,tspan,X0); %resolvemos la EDO

23
Módulos de Simulación con MATLAB

La solución de la EDO, devuelve el vector X el cual es la variación de la razón


molar respecto al tiempo

Calculamos la razón molar del gas en equilibrio como función de X.

Yeq=0.5.*(X./(1+X))./(1-0.5.*(X./(1+X)));

Graficamos X y Yeq versus tiempo

plot(t,X,'b') %Graficamos t vs valores de X


title('Composición del líquido saliente')
xlabel('t')
ylabel('X')
figure
plot(t,Yeq,'g') %Graficamos t vs valores de Yeq
title('Composición del gas saliente')
xlabel('t')
ylabel('Yeq(X)')
figure

24
Módulos de Simulación con MATLAB

Para calcular el estacionario exacto se iguala la función de la derivada a cero.

syms X
f1=(Ls*(Xe-X)+ Gs*(Ye-(0.5*(X/(1+X))/(1-
0.5*(X/(1+X))))))/ML;
X=solve(f1);
X=eval(X); Xest=X(X>=0);
disp(Xest)

Se obtiene como resultado:


X en estado estacionario: 8.028607e-02.

Apartado 2:

En este caso se trata de estudiar el efecto del parámetro LS. Se crea una
vector Ls2 en donde ingresamos diferentes valores de dicho parámetro, en
este caso ingresamos 7 diferentes valores.

syms X
Ls2=zeros(7,1);
for i=1:7

25
Módulos de Simulación con MATLAB

Ls2(i,1)=2^(-1*(i-1))*Ls; %kmol/min Flujo molar de


líquido inerte
end

La condición inicial se obtiene del estacionario correspondiente al valor LS.

%Condiciones iniciales
X0=Xest; %condicion inicial

Calculamos la solución de la EDO para cada valor de LS. y se extrae la


solución de X. El vector tiempo es el mismo para todas las soluciones.
Graficamos.

for i=1:7
f=@(t,X) (Ls2(i,1)*(Xe-X)+Vs*(Ye-(0.5*(X/(1+X))/(1-
0.5*(X/(1+X))))))/ML;
%Condiciones iniciales
X0=Xest; %condicion inicial
tspan=[0 10]; %intervalo de tiempo
[t,X]=ode45(f,tspan,X0);
plot(t,X); %Graficamos t vs valores de X
hold on
end
legend('X(Ls)','X(2\wedge-1.Ls)','X(2\wedge-
2.Ls)','X(2\wedge-3.Ls)','X(2\wedge-4.Ls)','X(2\wedge-
5.Ls)','X(2\wedge-6.Ls)')
title('Composición del líquido saliente')
axis([0 10 0.05 0.25])

26
Módulos de Simulación con MATLAB

Calculamos las razones molares del gas en equilibrio como función de los
valores de X(LS).

figure
for i=1:7
f=@(t,X) (Ls2(i,1)*(Xe-X)+Vs*(Ye-(0.5*(X/(1+X))/(1-
0.5*(X/(1+X))))))/ML;
%Condiciones iniciales
X0=Xest; %condicion inicial
tspan=[0 10]; %intervalo de tiempo
[t,x]=ode45(f,tspan,X0);
Yeq=0.5.*(x./(1+x))./(1-0.5.*(x./(1+x)));
plot(t,Yeq);
hold on
end
legend('Yeq(X(Ls))',' Yeq(X(2\wedge-1.Ls))','
Yeq(X(2\wedge-2.Ls))',' Yeq(X(2\wedge-3.Ls))','
Yeq(X(2\wedge-4.Ls))',' Yeq(X(2\wedge-5.Ls))','
Yeq(X(2\wedge-6.Ls))')
title('Composición del gas saliente')

27
Módulos de Simulación con MATLAB

axis([0 10 0.02 0.1])

Nótese que las soluciones son cada vez más parecidas conforme se reduce
el caudal. Para observar claramente el efecto de LS sobre la solución
estacionaria de salida se crea una función como solución del sistema que
resulta de igualar el nuevo vector de derivadas a 0:

A=linspace(0.001,10,20);
A=A';
X2=zeros(length(A),1);

for i=1:length(A)
syms X
f2=((Ls*A(i))*(Xe-X)+Vs*(Ye-(0.5*(X/(1+X))/(1-
0.5*(X/(1+X))))))/ML;
X=solve(f2);
X=eval(X); X2(i,1)=X(X>=0);
end
Yeq2=0.5.*(X2./(1+X2))./(1-0.5.*(X2./(1+X2)));

figure

28
Módulos de Simulación con MATLAB

plot(A,X2,'r')
title('Composición del líquido saliente')
xlabel('L/Ls')
ylabel('X')
figure
plot(A,Yeq2,'b')
title('Composición del gas saliente')
xlabel('L/Ls')
ylabel('Yeq(X)')

Se observa como al reducir el caudal de líquido (LS), la concentración del


líquido ya no aumenta más (X). Además, el componente A, al reducirse la
cantidad de líquido entrante, se absorbe cada vez menos, acercándose cada
vez más la concentración de salida (Yeq) al valor de entrada al sistema
(ye=0.0909, Ye=0.1)

𝐿 = 0.001𝐿𝑆 , 0.002𝐿𝑆 , … 10𝐿𝑆

29
Módulos de Simulación con MATLAB

30
Módulos de Simulación con MATLAB

4. ANALISIS DE UN CSTR
Tenemos un reactor tipo tanque continuo con agitación (CSTR),
perfectamente mezclado. Se da una reacción simple irreversible exotérmica,
de segundo orden, A→B.

𝐴
𝐹0 𝐶𝐴0

𝐴, 𝐵

Datos relevantes

Concentración de A en la alimentación: 𝐶𝐴0 = 1lbmol/𝑓𝑡 3


Flujo molar de alimentación: 𝐹0 = 7.67 𝑙𝑏𝑚𝑜𝑙 ⁄𝑚𝑖𝑛
Radio del tanque: 𝑅=5
Radio de orificio: R 0 = 0.625
Constante cinética: 𝑘 = 0.311𝑚𝑖𝑛−1

Suponiendo que la etapa se comporta como ideal:


1. Desarrollar y representar la evolución de las concentraciones de A a
la salida del reactor, en el arranque a volumen constante de 250 ft3.
2. Repetir el apartado 1 para volumen variable, y además representar
la evolución del volumen del reactor.

31
Módulos de Simulación con MATLAB

DESARROLLO DEL MODELO


La velocidad de acumulación de material en el reactor es igual al flujo de
entrada menos el flujo de salida de material.

𝑑𝑁𝐴
= 𝐹𝐴0 − 𝐹𝐴 + 𝑟𝐴 𝑉𝑅
𝑑𝑡

Como opera en estado estacionario, sus condiciones no cambian con el


tiempo

𝑑𝑁𝐴
=0
𝑑𝑡

Por consiguiente:
𝐹𝐴0 − 𝐹𝐴
𝑉𝑅 =
𝑟𝐴

La anterior es la ecuación de diseño de un CSTR, pero se puede escribir de


la siguiente manera:

𝐹𝐴 = 𝐹𝐴0 (1 − 𝑋𝐴 )

𝐹𝐴 − 𝐹𝐴0 = −𝐹𝐴0 𝑋𝐴

Combinando la estequiometria con la ecuación de diseño se obtiene:

𝐹𝐴0 𝑋𝐴
𝑉𝑅 =
−𝑟𝐴

Donde la velocidad de desaparición de A debe ponerse en función de la


conversión, pero ya depende del orden de reacción que se tenga y de la
cinética que se tenga.
De manera similar el modelo dinámico se obtiene del balance molar del
reactor:

𝑑𝑁𝐴
= 𝐹𝐴0 − 𝐹𝐴 + 𝑟𝐴 𝑉𝑅
𝑑𝑡

Para una reacción en fase líquida:


𝜌0 = 𝜌 = 𝑐𝑡𝑒

32
Módulos de Simulación con MATLAB

Sabiendo que 𝐹𝑖 = 𝐶𝑖 . 𝑉̇
𝑑𝑁𝐴
= 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ + 𝑟𝐴 𝑉𝑅
𝑑𝑡

Si 𝑁𝐴 = 𝐶𝐴 . 𝑉𝑅
𝑑(𝐶𝐴 . 𝑉𝑅 )
= 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ + 𝑟𝐴 𝑉𝑅
𝑑𝑡

Para una reacción de orden 2:


−𝑟𝐴 = 𝑘𝐶𝐴2

Se obtiene en definitiva el modelo dinámico del CSTR:

𝑑(𝐶𝐴 . 𝑉𝑅 )
= 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ − 𝑘𝐶𝐴2 . 𝑉𝑅
𝑑𝑡

Arranque a volumen constante

Se considera que:
𝑉̇0 = 𝑉̇ = 𝑐𝑡𝑒 𝑉𝑅 = 𝑐𝑡𝑒

De la ecuación dinámica del modelo se puede sacar del diferencial el


volumen del reactor como una constante, y se puede dividir a ambos lados de
la ecuación por el flujo volumétrico

𝑉𝑅 𝑑𝐶𝐴 𝑉𝑅
= 𝐶𝐴0 − 𝐶𝐴 − 𝑘𝐶𝐴2 .
̇𝑉0 𝑑𝑡 𝑉̇0

El tiempo medio de residencia viene dado por:

𝑉𝑅
𝜏=
𝑉̇0
Entonces:
𝑑𝐶𝐴 𝐶𝐴0 − 𝐶𝐴 − 𝑘𝐶𝐴2 . 𝜏
=
𝑑𝑡 𝜏

Arranque a volumen variable

Empezamos con el modelo dinámico del CSTR:

33
Módulos de Simulación con MATLAB

𝑑(𝐶𝐴 . 𝑉𝑅 )
= 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ − 𝑘𝐶𝐴2 . 𝑉𝑅
𝑑𝑡

El producto de la derivada queda:

𝑑(𝐶𝐴 . 𝑉𝑅 ) 𝑑𝐶𝐴 𝑑𝑉𝑅


= 𝑉𝑅 + 𝐶𝐴
𝑑𝑡 𝑑𝑡 𝑑𝑡

Reemplazando la derivada en el balance molar tenemos:

𝑑𝐶𝐴 𝑑𝑉𝑅
𝑉𝑅 + 𝐶𝐴 = 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ − 𝑘𝐶𝐴2 . 𝑉𝑅
𝑑𝑡 𝑑𝑡

Y operando algebraicamente se obtiene:

𝑑𝐶𝐴 𝑉̇0 𝑉̇ 𝐶𝐴 𝑑𝑉𝑅


= 𝐶𝐴0 . − 𝐶𝐴 . − 𝑘𝐶𝐴2 −
𝑑𝑡 𝑉𝑅 𝑉𝑅 𝑉𝑅 𝑑𝑡

Para resolver la ecuación anterior se requiere otra ecuación diferencial, la


variación del volumen del reactor a lo largo del tiempo. Para ello realizamos
un balance de masa en el reactor:
𝑑(𝜌𝑉𝑅 )
𝜌0 𝑉̇0 − 𝜌𝑉̇ =
𝑑𝑡

Con 𝜌0 ≅ 𝜌
𝑑𝑉𝑅
= 𝑉̇0 − 𝑉̇
𝑑𝑡

Y se tienen las dos ecuaciones diferenciales en donde 𝑉̇0 es el caudal de


alimentación y 𝑉̇ es el caudal a la salida. Se debe calcular este caudal a la
salida para poder resolver el sistema acoplado de dos ecuaciones
diferenciales. Para ello se recurre al balance de energía mecánica (ley de
Torricelli)

1
𝑚̇𝑔ℎ = ⃗
𝑚̇𝑉
2

⃗ = 2√2𝑔ℎ
𝑉

⃗ multiplicado por el
Donde el caudal de salida sería la velocidad de vaciado 𝑉
área del orificio de salida 𝐴𝑆

34
Módulos de Simulación con MATLAB

𝑉̇ = 𝐴𝑆 2√2𝑔ℎ

Y siendo un reactor cilíndrico, sabemos que:

𝑉𝑅 = 𝜋𝑅2 ℎ

Entonces reemplazando ℎ en la ecuación del caudal:

𝐴𝑆 2 2𝑔𝑉𝑅
𝑉̇ = √
𝑅 𝜋

Donde 𝐴𝑆 es el área del orificio de salida dado así:

𝐴𝑆 = 𝜋𝑅𝑜2

RESOLUCIÓN EN MATLAB
Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

CA0=1; %lbmol/ft3 Concentración en la alimentación


F=7.67; %lbmol/s Flujo molar
k=0.311; %s-1 constante cinética
R=5; %ft Radio del tanque
Ro=0.5; %ft Radio del orificio
V0=F/CA0; %ft3/s Flujo volumetrico
g=32; %ft/s2 gravedad

Para el apartado 1 ingresamos también como dato el volumen del tanque


(250 ft3) y calculamos el tiempo medio de residencia.

VR=250; %ft3 Volumen del tanque estacionario


Tau=VR/V0;

La concentración de salida en el tiempo 0, es similar a la concentración inicial


de entrada. Utilizamos el comando ode45 para resolver nuestra EDO, con la
condición inicial anterior.

x0=CA0; %concentración inicial de A

35
Módulos de Simulación con MATLAB

f1=@(t,x) (CA0-x-k*(x^2)*Tau)/Tau; %Arranque volumen


constante
%Condiciones iniciales
tspan=[0 50]; %intervalo de tiempo

[t,x]=ode45(f1,tspan,x0);

La solución de la EDO, nos devuelve el vector x el cual presenta los datos de


la concentración de salida para cada tiempo t.

Graficamos concentración de salida versus el tiempo.

plot(t,x,'b') %Graficamos t vs valores de X


xlabel('t')
ylabel('CA')
axis([0 50 0 1])
C0=x(end);
fprintf('Concentración de salida al estado estacionario:
%d.\n',C0);

Se obtiene como resultado:


Concentración de salida al estado estacionario: 2.686274e-01.

36
Módulos de Simulación con MATLAB

La grafica nos muestra como la concentración del reactivo A baja, hasta


alcanzar su concentración mínima, para su conversión máxima.

Apartado 2:

Para calcular la variación de la concentración de salida a volumen variable


debemos omitir el dato de volumen y considerarlo como una variable.
Tendremos dos EDO que resolver simultáneamente.

𝑑𝐶𝐴 𝑉̇0 𝑉̇ 𝐶𝐴 𝑑𝑉𝑅


= 𝐶𝐴0 . − 𝐶𝐴 . − 𝑘𝐶𝐴2 −
𝑑𝑡 𝑉𝑅 𝑉𝑅 𝑉𝑅 𝑑𝑡

𝑑𝑉𝑅
= 𝑉̇0 − 𝑉̇
𝑑𝑡

Al ser el volumen variable, nuestro flujo volumétrico de salida también varía,


lo expresamos en función del volumen (𝑉𝑅 ) como se demostró anteriormente.

As=pi*Ro^2;
f2=@(T,X) [(CA0*(V0/X(2))-
X(1)*(((As/R)*sqrt(2*g*X(2)/pi))/X(2))-k*(X(1)^2)-
(X(1)/X(2))*(V0-(As/R)*sqrt(2*g*X(2)/pi)));V0-
(As/R)*sqrt(2*g*X(2)/pi)]; %Arranque volumen variable

Creamos el vector x0 en el cual guardamos las condiciones iniciales para


este caso, siendo la concentración inicial de entrada, y asumimos un volumen
de llenado inicial del tanque.

X0=zeros(1,2);
X0(1)=CA0; %concentración inicial de A
X0(2)=500; %ft3 Volumen inicial

Asimismo, creamos un intervalo de tiempo y resolvemos nuestras dos EDO


con el comando ode45.

tspan=[0 250]; %intervalo de tiempo


[T,X]=ode45(f2,tspan,X0);

Obtenemos el vector x el con dos columnas, siendo la primera columna los


valores de la variación de la concentración de A a la salida, mientras que los
de la segunda columna corresponden a la variación del volumen.

37
Módulos de Simulación con MATLAB

Luego de ello graficamos cada columna del vector x versus el tiempo en


horas.

figure
plot(T,X(:,1),'g');
xlabel('CA')
ylabel('t')
axis([0 250 0 1])
figure
plot(T,X(:,2),'r');
xlabel('VR')
ylabel('t')
axis([0 250 0 500])
Cf=X(end,1);
Vf=X(end,2);
fprintf('Concentración de salida al estado estacionario:
%d.\n',Cf);
fprintf('Volumen al estado estacionario: %d.\n',Vf);

Se obtiene como resultado:


Concentración de salida al estado estacionario: 3.653908e-01.
Volumen al estado estacionario: 1.172373e+02.

38
Módulos de Simulación con MATLAB

39
Módulos de Simulación con MATLAB

Podemos ver que con un volumen inicial de 500 ft3, al momento del arranque
(apertura de salida del reactor) el volumen cae hasta estabilizarse, Se puede
repetir el ejercicio considerando diferentes volúmenes iniciales.

40
Módulos de Simulación con MATLAB

5. DESTILACIÓN MEZCLAS BINARIAS


En General una columna de destilación binaria consiste de:
• Una columna de N etapas teóricas
• Un condensador total para producir un reflujo
• Un reboiler parcial para producir vapor
• Una etapa para la alimentación
Esta configuración permite conseguir una separación excepto en los casos
donde un azeótropo existe.

Condensad
or

1 𝑥𝑑
Reflujo
2

𝑥𝑓
𝑓

Reboiler

𝑥𝑏

La columna contiene 60% del ligero, alimentación entra a q=0.45. Si para


conseguir una composición por la zona de rectificación del 95% en clave
ligero y en agotamiento un 90% en clave pesado, se trabaja con una relación
de reflujo que es 1.6 veces superior a la mínima, calcular:
1. Relación de reflujo mínimo
2. Reflujo real al que se trabaja
3. Número de etapas teóricas

41
Módulos de Simulación con MATLAB

DESARROLLO DEL MODELO


Se realiza un balance de materia alrededor de toda la columna, Acumulación
= Entradas – Salidas. En el estado estacionario obtenemos:

𝐹 =𝐷+𝐵
Donde:
• 𝐹: Flujo molar de alimentación
• 𝐷: Flujo molar del destilado
• 𝐵: Flujo molar del fondo

Ahora realizamos el balance con respecto a un componente

𝐹. 𝑥𝑓 = 𝐷. 𝑥𝐷 + 𝐵. 𝑥𝐵

• 𝑥𝑓 : Fracción mol del componente ligero en la alimentación


• 𝑥𝐷 , 𝑥𝐵 : Composiciones de los productos (destilado y fondos)

Consideramos la volatilidad relativa constante en función de la temperatura,


entonces se puede expresar, la relación ELV para una mezcla binaria como:

𝛼𝑥
𝑦=
1 + (𝛼 − 1)𝑥
• 𝑥: Componente ligero
• 1 − 𝑥: Componente pesado

La diferencia y-x determina la cantidad de separación que se puede lograr en


un escenario. Las grandes volatilidades relativas implican grandes diferencias
en los puntos de ebullición y una fácil separación. Los puntos de ebullición
cercanos implican una volatilidad relativa más cercana a la unidad, como se
muestra a continuación cuantitativamente

Ahora realizamos un balanza de materia del componente i para una etapa n

𝑑𝑁𝑖,𝑛
= (𝐿𝑛+1 𝑥𝑖,𝑛+1 − 𝑉𝑛 𝑦𝑖,𝑛 ) − (𝐿𝑛 𝑥𝑖,𝑛 − 𝑉𝑛−1 𝑦𝑖,𝑛−1 )
𝑑𝑡

42
Módulos de Simulación con MATLAB

𝑦𝑛+1
𝑥𝑛+1
𝑉𝑛
𝑦𝑛
Etapa
𝑥𝑛
n
𝐿𝑛
𝑦𝑛−1
𝑥𝑛−1

• 𝑁𝑖,𝑛 : número de moles del componente i en la etapa n.


• 𝐿𝑛 : Flujo molar líquido que sale de la etapa n
• 𝑉𝑛 : Flujo molar vapor que sale de la etapa n

Al estado estacionario la diferencial se iguala a cero.

Es conveniente definir el flujo de material neto que sube desde la etapa n


hacia n+1

𝑤𝑖,𝑛 = 𝑉𝑛 𝑦𝑖,𝑛 − 𝐿𝑛+1 𝑥𝑖,𝑛+1

En el estado estacionario el flujo neto es el mismo en todas las etapas: 𝑤𝑖,𝑛 =


𝑤𝑖,𝑛+1 = 𝑤𝑖

Reescribimos:
𝐿𝑛+1 1
𝑦𝑖,𝑛 = 𝑥 + 𝑤
𝑉𝑛 𝑖,𝑛+1 𝑉𝑛 𝑖,𝑛

Consideramos el flujo molar tanto vapor como líquido constante, entonces:

𝐿𝑛 ≈ 𝐿1 = 𝐿

𝑉𝑛 ≈ 𝑉1 = 𝑉

En la sección superior, el transporte neto del componente de ligero es


𝑤 = 𝑥𝐷 𝐷. Insertado en el balance de materia en cada etapa, obtenemos la
línea de operación para la sección superior

43
Módulos de Simulación con MATLAB

𝐿 𝐷
𝑦𝑛 = ( ) 𝑥𝑛+1 + 𝑥𝐷
𝑉 𝑇 𝑉𝑇

En la sección inferior 𝑤 = −𝑥𝐵 𝐵, con lo que obtenemos

𝐿 𝐵
𝑦𝑛 = ( ) 𝑥𝑛+1 − 𝑥𝐵
𝑉 𝐵 𝑉𝐵

Alimentación fracción líquida (línea q)

Describe el cambio en caudales de líquido y vapor en la etapa de


alimentación
∆𝐿𝐹 = 𝑞𝐹
∆𝑉𝐹 = (1 − 𝑞)𝐹
Cuando asumimos flujos molares constantes en cada sección, obtenemos la
siguiente relación para los flujos:
𝐷 = 𝑉𝑇 − 𝐿 𝑇

𝐵 = 𝐿𝐵 − 𝑉𝐵

𝑉𝑇 = 𝑉𝐵 + (1 − 𝑞)𝐹

𝐿𝐵 = 𝐿 𝑇 + 𝑞𝐹
Ecuacion línea q
𝑞 𝑥𝑓
𝑦= 𝑥−
𝑞−1 𝑞−1

RESOLUCIÓN EN MATLAB

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

F=100; %Flujo molar total de la alimentación


xf=0.55; %Fracción molar de la alimentación
q=0.4; %La fracción de líquido en la alimentación
xd=0.9; %Fracción molar del destilado
xb=0.1; %Fracción molar del fondo
ratio=1.1; %Relación de reflujo
a=2.45; %La volatilidad relativa

44
Módulos de Simulación con MATLAB

%Balance alrededor de la columna


D=F*(xf-xb)/(xd-xb); %Flujo molar del destilado
B=F-D; %flujo molar del fondo

fprintf('Flujo molar del destilado: %d.\n',D);


fprintf('Flujo molar del fondo: %d.\n',B);

%Grafica ELV
x=linspace(0,1); %fracción mol del componente ligero en
la fase líquida
plot(x,x,'--c');
hold on
y=a*x./(1+x.*(a-1)); %fracción mol del componente ligero
en la fase vapor
plot(x,y,'r'); %Grafica y en función de x en ELV

%Ecuacion linea q (y=m*x+n)


m=q/(q-1);
n=xf-m*xf;
Zf=-n*(q-1);
%Interseccion linea-q con ELV
syms x0
f=a*x0/(1+x0*(a-1))==m*x0+n;
[x0]=solve(f);
x0=eval(x0);
x0=x0( x0>=0 );
y0=m*x0+n;

%Linea Operacion Enriquecimiento (LOE)


[y=(R/(R+1))X+Xd/(R+1)]
syms m1 n1
f1=m1*x0+n1*xd==y0;
f2=m1*xd+n1*xd==xd;
[m1,n1]=solve(f1,f2);
m1=eval(m1);
n1=eval(n1);
%m=R/(R+1)
r=m1/(1-m1); %Reflujo minimo

R=ratio*r; %Reflujo real


m2=R/(R+1);
n2=xd-m2*xd;

45
Módulos de Simulación con MATLAB

%interseccion linea q y LOE


syms xz yz
a1=m*xz+n==yz;
a2=m2*xz+n2==yz;
[xz, yz]=solve(a1,a2);
xz=eval(xz);

%Graficamos linea q
x2=linspace(xz,xf);
y2=x2.*m+n;
plot(x2,y2,'g');
%Grafica LOE
x3=linspace(xz,xd);
y3=m2.*x3+n2;
plot(x3,y3,'b');

%Linea Operacion Agotamiento (LOA)


syms m3 n3
f3=m3*xb+n3==xb;
f4=m3*xz+n3==yz;
[m3,n3]=solve(f3,f4);
m3=eval(m3);
n3=eval(n3);
%Grafica LOA
x4=linspace(xb,xz);
y4=m3.*x4+n3;
plot(x4,y4,'b');

t=xd;t1=xd;p=xd;
%Graficamos etapas
i=0;
syms x y
while t>xb;
h=solve(y==a*x/(1+x*(a-1)), y==t1+0*x);
plot([h.x,t],[p,p],'m') %horizontal
t=h.x;
if t>xz;
p=subs(R*x/(R+1)+xd/(R+1),h.x);
plot([h.x,h.x],[p,h.y],'m')
t1=p;
i=i+1;
elseif t<xz;

46
Módulos de Simulación con MATLAB

p=subs(x.*(yz-xb)/(xz-xb)-xb*(yz-xb)/(xz-
xb)+xb,h.x);
plot([h.x,h.x],[p,h.y],'m')
t1=p;
i=i+1;
end
end

fprintf('El N°. de las etapas requeridas es: %d.\n',i);


fprintf('El N°. de bandejas requeridas es: %d.\n',i-1);

Flujo molar del destilado: 5.625000e+01.

Flujo molar del fondo: 4.375000e+01.

El N°. de las etapas requeridas es: 13.

El N°. de bandejas requeridas es: 12.

47
Módulos de Simulación con MATLAB

6. TANQUE CALENTADO POR RESISTENCIA


Un tanque que contiene un volumen constante de agua es calentado
mediante una resistencia de 10𝛺 bajo una tensión de ∆𝑉 = 220 voltios.

En el instante inicial, el tanque se encuentra a una temperatura de 𝑇0 = 25°𝐶,


y a partir de ese momento comienza a entrar un caudal de agua 𝑄𝑒 =
1 𝐿⁄𝑚𝑖𝑛 a temperatura 𝑇𝑒 = 17°𝐶, saliendo el mismo caudal.

𝑇𝑒 = 17°𝐶
𝑄𝑒 = 1 𝐿⁄𝑚𝑖𝑛

𝑇0 = 25°𝐶

Determinar el valor de temperatura estacionario y el tiempo para el que se


alcanza un 99% de dicho valor.

DESARROLLO DEL MODELO


La ecuación de balance total conduce a que para mantenerse el volumen
constante debe salir el mismo caudal que entra.

Para la ecuación de balance de energía tenemos en cuenta que no hay


trabajo realizado contra el sistema. Tampoco hay reacción por lo que se tiene
𝑆𝑅𝑉 = 0, las entalpías son exclusivamente debidas al cambio térmico:

𝑑𝑈
= 𝑚𝑒 ℎ 𝑒 − 𝑚𝑠 ℎ 𝑠 + 𝑞
𝑑𝑡

48
Módulos de Simulación con MATLAB

𝑑(𝑀𝑢)
= 𝜌𝑄(ℎ𝑒 − ℎ𝑠 ) + 𝑞
𝑑𝑡

Por ser la densidad y el volumen constante y asumiendo calor específico


independiente de T se tiene:

𝑑𝑇
(𝜌𝑉)𝐶𝑣 = 𝜌𝑄𝐶𝑝 (𝑇𝑒 − 𝑇) + 𝑞
𝑑𝑡

Además para un líquido se cumple 𝐶𝑒 ≈ 𝐶𝑝 ≈ 𝐶𝑣 , luego:

𝑑𝑇 𝑄 𝑞
= (𝑇 + − 𝑇)
𝑑𝑡 𝑉 𝑒 𝜌𝑄𝐶𝑒

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

R=10; %resistencia
DV=220; %voltios
Ce=4.187e+3; %J.Kg-1.K-1calor especifico
T0=25; %°C Temperatura incial tanque
Te=17; %°C Temperatura agua entrante
V=0.1; %m3 Volumen
p=1000; %kg/m3 densidad
Q=1.667e-5; %m3/s Caudal de agua entrante
q=DV^2/R; %W Calor producido por la resitencia

La ecuación diferencial 𝑑𝑇 ⁄𝑑𝑡 puede resolverse de manera analítica


utilizando el comando dsolve, declaramos T como variable simbólica y
resolvemos. El resultado nos da una función del tiempo, al reemplazarlo por
36000 (10 horas) nos devuelve la temperatura en ese tiempo.

La solución analítica es la siguiente:

𝑇
1 𝑄
∫ 𝑞 𝑑𝑇 = 𝑑𝑡
𝑇0 𝑇𝑒 + −𝑇 𝑉
𝜌𝑄𝐶𝑒

49
Módulos de Simulación con MATLAB

𝑄
𝑄 𝑞 −𝑉 𝑡
𝑇 = (1 − 𝑒 −𝑉 𝑡 ) (𝑇𝑒 + ) + 𝑇0 𝑒
𝜌𝑄𝐶𝑒

syms T(t)
eqn=diff(T,t)==(Q/V)*(Te+q/(p*Q*Ce)-T);
cond=T(0)==T0;
Tsol=dsolve(eqn,cond);
Tsol1=subs(Tsol,36000);
Tsol1=eval(Tsol1); %Temperatura a las 10 hroas
fprintf('Temperatura en 10horas (solución analítica):
%d.\n',Tsol1);

Se obtiene como resultado:


Temperatura en 10horas (solución analítica): 8.619179e+01.

También podemos utilizar el comando ode45 para obtener su solución


numérica.

x0=T0; %Condicion inicial


f=@(t,x) (Q/V)*(Te+q/(p*Q*Ce)-x); %Variación de la
Temperatura respecto al tiempo
tspan=[0 36000]; %tiempo 10 horas
[t,x]=ode45(f,tspan,x0); %resolvemos la ecuación
diferencial

La solución de la EDO, nos devuelve la variación de la temperatura T con


respecto al tiempo t.

Graficamos temperatura versus el tiempo en horas.

time=t./3600; %creamos vector con tiempo en horas

plot(time,x)
ylabel('T(t)');
xlabel('t/3600');
axis([0 10 20 100])

50
Módulos de Simulación con MATLAB

Para determinar el valor de la temperatura al estacionario igualamos la EDO


a cero y resolvemos mediante la función solve.

syms T
f1=(Q/V)*(Te+q/(p*Q*Ce)-T);
T=solve(f1);
T=eval(T); %Temperatura al estado estacionario
fprintf('Temperatura al estado estacionario: %d.\n',T);

Para determinar el tiempo en el que alcanza una temperatura igual al 99% de


la temperatura al estacionario utilizamos la función obtenida en la resolución
analítica de la EDO, Tsol(t) ahora el valor buscado es el tiempo, y lo
obtenemos reemplazando el valor de la temperatura e igualando la ecuación
a cero.
𝑄
𝑄 𝑞 −𝑉 𝑡
0 = (1 − 𝑒 −𝑉 𝑡 ) (𝑇𝑒 + ) + 𝑇0 𝑒 − 𝑇 ∗ 0.99
𝜌𝑄𝐶𝑒

%Para alcanzar el 99% del valor estacionario


f2=Tsol-T*0.99;

51
Módulos de Simulación con MATLAB

t=solve(f2);
t=eval(t)/3600; %Tiempo en el que alcanza 99%
estacionario
fprintf('Tiempo en el que alcanza 0.99 de la Temp. en
estacionario: %d.\n',t);

Se obtiene como resultado:


Temperatura al estado estacionario: 8.634367e+01.
Tiempo en el que alcanza 0.99 de la Temp. en estacionario: 7.104124e+00.

52
Módulos de Simulación con MATLAB

7. REACCIÓN EXOTERMICA EN UN SISTEMA


DE CSTR
Se dispone de dos CSTR provistos de sendas camisas intercambiadoras en
los que tiene lugar una reacción irreversible de primer orden en fase acuosa:
5340
−( )
A→productos 𝑘𝐴 (𝑇) = 1.69 × 106 𝑒 𝑇 ∆𝐻𝑟 =
𝑘𝐽
−253
𝑚𝑜𝑙𝐴

𝑟𝐴 = −𝑘𝐴 (𝑇). 𝐶𝐴

El flujo de los intercambiadores puede conectarse en equicorriente o en


contracorriente respecto del fluido reaccionante:

𝐶𝐴𝑒𝑛𝑡
𝑇𝐴𝑒𝑛𝑡

𝑉 𝑉
𝑇𝑐_𝑒𝑛𝑡

Datos de cada reactor


Volumen: 𝑉 = 0.1(𝑚3 )
Volumen del intercambiador: 𝑉𝐶 = 0.1(𝑚3 )
Coeficiente global por área: 𝑈𝐴 = 2000𝑊/𝐾

Datos de las corrientes entrantes


Alimentación
Caudal: 𝑄 = 0.1(𝑚3 ⁄𝑚𝑖𝑛)
Concentración entrante: 𝐶𝐴𝑒𝑛𝑡 = 1000(𝑚𝑜𝑙 ⁄𝑚3 )

53
Módulos de Simulación con MATLAB

Temperatura de entrada: 𝑇𝑒𝑛𝑡 = 298(𝐾)


Densidad: 𝜌 = 1000(𝑘𝑔 ⁄𝑚3 )
Calor específico: 𝐶𝑝 = 4180(𝐽. 𝑘𝑔 −1 . 𝐾 −1 )

Fluido refrigerante
Caudal: 𝑄 = 0.1(𝑚3 ⁄𝑚𝑖𝑛)
Temperatura de entrada: 𝑇𝑐_𝑒𝑛𝑡 = 298(𝐾)
Densidad: 𝜌𝐶 = 1000(𝑘𝑔 ⁄𝑚3 )
Calor específico: 𝐶𝑝𝐶 = 4180(𝐽. 𝑘𝑔−1 . 𝐾 −1 )

Inicialmente en todo el sistema la concentración es nula y la temperatura es


de 298K.
1. Determínense subrutinas genéricas de las derivadas de las variables
de estado para cualquier entrada y obténgase con ellas la evolución
del sistema en equicorriente y el valor estacionario.
2. Resuélvase lo mismo para el caso en que los reactores están
conectados en contracorriente.
3. Para la configuración en contracorriente, cuando el sistema se
encontraba en su valor estacionario se produce una interrupción del
caudal de refrigeración durante 120s, restableciéndose, transcurrido
ese tiempo, al valor de régimen. Determínese la evolución de la
concentración y las temperaturas.

DESARROLLO DEL MODELO


Tanto el reactor como la camisa se tratarán en este caso como subsistemas
globalizados.

La aplicación de balance total al reactor implica, que la densidad es


aproximadamente constante y que, por tanto, el caudal de entrada y de salida
son iguales a 𝑄.
La aplicación de balance de materia del componente 𝐴 incluye el término de
desaparición de este componente, resultando:

𝑑𝐶𝐴 𝑄
= (𝐶𝐴𝑒 − 𝐶𝐴 ) + 𝑟𝐴
𝑑𝑡 𝑉

Para su uso en las ecuaciones de energía se define previamente el calor


transferido tomado como positivo en el sentido de intercambiador a reactor:

𝑞𝑐𝑟 = 𝑈𝐴(𝑇𝐶 − 𝑇)

54
Módulos de Simulación con MATLAB

La ecuación de la energía para el reactor conduce a la derivada de la


temperatura 𝑇 en el reactor
𝑑𝑇 𝑄 𝑞𝑐𝑟 + 𝑆𝑅𝑉
= (𝑇 − 𝑇) +
𝑑𝑡 𝑉 𝑒 𝜌𝐶𝑝𝑉

La entalpía generada por la modificación de la composición debida a la


reacción es:

𝑆𝑅 (𝐶𝐴 , 𝑇) = 𝑟𝐴 ∆𝐻𝑟 𝑉

La ecuación de energía en el intercambiador es análoga pero sin incluir


término de reacción y con signo negativo antes de 𝑞𝑐𝑟 ya que esta variable
representa el calor que sale del intercambiador. Todas las variables
relacionadas con el intercambiador con el subíndice 𝑐 para distinguirlas de las
del reactor:

𝑑𝑇𝑐 𝑄𝑐 −𝑞𝑐𝑟
= (𝑇𝑐𝑒 − 𝑇𝑐 ) +
𝑑𝑡 𝑉𝑐 𝜌𝑐 𝐶𝑝𝑐 𝑉𝑐

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

DHr=-253e+3; %J/molA Entalpía de reacción


%Datos de cada reactor
V=0.1; %m3 Volumen de reactor
Vc=0.01; %m3 Volumen del intercambiador
UA=2000; %W/K Coeficiente global x área

%Datos corriente alimentación


Q=1.667e-3; %m3/s Caudal
CAent=1000; %mol/m3 Concentración entrante
Tent=298; %K Temperatura de entrada
p=1000; %kg/m3 Densidad
Cp=4187; %J.kg-1.K-1 Calor específico

%Datos corriente fluido refrigerante

55
Módulos de Simulación con MATLAB

Qc=1.667e-3; %m3/s Caudal


Tcent=298; %K Temperatura de entrada
pc=1000; %kg/m3 Densidad
Cpc=4187; %J.kg-1.K-1 Calor específico

Para ambos reactores se define la transferencia de calor de la camisa al


reactor:

𝑞𝑐𝑟 = 𝑈𝐴(𝑇𝑐 − 𝑇)

Las derivadas de las variables de estado para un reactor que recibe entradas
genéricas son:

𝑑𝐶𝐴 𝑄
= (𝐶𝐴𝑒 − 𝐶𝐴 ) + 𝑟𝐴
𝑑𝑡 𝑉

𝑑𝑇 𝑄 𝑞𝑐𝑟 + 𝑆𝑅𝑉
= (𝑇 − 𝑇) +
𝑑𝑡 𝑉 𝑒 𝜌𝐶𝑝𝑉

𝑑𝑇𝑐 𝑄𝑐 −𝑞𝑐𝑟
= (𝑇 − 𝑇𝑐 ) +
𝑑𝑡 𝑉𝑐 𝑐𝑒 𝜌𝑐 𝐶𝑝𝑐 𝑉𝑐

Particularizamos variables para el reactor 1 y el reactor 2. Teniendo como


resultado 3 EDO por reactor lo que nos da un sistema de 6 EDO.

Creamos un vector x0 para ingresar los valores iniciales de las variables:

x0=zeros(1,6);
x0(1)=0; %CA1
x0(2)=298; %T1
x0(3)=298; %Tc1
x0(4)=0; %CA2
x0(5)=298; %T2
x0(6)=298; %Tc2

Utilizamos el comando ode45 para resolver las 6 EDO, que por cuestiones
prácticas se escribirán en una función individual llamada odefcn.m

function
dxdt=odefcn(t,x,Q,Qc,V,CAent,Tent,UA,DHr,p,Cp,Vc,Tcent,pc
,Cpc)
dxdt=zeros(6,1);

56
Módulos de Simulación con MATLAB

dxdt(1)=(Q/V)*(CAent-x(1))+(-((1.69e+6)*exp(-
5346/x(2)))*x(1)); %CA1
dxdt(2)=(Q/V)*(Tent-x(2))+((UA*(x(3)-x(2)))+((-
((1.69e+6)*exp(-5346/x(2)))*x(1))*DHr*V))/(p*Cp*V);
%T1
dxdt(3)=(Qc/Vc)*(Tcent-x(3))+(-(UA*(x(3)-
x(2)))/(pc*Cpc*Vc)); %Tc1
dxdt(4)=(Q/V)*(x(1)-x(4))+(-((1.69e+6)*exp(-
5346/x(5)))*x(4)); %CA2
dxdt(5)=(Q/V)*(x(2)-x(5))+((UA*(x(6)-x(5)))+((-
((1.69e+6)*exp(-5346/x(5)))*x(4))*DHr*V))/(p*Cp*V);
%T2
dxdt(6)=(Qc/Vc)*(x(3)-x(6))+(-(UA*(x(6)-
x(5)))/(pc*Cpc*Vc)); %Tc2
end

Resolvemos el sistema, el resultado nos entrega una matriz x en el cual cada


columna representa a la variación de una variable, llevando el respectivo
orden, concentración reactor 1, temperatura reactor 1, temperatura de la
camisa del reactor 1, concentración reactor 2, temperatura reactor 2,
temperatura de la camisa del reactor 2.

Graficamos la variación de cada variable respecto al tiempo.

tspan=[0 300];
[t,x]=ode45(@(t,x)
odefcn(t,x,Q,Qc,V,CAent,Tent,UA,DHr,p,Cp,Vc,Tcent,pc,Cpc)
,tspan,x0);
plot(t,x(:,1),'r',t,x(:,4),'b')
legend('CA1','CA2');
figure
plot(t,x(:,2),'g',t,x(:,3),'r',t,x(:,5),'y',t,x(:,6),'c')
legend('T1','T2','Tc1','Tc2');

57
Módulos de Simulación con MATLAB

58
Módulos de Simulación con MATLAB

Apartado 2:

En contracorriente se tiene que la entrada al intercambiador del primer


reactor es la salida del segundo y que la entrada al segundo es la entrada
externa por lo que creamos una nueva función odefcn2.m

function
dxdt=odefcn2(t2,x2,Q,Qc,V,CAent,Tent,UA,DHr,p,Cp,Vc,Tcent
,pc,Cpc)
dxdt=zeros(6,1);
dxdt(1)=(Q/V)*(CAent-x2(1))+(-((1.69e+6)*exp(-
5346/x2(2)))*x2(1)); %CA1
dxdt(2)=(Q/V)*(Tent-x2(2))+((UA*(x2(3)-x2(2)))+((-
((1.69e+6)*exp(-
5346/x2(2)))*x2(1))*DHr*V))/(p*Cp*V); %T1
dxdt(3)=(Qc/Vc)*(x2(6)-x2(3))+(-(UA*(x2(3)-
x2(2)))/(pc*Cpc*Vc)); %Tc1
dxdt(4)=(Q/V)*(x2(1)-x2(4))+(-((1.69e+6)*exp(-
5346/x2(5)))*x2(4)); %CA2
dxdt(5)=(Q/V)*(x2(2)-x2(5))+((UA*(x2(6)-x2(5)))+((-
((1.69e+6)*exp(-
5346/x2(5)))*x2(4))*DHr*V))/(p*Cp*V); %T2
dxdt(6)=(Qc/Vc)*(Tcent-x2(6))+(-(UA*(x2(6)-
x2(5)))/(pc*Cpc*Vc)); %Tc2
end

Resolvemos el nuevo sistema con el comando ode45 y graficamos de igual


modo la variación de cada variable.

[t2,x2]=ode45(@(t2,x2)
odefcn2(t2,x2,Q,Qc,V,CAent,Tent,UA,DHr,p,Cp,Vc,Tcent,pc,C
pc),tspan,x0);
figure
plot(t2,x2(:,1),'r',t2,x2(:,4),'b')
legend('CA1','CA2');
figure
plot(t2,x2(:,2),'g',t2,x2(:,3),'r',t2,x2(:,5),'y',t2,x2(:
,6),'c')
legend('T1','T2','Tc1','Tc2');

59
Módulos de Simulación con MATLAB

60
Módulos de Simulación con MATLAB

Apartado 3:

En contracorriente se tiene que la entrada al intercambiador del primer


reactor es la salida del segundo y que la entrada

%Calculamos valores estacionarios


syms x1 x2 x3 x4 x5 x6
f1=(Q/V)*(CAent-x1)+(-((1.69e+6)*exp(-5346/x2))*x1); %CA1
f2=(Q/V)*(Tent-x2)+((UA*(x3-x2))+((-((1.69e+6)*exp(-
5346/x2))*x1)*DHr*V))/(p*Cp*V); %T1
f3=(Qc/Vc)*(x6-x3)+(-(UA*(x3-x2))/(pc*Cpc*Vc)); %Tc1
f4=(Q/V)*(x1-x4)+(-((1.69e+6)*exp(-5346/x5))*x4); %CA2
f5=(Q/V)*(x2-x5)+((UA*(x6-x5))+((-((1.69e+6)*exp(-
5346/x5))*x4)*DHr*V))/(p*Cp*V); %T2
f6=(Qc/Vc)*(Tcent-x6)+(-(UA*(x6-x5))/(pc*Cpc*Vc)); %Tc2

Utilizamos el comando vpasolve para encontrar una solución numérica a


nuestro sistema de ecuaciones.

[CA1,T1,Tc1,CA2,T2,Tc2]=vpasolve(f1,f2,f3,f4,f5,f6);
%solución númerica de ecuaciones

Los resultados obtenidos al resolver el sistema de ecuaciones corresponden


ahora a los valores iniciales de nuestro nuevo sistema de EDO.

x03=zeros(1,6);
x03(1)=CA1; %CA1
x03(2)=T1; %T1
x03(3)=Tc1; %Tc1
x03(4)=CA2; %CA2
x03(5)=T2; %T2
x03(6)=Tc2; %Tc2

Creamos una nueva función odefcn3.m donde seleccionamos los nuevos


valores iniciales obtenidos. Además de ello adicionamos la condición que
vuelve el valor de Qc igual a cero durante 120 s.

function
dxdt=odefcn3(t3,x3,Q,Qc,V,CAent,Tent,UA,DHr,p,Cp,Vc,Tcent
,pc,Cpc)
t1=20;
dt=120;
t2=t1+dt;

61
Módulos de Simulación con MATLAB

if t3>t1&&t3<t2
Qc=0;
end
dxdt=zeros(2,1);
dxdt(1)=(Q/V)*(CAent-x3(1))+(-((1.69e+6)*exp(-
5346/x3(2)))*x3(1)); %CA1
dxdt(2)=(Q/V)*(Tent-x3(2))+((UA*(x3(3)-x3(2)))+((-
((1.69e+6)*exp(-
5346/x3(2)))*x3(1))*DHr*V))/(p*Cp*V); %T1
dxdt(3)=(Qc/Vc)*(x3(6)-x3(3))+(-(UA*(x3(3)-
x3(2)))/(pc*Cpc*Vc)); %Tc1
dxdt(4)=(Q/V)*(x3(1)-x3(4))+(-((1.69e+6)*exp(-
5346/x3(5)))*x3(4)); %CA2
dxdt(5)=(Q/V)*(x3(2)-x3(5))+((UA*(x3(6)-x3(5)))+((-
((1.69e+6)*exp(-
5346/x3(5)))*x3(4))*DHr*V))/(p*Cp*V); %T2
dxdt(6)=(Qc/Vc)*(Tcent-x3(6))+(-(UA*(x3(6)-
x3(5)))/(pc*Cpc*Vc)); %Tc2
end

Resolvemos el nuevo sistema con el comando ode45 y graficamos de igual


modo la variación de cada variable.

[t,x]=ode45(@(t3,x3)
odefcn3(t3,x3,Q,Qc,V,CAent,Tent,UA,DHr,p,Cp,Vc,Tcent,pc,C
pc),tspan,x03);
figure
plot(t,x(:,1),'r',t,x(:,4),'b')
legend('CA1','CA2');
figure
plot(t,x(:,2),'g',t,x(:,3),'r',t,x(:,5),'y',t,x(:,6),'c')
legend('T1','T2','Tc1','Tc2');

62
Módulos de Simulación con MATLAB

63
Módulos de Simulación con MATLAB

Como consecuencia del fallo se produce un pico pequeño de temperatura en


ambos reactores, acercándose rápidamente la temperatura de cada
intercambiador a la de su reactor, debido a que el volumen interno de los
intercambiadores es pequeño.

64
Módulos de Simulación con MATLAB

8. REACTOR PISTÓN CON INTERCAMBIADOR


Se tiene un intercambiador tubular en el que el fluido caliente circula por el
interior y el fluido frio por el exterior.

𝑇𝑐𝑒 𝑇𝑐𝑒 + 𝑑𝑇𝑐

𝐶𝐴𝑒 , 𝑇𝑒 𝐶𝐴𝑒 + 𝑑𝐶𝐴

𝑇𝑒 + 𝑑T

𝑑𝑧

1. Obténgase los perfiles de temperatura estacionarios para un


intercambiador en equicorriente.
2. Obténgase los perfiles de temperatura estacionarios para un
intercambiador en contracorriente.
3. Obténgase el calor que recibe el fluido de la camisa desde el reactor
para el caso en contracorriente.

Datos de la reacción

5346
𝑘𝐴 (𝑇) = 1.69 × 106 𝑒𝑥𝑝 (− ) (𝑠 −1 )
𝑇

𝑟𝐴 (𝑇, 𝐶𝐴 ) = −𝑘𝐴 (𝑇) × 𝐶𝐴 ∆𝐻𝑟 = −253 × 103 (𝐽⁄𝑚𝑜𝑙 − 𝐴)

Datos de las corrientes


Alimentación
Caudal: 𝑄 = 4.3 × 10−4 (𝑚3 ⁄𝑠)
Concentración: 𝐶𝐴𝑒 = 1000(𝑚𝑜𝑙 ⁄𝑚3 )
Temperatura de entrada: 𝑇𝑒 = 298(𝐾)
Densidad: 𝜌 = 851(𝑘𝑔 ⁄𝑚3 )
Calor específico: 𝐶𝑝 = 2800(𝐽. 𝑘𝑔 −1 . 𝐾 −1 )

65
Módulos de Simulación con MATLAB

Fluido refrigerante
Caudal: 𝑄𝐶 = 5 × 10−4 (𝑚3 ⁄𝑠)
Temperatura de entrada: 𝑇𝑐𝑒 = 290(𝐾)
Densidad: 𝜌𝐶 = 998(𝑘𝑔 ⁄𝑚3 )
Calor específico: 𝐶𝑝𝐶 = 4187(𝐽. 𝑘𝑔−1 . 𝐾 −1 )

Datos geométricos
Longitud: L = 25 (m)
Diámetro de la tubería interior: 𝐷𝑖𝑛𝑡 = 21 × 10−3 (𝑚)
Diámetro de la tubería exterior: 𝐷𝑒𝑥𝑡 = 41.5 × 10−3 (𝑚)

Datos relevantes en la transmisión de calor


Coeficientes globales de intercambio de calor
Entre el fluido frio y el caliente: 𝑈𝑖𝑛𝑡 = 1200(𝑊. 𝑚2 . 𝐾 −1 )
Entre el fluido frio y el exterior: 𝐷𝑈𝑒𝑥𝑡 = 80(𝑊. 𝑚2 . 𝐾 −1 )
Los espesores de pared son despreciables.
La temperatura exterior es 𝑇𝑒𝑥𝑡 = 298(𝐾)

DESARROLLO DEL MODELO


En el caso del flujo pistón, son aplicables las ecuaciones conservativas de
gradiente máximo, siendo z la variable espacial en la dirección de flujo.

En el régimen estacionario se tendrá una variación espacial


independientemente del tiempo, por lo que las derivadas parciales respecto
del tiempo son nulas.

Para un líquido, la ecuación de balance de materia total, se considera que la


densidad no varía significativamente con la composición y la temperatura.
Además el caudal es constante, en consecuencia, si la sección no varía se
tendrá velocidad constante.

Las ecuaciones conservativas de componente y energía forman el siguiente


sistema de EDO:
𝜕𝐶𝑖 𝑑𝐶𝑖 𝑟𝑖
0 = −𝑣 + 𝑟𝑖 → =
𝜕𝑧 𝑑𝑧 𝑣

𝜕𝑇 𝑑𝑇 𝑞𝑉 + 𝑆𝑅𝑉
0 = −𝜌 𝐶𝑝 𝑣 + 𝑞𝑉 + 𝑆𝑅𝑉 → =
𝜕𝑧 𝑑𝑧 𝜌 𝐶𝑝 𝑣

66
Módulos de Simulación con MATLAB

Por la camisa circula en equicorriente un fluido no existiendo en este caso


reacción. Por ello, se particulariza con el subíndice “c”.

𝑑𝑇𝐶 𝑞𝑉 𝐶
=
𝑑𝑧 𝜌𝐶 𝐶𝑝𝐶 𝑣𝐶

De manera general, el flujo de calor entrante por unidad de volumen se


obtiene sumando todos los flujos por unidad de área corregidos por la
relación entre la diferencial de área y el diferencial de volumen del
subsistema:

𝑑𝐴𝑘
𝑞𝑉 = ∑ 𝑞𝐴,𝑘
𝑑𝑉
𝑘

Por otra parte, la relación entre el área y el volumen es la misma que entre el
perímetro donde se da la transferencia y la sección:

𝑃𝑘
𝑞𝑉 = ∑ 𝑞𝐴,𝑘
𝑆
𝑘

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

%Datos de la reacción
DHr=-253e+3; %J/mol-A

%Datos de las corriente flujo reactivo


CAe=1000; %mol/m3 Concentración
Te=298; %K Temperatrura de entrada
Q=4.3e-4; %m3/s Caudal
Cp=2800; %J.kg-1.K-1 Calor específico
p=851; % kg/m3 Densidad

%Datos fluido refrigerante


Tce=290; %K Temperatura
Qc=5e-4; %m3/s Caudal
Cpc=4187; %J.kg-1.K-1 Calor específico

67
Módulos de Simulación con MATLAB

pc=998; % kg/m3 Densidad

%Datos geométricos
L=25; %m Longitud
Dint=21e-3; %m Diámetro de la tubería interior
Dext=41.5e-3; %m Diametro de la tuberia exterior

%Datos relevantes en la transmisión de calor


Uint=1200; %W.m-2.K-1 Coeficiente global de intercambio
de calor entre fluido frio y el caliente
Uext=80; %W.m-2.K-1 Coeficiente global de intercambio de
calor entre fluido frio y el exterior
Text=298; %K Temperatura del exterior

Realizamos cálculos para determinar, perímetros, secciones de paso y


velocidades.

Pint=pi*Dint; %Perímetros de las conducciones


Pext=pi*Dext; %Perímetros de la conducciones
S=(pi*Dint^2)/4; %Secciones de paso
Sc=pi*(Dext^2-Dint^2)/4; %Secciones de paso
v=Q/S; %velocidades m/s
vc=Qc/Sc; %velocidades m/s

Creamos un vector llamado x0 en el cual ingresaremos los valores iniciales,


siendo la columna 1 la concentración de entrada, la columna 2 la temperatura
de entrada y la columna 3 la temperatura de entrada a la camisa.

x0=zeros(1,3);
x0(1)=CAe;
x0(2)=Te;
x0(3)=Tce;

Para el caso equicorriente la entalpía de reacción por unidad de volumen se


obtiene multiplicando la generación de A por el incremento de entalpía por
mol de A generado.

𝑠𝑅𝑉 = 𝑟. ∆𝐻𝑅 𝑠𝑅𝑉 (𝐶𝐴 , 𝑇) = 𝑟𝐴 (𝑇, 𝐶𝐴 ). ∆𝐻𝑅

Para calcular los términos 𝑞𝑉 necesitamos las densidades de flujo de calor


que se expresarán en (𝐽. 𝑚−2 . 𝑠 −1 ):

68
Módulos de Simulación con MATLAB

De reactor a camisa: 𝑞𝐴,𝑟𝑐 (𝑇, 𝑇𝑐 ) = 𝑈𝑖𝑛𝑡 (𝑇 − 𝑇𝑐 )

De camisa a exterior: 𝑞𝐴,𝑐𝑒𝑥𝑡 (𝑇𝑐 ) = 𝑈𝑒𝑥𝑡 (𝑇𝑐 − 𝑇𝑒𝑥𝑡 )

Con ello quedan determinadas las expresiones de las EDO a desarrollar:

𝑑𝐶𝑖 𝑟𝑖
=
𝑑𝑧 𝑣
𝑃𝑖𝑛𝑡
𝑑𝑇 −𝑞𝐴,𝑟𝑐 . 𝑆 + 𝑆𝑅𝑉
=
𝑑𝑧 𝜌 𝐶𝑝 𝑣

𝑃𝑖𝑛𝑡 𝑃𝑒𝑥𝑡
𝑑𝑇𝐶 𝑞𝐴,𝑟𝑐 . 𝑆 − 𝑞𝐴,𝑐𝑒𝑥𝑡 . 𝑆𝑐
=
𝑑𝑧 𝜌𝐶 𝐶𝑝𝐶 𝑣𝐶

Creamos una función donde integramos nuestras EDO, llamada equicorr.m

function
dxdz=equicorr(z,x,v,Uint,Pint,S,Sc,DHr,p,Cp,Uext,Text,Pex
t,pc,Cpc,vc)
dxdz=zeros(3,1);
dxdz(1)=-((1.69e+6)*exp(-5346/x(2)))*x(1)/v; %C
dxdz(2)=(-(Uint*(x(2)-x(3)))*(Pint/S)+((-
((1.69e+6)*exp(-5346/x(2)))*x(1))*DHr))/(p*Cp*v);
%T
dxdz(3)=((Uint*(x(2)-x(3)))*(Pint/Sc)-(Uext*(x(3)-
Text))*(Pext/Sc))/(pc*Cpc*vc); %Tc1
end

Utilizamos el comando ode45 para resolver el sistema de EDO con respecto


a la distancia, sabemos que la longitud del reactor es 𝐿 = 25𝑚.

zspan=[0 L];
[z,x]=ode45(@(z,x)
equicorr(z,x,v,Uint,Pint,S,Sc,DHr,p,Cp,Uext,Text,Pext,pc,
Cpc,vc),zspan,x0);

Ts=x((end),2);
Tcs=x((end),3);

69
Módulos de Simulación con MATLAB

fprintf('Temperatura de salida fluido reactivo:


%d.\n',Ts);
fprintf('Temperatura de salida fluido refrigerante:
%d.\n',Tcs);

Se obtiene como resultado:


Temperatura de salida fluido reactivo: 3.448759e+02.
Temperatura de salida fluido refrigerante: 3.182660e+02.

Graficamos utilizando el comando plot la evolución de la concentración y las


temperaturas a lo largo del reactor.

plot(z,x(:,1),'r')
title('Equicorriente');
ylabel('CA');
xlabel('z');
figure
plot(z,x(:,2),'g',z,x(:,3),'r')
title('Equicorriente');
ylabel('Temp');
xlabel('z');
legend('T. react.','T. refrig')
axis([0 25 290 400])

70
Módulos de Simulación con MATLAB

71
Módulos de Simulación con MATLAB

Apartado 2:

Para el desarrollo en contracorriente, consideramos el eje z en el sentido del


flujo dentro del reactor, lo cual significa que el flujo fuera del mismo
(representado con el subíndice c) irá en sentido opuesto. Se redefine por
tanto la ecuación correspondiente cambiando el signo de 𝑣𝐶

𝑃𝑖𝑛𝑡 𝑃𝑒𝑥𝑡
𝑑𝑇𝐶 𝑞𝐴,𝑟𝑐 . 𝑆 − 𝑞𝐴,𝑐𝑒𝑥𝑡 . 𝑆𝑐
=
𝑑𝑧 𝜌𝐶 𝐶𝑝𝐶 (−𝑣𝐶 )

En consecuencia creamos una nueva función llamada contracorr.m para


este caso.

function
dxdz=contracorr(z1,x1,v,Uint,Pint,S,Sc,DHr,p,Cp,Uext,Text
,Pext,pc,Cpc,vc)
dxdz=zeros(3,1);
dxdz(1)=-((1.69e+6)*exp(-5346/x1(2)))*x1(1)/v; %CA1
dxdz(2)=(-(Uint*(x1(2)-x1(3)))*(Pint/S)+((-
((1.69e+6)*exp(-5346/x1(2)))*x1(1))*DHr))/(p*Cp*v);
%T1
dxdz(3)=((Uint*(x1(2)-x1(3)))*(Pint/Sc)-
(Uext*(x1(3)-Text))*(Pext/Sc))/(pc*Cpc*(-vc)); %Tc1
end

Al invertirse el sentido del flujo refrigerante la temperatura de entrada en z=0


en el apartado 1 (𝑇𝑐𝑒 = 290) ahora debe ser la temperatura de salida, por lo
que se itera en función de la temperatura inicial de entrada a la camisa hasta
obtener un valor de salida de 290.

Utilizamos el comando ode45 para resolver el sistema de EDO variando el


valor de la condición inicial de temperatura de entrada a la camisa x01(3),
podemos utilizar incrementos de 10°K.

Sabemos que el valor exacto está cerca de 320°K, entonces utilizamos el


bucle while para repetir la resolución del sistema variando nuestro x01(3) con
un rango más pequeño de 0.01°K hasta obtener la temperatura de salida
deseada.

%Condiciones iniciales
x01=zeros(1,3);

72
Módulos de Simulación con MATLAB

x01(1)=CAe;
x01(2)=Te;
x01(3)=320;
TCE1=0;
i=0.01;
while TCE1~=Tce
x01(3)=x01(3)+i; %Tce+10 %Temperatura entrada a la camisa
[z1,x1]=ode45(@(z1,x1)
contracorr(z1,x1,v,Uint,Pint,S,Sc,DHr,p,Cp,Uext,Text,Pext
,pc,Cpc,vc),tspan,x01);
TC1=x1(end,3); %temperatura salida de la camisa
TCE1=round(x1(end,3),3); %
end

Al romperse el ciclo while significa que se encontró el valor inicial buscado


para obtener una temperatura de salida de 290°K.
Entonces podemos visualizar nuestros resultados y graficar la evolución de
nuestras variables utilizando el comando plot.

fprintf('Temperatura de entrada fluido refrigerante:


%d.\n',x01(3));

Ts2=x1((end),2);
Tcs2=x1(1,3);
fprintf('Temperatura de salida fluido reactivo:
%d.\n',Ts2);
fprintf('Temperatura de salida fluido refrigerante:
%d.\n',Tcs2);
figure
plot(z1,x1(:,1),'r')
title('Contracorriente');
ylabel('CA');
xlabel('z');
figure
plot(z1,x1(:,2),'g',z1,x1(:,3),'r')
title('Contracorriente');
ylabel('Temp');
xlabel('z');
legend('T. react.','T. refrig')
axis([0 25 290 400])

Se obtiene como resultado:


Temperatura de entrada fluido refrigerante: 3.241600e+02.

73
Módulos de Simulación con MATLAB

Temperatura de salida fluido reactivo: 3.307199e+02.


Temperatura de salida fluido refrigerante: 3.241600e+02.

74
Módulos de Simulación con MATLAB

Apartado 3:

El calor neto recibido por el fluido del intercambiador:

𝑞𝑐 = (𝜌𝑐 . 𝑄𝑐 )𝐶𝑝𝑐 (𝑇𝑐𝑠 − 𝑇𝑐𝑒 )

Se integra el calor por unidad de área perdido hacia el exterior con el cambio
de variable 𝑑𝐴𝑒𝑥𝑡 = 𝑃𝑒𝑥𝑡 𝑑𝑧
𝐿
𝑞𝑐𝑒𝑥𝑡 = ∫ 𝑞𝐴,𝑐𝑒𝑥𝑡 (𝑇𝑐 (𝑧)). 𝑃𝑒𝑥𝑡 𝑑𝑧
0

Siendo:
𝑞𝐴,𝑐𝑒𝑥𝑡 (𝑇𝑐 ) = 𝑈𝑒𝑥𝑡 (𝑇𝑐 − 𝑇𝑒𝑥𝑡 )

Realizamos una regresión para obtener la temperatura del intercambiador en


función de la longitud, para ello utilizamos el comando polyfit. El resultado lo
convertimos en una función simbólica con el comando poly2sym e
integramos con el comando int.

Finalmente, el calor intercambiado entre el reactor y el intercambiador es el


neto recibido por el intercambiador más el perdido al exterior.

75
Módulos de Simulación con MATLAB

𝑞𝑟𝑒 = 𝑞𝑐 + 𝑞𝑐𝑒𝑥𝑡

%Calor intercambiado
qc=(pc*Qc)*Cpc*(324.16-290); %Calor neto recibido por el
fluido
pp = polyfit(z1,x1(:,3),5);
pp=poly2sym(pp);
syms x;
A=Uext*(pp-Text)*Pext;
A=int(A,0,25);
A=eval(A);
qrc=qc+A;
fprintf('Calor intercambiado entre el reactor y el
intercambiador: %d.\n',qrc);

Se obtiene como resultado:


Calor intercambiado entre el reactor y el intercambiador: 7.527048e+04.

76
Módulos de Simulación con MATLAB

9. REACCIÓN EN FASE GAS EN UN


REACTOR PISTÓN
Se tiene un reactor pistón estacionario recorrido por una corriente gaseosa en
la que se producen dos reacciones en paralelo a presión constante:

𝐶𝐴𝑒 + 𝑑𝐶𝐴
𝐶𝐴𝑒 , 𝑇𝑒
𝑇𝑒 + 𝑑T

𝑑𝑧

Reacción 1: A→2B
−2000
𝑟1(𝑇, 𝐶𝐴 ) = (110. 𝑒𝑥𝑝 ( )) . 𝐶𝐴 (𝑚𝑜𝑙. 𝑚−3 . 𝑠 −1 )
𝑇

Reacción 2: B→C
−2500
𝑟2(𝑇, 𝐶𝐵 ) = (20. 𝑒𝑥𝑝 ( )) . 𝐶𝐵 (𝑚𝑜𝑙. 𝑚−3 . 𝑠 −1 )
𝑇

Obténgase la longitud del reactor que lleva a una mayor producción del
producto intermedio B
Datos relevantes

Sección: 𝑆 = 0.001(𝑚2 )
Presión del sistema: 𝑃 = 101200(𝑃𝑎)
Flujo entrante al sistema: 𝑚𝐴𝑒 = 0.2(𝑚𝑜𝑙/𝑠)
Temperatura del sistema: 𝑇 = 298(𝐾)
Constante de los gases ideales: R = 8.314(𝐽. 𝑚𝑜𝑙 −1 . 𝐾 −1 )

Masas moleculares (kg/mol):

𝑀𝐴 = 0.1 𝑀𝐵 = 𝑀𝐴 ⁄2 𝑀𝐶 = 𝑀𝐵

77
Módulos de Simulación con MATLAB

DESARROLLO DEL MODELO


A diferencia de un sistema líquido, en un sistema en fase gas, la densidad a
lo largo del reactor puede variar apreciablemente, bien por temperatura o por
concentración.
Los balances de componente i y de moles totales son:

𝜕𝐶𝑖 𝜕(𝑣𝐶𝑖 )
= + 𝑟𝑖
𝜕𝑡 𝜕𝑡

𝜕𝐶𝑡 𝜕(𝑣𝐶𝑡 )
=− + 𝑟𝑡
𝜕𝑡 𝜕𝑡

En estado estacionario queda:


𝑑(𝑣𝐶𝑖 )
= 𝑟𝑖
𝑑𝑡

𝑑(𝑣𝐶𝑡 )
= 𝑟𝑡
𝑑𝑡

Derivando por partes ambas ecuaciones se tiene:

𝑑𝐶𝑖 𝑑𝑣
𝑣 + 𝐶𝑖 = 𝑟𝑖
𝑑𝑡 𝑑𝑡

𝑑𝐶𝑡 𝑑𝑣
𝑣 + 𝐶𝑡 = 𝑟𝑡
𝑑𝑡 𝑑𝑡

De la ecuación de balance de moles totales podemos obtener la variación


espacial de la velocidad
𝑑𝐶𝑡
𝑑𝑣 𝑟𝑡 − 𝑣 𝑑𝑡
=
𝑑𝑡 𝐶𝑡

La cual puede ser sustituida en la ecuación de componentes para determinar


la variación de concentración de los componentes individuales:

𝑑𝐶
𝑟 −𝑣 𝑡
𝑑𝑣 𝑟 − 𝐶 𝑡 𝑑𝑡
𝑑𝐶𝑖 𝑟𝑖 − 𝐶𝑖 𝑑𝑡 𝑖 𝑖 𝐶𝑡
= =
𝑑𝑡 𝑣 𝐶𝑡

78
Módulos de Simulación con MATLAB

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

S=0.01; %m2 Sección


P=101200; %Pa Presión del sistema
mAe=0.2; %mol/s Flujo entrante al sistema
T=298; %K Temperatura del sistema
R=8.314; %J.mol-1.k-1 Constante de gases ideales
MA=0.1; MB=MA/2; MC=MB; % Masas moleculares

%Coeficiente estequiométricos
v1A=-1;v1B=2;v1C=0;v2A=0;v2B=-1;v2C=1;

Como la presión y la temperatura son constantes, la concentración molar total


también lo será:
𝑃
𝐶𝑡 =
𝑅. 𝑇
𝑚𝐴𝑒
𝑣𝑒 =
𝐶𝑡 . 𝑆
Ct=P/(R*T);
ve=mAe/(Ct*S);

Creamos un vector llamado x0 en el cual ingresaremos los valores iniciales,


siendo la columna 1 la velocidad de entrada, la columna 2 la concentración
de entrada de A, la columna 3 la concentración de entrada de B.

x0=zeros(1,3);
x0(1)=ve;
x0(2)=Ct;
x0(3)=0;

Creamos una función donde integramos nuestras EDO, llamada odefcn.m

function dxdz=odefcn(z,x,v1A,v1B,v2C,v2B,T,Ct)
%Reacción en fase gas a un reactor pistón
r1=(110*exp(-2000/T))*x(2);
r2=(20*exp(-2500/T))*x(3);

79
Módulos de Simulación con MATLAB

%Generaciones de cada compuesto


rA=v1A*r1;
rB=v1B*r1+v2B*r2;
rC=v2C*r2;
rt=rA+rB+rC;

dxdz=zeros(3,1);
dxdz(1)=rt/Ct; %v
dxdz(2)=(rA-x(2)*dxdt(1))/x(1); %A
dxdz(3)=(rB-x(3)*dxdt(1))/x(1); %B
end

Utilizamos el comando ode45 para resolver el sistema de EDO con respecto


a la distancia, consideramos un rango de 0 a 50m.

zspan=[0 50];
[z,x]=ode45(@(z,x)
odefcn(z,x,v1A,v1B,v2C,v2B,T,Ct),zspan,x0);

Con las columnas resultantes de la matriz x, calculamos las conversiones,


realizando operaciones término a término.

𝐶𝐴 𝑖 𝐶𝐵 𝑖
𝑥𝐴 𝑖 = 𝑥𝐵 𝑖 = 𝑥𝐶 𝑖 = 1 − 𝑥𝐴 𝑖 − 𝑥𝐵 𝑖
𝐶𝑡 𝐶𝑡

CT=Ct*ones(length(z),1);
v=x(:,1);
CA=x(:,2);
CB=x(:,3);
CC=CT-CA-CB;
XA=CA./CT;
XB=CB./CT;
XC=ones(length(z),1)-XA-XB;

Graficamos las conversiones versus la longitud del reactor y en otra gráfica la


velocidad versus la longitud, utilizando el comando plot.

plot(z,XA,'r',z,XB,'b',z,XC,'g');
title('Evolución de las fracciones');
legend('XA','XB','XC');
figure

80
Módulos de Simulación con MATLAB

plot(z,v);
title('Relación de velocidad');
legend('ve');

81
Módulos de Simulación con MATLAB

Obsérvese que la densidad es constante pero la velocidad varía porque


aumenta el número de moles. No obstante, el flujo másico en régimen
estacionario debe mantenerse, tal y como se va a comprobar.

𝐹𝑚𝑜𝑙𝑎𝑟 𝑖 = 𝐶𝑡 . 𝑣𝑖 . 𝑆

𝐹𝑚á𝑠𝑖𝑐𝑜 𝑖 = (𝐶𝐴 𝑖 . 𝑀𝐴 + 𝐶𝐵 𝑖 . 𝑀𝐵 + 𝐶𝐶 𝑖 . 𝑀𝐶 )𝑣𝑖 . 𝑆

Fmolar=CT.*v.*S;
Fmasico=(CA.*MA+CB.*MB+CC.*MC).*v.*S;

Graficamos el flujo molar así como el flujo másico versus la longitud.

figure
plot(z,Fmolar,'b',z,Fmasico,'r');
legend('Fmolar','Fmásico');

82
Módulos de Simulación con MATLAB

Usamos el comando spline el cual nos devuelve un vector de valores


interpolados correspondientes a los puntos de consulta (entre 1 y 50). Los
valores se determinan por interpolación cubica entre la longitud y la
concentración de B.

Luego buscamos en qué valor se alcanza el máximo (derivada nula) para


esto usamos el comando fnder para obtener la función derivada y luego el
comando fnzeros para encontrar en qué valor se encuentra el 0.

pp=spline(z,CB); %interpolación cubica


sp=fnder(pp); %Derivada de una función
ZZ=fnzeros(sp,[1,50]); %encuentra ceros en un intervalo
de una función
CBB=fnval(pp,ZZ); %evaluamos función pp en ZZ

fprintf('Máximo valor de CB: %d.\n',CBB);


fprintf('Longitud con mayor producción de B: %d.\n',ZZ);

Se obtiene como resultado:


Máximo valor de CB: 3.700684e+01.
Longitud con mayor producción de B: 1.781887e+01.

83
Módulos de Simulación con MATLAB

10. ESTUDIO DINÁMICO DE UN REACTOR


PISÓN ISOTERMO
Se tiene el siguiente reactor de flujo pistón donde una reacción se lleva a
cabo de forma isoterma.

𝐶𝐴0 (0,0)

𝐶𝐴𝑒𝑛𝑡 𝑇𝑒 𝐶𝐴 (𝐿, 𝑡)

𝑇(𝐿, 𝑡)
𝐿

Reacción de primer orden: A→ Productos 𝑘𝐴 =


0.028 (𝑠 −1 )

Datos relevantes

Longitud: 𝐿 = 10(𝑚)
Diámetro interno: 𝐷 = 110 × 10−3 (𝑚)
Entrada: 𝑄𝑒 = 1.7 × 10−3 (𝑚3 /𝑠)
Concentración entrante: 𝐶𝐴𝑒𝑛𝑡 = 1000(𝑚𝑜𝑙/𝑚3 )
Estado inicial: 𝐶𝐴0 = 0(𝑚𝑜𝑙/𝑚3 )

1. Estudiar la variación de la concentración en el interior del reactor y


en la salida a lo largo del tiempo.
2. Estudiar que ocurre para velocidades de entrada del gas dos y tres
veces más grandes que la obtenida en el apartado anterior.

DESARROLLO DEL MODELO


Balance de componente

𝜕𝐶𝐴 𝜕(𝑣𝐶𝐴 )
=− + 𝑚𝐴𝑑𝑉 + 𝑟𝐴
𝜕𝑡 𝜕𝑧

84
Módulos de Simulación con MATLAB

Asumimos densidad constante por ser fase líquida, lo que nos da velocidad
constante. Además se tiene que 𝑚𝐴𝑑𝑉 = 0. Para una reacción de primer
orden, nos da:

𝜕𝐶𝐴 𝜕𝐶𝐴
= −𝑣 + −𝑘𝐴 𝐶𝐴
𝜕𝑡 𝜕𝑧

Condición inicial para 𝑡 = 0: 𝐶𝐴 (𝑧, 0) =


𝐶𝐴0 (𝑧)
Condición de contorno en 𝑧 = 0: 𝐶𝐴 (𝑧, 𝑡) = 𝐶𝐴𝑒 (𝑡)

Transformamos la ecuación diferencial en una expresión de diferencias


finitas, y luego despejamos el valor 𝐶𝑖,𝑛+1

𝐶𝑖,𝑛+1 − 𝐶𝑖,𝑛 𝐶𝑖,𝑛 − 𝐶𝑖−1,𝑛


= −𝑣𝑍 + −𝑘𝐴 . 𝐶𝑖,𝑛
∆𝑡 ∆𝑧
𝑣𝑍 . ∆𝑡 𝑣𝑍
𝐶𝑖,𝑛+1 = ( ) 𝐶𝑖−1,𝑛 + [1 − (𝑘𝐴 + ) ∆𝑡] 𝐶𝑖,𝑛
∆𝑧 ∆𝑧

El intervalo de tiempo no puede ser arbitrario. No debe ser demasiado


pequeño pues el tiempo de cálculo se incrementaría mucho. Tampoco puede
superar un determinado valor, que se conoce como condición de estabilidad.

Según la ecuación anterior:


𝑣𝑍
[1 − (𝑘𝐴 + ) ∆𝑡] ≥ 0
∆𝑧
1
∆𝑡𝑚𝑎𝑥 = 𝑣𝑍
𝑘𝐴 +
∆𝑧

∆𝑡 = 0.99∆𝑡𝑚𝑎𝑥

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

85
Módulos de Simulación con MATLAB

kA=0.028; %s-1
L=10; %m
D=110e-3; %m
Qe=1.7e-3; %m3/s
CAent=1000; %mol/m3
CA0=0; %mol/m3

Realizamos el cálculo de la velocidad de entrada.

𝜋𝐷2 𝑄𝑒
𝑆= 𝑣=
4 𝑆
S=(pi*D^2)/4;
v=Qe/S; %m/*s

Ingresamos una variable con el número de particiones para calcular el


intervalo espacial. Así mismo calculamos el ∆𝑡𝑚𝑎𝑥 .

I=128; %número de particiones, numero de puntos I+1


dz= L/I; %Diferencia de la longitud
dtmax=1/(kA+v/dz); %Condicion de estabilidad, diferencia
tiempo
dt=0.99*dtmax;

Calculamos el tiempo medio de residencia (TMR). Con el cual obtenemos el


tiempo final para nuestra simulación y el intervalo de tiempo.

TMR=L/v;
Tf=1.2*TMR;
N=ceil(Tf/dt);

Creamos una matriz inicial de ceros, cuyo tamaño será tantas filas como
intervalos de espacio y columnas como intervalos de tiempo. Por
consiguiente las filas representan la evolución con respecto al espacio (fila 1
= z inicial), mientras que las columnas la evolución respecto al tiempo
(columna 1 = tiempo 0).

%Matrices inciales
C=zeros(I+1,N+1);
%Filas variacion en Z, Columanas variacion en tiempo

86
Módulos de Simulación con MATLAB

El problema nos indica que el estado inicial del cual parte el reactor es 0
mol/m3, teniendo una alimentación que se considera constante a lo largo del
tiempo el cual es de 1000 mol/ m3, por lo tanto el primer valor de z a lo largo
del tiempo será 1000 mol/m3.

%Condicion inicial
C(1,:)=1000;

Resolvemos la ecuación usando el contador for para todos los posibles


valores que puede tomar i (tiempo) y j (espacio).

%Diferencias finitas
for j=2:1:N+1
for i=2:1:I+1
C(i,j)=((v*dt)/dz)*C(i-1,j-1)+(1-(kA+v/dz)*dt)*C(i,j-1);
%i corresponde posición, j a tiempo
end
end
X=0:dz:L;
X=X';

Utilizamos de igual manera el contador for para obtener una gráfica por cada
variación de la variable elegida, y visualizarla a manera de animación.

for i=1:1:N+1 %Variación de Concentración respecto a Z en


el tiempo
pause(0.05)
plot(X,C(:,i))
ylabel('CA');
xlabel('z');
t=(i-1)*dt;
titulo=sprintf('Tiempo=%g s',t); %Titulo gráfca
title(titulo)
axis([0 10 0 1000])
end
figure
T=linspace(0,Tf,N+1);
for i=1:1:I+1 %Variacion de Concentración respecto al
tiempo en Z
pause(0.05)
plot(T,C(i,:))
ylabel('CA');
xlabel('t');

87
Módulos de Simulación con MATLAB

z=(i-1)*dz;
titulo=sprintf('Distancia=%g m',z); %Titulo gráfca
title(titulo)
axis([0 Tf 0 1000])
end

88
Módulos de Simulación con MATLAB

Apartado 2:

El máximo incremento de tiempo de integración viene determinado por la


máxima velocidad con la que se vaya a trabajar. Si elegimos una velocidad
máxima 3 veces que la anterior tenemos:

% Apartado 2
v1=v;v2=2*v;v3=3*v;
vmax=3*v;
dtmax=1/(kA+vmax/dz);
dt1=0.99*dtmax;dt2=dt1;dt3=dt1;
TMR1=L/v;
Tf1=1.2*TMR1;
N1=ceil(Tf1/dt1);

Creamos un 3 matrices de ceros, una para cada valor de velocidad y de


manera similar al apartado 1, las filas representan la evolución con respecto
al espacio (fila 1 = z inicial), mientras que las columnas la evolución respecto
al tiempo (columna 1 = tiempo 0). Ingresamos el valor inicial de 1000 mol/ m3,
en la primera fila de todas las columnas de cada matriz.

89
Módulos de Simulación con MATLAB

%Matrices inciales
C1=zeros(I+1,N1+1);
C2=zeros(I+1,N1+1);
C3=zeros(I+1,N1+1);
%Condicion inicial
C1(1,:)=1000;
C2(1,:)=1000;
C3(1,:)=1000;

Resolvemos la ecuación usando el contador for y de manera similar


obtenemos las gráficas para cada variación.

for j=2:1:N1+1
for i=2:1:I+1
C1(i,j)=((v1*dt1)/dz)*C1(i-1,j-1)+(1-
(kA+v1/dz)*dt1)*C1(i,j-1); %i corresponde posición, j a
tiempo
end
end
for j=2:1:N1+1
for i=2:1:I+1
C2(i,j)=((v2*dt2)/dz)*C2(i-1,j-1)+(1-
(kA+v2/dz)*dt2)*C2(i,j-1); %i corresponde posición, j a
tiempo
end
end
for j=2:1:N1+1
for i=2:1:I+1
C3(i,j)=((v3*dt3)/dz)*C3(i-1,j-1)+(1-
(kA+v3/dz)*dt3)*C3(i,j-1); %i corresponde posición, j a
tiempo
end
end

figure
T1=linspace(0,Tf1,N1+1);
for i=1:1:I+1 %Variacion de Concentración respecto al
tiempo en Z
pause(0.05)
plot(T1,C1(i,:),'g',T1,C2(i,:),'b',T1,C3(i,:),'r')
ylabel('CA');
xlabel('t');
z=(i-1)*dz;

90
Módulos de Simulación con MATLAB

titulo=sprintf('Distancia=%g m',z); %Titulo gráfca


title(titulo)
axis([0 Tf 0 1000])
end

Así mismo podemos observar como la solución es inestable para valores de


velocidad mayor a la máxima

C4=zeros(I+1,N3+1);
C4(1,:)=1000;
v4=4*v;
for j=2:1:N3+1
for i=2:1:I+1
C4(i,j)=((v4*dt3)/dz)*C4(i-1,j-1)+(1-
(kA+v4/dz)*dt3)*C4(i,j-1);
end
end
plot(T1,C4(i,:),'r')

91
Módulos de Simulación con MATLAB

92
Módulos de Simulación con MATLAB

11. ESTUDIO DINÁMICO DE UN REACTOR


PISTÓN ADIABÁTICO
Se tiene un reactor en el que se produce una reacción en fase líquida y de
primer orden: A→ Productos

𝐶𝐴𝑒𝑛𝑡 𝑇𝑒 𝐶𝐴 (𝐿, 𝑡)
𝑇(𝐿, 𝑡)
𝐿

𝑧
5346
𝑘𝐴 (𝑇) = 8.333 × 105 . 𝑒𝑥𝑝 (− ) (𝑠 −1 )
𝑇

𝑟𝐴 (𝑇, 𝐶𝐴 ) = −𝑘𝐴 (𝑇) × 𝐶𝐴

Entalpía de reacción:
∆𝐻𝑅 = −253000 (𝐽⁄𝑚𝑜𝑙𝐴 )

Datos del reactor


Longitud: L = 10 (m)
Diámetro interior: 𝐷𝑖𝑛𝑡 = 0.113(𝑚)

Inicialmente el reactor se encuentra en estado estacionario correspondiente a


la siguiente entrada:
Caudal: Q = 2 × 10−3 (m)
Concentración de A: 𝐶𝐴𝑒1 = 500(𝑚𝑜𝑙/𝑚3 )
Temperatura: 𝑇𝑒1 = 298(𝐾)
Densidad: 𝜌 = 1000(𝑘𝑔 ⁄𝑚3 )
Calor específico: 𝐶𝑝 = 4187(𝐽. 𝑘𝑔 −1 . 𝐾 −1 )

Obténgase la evolución que sufren la temperatura y concentración del reactor


si la entrada se varía bruscamente a la concentración siguiente:

93
Módulos de Simulación con MATLAB

𝐶𝐴𝑒2 = 1000(𝑚𝑜𝑙/𝑚3 ) 𝑇𝑒2 = 𝑇𝑒1

DESARROLLO DEL MODELO


Balance de componente
𝜕𝐶𝐴 𝜕𝐶𝐴
= −𝑣 + 𝑚𝐴𝑑𝑉 + 𝑟𝐴
𝜕𝑡 𝜕𝑧

La ecuación de balance de energía considerando que el reactor es adiabático


𝑞𝑉 = 0 resulta:
𝜕𝑇 𝜕𝑇 𝑆𝑅𝑉
= −𝑣 +
𝜕𝑡 𝜕𝑧 𝜌 𝐶𝑝

Las condiciones límite son:

Condición inicial para 𝑡 = 0: 𝐶𝐴 (𝑧, 0) = 𝐶𝐴0 (𝑧)


𝑇(𝑧, 0) = 𝑇0 (𝑧)
Condición de contorno en 𝑧 = 0: 𝐶𝐴 (0, 𝑡) = 𝐶𝐴𝑒 (𝑡) 𝑇(0, 𝑡) = 𝑇𝑒 (𝑧)

La generación de calor por unidad de volumen es:

𝑆𝑅𝑉 = 𝑟𝐴 ∆𝐻𝑅 = −𝑘𝐴 (𝑇)𝐶𝐴 ∆𝐻𝑅

Transformamos las ecuaciones diferenciales en expresiones de diferencias


finitas:

𝐶𝑖,𝑛+1 − 𝐶𝑖,𝑛 𝐶𝑖,𝑛 − 𝐶𝑖−1,𝑛


= −𝑣 + −𝑘𝐴 (𝑇𝑖,𝑛 ). 𝐶𝑖,𝑛
∆𝑡 ∆𝑧

𝑇𝑖,𝑛+1 − 𝑇𝑖,𝑛 𝑇𝑖,𝑛 − 𝑇𝑖−1,𝑛 −𝑘𝐴 (𝑇𝑖,𝑛 ) ∆𝐻𝑅


= −𝑣 + 𝐶𝑖,𝑛
∆𝑡 ∆𝑧 𝜌 𝐶𝑝

Despejamos:

𝑣. ∆𝑡 𝑣
𝐶𝑖,𝑛+1 = ( ) 𝐶𝑖−1,𝑛 + [1 − (𝑘𝐴 (𝑇𝑖,𝑛 ) + ) ∆𝑡] 𝐶𝑖,𝑛
∆𝑧 ∆𝑧
𝑣. ∆𝑡 𝑣. ∆𝑡 ∆𝐻𝑅
𝑇𝑖,𝑛+1 = ( ) 𝑇𝑖−1,𝑛 + (1 − ) 𝑇𝑖,𝑛 − 𝑘𝐴 (𝑇𝑖,𝑛 ) 𝐶 . ∆𝑡
∆𝑧 ∆𝑧 𝜌 𝐶𝑝 𝑖,𝑛

Calculamos la condición de estabilidad para este caso.

94
Módulos de Simulación con MATLAB

Según la ecuación anterior:


𝑣
[1 − (𝑘𝐴 + ) ∆𝑡] ≥ 0
∆𝑧
1
∆𝑡𝑚𝑎𝑥 = 𝑣
𝑘𝐴 +
∆𝑧

∆𝑡 = 0.99∆𝑡𝑚𝑎𝑥

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema.

%estudio dinámico de un reactor pistón adiabático


L=10;
Dint=0.113;
DHR=-253000;
%Condiciones iniciales
Q=2e-3;
CAe1=500;
Te1=298;
p=1000;
Cp=4187;
CAe2=1000;
Te2=Te1;

Realizamos el cálculo de la velocidad de entrada.

𝜋𝐷2 𝑄𝑒
𝑆= 𝑣=
4 𝑆
S=(pi*Dint^2)/4;
v=Q/S;

Para encontrar las condiciones al estado estacionario, igualamos las EDP


respecto al tiempo a cero. Las variables permanecen constantes en el tiempo

95
Módulos de Simulación con MATLAB

𝜕𝐶𝐴
0 = −𝑣 + 𝑟𝐴
𝜕𝑧

𝜕𝐶𝐴 𝑟𝐴
=
𝜕𝑧 𝑣

𝜕𝑇 𝑆𝑅𝑉
0 = −𝑣 +
𝜕𝑧 𝜌 𝐶𝑝

𝜕𝑇 𝑆𝑅𝑉
=
𝜕𝑧 𝑣. 𝜌 𝐶𝑝

Resolvemos las ecuaciones diferenciales resultantes con el comando ode45.


Para esto guardamos las EDP en una función.

function dxdz=DzX(z,x,v,DHR,p,Cp)
dxdz=zeros(2,1);
dxdz(1)=-(8.333e+5)*exp(-5346/x(2))*x(1)/v;
dxdz(2)=(-(8.333e+5)*exp(-
5346/x(2))*DHR/(p*Cp*v))*x(1);
end

Creamos el vector x0 en donde guardamos los valores iniciales, los cuales


son los valores de entrada al reactor.

%condiciones iniciales
x0=zeros(1,2);
x0(1)=CAe1;
x0(2)=Te1;
Así mismo al tratarse de ecuaciones diferenciales respecto a la distancia, el
intervalo de espacio es el largo del reactor, es decir de 0 a 10 m.
zspan=linspace(0,10,129);

[z,x]=ode45(@(z,x) DzX(z,x,v,DHR,p,Cp),zspan,x0);

El resultado nos devuelve la matriz x la cual contiene la variación de la


concentración respecto al espacio en la columna 1 y la variación del tiempo
en la columna 2. Es decir son los valores en estado estacionario a lo largo del
reactor.
Graficamos los el resultado versus el espacio.

plot(z,x(:,1));

96
Módulos de Simulación con MATLAB

xlabel('Z');
ylabel('CA');
figure
plot(z,x(:,2));
ylabel('T');
xlabel('Z');

97
Módulos de Simulación con MATLAB

Para la resolución dinámica utilizamos el método de las diferencias finitas.


Ingresamos una variable con el número de particiones para calcular el
intervalo espacial. Así mismo calculamos el ∆𝑡𝑚𝑎𝑥 .

%Solución dinámica
I=128; %número de particiones, numero de puntos I+1
dz= L/I; %Diferencia de la longitud
Tmax=298+150;
dt=1/(v/dz+(8.333e+5)*exp(-5346/Tmax)); %Condicion de
estabilidad, diferencia tiempo
dt=0.99*dt;

Calculamos el tiempo medio de residencia (TMR). Con el cual obtenemos el


tiempo final para nuestra simulación y el intervalo de tiempo.

TMR=S*L/Q;
Tf=1.3*TMR;
N=ceil(Tf/dt);

Creamos una matriz inicial de ceros, cuyo tamaño será tantas filas como
intervalos de espacio y columnas como intervalos de tiempo. Por

98
Módulos de Simulación con MATLAB

consiguiente las filas representan la evolución con respecto al espacio (fila 1


= z inicial), mientras que las columnas la evolución respecto al tiempo
(columna 1 = tiempo 0).

%Matrices inciales
C=zeros(I+1,N+1);
T=zeros(I+1,N+1);
%Filas variacion en Z, Columanas variacion en tiempo

El problema nos indica que el estado inicial del cual parte el reactor es el
estado estacionario es decir los valores de la columna 1 de la matriz C deben
ser los valores de la concentración en el t=0, estos son los correspondientes
a la columna 1 del vector x. De manera similar se realiza con la temperatura.

%Condicion inicial
C(:,1)=x(:,1); %estacionarios calcular
T(:,1)=x(:,2); %estacionarios calcular
C(1,:)=1000;
T(1,:)=Te1;

Resolvemos la ecuación usando el contador for para todos los posibles


valores que puede tomar i (tiempo) y j (espacio).

%Diferencias finitas
ac=(v*dt/dz);
aT=v*dt/dz;
bT=1-v*dt/dz;
for j=2:1:N+1
for i=2:1:I+1
C(i,j)=ac*C(i-1,j-1)+(1-(v/dz+(8.333e+5)*exp(-5346/T(i,j-
1)))*dt)*C(i,j-1);
T(i,j)=aT*T(i-1,j-1)+bT*T(i,j-1)+(-((8.333e+5)*exp(-
5346/T(i,j-1)))*(DHR/(p*Cp))*C(i,j-1)*dt);
end
end

Utilizamos de igual manera el contador for para obtener una gráfica por cada
variación de la variable elegida, y visualizarla a manera de animación.

figure
Z=0:dz:L;
for i=1:1:N+1 %Variacion de Concentración respecto a Z en
el tiempo

99
Módulos de Simulación con MATLAB

pause(0.02)
plot(Z,C(:,i))
xlabel('Z');
ylabel('CA');
t=(i-1)*dt;
titulo=sprintf('Tiempo=%g s',t); %Titulo gráfca
title(titulo)
axis([0 L 0 1000])
end
figure
for i=1:1:N+1 %Variacion de Temperatura respecto a Z en
el tiempo
pause(0.02)
plot(Z,T(:,i))
xlabel('Z');
ylabel('T');
t=(i-1)*dt;
titulo=sprintf('Tiempo=%g s',t); %Titulo gráfca
title(titulo)
axis([0 L 280 360])
end
figure

100
Módulos de Simulación con MATLAB

101
Módulos de Simulación con MATLAB

t=linspace(0,Tf,N+1);
for i=1:1:I+1 %Variacion de Concentración respecto al
tiempo en z
pause(0.05)
plot(t,C(i,:))
xlabel('t');
ylabel('CA');
z=(i-1)*dz;
titulo=sprintf('Distancia=%g m',z); %Titulo gráfca
title(titulo)
axis([0 Tf 0 1000])
end
figure
for i=1:1:I+1 %Variacion de Concentración respecto al
tiempo en z
pause(0.05)
plot(t,T(i,:))
xlabel('t');
ylabel('T');
z=(i-1)*dz;
titulo=sprintf('Distancia=%g m',z); %Titulo gráfca
title(titulo)
axis([0 Tf 300 360])
end

102
Módulos de Simulación con MATLAB

103
Módulos de Simulación con MATLAB

12. TRANSMISION DE CALOR EN UNA PLACA


PLANA
Se tiene una placa cuadrada de un determinado material, con un grosor
despreciable la cual está expuesta a cuatro fuentes de calor, una por cada
lado. Dichas fuentes de calor se encuentran a temperatura constante.

𝑇𝐻

𝑇𝑅 𝑇𝐷
𝑇0

𝑇𝐿

Datos relevantes

Densidad: 𝜌 = 7600(𝑘𝑔/𝑚3 )
Conductividad: 𝐷 = 47(𝑊. 𝑚−1 . 𝐾 −1 )
Capacidad calorífica: 𝐶𝑝 = 480(𝐽/𝑘𝑔)
Temperatura inicial de la placa: 𝑇0 = 400(𝐾)
Temperatura zona superior: 𝑇𝐻 = 800(𝐾)
Temperatura zona inferior: 𝑇𝐷 = 300(𝐾)
Temperatura zona derecha: 𝑇𝑅 = 500(𝐾)

104
Módulos de Simulación con MATLAB

Temperatura zona izquierda: 𝑇𝐿 = 800(𝐾)


Largo del borde: 𝐿 = 1(𝑚)

Obtener la evolución de temperatura en toda la placa.

DESARROLLO DEL MODELO


Para el cálculo de la transferencia de calor nos basamos en la ley de Fourier.
El caso más general de la ecuación de conducción, expresada en forma
diferencial, refleja el balance entre el flujo neto de calor, el calor generado y el
calor almacenado en el material.
λ 𝜕2𝑇 𝜕2𝑇 𝜕2𝑇 𝑞𝐺 1 𝜕𝑇
( + + )+ =
𝜌𝐶𝑝 𝜕𝑥 2 𝜕𝑦 2 𝜕𝑧 2 𝜌. 𝐶𝑝 𝛼 𝜕𝑡

Considerando la transmisión de calor en dos dimensiones, sin generación de


calor (𝑞𝐺 = 0) en la placa, se establece el modelo:

𝜕 2 𝑇 𝜕 2 𝑇 1 𝜕𝑇
+ =
𝜕𝑥 2 𝜕𝑦 2 𝛼 𝜕𝑡

λ
𝛼=
𝜌𝐶𝑝

Siendo:
• 𝑇: Temperatura (K)
• 𝑡: Tiempo (s)
• λ: Conductividad térmica (W/m/k)
• 𝐶𝑝 : Capacidad calorífica (J/kg)
• 𝜌: Densidad (kg/m3)

Reemplazamos las derivadas parciales por expresiones de diferencias finitas.


Derivada respecto al tiempo.
𝑡+1 𝑡
𝜕𝑇 𝑇𝑖,𝑗 − 𝑇𝑖,𝑗
=
𝜕𝑡 ∆𝑡

Derivada respecto a la dirección x


𝑡 𝑡 𝑡
𝜕 2 𝑇 𝑇𝑖−1,𝑗 − 2𝑇𝑖,𝑗 + 𝑇𝑖+1,𝑗
2
= 2
𝜕𝑥 (∆𝑥)

105
Módulos de Simulación con MATLAB

Derivada respecto a la dirección y


𝑡 𝑡 𝑡
𝜕 2 𝑇 𝑇𝑖,𝑗−1 − 2𝑇𝑖,𝑗 + 𝑇𝑖,𝑗+1
=
𝜕𝑦 2 (∆𝑦)2

Asumimos ∆𝑥 = ∆𝑦 ≈ ∆𝑧 (cuadrado) y despejamos:


𝑡 𝑡 𝑡 𝑡 𝑡
𝑡+1
𝑇𝑖−1,𝑗 + 𝑇𝑖+1,𝑗 + (𝑀 − 4)𝑇𝑖,𝑗 + 𝑇𝑖,𝑗−1 + 𝑇𝑖,𝑗+1
𝑇𝑖,𝑗 =
𝑀

Donde:
(∆𝑧)2
𝑀=
𝛼∆𝑡

Calculamos la condición de estabilidad para este caso.


Según la ecuación anterior:

𝑀−4 > 0
(∆𝑧)2
>4
𝛼∆𝑡

El valor de 𝑀 debe ser mayor de 4. Reemplazando por los datos entregados


obtenemos que:
∆𝑡𝑚𝑎𝑥 = 8.0816

∆𝑡 = 0.99∆𝑡𝑚𝑎𝑥

RESOLUCIÓN EN MATLAB

Apartado 1:

Abrimos un nuevo script y se asignan a continuación las variables del


problema, así como nuestro ∆𝑡 y ∆𝑧 y demás cálculos básicos

p=7600; %densidad kg/m3


vod=47; %conductividad W/m/K
Cp=480; %Capacidad calorífica J/kg
T0=400; %Temperatura inicial K
TH=800; %Temperatura arriba K
TD=300; %Temperatura abajo K

106
Módulos de Simulación con MATLAB

TR=500; %Temperatura derecha


TL=800; %Temperatura izquierda
L=1; %Largo del borde m
dt=0.99*8.0816; %Varición tiempo
N=50; %Número de segmentos
tkon=1000; %Tiempo final

%Cálculos
a=vod/(p*Cp);
dz=L/(N-1); %tamaño del paso
M=((dz)^2)/(dt*a); %Valor de M
t=dt;

Creamos nuestra matriz inicial con la cantidad de segmentos deseados, a


mayores segmentos mayor confiabilidad de la simulación pero mayor gasto
de memoria. Cada valor de la matriz representa un nodo a ser calculado, a
diferencia de los modelos anteriores, la matriz actual representa en las filas la
variación en el eje vertical y las columnas a la variación respecto al eje
horizontal.

𝐿 (𝑁 𝑠𝑒𝑔𝑚𝑒𝑛𝑡𝑜𝑠)

∆𝑦

∆𝑥

Todos los nodos tomaran como el valor de la temperatura inicial.

% inicial y temperaturas
Tpoc=zeros(N,N); %Matriz temperaturas iniciales
for i=1:1:N
for j=1:1:N
Tpoc(i,j)=T0; %Matriz temperaturas = T0
end
end

107
Módulos de Simulación con MATLAB

Empezamos el cálculo de las variaciones de temperatura en los nodos


ubicados en las esquinas. Es decir:
Tpoc(1,1) → Esquina superior izquierda.
Tpoc(1,N) → Esquina superior derecha.
Tpoc(N,1) → Esquina inferior izquierda.
Tpoc(N,N) → Esquina inferior derecha.

Luego de ello realizamos el cálculo usando similares ecuaciones para los


laterales y finalmente realizamos el cálculo de los nodos restantes.

El resultado nos entregara una matriz de N x N, con los valores de


temperatura en cada nodo para un instante determinado de tiempo.

Para adicionar la evolución con respecto al tiempo todo el cálculo debe ir


dentro de un bucle while para repetir los cálculos por cada instante de
tiempo.

%CÁLCULOS PARA CADA t


while t<tkon
%T EN LOS LÍMITES (ESQUINAS)
j=1;
i=1;
Tpoc(i,j)=(Tpoc(i+1,j)+TL+TH+Tpoc(i,j+1)+(M-
4)*Tpoc(i,j))/M; %Temperatura esquina superior
izquierda (1,1)

j=N;
i=1;
Tpoc(i,j)=(Tpoc(i+1,j)+TH+Tpoc(i,j-1)+TR+(M-
4)*Tpoc(i,j))/M; %Temperatura esquina superior derecha
(1,N)

j=1;
i=N;
Tpoc(i,j)=(TD+Tpoc(i-1,j)+TL+Tpoc(i,j+1)+(M-
4)*Tpoc(i,j))/M; %Temperatura esquina inferior
izquierda (N,1)

j=N;
i=N;
Tpoc(i,j)=(TD+Tpoc(i-1,j)+Tpoc(i,j-1)+TR+(M-
4)*Tpoc(i,j))/M; %Temperatura esquina inferior derecha
(N,N)

108
Módulos de Simulación con MATLAB

%CALCULOS DE T (Laterales)
i=1;
for j=2:1:N-1
Tpoc(i,j)=(Tpoc(i+1,j)+TH+Tpoc(i,j-1)+Tpoc(i,j+1)+(M-
4)*Tpoc(i,j))/M; %Cálculos frontera superior
end

i=N;
for j=2:1:N-1
Tpoc(i,j)=(TD+Tpoc(i-1,j)+Tpoc(i,j-1)+Tpoc(i,j+1)+(M-
4)*Tpoc(i,j))/M; %Cálculos frontera inferior
end
j=1;
for i=2:1:N-1
Tpoc(i,j)=(Tpoc(i+1,j)+Tpoc(i-1,j)+TL+Tpoc(i,j+1)+(M-
4)*Tpoc(i,j))/M; %Cálculos frontera izquierda
end

j=N;
for i=2:1:N-1
Tpoc(i,j)=(Tpoc(i+1,j)+Tpoc(i-1,j)+Tpoc(i,j-1)+TR+(M-
4)*Tpoc(i,j))/M; %Cálculos frontera derecha
end

%Cálculo de todos los nodos


for i=2:1:N-1
for j=2:1:N-1
Tpoc(i,j)=(Tpoc(i+1,j)+Tpoc(i-1,j)+Tpoc(i,j-
1)+Tpoc(i,j+1)+(M-4)*Tpoc(i,j))/M; %Cálculos toda la
matriz
end
end

% grafica
pause(0.02)
%axes(handles.graf);
colormap jet
pcolor(flipud(Tpoc)) %Grafica pseudocolor
titulo=sprintf('Tiempo=%g s',t); %Titulo gráfca
title(titulo)
colorbar %Ver barra de color
shading interp %color difuminado por interpolación

109
Módulos de Simulación con MATLAB

caxis([0 800]); %%%%%%%%%%%


% --------
t=t+dt; %tiempo
end

Asi mismo también se incluye dentro del bucle while una línea para graficar
nuestros resultados. Utilizamos el comando pcolor el cual asigna un color a
cada valor numérico dentro de nuestra matriz, interpolando una escala de
colores entre los valores máximos y mínimos de la matriz.

El comando pcolor nos devuelve una grafica en la cual el punto (1,1) se


aprecia en la esquina inferior izquierda, por lo que utilizamos el comando
flipud (voltear matriz) para visualizarlo correctamente.

110
Módulos de Simulación con MATLAB

13. BIBLIOGRAFIA
- MATLAB Programming, MATLAB The Language of Technical
Computing, 2004, The MathWorks, Inc.
- W.L. Luyben, "Process Modeling, Simulation and Control for
Chemical Engineers," 2nd Edition, McGraw-Hill, 1990.
- Amundson, N.R. "Mathematical Methods in Chemical Engineering:
Matrices and Their Application," Prentice-Hall (1966).
- Dahlquist, G., A. Bjorck and N. Anderson "Numerical Methods,"
Prentice-Hall (1974).
- D.M. Himmeblau and K. Bischoff, “ Process Analysis and Simulation”
, Edit. Prentice Hall, 1972.
- N. Amundson, R. Aris, J. Deinfeld and L. Lapidus, Serie “
Mathematical Methods in Chemical Engineering”, vol 1,2 y 3, Edit.
Prentice Hall, 1980.

111

También podría gustarte