Sunteți pe pagina 1din 9

II.2. 4.

Reactor continuu cu amestecare perfectă


In reactorul cu amestecare perfectă din figura II.3 are loc reacţia (exotermă):
k
A + B→C (II.2 - a)

Reactanţii A şi B intră în reactor cu debitele FA0 şi respectiv FB0, având în fluxurile de


intrare concentraţiile CA0 şi respectiv CB0, temperatura ambelor fluxuri fiind aceeaşi,
T0. Reactorul este prevăzut cu manta de răcire (debitul apei Fm, temperatura la intrare
Tmi, temperatura la ieşire Tme).

Figura II.3 Reactorul continuu cu amestecare perfecta

Modelul matematic in regim dinamic :

- bilanţul total de materiale. Pentru un interval de timp ∆t :


Vt + ∆t − Vt = FA0 ⋅ ∆t + FB 0 ⋅ ∆t − F ⋅ ∆t

Prin împărţire cu ∆t şi trecere la limită se obţine ( V = S ⋅ H ) :

dH
S⋅ = F A 0 + FB 0 − F (II.2.1)
dt

- Bilanţurile de materiale pe componenţi :

d (V ⋅ C A )
= FA 0 ⋅ C A 0 − V ⋅ k ⋅ C A ⋅ C B − F ⋅ C A (II.2.2)
dt

d (V ⋅ C B )
= FB 0 ⋅ C B 0 − V ⋅ k ⋅ C A ⋅ C B − F ⋅ C B (II.2.3)
dt

d (V ⋅ C C )
= V ⋅ k ⋅ C A ⋅ C B − F ⋅ CC (II.2.4)
dt
- Bilanţul termic în reactor :

d(V ⋅T)
ρ ⋅ cs ⋅ = k ⋅ CA ⋅ CB ⋅ (− ∆HR ) ⋅V + FA0 ⋅ cs ⋅ ρA ⋅T0 + FB0 ⋅ cs ⋅ ρB ⋅T0 − F ⋅ ρ ⋅ cs ⋅T −αT ⋅ A⋅ (T −Tm) (II.2.5a)
dt

Pentru a evita scrierea a încă unei ecuaţii de bilanţ şi pentru manta, dacă se
consideră că lichidul din manta se gaseşte la o temperatură care este media între
temperatura de intrare şi cea de ieşire, fluxul termic transferat între reactor şi manta
se poate exprima doar în funcţie de debitul şi temperatura de intrare a apei de răcire:

2 ⋅ Fm ⋅ ρ m ⋅ c sm
Q = α T ⋅ A ⋅ K m ⋅ (T − Tmi ) unde : Km =
2 ⋅ Fm ⋅ ρ m ⋅ c sm + α T ⋅ A

Deci, dinamica temperaturii în reactor poate fi scrisă în forma:

d (V ⋅ T )
ρ ⋅ cs ⋅ = k ⋅ C A ⋅ CB ⋅ (− ∆H R ) ⋅ V + FA0 ⋅ cs ⋅ ρ A ⋅ T0 + FB 0 ⋅ cs ⋅ ρ B ⋅ T0 − F ⋅ ρ ⋅ cs ⋅ T
dt (II.2.5)
− αT ⋅ A ⋅ K m ⋅ (T − Tmi )

a). Regimul staţionar

Pentru a realiza simularea în regim dinamic, este necesar să cunoaştem valorile


staţionare iniţiale ale parametrilor care caracterizează procesul. In cazul de mai sus,
trebuie să stabilim valorile concentraţiilor CA, CB, CC şi temperatura T pornind de la
valorile cunoscute ale debitelor FA0 şi FB0, ale concentraţiilor CA0 şi CB0, temperaturilor
T0 şi Tmi şi debitului apei de răcire Fm.
Explicitand expresia constantei de viteză de reacţie, ecuaţiile in regim staţionar al
reactorului sunt (E – energia de activare, TK, temperatura în grade Kelvin):
E

