Sei sulla pagina 1di 4

format long g

clc, clear all, close all


%% Steam Reforming del Metano
%
%CH4 + 2H2O = CO2 + 4H2
DHr0=165.1 kJ/mol
% 1
2
3
4
%
%%inizializzazone vettori
X=[]; % adimensionale - conversione rispetto al metano
Yssch4=[]; % adimensionale - frazione molare secca metano
Yssco2=[]; % adimensionale - frazione molare secca anidride carbonica
Yssh2= []; % adimensionale - frazione molare secca idrogeno
ni=[]; % numero di iterazioni compiute
%% inizializzazione guess
y=[0.15 0.59 0.08]; % adimensionali - frazioni molari iniziali specie 1, 2, 3
nt=1.1; % adimensionale - portata molare in uscita
Tadim=0.86; % adimensionale - temperatura
x0=[y, nt, Tadim]; % approssimazione delle soluzioni f(x)=0
for i=1:4000;
P=0.01+0.01*(i-1); % bar - pressione totale
%% Condizioni operative
TCin=800; %C - temperatura ingresso
TKin=TCin+273.15; %K - temperaura ingresso
Ppa=P*1e5; %Pa - pressione di esercizio
%% costanti e propriet
Rgas=8.314; %Pa m^3/mol/K
Dhf=[-74.85 -241.83 -393.5 0]; %kJ/mol - entalpie di formazione
%coefficienti dei calori specifici
a=[34.31 33.46 36.11 28.84]*1e-3;
b=[5.469 0.6880 4.233 0.00765]*1e-5;
c=[0.3661 0.7604 -2.887 0.3288]*1e-8;
d=[-11.00 -3.593 7.464 -0.8698]*1e-12;
C=[a;b;c;d;]; %[ncoeff x nc]
%% Parametri cinetici e termodinamici
k0=1.020e15; %kmol bar^0.5/g kgcat/h - fattore pre-esponeziale della costant
e cinetica
Eatt=243.9*1e3; %J/mol - energia di attivazione
K0=6.194301277046940e11; %bar^2 - fattore pre-exp della costante di eqio
Dheq=192428.224210535; % J/mol- argomento esponeziale della cost di eqilibri
o
%% Calore scambiato
PowerQ=0; %kW - potenza termica scambiata
Qdot=PowerQ*3600; %kJ/h - calore scambiato
%% Geometrie del reattore
D=0.4; %m - diametro del reattore
S=pi*D^2/4; %m^2 - sezione retta del reattore
v=0.1; %m/s - velocit spaziale dei gas nel reattore
Mcat=100; %kg - massa del catalizzatore
%% Alimentazione
Vin=S*v*3600; %m^3/h - portata volumetrica totale in ingresso
yin=[0.2 0.7 0.05 0.05]; %adim - frazioni molari in ingresso
ntin=Ppa*Vin/Rgas/TKin; %mol/h - portata molare in entrata
% entapie entranti

hin=entalpia(1,TKin,C,Dhf); %kJ/mol - [1 x nc] - entalpie


