> restart:#"m15_p05"

> read`../therm_chem.m`:with(therm_chem);with(therm_proc):

[Ateo, Mf, PCI, PCS, eqEQ, eqMIX, eq_fit, get_hgs_data, hgs_r25, nulist, seqEBE]

El análisis volumétrico en base seca de los productos de la combustión de metano en aire da: 10% de CO2, 0,8% de CO, 1,75% de O2 y 87,45% de N2. Se pide calcular:

a) La riqueza de la mezcla empleada.

b) La incertidumbre en los datos.

c) La temperatura de rocío de los gases de escape

Datos:

> su1:="Aire":su2:="H2O":fuel:=CH4:dat:=[xsCO2=0.10,xsCO=0.008,xsO2=0.0175,xsN2=0.8745];

[xsCO2 = .10, xsCO = 0.8e-2, xsO2 = 0.175e-1, xsN2 = .8745]

Eqs. const.:

> Adat:=get_gas_data(su1):Wdat:=get_gas_data(su2),get_liq_data(su2):get_pv_data(su2):dat:=op(dat),op(subs(g=g0,[Const])),Adat,SI2,SI1:eq15_2;eq15_3;eqA0:=Ateo(CH4);

A[0] = `/`(`*`(`+`(u, `*`(`/`(1, 4), `*`(v)), `-`(`*`(`/`(1, 2), `*`(w))), y)), `*`(c21))
phi = `/`(`*`(A[0]), `*`(A))
A[0] = 9.5238095238095238096

a)   La riqueza de la mezcla empleada.

Hay un dato redundante, pues Sum(xi)=1. Como la suma da exactamente 1, lo más probable es que uno de ellos no se haya medido sino calculado de Sum(xi)=1. El enunciado debería cambiarse por "y el resto N2".

> eqMIX(a*CH4+b*(c21*O2+c79*N2)=[2,3,4,6,7]);eqDat0:=xsN2+xsCO2+xsCO+xsO2=1;eqCheck:=subs(dat,%);i:='i':aux_:=sum(delta_[i]*x[Comp[i]],i=1..C_):eqDat1:=subs(x[H2O]=0,dat,xsCO2=x[CO2]/aux_);eqDat2:=subs(x[H2O]=0,dat,xsCO=x[CO]/aux_);eqDat3:=subs(x[H2O]=0,dat,xsO2=x[O2]/aux_);eqDat4:=subs(x[H2O]=0,dat,xsN2=x[N2]/aux_);A=b/a;

`+`(`*`(a, `*`(CH4)), `*`(b, `*`(`+`(`*`(c21, `*`(O2)), `*`(c79, `*`(N2)))))) = `+`(`*`(x[O2], `*`(O2)), `*`(x[N2], `*`(N2)), `*`(x[CO2], `*`(CO2)), `*`(x[H2O], `*`(H2O)), `*`(x[CO], `*`(CO)))
`+`(xsN2, xsCO2, xsCO, xsO2) = 1
1.0000 = 1
.10 = `/`(`*`(x[CO2]), `*`(`+`(x[O2], x[N2], x[CO2], x[CO])))
0.8e-2 = `/`(`*`(x[CO]), `*`(`+`(x[O2], x[N2], x[CO2], x[CO])))
0.175e-1 = `/`(`*`(x[O2]), `*`(`+`(x[O2], x[N2], x[CO2], x[CO])))
.8745 = `/`(`*`(x[N2]), `*`(`+`(x[O2], x[N2], x[CO2], x[CO])))
A = `/`(`*`(b), `*`(a))

Vemos que hay además otros dos dato redundantes porque sólo hay 7 incógnitas (a, b, y las 5 xi), y tenemos 9 exuaciones (los 4 balances atómicos CHON, las 4 eqDati, y Sum(xi)=1).

Si no consideramos xsCO2 ni la eqDat4, se obtendría:

> sol1_:=subs(dat,solve({eqNX,eqBC,eqBH,eqBO,eqBN,eqDat2,eqDat3},{a,b,x[CO2],x[CO],x[H2O],x[N2],x[O2]}));for i from 1 to 4 do eqDat_||i:=subs(sol1_,eqDat||i);od;A_:=subs(sol1_,b/a);phi:=rhs(eqA0)/A_;