R ⋅TK
F ⋅ CA + z ⋅ e ⋅ V ⋅ C A ⋅ C B − F A0 ⋅ C A 0 = 0 (II.2.6)

E

R⋅TK
F ⋅ CB + z ⋅ e ⋅ V ⋅ C A ⋅ C B − FB 0 ⋅ C B 0 = 0 (II.2.7)

E

R⋅TK
z⋅e ⋅ V ⋅ C A ⋅ C B − F ⋅ CC = 0 (II.2.8)

Considerând densitatea şi căldura specifică constante, bilanţul termic devine:


E

− z⋅e R⋅TK
⋅ V ⋅ CA ⋅ CB ⋅ (− ∆H ) ⋅V + F ⋅ ρ ⋅ cs ⋅ (T − T0 ) + αT ⋅ A ⋅ K ⋅ (T − Tmi ) = 0 (II.2.9)

In relaţiile de mai sus, debitul F este suma debitelor FA0 şi FB0.


S-a ajuns deci la rezolvarea unui sistem neliniar de 4 ecuaţii; având însa în
vedere faptul că în 3 din cele 4 ecuaţii nu intervine CC, sistemul se reduce la 3 ecuaţii
neliniare, concentraţia molară a lui C putând fi calculată ulterior din relaţia II.2.8.
II.2.4sn SOLUTIONAREA SISTEMELOR DE ECUATII ALGEBRICE NELINIARE

Una din cele mai cunoscute metode de soluţionare a ecuaţiilor neliniare este
metoda Newton-Raphson, metodă bazată pe proprietăţile tangentei la curbă.
Algoritmul Newton[13], prezentat în continuare, se bazează pe generalizarea metodei
Newton – Raphson pentru sistemele de ecuaţii neliniare.

I.3.1 Algoritmul Newton

a. Cazul unui sistem neliniar de două variabile .


Fie sistemul :

 f1 (x 1 , x 2 ) = 0
 (II.2.10)
 f 2 (x 1 , x 2 ) = 0

si fie x10 si x 02 aproximaţia iniţială a variabilelor x 1 şi x 2 .

Noile aproximaţii :

x 11 = x 10 + ∆x 10
x 12 = x 02 + ∆x 02

trebuie astfel alese încât ele să apropie de zero valorile funcţiilor f1 sif 2 :

 f1 (x 11 , x 12 ) = 0

 f 2 (x 11 , x 12 ) = 0
adică :
 f1 (x 10 + ∆x 10 , x 02 + ∆x 02 ) = 0
 (II.2.11)
 f 2 (x 10 + ∆x 10 , x 02 + ∆x 02 ) = 0

Dezvoltând sistemul II.2.10 în serie Taylor, se obţine:


0 0
 ∂f   ∂f 
f 1 ( x , x ) +  1  .∆x10 +  1
0
1
0
2
 .∆x 20 + ... = 0
 ∂x1   ∂x 2 
0 0
(II.2.12)
 ∂f   ∂f 
f 2 (x , x ) +  2  .∆x10 +  2
0
1
0
2
 .∆x 20 + ... = 0
 ∂x1   ∂x 2 

Prin neglijarea termenilor ce conţin ∆x 10 si∆x 02 la puteri mai mari decât 1 ,se obţine
un sistem de două ecuaţii liniare cu două necunoscute ∆x10 si∆x 20 .Prin rezolvarea
sistemului ,se obţin noile aproximări ale variabilelor: x 11 six 12 . Procedeele se repetă până
când se atinge convergenţa .Unul din criteriile de convergenţă utilizate este :
(∆x ) + (∆x )
k 2
1
k 2
2 <ε (II.2.13)
unde k este numărul iteraţiei iar ε este o valoare pozitivă aleasă în funcţie de
precizia dorită de calcul.

b. Cazul unui sistem de „n” ecuaţii.

Fie: f i ( x 1 , x 2 , x 3 , .... , x n ) = 0 i=1,2,3,....,n sistemul de n ecuaţii neliniare.

In forma matricială:

