> restart:#"m15_p46"

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

Un cierto motor de combustión interna es alimentado con 9 litros/hora de n-octano. Sabiendo que el rendimiento energético del motor es del 30%, y que los gases salen a 600 K con una composición en base seca de 13% CO2, 3% CO y 1% H2, se pide:
a) Balances másicos, gasto de aire y de gases de escape.
b) Balance energético y potencia mecánica desarrollada.  
c) Pérdidas de energía térmica y química por el escape.

Datos:

> su1:="Aire":su2:="H2O":fuel:=C8H18:dat:=[Vf=0.009/3600*m_^3/s_,xsCO2=0.13,xsCO=0.03,xsH2=0.01,Ts=600*K_,eta=0.30]:evalf(%,2);

[Vf = `+`(`/`(`*`(0.25e-5, `*`(`^`(m_, 3))), `*`(s_))), xsCO2 = .13, xsCO = 0.3e-1, xsH2 = 0.1e-1, Ts = `+`(`*`(0.60e3, `*`(K_))), eta = .30]

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("C8H18"):

a) Balances másicos, gasto de aire y de gases de escape.

Empecemos suponiendo combustión completa.

> eqBM:=mf+ma=mp;mf_:=subs(Fdat,dat,Vf*rho):mf=evalf(%,2);eq_:=expand(eq_fit(fuel+a*(c21*O2+c79*N2)=b*CO2+c*H2O+d*N2));eq15_2;eqA0:=Ateo(fuel);A0m_:=evalf(rhs(eqA0)*subs(dat,M)/rhs(Mf(fuel)));ma:=A0m*mf;ma_:=A0m_*mf_;mp_:=evalf(mf_+ma_,2);PCI_:=PCI(eq_);PCIm_:=PCI_/rhs(Mf(fuel));Qf:='mf*PCI';Qf_:=subs(dat,mf_*PCIm_);

`+`(mf, ma) = mp
mf = `+`(`/`(`*`(0.18e-2, `*`(kg_)), `*`(s_)))
`+`(C8H18, `*`(`/`(25, 2), `*`(O2)), `*`(a, `*`(c79, `*`(N2)))) = `+`(`*`(8, `*`(CO2)), `*`(9, `*`(H2O)), `*`(a, `*`(c79, `*`(N2))))
A[0] = `/`(`*`(`+`(u, `*`(`/`(1, 4), `*`(v)), `-`(`*`(`/`(1, 2), `*`(w))), y)), `*`(c21))
A[0] = 59.52
15.14
`*`(A0m, `*`(mf))
`+`(`/`(`*`(0.2662e-1, `*`(kg_)), `*`(s_)))
`+`(`/`(`*`(0.29e-1, `*`(kg_)), `*`(s_)))
`+`(`/`(`*`(0.5074e7, `*`(J_)), `*`(mol_)))
`+`(`/`(`*`(0.4451e8, `*`(J_)), `*`(kg_)))
`*`(mf, `*`(PCI))
`+`(`*`(0.7825e5, `*`(W_)))

i.e. entran 0.0018 kg/s de combustible y, suponiendo combustión completa, 0.027 kg/s de aire, saliendo 0.029 kg/s de productos. La potencia térmica disponible (PCI) sería de 78 kW.

Pero la combustión no es completa y el aire no será el estequiométrico.

> eq1_:=eqMIX(a*fuel+b*(c21*O2+c79*N2)=[3,4,6,7,8]);xsN2:=1-xsCO2-xsCO-xsH2;xsN2_:=subs(dat,xsN2);i:='i':aux_:=subs(x[H2O]=0,sum(delta_[i]*x[Comp[i]],i=1..C_));eqDat1:=subs(dat,xsCO2=x[CO2]/aux_);eqDat2:=subs(dat,xsCO=x[CO]/aux_);eqDat3:=subs(dat,xsH2=x[H2]/aux_);eqDat4:=subs(dat,xsN2=x[N2]/aux_);sol1_:=subs(dat,solve({eqNX,eqBC,eqBH,eqBO,eqBN,eqDat2,eqDat3},{a,b,x[CO2],x[CO],x[H2O],x[N2],x[H2]}));

`+`(`*`(a, `*`(C8H18)), `*`(b, `*`(`+`(`*`(c21, `*`(O2)), `*`(c79, `*`(N2)))))) = `+`(`*`(x[N2], `*`(N2)), `*`(x[CO2], `*`(CO2)), `*`(x[H2O], `*`(H2O)), `*`(x[CO], `*`(CO)), `*`(x[H2], `*`(H2)))
`+`(1, `-`(xsCO2), `-`(xsCO), `-`(xsH2))
.83
`+`(x[N2], x[CO2], x[CO], x[H2])
.13 = `/`(`*`(x[CO2]), `*`(`+`(x[N2], x[CO2], x[CO], x[H2])))
0.3e-1 = `/`(`*`(x[CO]), `*`(`+`(x[N2], x[CO2], x[CO], x[H2])))
0.1e-1 = `/`(`*`(x[H2]), `*`(`+`(x[N2], x[CO2], x[CO], x[H2])))
.83 = `/`(`*`(x[N2]), `*`(`+`(x[N2], x[CO2], x[CO], x[H2])))
{a = 0.1663e-1, b = .9081, x[CO] = 0.2577e-1, x[CO2] = .1073, x[H2] = 0.8590e-2, x[H2O] = .1411, x[N2] = .7173}

