> restart:#"m15_p48"

> 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]

Para un estudio de contaminantes de un quemador, se desea calcular la composición de salida cuando se quema una mezcla rica de gas natural (supóngase metano), de riqueza 1,25. En particular, para una temperatura de salida de 1800 K, se pide:
a) Relación aire/combustible estequiométrica, en bases másica y molar.
b) Fracciones molares a la salida sabiendo que aparece CO.  
c) Fracciones molares a la salida sabiendo que aparece también H2.  
d) Temperatura de rocío a la salida.

Datos:

> su1:="Aire":su2:="H2O":fuel:=CH4:dat:=[phi=1.25,Ts=1800*K_];

[phi = 1.25, Ts = `+`(`*`(1800, `*`(K_)))]

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:Fdat:=get_liq_data("CH4"):Mf(fuel);

M = `+`(`/`(`*`(0.160e-1, `*`(kg_)), `*`(mol_)))

a) Relación aire/combustible estequiométrica, en bases másica y molar.

> eqA0:=Ateo(fuel);A0m_:=rhs(eqA0)*subs(Adat,M)/rhs(Mf(fuel));

A[0] = 9.524
17.26

b) Fracciones molares a la salida sabiendo que aparece CO.  

> eq1_:=eqMIX(a*fuel+b*(c21*O2+c79*N2)=[3,4,6,7]);eqDat:=b/a=A[0]/phi;eqDat_:=b/a=subs(dat,rhs(eqA0)/phi);sol1_:=subs(dat,solve({eqNX,eqBC,eqBH,eqBO,eqBN,eqDat_},{a,b,x[CO2],x[CO],x[H2O],x[N2]}));

`+`(`*`(a, `*`(CH4)), `*`(b, `*`(`+`(`*`(c21, `*`(O2)), `*`(c79, `*`(N2)))))) = `+`(`*`(x[N2], `*`(N2)), `*`(x[CO2], `*`(CO2)), `*`(x[H2O], `*`(H2O)), `*`(x[CO], `*`(CO)))
`/`(`*`(b), `*`(a)) = `/`(`*`(A[0]), `*`(phi))
`/`(`*`(b), `*`(a)) = 7.619
{a = .1109, b = .8449, x[CO] = 0.8872e-1, x[CO2] = 0.2218e-1, x[H2O] = .2218, x[N2] = .6675}

c) Fracciones molares a la salida sabiendo que aparece también H2.

> eq:=eq_fit(CO+H2O=CO2+H2);eqEQ_:=evalf(subs(T=Ts,dat,eqEQ(eq)));eq1_:=eqMIX(a*fuel+b*(c21*O2+c79*N2)=[3,4,6,7,8]);sol1_:=subs(dat,fsolve(subs(dat,{eqNX,eqBC,eqBH,eqBO,eqBN,eqDat_,eqEQ_}),{a,b,x[CO2],x[CO],x[H2O],x[N2],x[H2]},{x[H2]=0..1,x[CO]=0..1}));

`+`(CO, H2O) = `+`(CO2, H2)
`/`(`*`(x[CO2], `*`(x[H2])), `*`(x[H2O], `*`(x[CO]))) = 0.9704e-1
`+`(`*`(a, `*`(CH4)), `*`(b, `*`(`+`(`*`(c21, `*`(O2)), `*`(c79, `*`(N2)))))) = `+`(`*`(x[N2], `*`(N2)), `*`(x[CO2], `*`(CO2)), `*`(x[H2O], `*`(H2O)), `*`(x[CO], `*`(CO)), `*`(x[H2], `*`(H2)))
{a = .1109, b = .8448, x[CO] = 0.6333e-1, x[CO2] = 0.4755e-1, x[H2] = 0.2538e-1, x[H2O] = .1964, x[N2] = .6674}

Si en vez de usar la aproximación lineal lnK=a+b/T, se mira en tablas más precisas (e.g. en la "Termodinámica" de K. Wark), se obtendría un valor de K=0,26 en vez de K=0,10, lo que variaría en un 10% los resultados, que no es mucho comparado con el ahorro de esfuerzo.

d) Temperatura de rocío en la salida.

> 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=TKC(Trocio_);

x[v, sat] = `/`(`*`(p[v](T)), `*`(p))
x[H2O] = `/`(`*`(pv(T)), `*`(p0))
`+`(`*`(332.8, `*`(K_)))
Trocio = `+`(`*`(59.6, `*`(?C)))

>