28/06/13 15.22 C:\Users\gaetano\Dropbox\Bosch\APC\2009-10\reattub_non_isot.m 1 of 3
%calcolo della dinamica di un reattore tubolare non isotermo
%parametri fisici lung=15;
V=50;
t_residenza=lung/V;
raggio=.1;
k0=1e+4;
alfa=0.001;
EasuR=3000;
DHsurCp=-500;
Tiniz=285;
T_inf=285;
%parametri numerici M=20;N=40;
dx=lung/(N-1);
dR=raggio/(M-1+.5);
tfin=2.1*t_residenza;
dt=0.1*dx/V; % corrisponde a C=1
%condizione iniziale(assenza di reagenti) u=zeros(M,N);
T=Tiniz*ones(M,N);
%condizione al contorno uin=1;
Tin=343;
u(M-16:M-3,1)=uin*ones(14,1);
%u(1:M,1)=uin*ones(M,1);
T(1:M,1)=Tin*ones(M,1);
% condizione di scambio in parete Hsulambda=500;
%
SUBPLOT(1,2,1), surf(u)
xlabel('x');ylabel('r');zlabel('u');
view(-205,30)
SUBPLOT(1,2,2), surf(T)
xlabel('x');ylabel('r');zlabel('T');
view(-205,30)
%griglia lungo la coordinata radiale r(1)=dR/2;
for i=2:M
r(i)=i*dR-dR/2;
end;
unosur=1./r;
%coefficienti numerici, termini diffusivi adtdR2=alfa*dt/(dR*dR);
adtRdR=alfa*dt/dR*unosur;
%coefficiente numerico, termine convettivo cour=V*dt/dx
%calcolo dei coefficienti della matrice tridiagonale indipendenti da x e t
%equazione di bilancio della specie i=1;
28/06/13 15.22 C:\Users\gaetano\Dropbox\Bosch\APC\2009-10\reattub_non_isot.m 2 of 3
a(i)=0;
aT(i)=0;
c(i)=-adtdR2-adtRdR(i);
cT(i)=-adtdR2-adtRdR(i);
% b(i) cambia nel corso del calcolo; non così bT(i) bT(i)=1+adtdR2+adtRdR(i);
for i=2:M-1
a(i)=-adtdR2;
aT(i)=-adtdR2;
% b(i) cambia nel corso del calcolo; non così bT(i) bT(i)=1+2*adtdR2+adtRdR(i);
c(i)=-adtdR2-adtRdR(i);
cT(i)=-adtdR2-adtRdR(i);
end;
i=M;
c(i)=0;
cT(i)=0;
a(i)=-adtdR2;
aT(i)=-adtdR2;
% b(i) cambia nel corso del calcolo; non così bT(i)
bT(i)=1+adtdR2+alfa*dt/dR*Hsulambda+alfa*dt*unosur(i)*Hsulambda;
% parte costante del termine dT(M)
contorno=(alfa*dt/dR*Hsulambda+alfa*dt*unosur(i)*Hsulambda)*T_inf;
%ciclo di integrazione nel tempo for t=0:dt:tfin
uold=u;
Told=T;
%ciclo di integrazione lungo x for j=2:N
%calcolo dei coefficienti della matrice tridiagonale dipendenti da x e t
%e del termine noto i=1;
EasRT=EasuR/Told(i,j-1);
S1=sorgT(uold(i,j-1),EasRT,k0);
Source(i,j)=-S1*u(i,j);
b(i)=1+adtdR2+adtRdR(i)-S1*dt;
% bT(i) non cambia;
d(i)=uold(i,j)-cour*(uold(i,j)-uold(i,j-1));
dT(i)=Told(i,j)-cour*(Told(i,j)-Told(i,j-1))+dt*DHsurCp*S1*u(i,j);
for i=2:M-1
EasRT=EasuR/Told(i,j-1);
S1=sorgT(uold(i,j-1),EasRT,k0);
Source(i,j)=-S1*u(i,j);
b(i)=1+2*adtdR2+adtRdR(i)-S1*dt;
% bT(i) non cambia;
d(i)=uold(i,j)-cour*(uold(i,j)-uold(i,j-1));
dT(i)=Told(i,j)-cour*(Told(i,j)-Told(i,j-1))+dt*DHsurCp*S1*u(i,j);
end;
i=M;
EasRT=EasuR/Told(i,j-1);
S1=sorgT(uold(i,j-1),EasRT,k0);
Source(i,j)=-S1*u(i,j);
b(i)=1+adtdR2-S1*dt;
% bT(i) non cambia;
d(i)=uold(i,j)-cour*(uold(i,j)-uold(i,j-1));
28/06/13 15.22 C:\Users\gaetano\Dropbox\Bosch\APC\2009-10\reattub_non_isot.m 3 of 3
dT(i)=Told(i,j)-cour*(Told(i,j)-Told(i,j-1))+dt*DHsurCp*S1*u(i,j)+contorno;
%soluzione implicita lungo r u(:,j)=Thomas(a,b,c,d,M);
T(:,j)=Thomas(aT,bT,cT,dT,M);
end;
SUBPLOT(3,1,1), surf(u)
xlabel('x');ylabel('r');zlabel('u');
view(30,30)
SUBPLOT(3,1,2), surf(T)
xlabel('x');ylabel('r');zlabel('T');
view(30,30)
SUBPLOT(3,1,3), surf(Source)
xlabel('x');ylabel('r');zlabel('Source');
view(30,30) t
pause(0.01);
end
% Calcolo del grado di conversione complessivo Integ=0;
for i=1:M
Integ=Integ+u(i,N)*r(i);
end
Qu=2*pi*V*Integ*dR;
Qu0=pi*V*raggio*raggio*uin;
x=(Qu0-Qu)/Qu0