Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modulos de Simulacion
Modulos de Simulacion
Moncada Albitres
Módulos de simulación
con MATLAB
Módulos de simulación con Matlab
Autores:
Editor:
luisd.moncada@hotmail.com
Trujillo – Perú
ISBN: 978-612-00-5704-9
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
𝑄𝑠
1
Módulos de Simulación con MATLAB
𝜌𝑒1 ≈ 𝜌𝑒2 ≈ 𝜌 = 𝜌𝑠
Simplificamos:
𝑑𝑉
= (𝑄𝑒1 + 𝑄𝑒2 ) − 𝑄𝑠
𝑑𝑡
Siendo el volumen:
𝑉 = 𝑆ℎ
2
Módulos de Simulación con MATLAB
Por lo tanto:
𝑑ℎ (𝑄𝑒1 + 𝑄𝑒2 ) − 𝑄𝑠
=
𝑑𝑡 𝑆
𝑃 𝑣2
+ + 𝑔𝑧 = 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒
𝜌 2
𝑣: velocidad del fluido
𝑃: presión
𝑔: aceleración gravitatoria (g = 9,81 m/s2)
𝑧: altura en la dirección de la gravedad
𝑃 𝑣2
+ + 𝑧 = 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒
𝛾 2𝑔
𝑃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 ) − 𝑄𝑠 (ℎ, 𝑎)
=
𝑑𝑡 𝑆
𝑑(𝑉𝐶)
= (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − 𝑄𝑠 𝐶𝑠
𝑑𝑡
𝑑𝐶 𝑑𝑉
𝑉 +𝐶 = (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − 𝑄𝑠 𝐶𝑠
𝑑𝑡 𝑑𝑡
𝑑𝐶
𝑉 + 𝐶((𝑄𝑒1 + 𝑄𝑒2 ) − 𝑄𝑠 ) = (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − 𝑄𝑠 𝐶𝑠
𝑑𝑡
Despejamos:
𝑑𝐶 (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − (𝑄𝑒1 + 𝑄𝑒2 )𝐶
=
𝑑𝑡 𝑉
Siendo 𝑉 = 𝑆ℎ
𝑑𝐶 (𝑄𝑒1 𝐶𝑒1 + 𝑄𝑒2 𝐶𝑒2 ) − (𝑄𝑒1 + 𝑄𝑒2 )𝐶
=
𝑑𝑡 𝑆ℎ
4
Módulos de Simulación con MATLAB
RESOLUCIÓN EN MATLAB
Apartado 1:
%Condiciones iniciales
x0=zeros(1,2); %vector con valores inciales
x0(1)=0.2; %altura inicial
x0(2)=1; %Concentración incial
%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)
5
Módulos de Simulación con MATLAB
6
Módulos de Simulación con MATLAB
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:
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);
Apartado 3:
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);
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);
Apartado 4:
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
%Condiciones iniciales
x04=zeros(1,2); %vector con valores inciales
x04(1)=hest2; %altura inicial
x04(2)=Csest2; %Concentración incial
%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
%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
t1=interp1(x(:,2),T,Csest3)
h1=interp1(T,x(:,1),0.6447)
12
Módulos de Simulación con MATLAB
1
𝐵 𝑃𝑒1 𝑃𝑆
𝑃 𝑦𝑆
𝑃𝑒2 2
𝐴
𝑛𝑣 = 𝛽√∆
13
Módulos de Simulación con MATLAB
𝑑𝑁
= (𝑛𝑒1 + 𝑛𝑒2 ) − 𝑛𝑆
𝑑𝑡
𝑑(𝑁𝑦)
= (𝑛𝑒1 . 0 + 𝑛𝑒2 . 1) − 𝑛𝑆 𝑦𝑆
𝑑𝑡
𝑦𝑆 = 𝑦
𝑁𝑑𝑦
= 𝑛𝑒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:
𝑃𝑉
𝑁=
𝑅𝑇
14
Módulos de Simulación con MATLAB
𝑑𝑃 𝑅𝑇
= (𝑛𝑒1 + 𝑛𝑒2 − 𝑛𝑆 )
𝑑𝑡 𝑉
𝑑𝑦 𝑅𝑇
= (𝑛𝑒1 − 𝑦. (𝑛𝑒1 + 𝑛𝑒2 ))
𝑑𝑡 𝑉𝑃
RESOLUCIÓN EN MATLAB
Apartado 1:
𝑑𝑃 𝑅𝑇
= (𝑛𝑒1 + 0 − 𝑛𝑆 )
𝑑𝑡 𝑉
𝑅𝑇
0 = (𝑛𝑒1 + 0 − 𝑛𝑆 )
𝑉
15
Módulos de Simulación con MATLAB
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);
Apartado 2:
%Condiciones iniciales
x0=zeros(1,2); %vector con valores inciales
x0(1)=Pest; %presión inicial
x0(2)=0; %fraccion incial
%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)
16
Módulos de Simulación con MATLAB
17
Módulos de Simulación con MATLAB
%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)
Graficamos:
18
Módulos de Simulación con MATLAB
Y=x(end,2);
fprintf('Presión manométrica al estado estacionario:
%d.\n',Y);
19
Módulos de Simulación con MATLAB
𝐺𝑆 , 𝑦 𝐿𝑒 , 𝑥𝑒
𝑀𝐿
𝐺𝑒 , 𝑦𝑒 𝐿𝑆 , 𝑥
Datos relevantes
20
Módulos de Simulación con MATLAB
𝑑𝑀𝐴
= 𝑚̇𝐴𝑒 − 𝑚̇𝐴𝑠
𝑑𝑡
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:
𝑑𝑀𝐴
= 𝑚̇𝐴𝑒 − 𝑚̇𝐴𝑠 = (𝐿𝑆 𝑋𝑒 + 𝐺𝑆 𝑌𝑒 ) − (𝐿𝑆 𝑋 + 𝐺𝑆 𝑌)
𝑑𝑡
𝑑𝑀𝐴
= 𝐿𝑆 (𝑋𝑒 − 𝑋) + 𝐺𝑆 (𝑌𝑒 − 𝑌)
𝑑𝑡
𝑀𝐴 = 𝑀𝐿𝑆 𝑋 + 𝑀𝑉𝑆 𝑌
𝑦𝑒𝑞 (𝑥)
𝑌𝑒𝑞 (𝑋) =
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:
𝑀𝐴 = 𝑀𝐿𝑆 𝑋
22
Módulos de Simulación con MATLAB
𝑑(𝑀𝐿𝑆 𝑋)
= 𝐿𝑆 (𝑋𝑒 − 𝑋) + 𝐺𝑆 (𝑌𝑒 − 𝑌𝑒𝑞 (𝑋))
𝑑𝑡
RESOLUCIÓN EN MATLAB
Apartado 1:
Xe=xe/(1-xe);
Ye=ye/(1-ye);
%Condiciones iniciales
X0=0; %razón molar inicial
23
Módulos de Simulación con MATLAB
Yeq=0.5.*(X./(1+X))./(1-0.5.*(X./(1+X)));
24
Módulos de Simulación con MATLAB
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)
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
%Condiciones iniciales
X0=Xest; %condicion inicial
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
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)')
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
31
Módulos de Simulación con MATLAB
𝑑𝑁𝐴
= 𝐹𝐴0 − 𝐹𝐴 + 𝑟𝐴 𝑉𝑅
𝑑𝑡
𝑑𝑁𝐴
=0
𝑑𝑡
Por consiguiente:
𝐹𝐴0 − 𝐹𝐴
𝑉𝑅 =
𝑟𝐴
𝐹𝐴 = 𝐹𝐴0 (1 − 𝑋𝐴 )
𝐹𝐴 − 𝐹𝐴0 = −𝐹𝐴0 𝑋𝐴
𝐹𝐴0 𝑋𝐴
𝑉𝑅 =
−𝑟𝐴
𝑑𝑁𝐴
= 𝐹𝐴0 − 𝐹𝐴 + 𝑟𝐴 𝑉𝑅
𝑑𝑡
32
Módulos de Simulación con MATLAB
Sabiendo que 𝐹𝑖 = 𝐶𝑖 . 𝑉̇
𝑑𝑁𝐴
= 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ + 𝑟𝐴 𝑉𝑅
𝑑𝑡
Si 𝑁𝐴 = 𝐶𝐴 . 𝑉𝑅
𝑑(𝐶𝐴 . 𝑉𝑅 )
= 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ + 𝑟𝐴 𝑉𝑅
𝑑𝑡
𝑑(𝐶𝐴 . 𝑉𝑅 )
= 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ − 𝑘𝐶𝐴2 . 𝑉𝑅
𝑑𝑡
Se considera que:
𝑉̇0 = 𝑉̇ = 𝑐𝑡𝑒 𝑉𝑅 = 𝑐𝑡𝑒
𝑉𝑅 𝑑𝐶𝐴 𝑉𝑅
= 𝐶𝐴0 − 𝐶𝐴 − 𝑘𝐶𝐴2 .
̇𝑉0 𝑑𝑡 𝑉̇0
𝑉𝑅
𝜏=
𝑉̇0
Entonces:
𝑑𝐶𝐴 𝐶𝐴0 − 𝐶𝐴 − 𝑘𝐶𝐴2 . 𝜏
=
𝑑𝑡 𝜏
33
Módulos de Simulación con MATLAB
𝑑(𝐶𝐴 . 𝑉𝑅 )
= 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ − 𝑘𝐶𝐴2 . 𝑉𝑅
𝑑𝑡
𝑑𝐶𝐴 𝑑𝑉𝑅
𝑉𝑅 + 𝐶𝐴 = 𝐶𝐴0 . 𝑉̇0 − 𝐶𝐴 . 𝑉̇ − 𝑘𝐶𝐴2 . 𝑉𝑅
𝑑𝑡 𝑑𝑡
Con 𝜌0 ≅ 𝜌
𝑑𝑉𝑅
= 𝑉̇0 − 𝑉̇
𝑑𝑡
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𝑔ℎ
𝑉𝑅 = 𝜋𝑅2 ℎ
𝐴𝑆 2 2𝑔𝑉𝑅
𝑉̇ = √
𝑅 𝜋
𝐴𝑆 = 𝜋𝑅𝑜2
RESOLUCIÓN EN MATLAB
Apartado 1:
35
Módulos de Simulación con MATLAB
[t,x]=ode45(f1,tspan,x0);
36
Módulos de Simulación con MATLAB
Apartado 2:
𝑑𝑉𝑅
= 𝑉̇0 − 𝑉̇
𝑑𝑡
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
X0=zeros(1,2);
X0(1)=CA0; %concentración inicial de A
X0(2)=500; %ft3 Volumen inicial
37
Módulos de Simulación con MATLAB
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);
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
Condensad
or
1 𝑥𝑑
Reflujo
2
𝑥𝑓
𝑓
Reboiler
𝑥𝑏
41
Módulos de Simulación con MATLAB
𝐹 =𝐷+𝐵
Donde:
• 𝐹: Flujo molar de alimentación
• 𝐷: Flujo molar del destilado
• 𝐵: Flujo molar del fondo
𝐹. 𝑥𝑓 = 𝐷. 𝑥𝐷 + 𝐵. 𝑥𝐵
𝛼𝑥
𝑦=
1 + (𝛼 − 1)𝑥
• 𝑥: Componente ligero
• 1 − 𝑥: Componente pesado
𝑑𝑁𝑖,𝑛
= (𝐿𝑛+1 𝑥𝑖,𝑛+1 − 𝑉𝑛 𝑦𝑖,𝑛 ) − (𝐿𝑛 𝑥𝑖,𝑛 − 𝑉𝑛−1 𝑦𝑖,𝑛−1 )
𝑑𝑡
42
Módulos de Simulación con MATLAB
𝑦𝑛+1
𝑥𝑛+1
𝑉𝑛
𝑦𝑛
Etapa
𝑥𝑛
n
𝐿𝑛
𝑦𝑛−1
𝑥𝑛−1
Reescribimos:
𝐿𝑛+1 1
𝑦𝑖,𝑛 = 𝑥 + 𝑤
𝑉𝑛 𝑖,𝑛+1 𝑉𝑛 𝑖,𝑛
𝐿𝑛 ≈ 𝐿1 = 𝐿
𝑉𝑛 ≈ 𝑉1 = 𝑉
43
Módulos de Simulación con MATLAB
𝐿 𝐷
𝑦𝑛 = ( ) 𝑥𝑛+1 + 𝑥𝐷
𝑉 𝑇 𝑉𝑇
𝐿 𝐵
𝑦𝑛 = ( ) 𝑥𝑛+1 − 𝑥𝐵
𝑉 𝐵 𝑉𝐵
𝐵 = 𝐿𝐵 − 𝑉𝐵
𝑉𝑇 = 𝑉𝐵 + (1 − 𝑞)𝐹
𝐿𝐵 = 𝐿 𝑇 + 𝑞𝐹
Ecuacion línea q
𝑞 𝑥𝑓
𝑦= 𝑥−
𝑞−1 𝑞−1
RESOLUCIÓN EN MATLAB
44
Módulos de Simulación con MATLAB
%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
45
Módulos de Simulación con MATLAB
%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');
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
47
Módulos de Simulación con MATLAB
𝑇𝑒 = 17°𝐶
𝑄𝑒 = 1 𝐿⁄𝑚𝑖𝑛
𝑇0 = 25°𝐶
𝑑𝑈
= 𝑚𝑒 ℎ 𝑒 − 𝑚𝑠 ℎ 𝑠 + 𝑞
𝑑𝑡
48
Módulos de Simulación con MATLAB
𝑑(𝑀𝑢)
= 𝜌𝑄(ℎ𝑒 − ℎ𝑠 ) + 𝑞
𝑑𝑡
𝑑𝑇
(𝜌𝑉)𝐶𝑣 = 𝜌𝑄𝐶𝑝 (𝑇𝑒 − 𝑇) + 𝑞
𝑑𝑡
𝑑𝑇 𝑄 𝑞
= (𝑇 + − 𝑇)
𝑑𝑡 𝑉 𝑒 𝜌𝑄𝐶𝑒
RESOLUCIÓN EN MATLAB
Apartado 1:
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
𝑇
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);
plot(time,x)
ylabel('T(t)');
xlabel('t/3600');
axis([0 10 20 100])
50
Módulos de Simulación con MATLAB
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);
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);
52
Módulos de Simulación con MATLAB
𝑟𝐴 = −𝑘𝐴 (𝑇). 𝐶𝐴
𝐶𝐴𝑒𝑛𝑡
𝑇𝐴𝑒𝑛𝑡
𝑉 𝑉
𝑇𝑐_𝑒𝑛𝑡
53
Módulos de Simulación con MATLAB
Fluido refrigerante
Caudal: 𝑄 = 0.1(𝑚3 ⁄𝑚𝑖𝑛)
Temperatura de entrada: 𝑇𝑐_𝑒𝑛𝑡 = 298(𝐾)
Densidad: 𝜌𝐶 = 1000(𝑘𝑔 ⁄𝑚3 )
Calor específico: 𝐶𝑝𝐶 = 4180(𝐽. 𝑘𝑔−1 . 𝐾 −1 )
𝑑𝐶𝐴 𝑄
= (𝐶𝐴𝑒 − 𝐶𝐴 ) + 𝑟𝐴
𝑑𝑡 𝑉
𝑞𝑐𝑟 = 𝑈𝐴(𝑇𝐶 − 𝑇)
54
Módulos de Simulación con MATLAB
𝑆𝑅 (𝐶𝐴 , 𝑇) = 𝑟𝐴 ∆𝐻𝑟 𝑉
𝑑𝑇𝑐 𝑄𝑐 −𝑞𝑐𝑟
= (𝑇𝑐𝑒 − 𝑇𝑐 ) +
𝑑𝑡 𝑉𝑐 𝜌𝑐 𝐶𝑝𝑐 𝑉𝑐
RESOLUCIÓN EN MATLAB
Apartado 1:
55
Módulos de Simulación con MATLAB
𝑞𝑐𝑟 = 𝑈𝐴(𝑇𝑐 − 𝑇)
Las derivadas de las variables de estado para un reactor que recibe entradas
genéricas son:
𝑑𝐶𝐴 𝑄
= (𝐶𝐴𝑒 − 𝐶𝐴 ) + 𝑟𝐴
𝑑𝑡 𝑉
𝑑𝑇 𝑄 𝑞𝑐𝑟 + 𝑆𝑅𝑉
= (𝑇 − 𝑇) +
𝑑𝑡 𝑉 𝑒 𝜌𝐶𝑝𝑉
𝑑𝑇𝑐 𝑄𝑐 −𝑞𝑐𝑟
= (𝑇 − 𝑇𝑐 ) +
𝑑𝑡 𝑉𝑐 𝑐𝑒 𝜌𝑐 𝐶𝑝𝑐 𝑉𝑐
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
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:
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
[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:
[CA1,T1,Tc1,CA2,T2,Tc2]=vpasolve(f1,f2,f3,f4,f5,f6);
%solución númerica de ecuaciones
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
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
[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
64
Módulos de Simulación con MATLAB
𝑇𝑒 + 𝑑T
𝑑𝑧
Datos de la reacción
5346
𝑘𝐴 (𝑇) = 1.69 × 106 𝑒𝑥𝑝 (− ) (𝑠 −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 (𝑚)
𝜕𝑇 𝑑𝑇 𝑞𝑉 + 𝑆𝑅𝑉
0 = −𝜌 𝐶𝑝 𝑣 + 𝑞𝑉 + 𝑆𝑅𝑉 → =
𝜕𝑧 𝑑𝑧 𝜌 𝐶𝑝 𝑣
66
Módulos de Simulación con MATLAB
𝑑𝑇𝐶 𝑞𝑉 𝐶
=
𝑑𝑧 𝜌𝐶 𝐶𝑝𝐶 𝑣𝐶
𝑑𝐴𝑘
𝑞𝑉 = ∑ 𝑞𝐴,𝑘
𝑑𝑉
𝑘
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:
%Datos de la reacción
DHr=-253e+3; %J/mol-A
67
Módulos de Simulación con MATLAB
%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
x0=zeros(1,3);
x0(1)=CAe;
x0(2)=Te;
x0(3)=Tce;
68
Módulos de Simulación con MATLAB
𝑑𝐶𝑖 𝑟𝑖
=
𝑑𝑧 𝑣
𝑃𝑖𝑛𝑡
𝑑𝑇 −𝑞𝐴,𝑟𝑐 . 𝑆 + 𝑆𝑅𝑉
=
𝑑𝑧 𝜌 𝐶𝑝 𝑣
𝑃𝑖𝑛𝑡 𝑃𝑒𝑥𝑡
𝑑𝑇𝐶 𝑞𝐴,𝑟𝑐 . 𝑆 − 𝑞𝐴,𝑐𝑒𝑥𝑡 . 𝑆𝑐
=
𝑑𝑧 𝜌𝐶 𝐶𝑝𝐶 𝑣𝐶
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
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
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:
𝑃𝑖𝑛𝑡 𝑃𝑒𝑥𝑡
𝑑𝑇𝐶 𝑞𝐴,𝑟𝑐 . 𝑆 − 𝑞𝐴,𝑐𝑒𝑥𝑡 . 𝑆𝑐
=
𝑑𝑧 𝜌𝐶 𝐶𝑝𝐶 (−𝑣𝐶 )
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
%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
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])
73
Módulos de Simulación con MATLAB
74
Módulos de Simulación con MATLAB
Apartado 3:
Se integra el calor por unidad de área perdido hacia el exterior con el cambio
de variable 𝑑𝐴𝑒𝑥𝑡 = 𝑃𝑒𝑥𝑡 𝑑𝑧
𝐿
𝑞𝑐𝑒𝑥𝑡 = ∫ 𝑞𝐴,𝑐𝑒𝑥𝑡 (𝑇𝑐 (𝑧)). 𝑃𝑒𝑥𝑡 𝑑𝑧
0
Siendo:
𝑞𝐴,𝑐𝑒𝑥𝑡 (𝑇𝑐 ) = 𝑈𝑒𝑥𝑡 (𝑇𝑐 − 𝑇𝑒𝑥𝑡 )
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);
76
Módulos de Simulación con MATLAB
𝐶𝐴𝑒 + 𝑑𝐶𝐴
𝐶𝐴𝑒 , 𝑇𝑒
𝑇𝑒 + 𝑑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 )
𝑀𝐴 = 0.1 𝑀𝐵 = 𝑀𝐴 ⁄2 𝑀𝐶 = 𝑀𝐵
77
Módulos de Simulación con MATLAB
𝜕𝐶𝑖 𝜕(𝑣𝐶𝑖 )
= + 𝑟𝑖
𝜕𝑡 𝜕𝑡
𝜕𝐶𝑡 𝜕(𝑣𝐶𝑡 )
=− + 𝑟𝑡
𝜕𝑡 𝜕𝑡
𝑑(𝑣𝐶𝑡 )
= 𝑟𝑡
𝑑𝑡
𝑑𝐶𝑖 𝑑𝑣
𝑣 + 𝐶𝑖 = 𝑟𝑖
𝑑𝑡 𝑑𝑡
𝑑𝐶𝑡 𝑑𝑣
𝑣 + 𝐶𝑡 = 𝑟𝑡
𝑑𝑡 𝑑𝑡
𝑑𝐶
𝑟 −𝑣 𝑡
𝑑𝑣 𝑟 − 𝐶 𝑡 𝑑𝑡
𝑑𝐶𝑖 𝑟𝑖 − 𝐶𝑖 𝑑𝑡 𝑖 𝑖 𝐶𝑡
= =
𝑑𝑡 𝑣 𝐶𝑡
78
Módulos de Simulación con MATLAB
RESOLUCIÓN EN MATLAB
Apartado 1:
%Coeficiente estequiométricos
v1A=-1;v1B=2;v1C=0;v2A=0;v2B=-1;v2C=1;
x0=zeros(1,3);
x0(1)=ve;
x0(2)=Ct;
x0(3)=0;
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
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
zspan=[0 50];
[z,x]=ode45(@(z,x)
odefcn(z,x,v1A,v1B,v2C,v2B,T,Ct),zspan,x0);
𝐶𝐴 𝑖 𝐶𝐵 𝑖
𝑥𝐴 𝑖 = 𝑥𝐵 𝑖 = 𝑥𝐶 𝑖 = 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;
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
𝐹𝑚𝑜𝑙𝑎𝑟 𝑖 = 𝐶𝑡 . 𝑣𝑖 . 𝑆
Fmolar=CT.*v.*S;
Fmasico=(CA.*MA+CB.*MB+CC.*MC).*v.*S;
figure
plot(z,Fmolar,'b',z,Fmasico,'r');
legend('Fmolar','Fmásico');
82
Módulos de Simulación con MATLAB
83
Módulos de Simulación con MATLAB
𝐶𝐴0 (0,0)
𝐶𝐴𝑒𝑛𝑡 𝑇𝑒 𝐶𝐴 (𝐿, 𝑡)
𝑇(𝐿, 𝑡)
𝐿
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 )
𝜕𝐶𝐴 𝜕(𝑣𝐶𝐴 )
=− + 𝑚𝐴𝑑𝑉 + 𝑟𝐴
𝜕𝑡 𝜕𝑧
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:
𝜕𝐶𝐴 𝜕𝐶𝐴
= −𝑣 + −𝑘𝐴 𝐶𝐴
𝜕𝑡 𝜕𝑧
∆𝑡 = 0.99∆𝑡𝑚𝑎𝑥
RESOLUCIÓN EN MATLAB
Apartado 1:
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
𝜋𝐷2 𝑄𝑒
𝑆= 𝑣=
4 𝑆
S=(pi*D^2)/4;
v=Qe/S; %m/*s
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;
%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.
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:
% 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);
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;
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
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
𝐶𝐴𝑒𝑛𝑡 𝑇𝑒 𝐶𝐴 (𝐿, 𝑡)
𝑇(𝐿, 𝑡)
𝐿
𝑧
5346
𝑘𝐴 (𝑇) = 8.333 × 105 . 𝑒𝑥𝑝 (− ) (𝑠 −1 )
𝑇
Entalpía de reacción:
∆𝐻𝑅 = −253000 (𝐽⁄𝑚𝑜𝑙𝐴 )
93
Módulos de Simulación con MATLAB
Despejamos:
𝑣. ∆𝑡 𝑣
𝐶𝑖,𝑛+1 = ( ) 𝐶𝑖−1,𝑛 + [1 − (𝑘𝐴 (𝑇𝑖,𝑛 ) + ) ∆𝑡] 𝐶𝑖,𝑛
∆𝑧 ∆𝑧
𝑣. ∆𝑡 𝑣. ∆𝑡 ∆𝐻𝑅
𝑇𝑖,𝑛+1 = ( ) 𝑇𝑖−1,𝑛 + (1 − ) 𝑇𝑖,𝑛 − 𝑘𝐴 (𝑇𝑖,𝑛 ) 𝐶 . ∆𝑡
∆𝑧 ∆𝑧 𝜌 𝐶𝑝 𝑖,𝑛
94
Módulos de Simulación con MATLAB
∆𝑡 = 0.99∆𝑡𝑚𝑎𝑥
RESOLUCIÓN EN MATLAB
Apartado 1:
𝜋𝐷2 𝑄𝑒
𝑆= 𝑣=
4 𝑆
S=(pi*Dint^2)/4;
v=Q/S;
95
Módulos de Simulación con MATLAB
𝜕𝐶𝐴
0 = −𝑣 + 𝑟𝐴
𝜕𝑧
𝜕𝐶𝐴 𝑟𝐴
=
𝜕𝑧 𝑣
𝜕𝑇 𝑆𝑅𝑉
0 = −𝑣 +
𝜕𝑧 𝜌 𝐶𝑝
𝜕𝑇 𝑆𝑅𝑉
=
𝜕𝑧 𝑣. 𝜌 𝐶𝑝
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
%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);
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
%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;
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
%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;
%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
𝑇𝐻
𝑇𝑅 𝑇𝐷
𝑇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
𝜕 2 𝑇 𝜕 2 𝑇 1 𝜕𝑇
+ =
𝜕𝑥 2 𝜕𝑦 2 𝛼 𝜕𝑡
λ
𝛼=
𝜌𝐶𝑝
Siendo:
• 𝑇: Temperatura (K)
• 𝑡: Tiempo (s)
• λ: Conductividad térmica (W/m/k)
• 𝐶𝑝 : Capacidad calorífica (J/kg)
• 𝜌: Densidad (kg/m3)
105
Módulos de Simulación con MATLAB
Donde:
(∆𝑧)2
𝑀=
𝛼∆𝑡
𝑀−4 > 0
(∆𝑧)2
>4
𝛼∆𝑡
∆𝑡 = 0.99∆𝑡𝑚𝑎𝑥
RESOLUCIÓN EN MATLAB
Apartado 1:
106
Módulos de Simulación con MATLAB
%Cálculos
a=vod/(p*Cp);
dz=L/(N-1); %tamaño del paso
M=((dz)^2)/(dt*a); %Valor de M
t=dt;
𝐿 (𝑁 𝑠𝑒𝑔𝑚𝑒𝑛𝑡𝑜𝑠)
∆𝑦
∆𝑥
% 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
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
% 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
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.
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