Había un dato redundante. Hemos quitado xsCO2; si hubieramos quitado xsO2 podemos estimar la incertidumbre en los datos:

> sol2_:=subs(dat,solve({eqNX,eqBC,eqBH,eqBO,eqBN,eqDat1,eqDat3},{a,b,x[CO2],x[CO],x[H2O],x[N2],x[H2]}));Dif:=Dx/x;Dif_:=evalf(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=[3,4,6,7,8]));

{a = 0.1646e-1, b = .9124, x[CO] = 0.1979e-1, x[CO2] = .1119, x[H2] = 0.8608e-2, x[H2O] = .1395, x[N2] = .7208}
`/`(`*`(Dx), `*`(x))
[N2, 0.4868e-2], [CO2, 0.4198e-1], [H2O, -0.1140e-1], [CO, -.2626], [H2, 0.2094e-2]

la incertidumbre es máxima en la xCO (27%), y es debida a la medida o al redondeo a una cifra.

La riqueza real es:

> A=b/a;A_:=subs(sol1_,b/a);eq15_3;phi_:=rhs(eqA0)/A_:phi=evalf(%);ma:='A0m*mf/phi';ma_:=A0m_*mf_/phi_:'ma'=evalf(%,2);mp_:=evalf(mf_+ma_);

A = `/`(`*`(b), `*`(a))
54.61
phi = `/`(`*`(A[0]), `*`(A))
phi = 1.090
`/`(`*`(A0m, `*`(mf)), `*`(phi))
ma = `+`(`/`(`*`(0.24e-1, `*`(kg_)), `*`(s_)))
`+`(`/`(`*`(0.2618e-1, `*`(kg_)), `*`(s_)))

de donde se deduce que la aproximación de combustión completa da un 10% de error.

b) Balance energético y potencia mecánica desarrollada.

> eqBE:=Qfuel=Pmec+Qloss;eqBE:=Qfuel=Pmec+Qexhaust+Qrefrig;eqeta:=eta=Pmec/(mf*PCIm);Pmec_:=subs(dat,Qf_*eta);

Qfuel = `+`(Pmec, Qloss)
Qfuel = `+`(Pmec, Qexhaust, Qrefrig)
eta = `/`(`*`(Pmec), `*`(mf, `*`(PCIm)))
`+`(`*`(0.2348e5, `*`(W_)))

i.e. la Pmec es de 23 kW y, conforme se define eta, se calcula con el PCI de la combustión completa.

c) Pérdidas de energía térmica y química por el escape.

La energía química perdida por el escape será mf(Qfcompleta-Qfreal):

> PCI_:=subs(sol1_,PCI(eq1_)/a);PCIm_:=PCI_/rhs(Mf(fuel));Qf__:=subs(dat,mf_*PCIm_);DQf_:=Qf_-Qf__;

`+`(`/`(`*`(0.4512e7, `*`(J_)), `*`(mol_)))
`+`(`/`(`*`(0.3958e8, `*`(J_)), `*`(kg_)))
`+`(`*`(0.6958e5, `*`(W_)))
`+`(`*`(0.867e4, `*`(W_)))

i.e. la potencia térmica disponible sería de 70 kW y no de 78 kW de la combustión completa, mientras que las pérdidas térmicas por el escape son las debidas a la temperatura, Qte=mp*cp*(600 K-298 K), y las de refrigeración el resto.

> Qte:=mp*c[p]*(Ts-T25);Qte_:=subs(mp=mp_,dat,Qte);Qte__:=subs(dat,(Ts-T25)*(mf_/rhs(Mf(fuel)))*subs(sol1_,cpComp_,sum(x[Comp[i]]*c[p,Comp[i]]*delta[i]/a,i=1..C_)));Qrefr:=Qf_real-Pmec-Qte;Qrefr_:=Qf__-Pmec_-Qte__;

`*`(mp, `*`(c[p], `*`(`+`(Ts, `-`(T25)))))
`+`(`*`(7938., `*`(W_)))
`+`(`*`(0.1064e5, `*`(W_)))
`+`(Qf_real, `-`(Pmec), `-`(`*`(mp, `*`(c[p], `*`(`+`(Ts, `-`(T25)))))))
`+`(`*`(0.3546e5, `*`(W_)))

i.e. de los 78 kW disponibles a la entrada, 23 kW salen por el eje, 35 por las refrigeraciones, y los otros 20 kW por el escape (11 kW térmicos y 9 kW químicos).

También se podría haber calculado 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=TKC(Trocio_);

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

>