ϕ (X)=0 (II.2.14)
T T
unde ϕ = [ f1 , f 2 , .... f n ] ,X=[ x 1 , x 2 , ... x n ]

Fie X k +1 valoarea lui X la a « k+1 » iteraţie:

X k +1 = X k + ∆X k

Daca X k +1 este valoarea cautată, atunci ϕ X k +1 = 0 ( ) sau altfel :

(
ϕ X k + ∆X k = 0 ) (II.2.15)

Prin dezvoltare în serie Taylor, se obţine:

( ) ( )
ϕ X k + ∆X k = ϕ X k + ∇ϕ X k . ∆X k +.... ( ) (II.2.16)

unde ∇ este operatorul derivatelor parţiale de ordinul întâi în raport cu


( )
2
componentele lui X . Prin neglijarea termenilor ce conţin ∆X k şi superiori,se obţine,
ţinând cont de (i.2.16):

( )
ϕ X k + J k .∆X k = 0 (II.2.17)

unde J k = ∇ϕ X k ( ) este numită matrice Jacobiana:

 ∂f1 ( X ) ∂f1 ( X ) 
 ∂x ................. ∂x 
 1 n

J k = ....................................... 
 
 ∂f n ( X ) ................. ∂f n ( X ) 
 ∂x1 ∂x n 
Deci :
∆X k = − J k−1 .ϕ X k ( )
Prin rezolvarea lui (II.2.17) ,se obţine aproximaţia „mai bună”:

X k +1 = X k + ∆X k sau

X k +1 = X k − J −k1ϕ X k ( ) (II.2.19)
Dezavantajele principale ale metodei:
- soluţia poate să nu conveargă dacă aproximaţia iniţială nu este bună.
-metoda cere calculul derivatelor fiecărei funcţii în raport cu fiecare din variabile.
Exemplu : să se rezolve sistemul de ecuaţii neliniare :

x 3 + x ⋅ y 2 = 9.375
(II.2.20)
x ⋅ y + y2 = 7

In acest caz, matricea Jacobiana este :

3 ⋅ x 2 + y 2 2⋅ x⋅ y 
J =  (II.2.21)
 y x + 2 ⋅ y

iar ca vector de start vom utiliza X=[1 1]T.


Vectorul funcţiilor şi matricea Jacobiana se definesc fiecare în câte un fişier de tip
funcţie .

a) Vectorul funcţiilor « fi » ale sistemului de ecuaţii :

function F=fsysn2(X)
x=X(1);y=X(2);
F=zeros(2,1);
F(1)=x^3+x*y^2-9.375;
F(2)=x*y+y^2-7;

b). Matricea Jacobiana :

function JF=jfsysn2(X)
x=X(1);y=X(2);
JF=zeros(2,2);
JF(1,:)=[3*x^2+y^2 2*x*y];
JF(2,:)=[y x+2*y];

Ecuaţia specifică algoritmului Newton (II.2.19) este implementată printr-un


ciclu « while », ieşirea din ciclu fiind condiţionată de atingerea toleranţei admise :

function [vx,it]=nrsysn2(X,F,JF,n,tol)
it=0;vx=X;
fr=feval(F,vx);
while norm(fr)>tol
jr=feval(JF,vx);
vx1=vx-jr\fr;vx=vx1;
fr=feval(F,vx);
it=it+1;
end;

Rutina de mai sus utilizează două noi instrucţiuni MATLAB :


