> restart:#"Comb_rules".23-06-2005.

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

EXAMPLES OF AVAILABLE PROCEDURES

Data:

Constants: g=g0 to distiguish from g.i, usually T0=T25 and c[p,di]=34, c[p,H2O]=47, c[p,CO2]=54 J/(mol.K).

Comp[i] list of std components.

nu[i] is used in 0=Sum(nu[i]*Comp[i],i=1..C).

x[Comp[i]] for molar fractions.

delta[i] to signal output components.

Usually su1:="Aire", su2:="H2O", su3:=FUEL.

> su1:="Aire":su2:="H2O":fuel:=CH4:dat:=[e=0.3]:

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:

Given a fuel, e.g. CH4, you may find its position in the list, the elemental analysis, its molar mass, its theoretical air/fuel ratio, etc.

> i:='i':member(fuel,Comp,i):Comp[i],[u,v,w,x,y]=CompElem[i];eqM:=Mf(fuel);eq15_2;eqA0:=Ateo(fuel):evalf(%,3);

CH4, [u, v, w, x, y] = [1, 4, 0, 0, 0]

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

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

A[0] = 9.52

Stoicuiometric equation, LHV (PCI), HHV (PCS), etc. Notice that hgs_data is available as h1_,g1_,s1_,h2_,...

> eqfit:=eq_fit(fuel+a*O2=b*CO2+c*H2O);i:='i':eq15_5;PCI_:=PCI(eqfit);PCS_:=PCS(eqfit);

`:=`(eqfit, `+`(CH4, `*`(2, `*`(O2))) = `+`(CO2, `*`(2, `*`(H2O))))

PC = `+`(`-`(Sum(`*`(nu[i], `*`(h[i])), i = 1 .. C)))

`:=`(PCI_, `+`(`/`(`*`(0.80231e6, `*`(J_)), `*`(mol_))))

`:=`(PCS_, `+`(`/`(`*`(0.89033e6, `*`(J_)), `*`(mol_))))

Mixture equation (assumes e=0.3 given, i.e. 30% excess air).

