You are on page 1of 22

UNIVERSIDADE DO SUL DE SANTA CATARINA

BRUNO CIDADE NEVES


DANIELA RUFINO BALDOINO
SABRINA MEDEIROS HENRIQUE

ANLISE E SIMULAO DE PROCESSOS QUMICOS

Tubaro
2017
1
BRUNO CIDADE NEVES
DANIELA RUFINO BALDOINO
SABRINA MEDEIROS HENRIQUE

ANLISE E SIMULAO DE PROCESSOS QUMICOS

Projeto apresentado ao Curso de


Engenharia Qumica, solicitado na
Unidade de Aprendizagem de
Anlise e Simulao de Processos
Qumicos.

Professora Camila Gonalves.

Tubaro
2017

2
1. PROBLEMA: Um reator batelada isotrmico de volume constante V est
processando as seguintes reaes elementares de primeira ordem:

ABC

As constantes no sentido AB K1=0.4, no sentido BA K2= 0.3 e no sentido BC


K3=0.7. No incio h no reator apenas o reagente A, numa concentrao Ca=3 (dados
para o grupo 2).

1.1. PRIMEIRA PARTE: MODELAGEM MATEMTICA


A) Defina as hipteses simplificadoras para resoluo deste problema;

As hipteses sero:
Temperatura Constante;
Mistura Perfeita;
Volume Constante;
Reao Reversvel entre A e B;
Reao Irreversvel para B e C;
Propriedades Fsicas Constantes;
Constante AB = k1 = 0.4; RA = (- K1 * CA) + (K2 * CB)
Constante BA = k2 =0.3; RB= (K1 * CA) (K3*CB) (K2 * CB)
Constante BC = k3 = 0.7; RC = K3*CB

B) Obtenha a equao governante que prev o comportamento da concentrao dos


reagentes e produtos ao longo do tempo no reator.

Balano Global

Acmulo = entra sai + gerao consumo

Acmulo = gerao consumo


Ca
= Ra + Rb
t
m
= + Ra * ma * V Ra* ma *V
t

3
m=p*V
(pV)
= + Ra * p* V Ra *p * V
t
V
=0
t

Balano para o reagente A:

Acmulo = + gerao consumo


Ca
= Ra + Rb
t
Ca
Ra = K1
V
Cb
Rb = K2
V
Ca Ca Cb
= K1 + K2
t V V
Como V constante, a equao poder ficar apenas:
CA
=((- K1 * CA) + (K2*CB))
t

Balano para o reagente B:

Acmulo = + gerao consumo


Cb
= Ra + Rb Rc
t
Ca
Ra = K1
V
Cb
Rb = K2
V
Cb
Rc = K3
V

Cb Ca Cb Cb
= (K1 ) (K2 ) (K3 )
t V V V
Para um volume constante:

CB
= (K1 * CA) - (K2 * CB) - (K3 * CB)
t

4
Balano para o reagente C:

Acmulo = gerao
Cc
= Rc
t
Cb
Rc = K3
V
Cc Cb
= K3
t V
Considerando um Volume constante:
CC
= (K3 * CB)
t

1.2. SEGUNDA PARTE: RESOLUO DO PROBLEMA OCTAVE

A) Obtenha os perfis de concentrao do reagente e dos produtos em funo do


tempo. Resolva as equaes pelos mtodos de Euler (defina o melhor passo) e Range-
Kutta, compare e discuta os resultados com grficos.

As equaes de perfis de concentrao foram desenvolvidas no item 1.B.

Com os valores fornecidos, simulou-se o comportamento da reao ao longo do


tempo, com o auxlio do software Octave. Cujo cdigos de programao utilizados
encontram-se em anexo.

Tempo: 10
N de interaes: 10

5
Figura 1 - Mtodo de Runge Kutta e Mtodo de Euller.

Fonte: Acadmicos, 2017.

Em anlise dos grficos verifica-se que, o Mtodo de Euler representa melhor o