{a = 0.89697981039003905892e-1, b = .90701960280930812536, x[CO] = 0.65648323033759375058e-2, x[CO2] = 0.83133148735627968385e-1, x[H2O] = .17939596207800781178, x[N2] = .71654548621935341903, x[O2] =...
.10 = .10130726256983240223
0.8e-2 = 0.80000000000000000001e-2
0.175e-1 = 0.17500000000000000000e-1
.8745 = .87319273743016759777
10.111928856179086170
.94183905556157261995

Si no consideramos xsCO ni la eqDat4, se obtendría:

> sol2_:=subs(dat,solve({eqNX,eqBC,eqBH,eqBO,eqBN,eqDat3,eqDat1},{a,b,x[CO2],x[CO],x[H2O],x[N2],x[O2]}));for i from 1 to 4 do eqDat_||i:=subs(sol2_,eqDat||i);od;A_:=subs(sol1_,b/a);phi:=rhs(eqA0)/A_;

{a = 0.89947089947089947090e-1, b = .90608465608465608466, x[CO] = 0.79365079365079365080e-2, x[CO2] = 0.82010582010582010582e-1, x[H2O] = .17989417989417989418, x[N2] = .71580687830687830689, x[O2] =...
.10 = 0.99999999999999999999e-1
0.8e-2 = 0.96774193548387096774e-2
0.175e-1 = 0.17500000000000000000e-1
.8745 = .87282258064516129033
10.111928856179086170
.94183905556157261995

i.e. la riqueza era del 94%, en cualquier caso. Puede comprobarse que la riqueza es aproximadamente igual al cociente entre la xCO2 real y la xCO2 de la combustión estequiométrica en aire.

b) La incertidumbre en los datos.

Si comparamos las dos soluciones anteriores, el error relativo es:

> Dif:=Dx/x;Dif_:=seq([Comp[i],2*(subs(sol2_,x[Comp[i]])-subs(sol1_,x[Comp[i]]))/(subs(sol2_,x[Comp[i]])+subs(sol1_,x[Comp[i]]))],i=[2,3,4,6,7]);

`/`(`*`(Dx), `*`(x))
[O2, -0.60731983017516180628e-3], [N2, -0.10313215250207177191e-2], [CO2, -0.13595026828733800078e-1], [H2O, 0.27733453160573993578e-2], [CO, .18917915315984383938]

como se ve, la incertidumbre es máxima en la xCO (19%), pero la influencia en el cálculo de la riqueza es despreciable.

De una manera más correcta, la resolución de un sistema de ecuaciones sobredefinido con incertidumbres, i.e. la búsqueda de las incógnitas que mejor aproximen los datos, no debería basarse en un par de selecciones de parámetros retenidos (para poder resolver un sistema determinado, AnnXn=Bn, dando X=A-1B), sino en el ajuste óptimo que se obtiene premultiplicando por la matriz traspuesta de los coeficientes Amn, ATnm. La solución optima es X=(ATA)-1(ATB), y la desviación típica es sigma=sqrt((AX-B)T(AX-B)/(m-1)).

La medida de la composición de los gases de escape es importante para conocer cómo ha sido la combustión. Dicha medida puede hacerse de manera no intrusiva (por análisis espectrométrico), o mediante la toma de una muestra y su análisis (por espectrometría de masas, cromatografía de gases, conductometría selectiva, o por el tradicional método volumétrico de Orsat, atemperando la muestra y absorbiendo el H2O con P2O5, midiendo el volumen, absorbiendo el CO2 (y el SOx si hubiera) con NaOH, midiendo el volumen, absorbiendo el O2 con C6H3(OH)3, midiendo el volumen, absorbiendo el CO con CuCl disuelto en NH4Cl, y midiendo el volumen residual de N2 y Ar).

>

c) La temperatura de rocío de los gases de escape.

> eq_sat:=eq8_2;eq_sat_:=subs(p[v]=pv,x[v,sat]=x[H2O],p=p0,eq_sat);Trocio_:=solve(subs(sol1_,dat,eval(eq_sat_)),T):'Trocio'=evalf(%,2);Trocio=TKC(Trocio_);

x[v, sat] = `/`(`*`(p[v](T)), `*`(p))
x[H2O] = `/`(`*`(pv(T)), `*`(p0))
Trocio = `+`(`*`(0.33e3, `*`(K_)))
Trocio = `+`(`*`(57.72746432869167221, `*`(ºC)))

i.e. si se enfrían los gases de escape, la condensación del vapor de agua comienza al bajar de 58 ºC.

>