eqMIX converts a sketch of the mixture eqation (e.g. eqmix:=a*C+b*O2=[2,4,7] to the mixture eqation. Additionally, the extended balance equations eqNX,eqBC,eqBH,eqBO,eqBN,eqBS and the delta list of exhaust-compounds are globally created.

> eqe:=eq15_4;A_:=solve(subs(A[0]=rhs(eqA0),dat,eqe),A);eqMIX(a*fuel+a*A_*(c21*O2+c79*N2)=[2,3,4,6]);eqNX;eqBC;eqBH;eqBO;eqBN;eqBS;sol1:=subs(dat,solve({eqNX,eqBC,eqBH,eqBO,eqBN},{a,x[Comp[2]],x[Comp[3]],x[Comp[4]],x[Comp[5]]}));

`:=`(eqe, e = `+`(`/`(`*`(A), `*`(A[0])), `-`(1)))

`:=`(A_, 12.38095238)

`+`(`*`(a, `*`(CH4)), `*`(12.38095238, `*`(a, `*`(`+`(`*`(c21, `*`(O2)), `*`(c79, `*`(N2))))))) = `+`(`*`(x[O2], `*`(O2)), `*`(x[N2], `*`(N2)), `*`(x[CO2], `*`(CO2)), `*`(x[H2O], `*`(H2O)))

1 = `+`(x[O2], x[N2], x[CO2], x[H2O])

0 = `+`(x[CO2], `-`(a))

0 = `+`(`*`(2, `*`(x[H2O])), `-`(`*`(4, `*`(a))))

0 = `+`(`-`(`*`(`/`(520, 21), `*`(a, `*`(c21)))), `*`(2, `*`(x[O2])), `*`(2, `*`(x[CO2])), x[H2O])

0 = `+`(`-`(`*`(`/`(520, 21), `*`(a, `*`(c79)))), `*`(2, `*`(x[N2])))

0 = 0

`:=`(sol1, {x[O2] = 0.4483985765e-1, x[H2O] = .1494661922, a = 0.7473309608e-1, x[CO2] = 0.7473309608e-1, x[N2] = .7309608540})

To compute Tad, or qs for a given Ts, you may use:

> eq15_7;subs(sol1,c[pa]=c[p,N2],cpComp_,dat,eq15_7_1);eq15_7_2;subs(sol1,cpComp_,dat,eq15_7_3);

Ta = `+`(T25, `/`(`*`(a, `*`(PCI)), `*`(Sum(x[Com[i]], i = 1 .. CP), `*`(c[pa]))))

Ta = `+`(`*`(2061.503245, `*`(K_)))

Ta = `+`(T25, `/`(`*`(a, `*`(PCI)), `*`(Sum(`*`(x[Com[i]], `*`(c[p, i])), i = 1 .. CP))))

Ta = `+`(`*`(1738.536080, `*`(K_)))

i.e the approximation of air-properties for the flue gas is not too bad (<10% bias).

Equilibrium composition.

> eq:=eqMIX(a*fuel+a*A_*(c21*O2+c79*N2)=[2,3,4,6,7,8]);sol2:=subs(dat,solve({eqNX,eqBC,eqBH,eqBO,eqBN},{a,x[Comp[2]],x[Comp[3]],x[Comp[4]],x[Comp[5]]}));eq1:=eqEQ(H2+CO2=H2O+CO);eq2:=subs(p=p0,eqEQ(H2+(1/2)*O2=H2O));PCI_:=PCI(eq)/a;eqTa:=subs(cpComp,dat,eq15_7_3);

`:=`(eq, `+`(`*`(a, `*`(CH4)), `*`(12.38095238, `*`(a, `*`(`+`(`*`(c21, `*`(O2)), `*`(c79, `*`(N2))))))) = `+`(`*`(x[O2], `*`(O2)), `*`(x[N2], `*`(N2)), `*`(x[CO2], `*`(CO2)), `*`(x[H2O], `*`(H2O)), `...

`:=`(sol2, {x[H2O] = `+`(`-`(`*`(1.074733096, `*`(x[H2]))), .1494661922, `-`(`*`(0.7473309608e-1, `*`(x[CO])))), x[O2] = `+`(0.4483985765e-1, `*`(.4775800712, `*`(x[CO])), `*`(.4775800712, `*`(x[H2]))...
`:=`(sol2, {x[H2O] = `+`(`-`(`*`(1.074733096, `*`(x[H2]))), .1494661922, `-`(`*`(0.7473309608e-1, `*`(x[CO])))), x[O2] = `+`(0.4483985765e-1, `*`(.4775800712, `*`(x[CO])), `*`(.4775800712, `*`(x[H2]))...

`:=`(eq1, `/`(`*`(x[H2O], `*`(x[CO])), `*`(x[CO2], `*`(x[H2]))) = `+`(`*`(157.1767053, `*`(exp(`+`(`-`(`/`(`*`(4951.888381, `*`(K_)), `*`(T)))))))))

`:=`(eq2, `/`(`*`(x[H2O]), `*`(`^`(x[O2], `/`(1, 2)), `*`(x[H2]))) = `+`(`*`(0.4796324618e-2, `*`(exp(`+`(`/`(`*`(29085.87924, `*`(K_)), `*`(T))))))))

`:=`(PCI_, `/`(`*`(`+`(`/`(`*`(0.39352e6, `*`(x[CO2], `*`(J_))), `*`(mol_)), `/`(`*`(0.24182e6, `*`(x[H2O], `*`(J_))), `*`(mol_)), `/`(`*`(0.11053e6, `*`(x[CO], `*`(J_))), `*`(mol_)), `-`(`/`(`*`(0.74...

`:=`(eqTa, Ta = `+`(`*`(298, `*`(K_)), `/`(`*`(`+`(`/`(`*`(0.39352e6, `*`(x[CO2], `*`(kg_, `*`(`^`(m_, 2))))), `*`(`^`(s_, 2), `*`(mol_))), `/`(`*`(0.24182e6, `*`(x[H2O], `*`(kg_, `*`(`^`(m_, 2))))), ...
`:=`(eqTa, Ta = `+`(`*`(298, `*`(K_)), `/`(`*`(`+`(`/`(`*`(0.39352e6, `*`(x[CO2], `*`(kg_, `*`(`^`(m_, 2))))), `*`(`^`(s_, 2), `*`(mol_))), `/`(`*`(0.24182e6, `*`(x[H2O], `*`(kg_, `*`(`^`(m_, 2))))), ...
`:=`(eqTa, Ta = `+`(`*`(298, `*`(K_)), `/`(`*`(`+`(`/`(`*`(0.39352e6, `*`(x[CO2], `*`(kg_, `*`(`^`(m_, 2))))), `*`(`^`(s_, 2), `*`(mol_))), `/`(`*`(0.24182e6, `*`(x[H2O], `*`(kg_, `*`(`^`(m_, 2))))), ...

You MUST solve this non-linear system by iterations.

Start with x[H2]=0 and x[CO]=0, i.e. complete combustion.

> sol20:=subs(x[H2]=0,x[CO]=0,sol2);PCI0:=subs(x[H2]=0,x[CO]=0,sol20,PCI_);Tad0:=subs(x[H2]=0,x[CO]=0,sol20,rhs(eqTa));eq1__:=evalf(subs(sol20,T=Tad0,eq1));eq2__:=evalf(subs(sol20,T=Tad0,eq2));sol3:=solve({eq1__,eq2__},{x[H2],x[CO]});sol2_:=subs(sol3,sol2);

`:=`(sol20, {x[CO2] = 0.7473309610e-1, x[O2] = 0.4483985765e-1, x[H2O] = .1494661922, a = 0.7473309608e-1, x[N2] = .7309608540})

`:=`(PCI0, `+`(`/`(`*`(802310.0003, `*`(J_)), `*`(mol_))))

`:=`(Tad0, `+`(`*`(1738.536081, `*`(K_))))

`:=`(eq1__, `+`(`/`(`*`(2.000000000, `*`(x[CO])), `*`(x[H2]))) = 9.107164804)

`:=`(eq2__, `+`(`/`(`*`(.7058474628), `*`(x[H2]))) = 88450.00634)

`:=`(sol3, {x[CO] = 0.3633843250e-4, x[H2] = 0.7980185553e-5})

`:=`(sol2_, {x[N2] = .7309446564, x[CO2] = 0.7469510164e-1, x[O2] = 0.4486102334e-1, x[H2O] = .1494548999, a = 0.7473144005e-1})

i.e. complete combustion is a good start (and many times a good end).

>