28/06/13 15.22 C:\Users\gaetano\Dropbox\Bosch\APC\2009-10\cstrtrans_phi0.m 1 of 2
clear;
tfin=200;
deltat=0.1;
N=round(tfin/deltat);
gamma=16; % 16
beta=0.81; % 0.81 - 1 phi0=13.; % 13
tetainf=0; % 0
Da=0.16; % 0.12 - 0.09 tetain=0;xin=0;
teta(1)=0;x(1)=1;
t(1)=0;
teul=cputime;
%%
%% EULERO ESPLICITO
%%
%for n=1:N
% t(n+1)=t(n)+deltat;
% res=cstr_nonadb([teta(n),x(n)],[tetain,xin],Da,gamma,beta,phi,tetainf);
% teta(n+1)=teta(n)+res(1,1)*deltat;
% x(n+1)=x(n)+res(2,1)*deltat;
%end
%teul=cputime-teul
%plot(t,teta,'r',t,x,'b')
%hold on
%
% RUNGE-KUTTA 4° ORDINE
%
% deltat=0.2;
N=round(tfin/deltat);
tetaRK(1)=teta(1);xRK(1)=x(1);
tRK(1)=0;
deltatmez=deltat/2;
deltatses=deltat/6;
teRK=cputime;
for n=1:N
tRK(n+1)=tRK(n)+deltat;
k1=cstr_nonadb_phi0([tetaRK(n),xRK(n)],[tetain,xin],Da,gamma,beta,phi0,tetainf);
k2=cstr_nonadb_phi0([tetaRK(n)+deltatmez*k1(1),xRK(n)+deltatmez*k1(2)],[tetain, xin],Da,gamma,beta,phi0,tetainf);
k3=cstr_nonadb_phi0([tetaRK(n)+deltatmez*k2(1),xRK(n)+deltatmez*k2(2)],[tetain, xin],Da,gamma,beta,phi0,tetainf);
k4=cstr_nonadb_phi0([tetaRK(n)+deltat*k3(1),xRK(n)+deltat*k3(2)],[tetain,xin],Da, gamma,beta,phi0,tetainf);
deltax=deltatses*(k1+2*k2+2*k3+k4);
tetaRK(n+1)=tetaRK(n)+deltax(1);
xRK(n+1)=xRK(n)+deltax(2);
end
teRK=cputime-teRK
plot(tRK,tetaRK,'-r',tRK,xRK,'-b') grid
legend('\theta','x','Location','NorthEast');
28/06/13 15.22 C:\Users\gaetano\Dropbox\Bosch\APC\2009-10\cstrtrans_phi0.m 2 of 2
Title('Transitorio di un CSTR non isotermo non adiabatico, Da=0.18')