que se veria na prtica, uma vez que a reao qumica tinha por objetivo obter o produto
C. Fica claro que ao longo do tempo temos um consumo de A e B, e crescimento de C,
representada pela linha em vermelho.

Quando observa-se o grfico que representa o Mtodo de Runge Kutta, no


percebe-se o surgimento do produto C ao longo do tempo. Ver-se que ambas as
concentraes diminuem, mas o produto no gerado. Pode-se dizer que o mtodo de
Runge-Kutta, segundo contedo passado em sala de aula mais indicado para
resolues de EDOs com de ordens mais alta (com menor erro para equaes de 4
ordem). Portanto, alm de conhecer os mtodos de programao, precisa-se reconhecer
qual mtodo numrico utilizar.

6
B) Avalie o comportamento destes perfis, para diferentes valores da constante K.
Altere seu valor em +50% e -50% do seu valor original. O que acontece com o
processo?

Com menos 50%


Interao 10
Tempo 10

Figura 2 - Mtodo de Runge Kutta e Mtodo de Euler.

Fonte: Autores, 2017.

Em relao a primeira situao, percebemos que Runge Kutta e o Mtodo de


Euler seguiram os mesmos comportamentos. No entanto, como todas as constantes de
velocidade especfica da reao aumentaram em 50%, no haveria porque as curvas
apresentarem grandes diferenas. Uma vez, que todas as constantes receberam o mesmo
aumento de velocidade.
Contudo, interessante perceber que com as constantes 50% maiores, o produto
B deixou de ser gerado, passando a ser consumido aps 6 minutos de reao, o que
anteriormente aps apenas 2 minutos de reao j era perceptvel graficamente.

7
Segunda alterao:

Com mais 50%


Interao 10
Tempo 10

Figura 3 - Mtodo de Runge Kutta e Mtodo de Euler.

Fonte: Acadmicos, 2017.

Em relao a primeira situao, e a segunda situao simulada, percebemos que


Runge Kutta e o Mtodo de Euler seguiram os mesmos comportamentos. Uma vez, que
todas as constantes receberam o mesmo aumento de velocidade.
Contudo, interessante perceber que nos 3 casos, apenas o comportamento dos
reagentes A e B sofre mais com as alteraes propostas, sendo que C, apresenta
praticamente o mesmo comportamento em todos os casos. Se observamos as equaes
CC
de taxa isso fica mais compreensvel, uma vez que C dada pela taxa: = (K3 * CB).
t

Diferentemente das taxas de A e B, principalmente para B, onde todas as constantes


influenciam em seu comportamento. Percebe-se tambm, que quanto menor as
constantes K1 e K2, mais rpido B consumido.

8
2. PROBLEMA. Resolva em Octave, a seguinte EDO de grau 2 pelo mtodo de
Range-Kutta. Compare os resultados. Qual o melhor mtodo? Por qu?

Condies iniciais:
X=0
Y=0
X= 0
dy/dx = 0
h= 0,01
dy/dx= z
resolver at x=2
2
EDO: + 30 + 200 = 1000
2

Figura 4 - Mtodos Runge Kutta e Euler, EDO de 2 ordem.

Fonte: Autores, 2017.

Ambos demonstraram um comportamento bastante prximo ao resultado que


seria obtido analiticamente.
No entanto, mesmo com o mtodo de Euler demonstrando resultados tambm
prximos ao que seria obtido analiticamente. Como j citado anteriormente, o mtodo
de Runge Kutta apresenta menor erro, sendo mais preciso, em equaes de maior

9
ordem. Como a equao que solicitamos a resoluo de segunda ordem, pode-se dizer
que o mtodo de Runge Kutta o mais indicado.

2. CONSIDERAES FINAIS

A modelagem e simulao de processos uma ferramenta bastante utilizada na


Engenharia Qumica, devido possibilidade que oferece em prever condies
operacionais ou simular equipamentos, sem interferir no sistema operante. A simulao
de processos utiliza modelos matemticos com o objetivo de testar diversas
possibilidades de configurao, buscando a idealidade ou prevendo o comportamento de
sistemas em situaes adversas. Porm, para seu desenvolvimento, so necessrios
conhecimentos que vo alm de matemticos e computacionais, como o conhecimento
da dinmica dos processos que sero estudados.