- feval(F,vx) - evaluează vectorul F (sau matricea JF) utilizând valorile din
vectorul « vx » ;
- norm(fr) – returnează cea mai mare valoare absoluta din vectorul « fr ».
Apelarea rutinei Newton se face precizând vectorul de start şi fişierele unde sunt
definite vectorul « F » şi matricea Jacobiana « JF » :
[solsis iteratii]=nrsysn2([1 1]','fsysn2','jfsysn2',2,0.0001);
x=solsis(1);
y=solsis(2);
disp('solutia sistemului de ecuatii neliniare');
disp('x, y =');disp([x y]);
disp('numar iteratii:');disp(iteratii);

iată şi rezultatul apelării :


» sisnl
soluţia sistemului de ecuaţii neliniare
x, y =
1.5000 2.0000
număr iteraţii:
11

NOTA : alţi algoritmi, cum ar fi de exemplu algoritmul Broyden şi algoritmul


Levenberg-Marquart evită definirea Jacobianului prin tehnici de evaluare a acestuia,
tehnici specifice fiecărui algoritm.

Exemplu de utilizare a solverului « fsolve » al toolbox-ului de « optimizări »:


% Solutionarea sistemului de ecuatii neliniare prin algoritmul
% LEVENBERG – MARQUARDT
% v0 – vectorul de start
v0=[0.5 5]';
options=optimset('LargeScale','off','LevenbergMarquardt','on',...
'Display','iter','TolX',1e-6,'TolFun',1e-6);
solsis=fsolve('fsys2',v0,options);
x=solsis(1);
y=solsis(2);
disp('solutia sistemului de ecuatii neliniare');
disp('x, y =');disp([x y]);
Solutionarea numerica a modelului matematic in regim stationar pentru reactorul
cu amestecare perfecta

Pentru rezolvarea numerică a sistemului (II.2.6, II.2.7, II.2.9), se poate opta pentru
algoritmul Newton – Raphson. Vectorul funcţiilor ce constituie sistemul de ecuaţii este :

 −
E
R⋅T

F ⋅ C A + z ⋅ e K
⋅V ⋅ CA ⋅ CB − FA0 ⋅ CA0 
 E 
Fs = F ⋅ CB + z ⋅ e R⋅T ⋅V ⋅ CA ⋅ CB − FB0 ⋅ CB0 

K
(II.4.72)
 
 −
E

F ⋅ ρ ⋅ cs ⋅ (T − T0 ) + αT ⋅ A ⋅ Km ⋅ (T − Tmi ) − z ⋅ e R⋅T ⋅ V ⋅ CA ⋅ CB ⋅ (− ∆H R )
 

Matricea Jacobiana a sistemului de ecuaţii neliniare este constituită din derivatele în raport cu
necunoscutele CA, CB si T ale ecuaţiilor ce constituiesc vectorul F:

 ∂Fs (1) ∂Fs (1) ∂Fs (1) 



 ∂c A ∂c B ∂T 
 ∂F ( 2 ) ∂Fs (2) ∂Fs (2) 
J Fs = s (II.4.74)
∂c A ∂c B ∂T 
 
 s (3)
∂ F ∂Fs (3) ∂Fs (3) 
 ∂c A ∂c B ∂T 

Dacă cele trei necunoscute se reunesc într-un vector Xv,

C A 
 
X v = C B  (II.4.75)
 T 

algoritmul Newton-Raphson de soluţionare a sistemului se bazează pe relaţia:


[ ]
−1
X vk +1 = X vk − J Fs ( X vk ) ⋅ Fs ( X vk ) (II.4.76)

Exemplu numeric:

Reactorul are urmatoarele caracteristici: diametrul de 1 metru, înălţimea


mantalei de1 metru ( suprafaţa de schimb de caldură fiind de 3,925 m2 ) , volumul de
lichid în regim staţionar 0,785 m3 , debitele de alimentare de 1m3/h ( reactantul A) şi
respectiv 2 m3/h (reactantul B), concentraţiile fiind CA0=6 kmol/m3 şi respectiv CB0=3
kmol/m3. Entalpia de reactie (exotermă) este de 70000 kJ/kmol iar energia de activare
de 30000 kJ/kmol.
Redăm mai jos programul principal, program care apelează rutina Newton –
Raphson, care, la rândul ei, apelează funcţiile MATLAB care definesc sistemul de
ecuaţii neliniare (rsrap) şi matricea Jacobiana (jrsrap). Rutina newtonmv foloseşte
drept soluţie de start valorile: CA=0,7; CB=0,7; TK= 315 °K. Calculul succesiv al
soluţiilor se opreşte când se atinge toleranţa de 0,0001.
% REACTOR CONTINUU CU AMESTECARE PERFECTA - REGIM STATIONAR
% Sistemul de ecuatii neliniare se rezolva prin
% algoritmul NEWTON-RAPHSON
% Se apeleaza rutina newtonmw, care, la randul ei, apeleaza
% functiile rsrap si jrsrap
global dhr z t0 tmi atrt alfat ereact roa rob roc csa csb csc v global ca0 cb0 Fa Fb F Fm km
v=.785;ca0=6;cb0=3;Fa=1;Fb=2;Fm=3;F=Fa+Fb;
dhr=-70000;z=500000;t0=22;tmi=20;atrt=3.925;
alfat=2800;ereact=30000;
roa=1000;rob=1000;roc=1000;csa=4;csb=4;csc=4;
km=2*Fm*1000*4.18/(2*Fm*1000*4.18+alfat*atrt);
[solsis, iter]=newtonmv([.7 .7 315]','rsrap','jrsrap',3,.0001);
ca=solsis(1);
cb=solsis(2);
ts=solsis(3)-273.15;
cc=z*exp(-ereact/(8.31*solsis(3)))*v*ca*cb/F;
disp('valorile de regim stationar: ');
disp('ca=');disp(ca);disp('cb=');disp(cb);
disp('temperatura=');disp(ts);
disp('cc=');disp(cc);
disp('numar iteratii=');disp(iter);

function [xv,it]=newtonmv(vx,fs,jfs,n,tol)
global dhr z t0 tmi atrt alfat ereact roa rob roc csa csb csc v global ca0 cb0 Fa Fb F Fm km
it=0;xv=vx;
fr=feval(fs,xv);
disp('prima evaluare a lui fs este');disp(fr);pause;
while norm(fr)>tol
jr=feval(jfs,xv);
xv1=xv-jr\fr;xv=xv1;
fr=feval(fs,xv);
it=it+1;
end;
function fs=rsrap(vx)
global dhr z t0 tmi atrt alfat ereact roa rob roc csa csb csc v ca0 cb0 Fa Fb F Fm km
ca=vx(1);cb=vx(2);tk=vx(3);
fs=zeros(3,1);
fs(1)=F*ca+z*exp(-ereact/(8.31*tk))*v*ca*cb-Fa*ca0;
fs(2)=F*cb+z*exp(-ereact/(8.31*tk))*v*ca*cb-Fb*cb0;
fs(3)=F*roc*csc*(tk-t0-273)+alfat*atrt*km*(tk-tmi-273)-z*exp(ereact/(8.31*tk))*v*ca*cb*(-dhr);

function jfs=jrsrap(vx);
global dhr z t0 tmi atrt alfat ereact roa rob roc csa csb csc v global ca0 cb0 Fa Fb F Fm km
ca=vx(1);cb=vx(2);tk=vx(3);
jfs=zeros(3,3);
jfs(1,:)=[F+z*exp(-ereact/(8.31*tk))*v*cb z*exp(-ereact/(8.31*tk))*v*ca
z*exp(-ereact/(8.31*tk))*v*ca*cb*(ereact/(8.31*tk^2))];
jfs(2,:)=[z*exp(-ereact/(8.31*tk))*v*cb F+z*exp(-ereact/(8.31*tk))*v*ca
z*exp(-ereact/(8.31*tk))*v*ca*cb*(ereact/(8.31*tk^2))];
jfs(3,:)=[-z*exp(-ereact/(8.31*tk))*v*cb*(-dhr) -z*exp(-ereact/(8.31*tk))*v*ca*dhr
F*roc*csc+alfat*atrt*km-*exp(-ereact/(8.31*tk))*v*ca*cb*dhr*(ereact/(8.31*tk^2))] ;

Un alt exemplu de utilizare a algoritmului Levenberg-Marquart este prezentat în cazul regimului staţionar al unei coloane de distilare.

S-ar putea să vă placă și