% tolleranza e massimo numero di iterazioni
toll=1e-11;
nmax=100;
%% inizializzazione numero di iterazioni, vettore incognite e differenza
n=0;
x=x0';
diff=toll+1;
while diff>=toll && n<nmax
n=n+1;
% riassegna le variabili
y=x(1:3);
nt=x(4);
Tadim=x(5);
%pressioni parziali
y(4)=1-sum(y); % adimensionale - frazione molare della specie 4
p=P*y; % bar - pressioni parziali
%velocit di reazione e costanti di equilibrio
k=k0*exp(-Eatt/(Rgas*TKin*Tadim))*1e3; % kmol bar^0.5/g kgcat/h - costan
te cinetica
K=K0*exp(-Dheq/(Rgas*Tadim*TKin)); %bar^2 - costante di equilibrio
%velocit di reazione
R=k*(p(1)*p(2)^2-p(4)^4*p(3)/K)/(p(4)^3.5); % kmol/g kgcat/h
%calcolo delle entalpie e dei calori specifici
h=entalpia(Tadim,TKin,C,Dhf); % kJ/mol - entalpie
cpi=calspec(Tadim,TKin,C); % kJ/mol/C - calori specifici
%costruzione della funzione f(x)=0
f(1)=yin(1) - nt*y(1)-R*Mcat/ntin; % bilancio di materia specie 1 - adim
ensionale
f(2)=yin(2)-nt*y(2)-2*R*Mcat/ntin; % bilancio di materia specie 2 - adim
ensionale
f(3)=yin(3)-nt*y(3)+R*Mcat/ntin; % bilancio di materia specie 3 - adimen
sionale
f(4)=1-nt+2*R*Mcat/ntin; % bilancio di materia totale - adimensionale
f(5)=yin(1)+yin(2)*hin(2)/hin(1)+yin(3)*hin(3)/hin(1)+yin(4)*hin(4)/hin(
1)-y(1)*nt*h(1)/hin(1)-y(2)*nt*h(2)/hin(1)-y(3)*nt/hin(1)*h(3)-nt*y(4)/hin(1)*h(
4)+Qdot/hin(1)/ntin; % bilancio di energia - adimensionale
%costruzione dello jacobiano
df11= -nt - k*Mcat/ntin*(P^-0.5*y(2)^2*(y(4)^-3.5 + y(1)*3.5*y(4)^-4.5)
+ P^1.5*y(3)*y(4)^-0.5/2/K);
df12= -k*Mcat/ntin*(P^-0.5*y(1)*(y(4)^-3.5*2*y(2)+y(2)^2*y(4)^-4.5*3.5)
+ P^1.5*y(3)*y(4)^-0.5/K/2);
df13= -k*Mcat/ntin*(P^-0.5*y(1)*y(2)^2*3.5*y(4)^-4.5 - P^1.5/K*y(4)^0.5
+ P^1.5*y(3)*0.5*y(4)^-0.5/K);
df14= -y(1);
df15= -Mcat*1e3/ntin*(k0*p(1)*p(2)^2/p(4)^3.5*Eatt/Rgas/TKin*Tadim^-2*ex
p(-Eatt/Rgas/TKin/Tadim) + k0/K0*(-Eatt/Rgas/TKin+Dheq/Rgas/TKin)*p(4)^0.5*p(3)*
Tadim^-2*exp((-Eatt/Rgas/TKin+Dheq/Rgas/TKin)/Tadim));
df21= -2*Mcat*k/ntin*(P^-0.5*y(2)^2*(y(4)^-3.5+y(1)*3.5*y(4)^-4.5) + P^1
.5*y(3)/K*0.5*y(4)^-0.5);
df22= -nt - 2*Mcat*k/ntin*(P^-0.5*y(1)*(2*y(2)*y(4)^-3.5 + y(2)^2*3.5*y(

4)^-4.5) + P^1.5*y(3)*0.5*y(4)^-0.5/K);
df23= -2*Mcat*k/ntin*(P^-0.5*y(1)*y(2)^2*3.5*y(4)^-4.5 - P^1.5/K*(y(4)^0
.5 - y(3)*0.5*y(4)^-0.5));
df24= -y(2);
df25= -2*1e3*Mcat/ntin*(k0*p(1)*p(2)^2/p(4)^3.5*Eatt/Rgas/TKin*Tadim^-2*
exp(-Eatt/Rgas/TKin/Tadim) + k0*p(4)^0.5*p(3)/K0*(-Eatt/Rgas/TKin+Dheq/Rgas/TKin
)*Tadim^-2*exp((-Eatt/Rgas/TKin+Dheq/Rgas/TKin)/Tadim));
df31= k*Mcat/ntin*(P^-0.5*y(2)^2*(y(4)^-3.5 + y(1)*3.5*y(4)^-4.5) + P^1.
5*y(3)*y(4)^-0.5/2/K);
df32= k*Mcat/ntin*(P^-0.5*y(1)*(y(4)^-3.5*2*y(2)+y(2)^2*y(4)^-4.5*3.5) +
P^1.5*y(3)*y(4)^-0.5/K/2);
df33= -nt + k*Mcat/ntin*(P^-0.5*y(1)*y(2)^2*3.5*y(4)^-4.5 - P^1.5/K*y(4)
^0.5 + P^1.5*y(3)*0.5*y(4)^-0.5/K);
df34= -y(3);
df35= Mcat*1e3/ntin*(k0*p(1)*p(2)^2/p(4)^3.5*Eatt/Rgas/TKin*Tadim^-2*exp
(-Eatt/Rgas/TKin/Tadim) + k0/K0*(-Eatt/Rgas/TKin+Dheq/Rgas/TKin)*p(4)^0.5*p(3)*T
adim^-2*exp((-Eatt/Rgas/TKin+Dheq/Rgas/TKin)/Tadim));
df41= 2*Mcat*k/ntin*(P^-0.5*y(2)^2*(y(4)^-3.5+y(1)*3.5*y(4)^-4.5) + P^1.
5*y(3)/K*0.5*y(4)^-0.5);
df42= 2*Mcat*k/ntin*(P^-0.5*y(1)*(2*y(2)*y(4)^-3.5 + y(2)^2*3.5*y(4)^-4.
5) + P^1.5*y(3)*0.5*y(4)^-0.5/K);
df43= 2*Mcat*k/ntin*(P^-0.5*y(1)*y(2)^2*3.5*y(4)^-4.5 - P^1.5/K*(y(4)^0.
5 - y(3)*0.5*y(4)^-0.5));
df44= -1;
df45= 2*1e3*Mcat/ntin*(k0*p(1)*p(2)^2/p(4)^3.5*Eatt/Rgas/TKin*Tadim^-2*e
xp(-Eatt/Rgas/TKin/Tadim) + k0/K0*(-Eatt/Rgas/TKin+Dheq/Rgas/TKin)*p(4)^0.5*p(3)
*Tadim^-2*exp((-Eatt/Rgas/TKin+Dheq/Rgas/TKin)/Tadim));
df51= -nt*h(1)/hin(1) + nt*h(4)/hin(1);
df52= -nt*h(2)/hin(1) + nt*h(4)/hin(1);
df53= -nt*h(3)/hin(1) + nt*h(4)/hin(1);
df54= -y(1)*h(1)/hin(1) - y(2)*h(2)/hin(1) - y(3)*h(3)/hin(1) - y(4)*h(4
)/hin(1);
df55= TKin*(-y(1)*nt*cpi(1)/hin(1) - y(2)*nt*cpi(2)/hin(1) - y(3)*nt*cpi
(3)/hin(1) - y(4)*nt*cpi(4)/hin(1));
df= [df11
df21
df31
df41
df51

df12
df22
df32
df42
df52

df13
df23
df33
df43
df53

df14
df24
df34
df44
df54

df15;
df25;
df35;
df45;
df55] ;