3. REFERNCIAS BIBLIOGRFICAS

MAZZUCCO, M. M. INTRODUO S TCNICAS DE PROGRAMAO


COM GNU OCTAVE E MATLAB. Material didtico do curso de Engenharia
Qumica, UNISUL, 2004.

10
4. ANEXOS
Programa elaborado no GNU Octave para o problema 1.

%program SimulacaoResposta1dotrabalho
#ltima gravao: 29/06/2017;quinta-feira;23:56
#Software: GNU Octave 3.1.50;mEd 3.4.3
#Autor: Bruno/Daniela/Sabrina
#Objetivo: Aplicar os Mtodo de Runge-Kutta e Euler na anlise da variao da
concentrao de reagentes em relao ao tempo
clear all;
#Subrotinas

%var
global _;
%begin
clear
clc
# Reao do problema em questo: A <=====> B ----> C
#(reao reversvel)
#dCa/dt== (-k1*CA)+(k2*CB) ;
#dCb/dt=(k1*CA)-(K2*CB)-(K3*CB) ;
#dCc/dt=(+k3*Cb)

t(1)=0;
Runge Kutta
CA(1)=3;
CB(1)=0;
CC(1)=0;

Euler
CAe(1)=3;
CBe(1)=0;
CCe(1)=0;

