On considère la réaction suivante en phase gazeuse :
On suppose que la réaction s'effectue à pression constante, avec des proportions initiales stoechiométriques (2 moles d'eau pour 1 mole de méthane). En écrivant la loi d'action de masse pour des gaz parfaits, on obtient l'équation vérifiée par l'avancement (x) à l'équilibre :
où P0=1 bar et K0(T) est la constante d'équilibre pour la température finale du mélange.
Avec le module scilab décrit ici, on calcule l'enthalpie standard et l'entropie standard de réaction :
getf('../equilibre/thermochim.sci') data=readData('../equilibre/thermodata.txt'); [DH,DS]=reaction(data,'CH_4(g)+2*H_2O(g)=CO_2(g)+4*H_2(g)')
164.94 173.82001
La réaction est endothermique, avec une influence favorable de l'augmentation de température. Traçons le logarithme de la constante d'équilibre en fonction de la température :
plotA=scf(); plotK(DH,DS,300,1500,100)Figure pleine page
La température d'inversion est :
Ti=DH*1e3/DS
948.91264
À T=1100 K, la constante d'équilibre est :
K1=constanteK(DH,DS,1100)
17.68984
La fonction suivante calcule l'avancement en résolvant l'équation polynomiale avec la fonction roots. On retient la racine comprise entre 0 et 1.
function y=avancement(T,P) x=poly(0,'x'); p=(4*x)^4*x-constanteK(DH,DS,T)/P^2*(2-2*x)^2*(1-x)*(3+2*x)^2; r=roots(p); a=0 for i=1:length(r), if imag(r(i))==0 then if ((real(r(i))<1)&(real(r(i))>0)) then a=r(i) end, end, end, y=a endfunction
Courbe donnant l'avancement en fonction de la température (1 bar et 10 bar):
n=100; Tmin=500; Tmax=1500; temp=[Tmin:(Tmax-Tmin)/(n-1):Tmax]; a1=temp; a2=temp; for i=1:n, a1(i)=avancement(temp(i),1); a2(i)=avancement(temp(i),10); end
plotB=scf(); plot2d(temp,a1,style=21) plot2d(temp,a2,style=9) legend(['1 bar';'10 bar']) xtitle('Avancement','T (K)','x')Figure pleine page
Pour une température finale de 1100 K et une pression de 1 bar, lavancement est
x1=avancement(1100,1)
0.6906227
On suppose que la réaction est effectuée de manière isobare et adiabiatique. Soit Ti la température initiale du mélange. La variation d'enthalpie du mélange est nulle, ce qui donne l'équation :
où désigne la capacité thermique du mélange final. La température finale TF et l'avancement x sont inconnus. Pour déterminer la solution, on trace la température finale en fonction de l'avancement puis on repère l'intersection avec la courbe d'avancement en fonction de la température.
Voici un exemple pour une température initiale de 1800 K :
function T=Tfinale(Ti,x) T=Ti-x*DH*1e3/(35*(1-x)+33.58*2*(1-x)+37.11*x+29*4*x) endfunction Ti=1800 n=10; av=[0:1/(n-1):1]; Tf=av; for i=1:n, Tf(i)=Tfinale(Ti,av(i)); end
plotC=scf(); plot2d(Tf,av,style=21) plot2d(temp,a1) legend(['Bilan H','Equilibre']) xtitle('Avancement','T(K)','x')Figure pleine page
La température finale est 1030 K et l'avancement environ 0.6