> restart:#"m16_p03"

> read`../therm_eq.m`: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]

En una cámara cerrada y rígida hay inicialmente 1 mol de CO y 2 mol de O2 a 25 °C y 200 kPa., y se inicia la reacción. Se pide:

a) Calcular la presión y temperatura de combustión adiabática y la composición de equilibrio.

b) Sabiendo que al cabo de cierto tiempo la temperatura es de 1200 K, calcular la presión, la composición de equilibrio y el calor intercambiado.

Datos:

> su1:="Aire":su2:="H2O":dat:=[Mf=0.028*kg_/mol_,nCO=1*mol_,nO2=2*mol_,T0=298*K_,p1=200e3*Pa_,Ts=1200*K_];

[Mf = `+`(`/`(`*`(0.28e-1, `*`(kg_)), `*`(mol_))), nCO = mol_, nO2 = `+`(`*`(2, `*`(mol_))), T0 = `+`(`*`(298, `*`(K_))), p1 = `+`(`*`(0.200e6, `*`(Pa_))), Ts = `+`(`*`(1200, `*`(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:

a) Calcular la presión y temperatura de combustión adiabática y la composición de equilibrio.

Incóg.: a,xCO2,xCO,xO2,T,p.

Ec.: eqNX,eqBC,eqBO,eqEQ,pV=nRT,eqBE, pero la no-linealidad de eqEQ complica mucho.

Resolvemos primero xCO2,xCO,xO2 en función de a.

> eq:=subs(dat,subs(dat,eqMIX(a*CO+a*(nO2/nCO)*O2=[2,4,7])));sol:=solve(subs(dat,{eqNX,eqBC,eqBO}),{x[Comp[2]],x[Comp[4]],x[Comp[7]]});eq1:=eqEQ(CO+(1/2)*O2=CO2);lnK=-10.4+34000*K_/T;eqDat1:=p*V=(sum(delta[i]*x[Comp[i]],i=1..C_)/a)*nCO*R[u]*T;V_:=subs(Const,dat,(nCO+nO2)*R[u]*T0/p1);eq1_:=subs(sol,eq1);eqDat1_:=subs(sol,V=V_,Const,dat,eqDat1);eqBE:='0=PCI_-sum(delta[i]*x[Comp[i]]*c[p,Comp[i]],i=1..C_)*(T-T25)/a';eqBE_:=expand(subs(PCI_=PCI(eq/a),cpComp_,dat,sol,eqBE));T_:=solve(eqBE_,T);p_:=solve(subs(T=T_,eqDat1_),p);a_:=fsolve(subs(T=T_,p=p_,dat,eq1_),a=0..1);Tad:=subs(a=a_,T_);pad:=subs(a=a_,dat,p_);sol_:=subs(a=a_,sol);

`+`(`*`(a, `*`(CO)), `*`(2, `*`(a, `*`(O2)))) = `+`(`*`(x[O2], `*`(O2)), `*`(x[CO2], `*`(CO2)), `*`(x[CO], `*`(CO)))
{x[CO] = `+`(`-`(`*`(5, `*`(a))), 2), x[CO2] = `+`(`*`(6, `*`(a)), `-`(2)), x[O2] = `+`(1, `-`(a))}
`/`(`*`(x[CO2]), `*`(`^`(x[O2], `/`(1, 2)), `*`(x[CO]))) = `+`(`/`(`*`(0.2983e-4, `*`(exp(`+`(`/`(`*`(0.3404e5, `*`(K_)), `*`(T)))))), `*`(`^`(`/`(`*`(p0), `*`(p)), `/`(1, 2)))))
lnK = `+`(`-`(10.4), `/`(`*`(34000, `*`(K_)), `*`(T)))
`*`(p, `*`(V)) = `/`(`*`(`+`(x[O2], x[CO2], x[CO]), `*`(nCO, `*`(R[u], `*`(T)))), `*`(a))
`+`(`*`(0.3591e-1, `*`(`^`(m_, 3))))
`/`(`*`(`+`(`*`(6, `*`(a)), `-`(2))), `*`(`^`(`+`(1, `-`(a)), `/`(1, 2)), `*`(`+`(`-`(`*`(5, `*`(a))), 2)))) = `+`(`/`(`*`(0.2983e-4, `*`(exp(`+`(`/`(`*`(0.3404e5, `*`(K_)), `*`(T)))))), `*`(`^`(`/`(`...
`+`(`*`(0.3591e-1, `*`(p, `*`(`^`(m_, 3))))) = `+`(`/`(`*`(8.314, `*`(kg_, `*`(`^`(m_, 2), `*`(T)))), `*`(a, `*`(`^`(s_, 2), `*`(K_)))))
0 = `+`(PCI_, `-`(`/`(`*`(sum(`*`(delta[i], `*`(x[Comp[i]], `*`(c[p, Comp[i]]))), i = 1 .. C_), `*`(`+`(T, `-`(T25)))), `*`(a))))
0 = `+`(`/`(`*`(0.1734e7, `*`(kg_, `*`(`^`(m_, 2)))), `*`(`^`(s_, 2), `*`(mol_))), `-`(`/`(`*`(0.5678e6, `*`(kg_, `*`(`^`(m_, 2)))), `*`(a, `*`(`^`(s_, 2), `*`(mol_))))), `/`(`*`(6, `*`(kg_, `*`(`^`(m...
`+`(`/`(`*`(566.7, `*`(K_, `*`(`+`(`*`(510., `*`(a)), `-`(167.))))), `*`(`+`(`-`(1.), `*`(20., `*`(a))))))
`+`(`/`(`*`(0.1312e6, `*`(kg_, `*`(`+`(`*`(510., `*`(a)), `-`(167.))))), `*`(a, `*`(m_, `*`(`^`(s_, 2), `*`(`+`(`-`(1.), `*`(20., `*`(a)))))))))
.3952
`+`(`*`(2840., `*`(K_)))
`+`(`*`(0.1664e7, `*`(Pa_)))
{x[CO] = 0.24e-1, x[CO2] = .371, x[O2] = .6048}

i.e. Tad=2800 K y reacciona casi todo el CO (por eso el sistema de ecuaciones era tan difícil de resolver).

Pero eso era de prever si la temperatura alcanzada no es muy alta, y deberíamos de haber empezado suponiendo combustión completa:

> eq:=subs(dat,subs(dat,eqMIX(a*CO+a*(nO2/nCO)*O2=[2,4])));;eqDat1:=p*V=(sum(delta[i]*x[Comp[i]],i=1..C_)/a)*nCO*R[u]*T;sol:=evalf(solve(subs(dat,{eqNX,eqBC,eqBO}),{a,x[Comp[2]],x[Comp[4]]}));eqBE:='0=PCI_-sum(delta[i]*x[Comp[i]]*c[p,Comp[i]],i=1..C_)*(T-T25)/a':PCI_:=subs(sol,PCI(eq/a));Tad:=subs(dat,solve(subs(cpComp_,dat,sol,eqBE),T));pad:=subs(Const,sol,T=Tad,V=V_,dat,solve(eqDat1,p));

`+`(`*`(a, `*`(CO)), `*`(2, `*`(a, `*`(O2)))) = `+`(`*`(x[O2], `*`(O2)), `*`(x[CO2], `*`(CO2)))
`*`(p, `*`(V)) = `/`(`*`(`+`(x[O2], x[CO2]), `*`(nCO, `*`(R[u], `*`(T)))), `*`(a))
{a = .4000, x[CO2] = .4000, x[O2] = .6000}
`+`(`/`(`*`(0.2830e6, `*`(J_)), `*`(mol_)))
`+`(`*`(2993., `*`(K_)))
`+`(`*`(0.1732e7, `*`(Pa_)))

Efectivamente, la aproximación de combustión completa es aceptable.

b) Sabiendo que al cabo de cierto tiempo la temperatura es de 1200 K, calcular la presión, la composición de equilibrio y el calor intercambiado.

Con más razón será ahora aceptable la aproximación de combustión completa.

> pf:=subs(Const,sol,T=Ts,V=V_,dat,solve(eqDat1,p));eqBE:='q[s]/a=PCI_-sum(delta[i]*x[Comp[i]]*c[p,Comp[i]],i=1..C_)*(T-T25)/a';eqBE_:=subs(dat,subs(T=Ts,cpComp_,dat,sol,eqBE*a));#pad:=subs(Const,sol,T=Tad,V=V_,dat,solve(eqDat1,p));

`+`(`*`(0.6944e6, `*`(Pa_)))
`/`(`*`(q[s]), `*`(a)) = `+`(PCI_, `-`(`/`(`*`(sum(`*`(delta[i], `*`(x[Comp[i]], `*`(c[p, Comp[i]]))), i = 1 .. C_), `*`(`+`(T, `-`(T25)))), `*`(a))))
q[s] = `+`(`/`(`*`(0.7532e5, `*`(J_)), `*`(mol_)))

i.e., a 1200 K la presión es 690 kPa y ya han salido 75 kJ (pues había 1 mol de fuel).

>