11
printf("Dada a reao reversvel (A <--> B -->C) (->k1 ; <-k2 ; ->K3), insira os dados:
\n\n");
n=input("-Insira o nmero de intervalos: ");
tf=input("\n-Insira o valor final de tempo: ");
h=(tf-t(1))/n;
k1= 0.4;
k2= 0.3;
k3= 0.7;
V= 2;
#Mtodo de Runge Kutta
for i=1:n

t(i+1)=t(i)+h;

k1CA=h*(-(k1*CA(i))+(k2*(CB(i))));
k1CB=h*(+(k1*CA(i))+(k2*(CB(i)))-(k3*(CB(i))));
k1CC=h*(+(k3*CC(i)));

k2CA=h*(-(k1*CA(i)+k1CA/2)+(k2*(CB(i)+k1CB/2)));
k2CB=h*(+(k1*CA(i)+k1CA/2)+(k2*(CB(i)+k1CB/2))-(k3*(CB(i)+k1CB/2)));
k2CC=h*(+(k3*CB(i)+k1CB/2));

k3CA=h*(-(k1*CA(i)+k2CA/2)+(k2*(CB(i)+k2CB/2)));
k3CB=h*(+(k1*CA(i)+k2CA/2)+(k2*(CB(i)+k2CB/2))-(k3*(CB(i)+k2CB/2)));
k3CC=h*(+(k3*CB(i)+k2CB/2));

k4CA=h*(-(k1*CA(i)+k3CA/2)+(k2*(CB(i)+k3CB/2)));
k4CB=h*(+(k1*CA(i)+k3CA/2)+(k2*(CB(i)+k3CB/2))-(k3*(CB(i)+k3CB/2)));
k4CC=h*(+(k3*CB(i)+k3CB/2));

CA(i+1)=CA(i)+(1/6)*(k1CA+2*k2CB+2*k3CA+k4CA);
CB(i+1)=CB(i)+(1/6)*(k1CB+2*k2CB+2*k3CB+k4CB);
CC(i+1)=CC(i)+(1/6)*(k1CC+2*k2CC+2*k3CC+k4CC);

12
endfor;
# Mtodo de Euler
for i=1:n

CA1=CAe(i)+(h*((-k1*CAe(i))+(k2*(CBe(i)))));
CAe(i+1)=CA1;
CB1=CBe(i)+(h*((k1*CAe(i))+(k2*(CBe(i)))-(k3*(CBe(i)))));
CBe(i+1)=CB1;
CC1=CCe(i)+(h*((k3*CBe(i))));
CCe(i+1)=CC1;

endfor;
#Grficos
subplot(1,2,1);
plot(t,CA,t,CA,"-x",t,CA);
xlabel("Tempo de Reao (min)");
ylabel("Concentrao(mol/L)");
legend('CA','CB','CC');
title("Mtodo de RUNGE KUTTA");
grid("on");

subplot(1,2,2);
plot(t,CAe,t,CBe,"-o",t,CCe);
xlabel("Tempo de Reao (min)");
ylabel("Concentrao(mol/L)");
legend('CA','CB','CC');
title("Mtodo de EULER");
grid("on");
%end

Programa elaborado no GNU Octave para o problema 1 com + 50%.

%program respostada1com50mais
#ltima gravao: 30/06/2017;sexta-feira;00:04

13
#Software: GNU Octave 3.1.50;mEd 3.4.3
#Autor: Bruno/Daniela/Sabrina
#Objetivo: Aplicar os Mtodo de Runge-Kutta e Euler na anlise da variao da
concentrao de reagentes em relao ao tempo
clear all;
#Subrotinas
%var
global _;
%begin
clear
clc
# Reao do problema em questo: A <=====> B ----> C
#(reao reversvel)
#dCa/dt== (-k1*CA)+(k2*CB) ;
#dCb/dt=(k1*CA)-(K2*CB)-(K3*CB) ;
#dCc/dt=(+k3*Cb)

t(1)=0;
Runge Kutta
CA(1)=3;
CB(1)=0;
CC(1)=0;

Euler
CAe(1)=3;
CBe(1)=0;
CCe(1)=0;

printf("Dada a reao reversvel (A <--> B -->C) (->k1 ; <-k2 ; ->K3), insira os dados:
\n\n");
n=input("-Insira o nmero de intervalos: ");
tf=input("\n-Insira o valor final de tempo: ");
h=(tf-t(1))/n;
#Valores das constantes com 50% a mais do valor inicial dado

14
k1= 0.6;
k2= 0.45;
k3= 1.05;
V= 2;

#Mtodo de Runge Kutta


for i=1:n

t(i+1)=t(i)+h;

k1CA=h*(-(k1*CA(i))+(k2*(CB(i))));
k1CB=h*(+(k1*CA(i))+(k2*(CB(i)))-(k3*(CB(i))));
k1CC=h*(+(k3*CC(i)));
k2CA=h*(-(k1*CA(i)+k1CA/2)+(k2*(CB(i)+k1CB/2)));
k2CB=h*(+(k1*CA(i)+k1CA/2)+(k2*(CB(i)+k1CB/2))-(k3*(CB(i)+k1CB/2)));
k2CC=h*(+(k3*CB(i)+k1CB/2));

k3CA=h*(-(k1*CA(i)+k2CA/2)+(k2*(CB(i)+k2CB/2)));
k3CB=h*(+(k1*CA(i)+k2CA/2)+(k2*(CB(i)+k2CB/2))-(k3*(CB(i)+k2CB/2)));
k3CC=h*(+(k3*CB(i)+k2CB/2));

k4CA=h*(-(k1*CA(i)+k3CA/2)+(k2*(CB(i)+k3CB/2)));
k4CB=h*(+(k1*CA(i)+k3CA/2)+(k2*(CB(i)+k3CB/2))-(k3*(CB(i)+k3CB/2)));
k4CC=h*(+(k3*CB(i)+k3CB/2));

CA(i+1)=CA(i)+(1/6)*(k1CA+2*k2CB+2*k3CA+k4CA);
CB(i+1)=CB(i)+(1/6)*(k1CB+2*k2CB+2*k3CB+k4CB);
CC(i+1)=CC(i)+(1/6)*(k1CC+2*k2CC+2*k3CC+k4CC);

endfor;
# Mtodo de Euler
for i=1:n

CA1=CAe(i)+(h*((-k1*CAe(i))+(k2*(CBe(i)))));

15
CAe(i+1)=CA1;
CB1=CBe(i)+(h*((k1*CAe(i))+(k2*(CBe(i)))-(k3*(CBe(i)))));
CBe(i+1)=CB1;
CC1=CCe(i)+(h*((k3*CBe(i))));
CCe(i+1)=CC1;

endfor;
#Grficos
subplot(1,2,1);
plot(t,CA,t,CA,"-o",t,CA);
xlabel("Tempo de Reao (min)");
ylabel("Concentrao(mol/L)");
legend('CA','CB','CC');
title("Mtodo de RUNGE KUTTA");
grid("on");

subplot(1,2,2);
plot(t,CAe,t,CBe,"-o",t,CCe);
xlabel("Tempo de Reao (min)");
ylabel("Concentrao(mol/L)");
legend('CA','CB','CC');
title("Mtodo de EULER");
grid("on");
s=input("\n\nPressione enter para fechar o grfico", "s");
close;

%end.

Programa elaborado no GNU Octave para o problema 1 com - 50%.

%program respostada1com50menos
#ltima gravao: 29/06/2017;quinta-feira;14:33
#Software: GNU Octave 3.1.50;mEd 3.4.3
#Autor: Bruno/Daniela/Sabrina

16
#Objetivo: Aplicar os Mtodo de Runge-Kutta e Euler na anlise da variao da
concentrao de reagentes em relao ao tempo
clear all;
#Subrotinas

%var
global _;
%begin
clear
clc
# Reao do problema em questo: A <=====> B ----> C
#(reao reversvel)
#dCa/dt== (-k1*CA)+(k2*CB) ;
#dCb/dt=(k1*CA)-(K2*CB)-(K3*CB) ;
#dCc/dt=(+k3*Cb);

t(1)=0;
Runge Kutta
CA(1)=3;
CB(1)=0;
CC(1)=0;

Euler
CAe(1)=3;
CBe(1)=0;
CCe(1)=0;

printf("Dada a reao reversvel (A <--> B -->C) (->k1 ; <-k2 ; ->K3), insira os dados:
\n\n");
n=input("-Insira o nmero de intervalos: ");
tf=input("\n-Insira o valor final de tempo: ");
h=(tf-t(1))/n;
#Valores para as constantes 50% do valor inicial
k1= 0.2;

17
k2= 0.15;
k3= 0.35;
V= 2;

#Mtodo de Runge Kutta


for i=1:n

t(i+1)=t(i)+h;

k1CA=h*(-(k1*CA(i))+(k2*(CB(i))));
k1CB=h*(+(k1*CA(i))+(k2*(CB(i)))-(k3*(CB(i))));
k1CC=h*(+(k3*CC(i)));

k2CA=h*(-(k1*CA(i)+k1CA/2)+(k2*(CB(i)+k1CB/2)));
k2CB=h*(+(k1*CA(i)+k1CA/2)+(k2*(CB(i)+k1CB/2))-(k3*(CB(i)+k1CB/2)));
k2CC=h*(+(k3*CB(i)+k1CB/2));

k3CA=h*(-(k1*CA(i)+k2CA/2)+(k2*(CB(i)+k2CB/2)));
k3CB=h*(+(k1*CA(i)+k2CA/2)+(k2*(CB(i)+k2CB/2))-(k3*(CB(i)+k2CB/2)));
k3CC=h*(+(k3*CB(i)+k2CB/2));

k4CA=h*(-(k1*CA(i)+k3CA/2)+(k2*(CB(i)+k3CB/2)));
k4CB=h*(+(k1*CA(i)+k3CA/2)+(k2*(CB(i)+k3CB/2))-(k3*(CB(i)+k3CB/2)));
k4CC=h*(+(k3*CB(i)+k3CB/2));

CA(i+1)=CA(i)+(1/6)*(k1CA+2*k2CB+2*k3CA+k4CA);
CB(i+1)=CB(i)+(1/6)*(k1CB+2*k2CB+2*k3CB+k4CB);
CC(i+1)=CC(i)+(1/6)*(k1CC+2*k2CC+2*k3CC+k4CC);

endfor;
# Mtodo de Euler
for i=1:n

CA1=CAe(i)+(h*((-k1*CAe(i))+(k2*(CBe(i)))));

18
CAe(i+1)=CA1;
CB1=CBe(i)+(h*((k1*CAe(i))+(k2*(CBe(i)))-(k3*(CBe(i)))));
CBe(i+1)=CB1;
CC1=CCe(i)+(h*((k3*CBe(i))));
CCe(i+1)=CC1;

endfor;
#Grficos

subplot(1,2,1);
plot(t,CA,t,CA,"-o",t,CA);
xlabel("Tempo de Reao (min)");
ylabel("Concentrao(mol/L)");
legend('CA','CB','CC');
title("Mtodo de RUNGE KUTTA");
grid("on");

subplot(1,2,2);
plot(t,CAe,t,CBe,"-o",t,CCe);
xlabel("Tempo de Reao (min)");
ylabel("Concentrao(mol/L)");
legend('CA','CB','CC');
title("Mtodo de EULER");
grid("on");
s=input("\n\nPressione enter para fechar o grfico", "s");
close;

Programa elaborado no GNU Octave para o problema 2.

%program SimulacaoResposta2dotrabalho
#ltima gravao: 29/06/2017;quinta-feira;14:37
#Software: GNU Octave 3.1.50;mEd 3.4.3
#Autores: Bruno, Daniela e Sabrina

19
#Objetivo: Comparao entre os Mtodos Euler, Runge Kutta e Analtico para uma
EDO de 2 ordem
clear all;
#Subrotinas
%uses
data_types;
octave_pascal;

%var
global _;
function y= f(zn,yn)
y=(1000-(30*zn)-(200*yn));
endfunction

function yanalitico=fanalitico(xn)
yanalitico=(5-(10*exp(-10*xn)))+(5*exp(-20*xn));
endfunction

function ye=f(zne,yne)
ye=(1000-(30*zne)-(200*yne));
endfunction

%begin
clc;
clg;
zn=0;
zne=0;
yn=0;
yne=0;
h=0.01;
#Coloca duas linhas em branco printf(" \n\n");
#Entrada
#condies iniciais
#zn = input("Qual o valor inicial de zn? ");

20
#yn = input("Qual o valor inicial de yn? ");
#h = input("Qual o valor de h? ");

#Range-Kutta
#xmax = 20+h;
xn=0.01;
xmax = 2;
n=0;
while(xn<=xmax)
n=n+1;
k1 = h*(zn);
l1 = h*f(zn,yn);
k2 = h*(zn+l1/2);
l2 = h*f(zn+l1/2,yn+k1/2);
k3 = h*(zn+l2/2);
l3 = h*f(zn+l2/2, yn+k2/2);
l4 = h*f(zn+l3,yn+k3);
zn1 = zn +(l1+2*l2+2*(l3+l4))/6;
k4 = h*(zn+l3);
yn1 = yn +(k1+2*k2+2*k3+k4)/6;
zn=zn1;
yn = yn1;
eixox(n)=xn;
eixoyrk(n)=yn;

# y analtico
yanalitico=fanalitico(xn);
eixoyreal(n)=yanalitico;

#Euler
zn1e=zne+h*f(zne,yne);
yn1e=yne+h*(zne);
zne=zn1e;
yne=yn1e;

21
xn=xn+h;
eixoye(n)=yne;
#Sada
printf("\n Valor de Euler= %g",yne);
printf("\n Valor de Runge Kutta= %g",yn);
printf("\n Valor analtico= %g\n",yanalitico);
endwhile;
#Plotagem
plot(eixox, eixoyrk, "-;y Runge Kutta;r");
xlabel("xn");
ylabel("yn");
hold("on");
plot(eixox, eixoyreal, "-;y analtico;b");
xlabel("xn");
ylabel("yn");
plot(eixox, eixoye, "-;y Euler;g");
xlabel("xn");
ylabel("yn");
title("Mtodos\n Runge Kutta \n Euler e Analtico, EDO de 2 ordem");
s=input("\n\nPressione enter para fechar o grfico", "s");
close;
%end.

22

You might also like