% attenzione
if det(df)== 0;
disp ('errore: determinante dello jacobiano uguale a zero')
end
% aggiornamento variabile
diff=-df\f';
x=x+diff;
%stima errore
diff=max(abs(diff));
% attenzione
if n==nmax;
disp ('numero massimo di iterazioni raggiunto')
end

a=1-y(1)*nt/0.2; % adimensionale - conversione rispetto al metano


ysch4=y(1)/(1-y(2)); % adimensionale - frazione molare secca metano
ysco2=y(3)/(1-y(2)); % adimensionale - frazione molare secca anidride ca
rbonica
ysh2=y(4)/(1-y(2)); % adimensionale - frazione molare secca idrogeno
x0=x'; %valutazione nuova guess iniziale per il ciclo successivo
end
% costruzione vettori contenenti le variabili
X=[X;a]; % adimensionale - conversione rispetto al metano
Yssch4=[Yssch4;ysch4]; % adimensionale - frazione molare secca metano
Yssco2=[Yssco2;ysco2]; % adimensionale - frazione molare secca anidride carb
onica
Yssh2= [Yssh2;ysh2]; % adimensionale - frazione molare secca idrogeno
ni=[ni;n]; % numero di iterazioni
end
%% sviluppo garfici
Pin=[0.01:0.01:40]; % bar - vettore pressioni totali
subplot(1,3,1),plot(Pin,X); % grafico pressione-conversione
subplot(1,3,2),plot(Pin,Yssch4,Pin,Yssco2,Pin,Yssh2); % grafico pressione-frazio
ni molari secche
subplot(1,3,3),plot(Pin,ni); % grafico pressione-numero di iterazioni per ottene
re il risultato