i asked a smart friend about porting this to a web app, and here's what i got back. yes, i agree we need to understand the equations under it. the modelling of pyrolysis remains the biggest mystery in all this. the other issues are knowable by mortals, and the specifics are taking progressivley reasonable form here:
http://gekgasifier.p...-Energy-Balance
seems someone should go and try to find the master's thesis on pyrolysis that the calculator was based on. if nothing else, someone should write ulrik henriksen, who is was likely the advisor for this work. i'm too underwater at the moment to take this on. can someone else?
"Henriksen, Ulrik Birk" <ubh@mek.dtu.dk>
------------------------------------------------------------------------
from dan.
The program was written with an "application generator", EES,
that you can look at at
http://www.fchart.com/ees/ees.shtml.
Gasifier.exe was generated with the professional version of the
program, which costs a thousand bucks. You probably have to find
an engineer to use it, otherwise you might have the GIGO problem.
The program was probably generated with equations from the master's
thesis of Fock, which had to do with the modelling of pyrolysis
in gasifiers. As the authors of the program suggest, you should
probably obtain the paper in question, to find out what the limits
of the model are. GIGO, again.
Until you have the paper, you don't really know if the calcs are
simple enough to "just plug into a spreadsheet". If they were that
simple, I would suspect that Fock and Thomsen would have just used
a spreadsheet.
And really, why bother with any recontextualization? Windoze boxes
are common. If you are a mac-only shop, take a look at Wine
for running gasifier.exe directly on a mac (
http://www.winehq.org). Do a
writeup of how to use it, and some of the limitations of the Fock
Thomsen model. That would probably be less work and more useful than
reinventing the wheel for the 10 percent of the people that have just
an apple product on their desk.
Dan L
PS: it would be really good to get the paper. Here's the source code
from the equations window for gasifier.exe. It's kind of danish, which
looks german enough to read lots of it. It might be spreadsheet work,
after all.
FUNCTION Hm_vand_damp (T, m_vand_damp,H_fordampning)
IF (T<(373-273.15)) THEN
Hm = (ENTHALPY(H2O, T=T)+ H_fordampning)*m_vand_damp
ELSE
Hm = ENTHALPY(H2O, T=T)*m_vand_damp
ENDIF
Hm_vand_damp = Hm
END
{FUNCTION Q_tilført (T_ind; T_ud; Hm_ind; Hm_ud)
if T_ind = T_ud then
Q = 0
else
Q = Hm_ind - Hm_ud
endif
Q_tilført = Q
END}
{INDFYRET EFFEKT}
Br_ind_sys = Br_n_flis*m_flis_ind/1000
{flisforvarmer}
{Q_flis = Q_tilført (T_ind; T_fugt; Hm_flis_ind; Hm_flis)}
Hm_flis {+ Q_flis }+ Q_pyrolyse= Hm_flis_ind
Hm_flis = h_flis*m_flis_ind
{Hm_flis_ind = h_flis_ind*m_flis_ind}
h_flis_0=Br_n_flis + ENTHALPY(CO2,T=(298-273.15))*1*MO_CO2/MO_flis + ENTHALPY(H2O,T=(298-273.15))*n_H_Cflis/2*MO_H2O/MO_flis
h_flis = h_flis_0 + 0.003867*((T_fugt+273.15)^2-298^2)/2 + 0.1031*((T_fugt+273.15)-298)
{h_flis_ind = h_flis_0 + 0,003867*((T_ind+273,15)^2-298^2)/2 + 0,1031*((T_ind+273,15)-298)}
Q_pyrolyse =(Q%p_ind/100-Q%p_fugt/100)*Br_ind_sys*1000
Q%p_ind =0.008192*T_ind
Q%p_fugt =0.008192*T_fugt
{fugtforvarmer}
{Q_fugt = Q_tilført (T_ind; T_fugt; Hm_fugt_ind; Hm_ind)}
Hm_fugt + Q_fugt = Hm_fugt_ind
Hm_fugt = Hm_vand_damp (T_fugt, m_fugt_ind,H_fordampning)
Hm_fugt_ind = Hm_vand_damp (T_ind, m_fugt_ind,H_fordampning)
{DAMPGENERATOR}
m_vand = m_damp_ind
Hm_vand + Q_damp = Hm_damp_ind
Hm_vand = Hm_vand_damp (T_vand, m_vand,H_fordampning)
Hm_damp_ind = Hm_vand_damp (T_damp_ind, m_damp_ind,H_fordampning)
{LUFTFORVARMER}
{Q_luft = Q_tilført (T_luft_ind; T_luft; Hm_luft_ind;Hm_ind )}
Hm_luft + Q_luft = Hm_luft_ind
Hm_luft = (ENTHALPY(N2,T=T_luft)*0.79 + ENTHALPY(O2,T=T_luft)*0.21) * m_luft_ind
Hm_luft_ind = (ENTHALPY(N2,T=T_luft_ind)*0.79 + ENTHALPY(O2,T=T_luft_ind)*0.21) * m_luft_ind
{FORGASSER}
{Molarmasser}
MO_H2O = 2*MO_H + MO_O
MO_CO = MO_C + MO_O
MO_CO2 = MO_C + 2*MO_O
MO_CH4 = MO_C + 4*MO_H
MO_H2 = 2*MO_H
MO_N2 = 2*MO_N
MO_O2 = 2*MO_O
MO_AIR = MO_N2*0.79+ MO_O2*0.21{}
MO_flis = MO_C + n_O_Cflis*MO_O + n_H_Cflis*MO_H
m%_C_flis = 1*MO_C*100/MO_flis
m%_H_flis = n_H_Cflis*MO_H*100/MO_flis
m%_O_flis = n_O_Cflis*MO_O*100/MO_flis
Br_ø_flis= 349.1*m%_C_flis + 1178.3*m%_H_flis - 103.4*m%_O_flis
Br_n_flis = Br_ø_flis + n_H_Cflis*0.5*MO_H2O/MO_flis*H_fordampning
{flis ind}
m_H_flis_ind/MO_H = n_H_Cflis * (m_flis_ind/MO_flis)
m_O_flis_ind/MO_O = n_O_Cflis * (m_flis_ind/MO_flis)
m_C_flis_ind/MO_C = (m_flis_ind/MO_flis)
(m_flis_ind*fugt%_våd_basis)/(100-fugt%_våd_basis) = m_fugt_ind
{fugt%_våd_basis = m_fugt_ind/(m_flis_ind + m_fugt_ind)*100}
fugt%_tør_basis = (m_fugt_ind/m_flis_ind)*100
{fugt ind}
m_H_fugt_ind / MO_H = 2 * (m_fugt_ind / MO_H2O)
m_O_fugt_ind / MO_O = 1 * (m_fugt_ind / MO_H2O)
{luft ind}
m_N2_luft_ind/MO_N2 = m_luft_ind/MO_AIR*0.79
m_O2_luft_ind/MO_O2 = m_luft_ind/MO_AIR*0.21
{damp ind}
m_H_damp_ind / MO_H = 2 * (m_damp_ind / MO_H2O)
m_O_damp_ind / MO_O = 1 * (m_damp_ind / MO_H2O)
{startværdier}
P_ud = P_ind- DELTAP
MO_gas_ud = m_gas_ud/(n_CO2_gas_ud + n_CO_gas_ud + n_H2_gas_ud + n_CH4_gas_ud + n_N2_gas_ud)
MO_gas_våd_ud = m_gas_våd_ud/(n_CO2_gas_ud + n_CO_gas_ud + n_H2_gas_ud + n_CH4_gas_ud +n_H2O_gas_ud + n_N2_gas_ud)
{Massebalancer}
m_ind= m_ud
m_ind = m_damp_ind + m_fugt_ind + m_luft_ind + m_flis_ind
m_ud = m_gas_ud + m_damp_ud + m_koks_ud
m_gas_våd_ud = m_gas_ud + m_damp_ud
m_damp_ud = m_H2O_gas_ud
m_koks_ud = koks_ud%_af_k_ind_f * m_flis_ind /100
m_C_koks_ud = m_koks_ud
{grundstoffernes massebalance}
m_H_ind= m_H_ud
m_H_ind = m_H_flis_ind + m_H_damp_ind + m_H_fugt_ind
m_H_ud= m_H_gas_ud + m_H_damp_ud
m_C_ind= m_C_ud
m_C_ind= m_C_flis_ind
m_C_ud = m_C_gas_ud + m_C_koks_ud
m_O_ind = m_O_ud
m_O_ind = m_O_flis_ind + m_O_damp_ind + m_O_fugt_ind + m_O2_luft_ind
m_O_ud = m_O_gas_ud + m_O_damp_ud
m_N2_ind = m_N2_ud
m_N2_ind = m_N2_luft_ind
m_N2_ud = m_N2_gas_ud
{damp ud}
m_H_damp_ud / MO_H = 2 * (m_damp_ud / MO_H2O)
m_O_damp_ud / MO_O = 1 * (m_damp_ud / MO_H2O)
{m_gas_ud = m_H_gas_ud + m_N2_gas_ud + m_O_gas_ud + m_C_gas_ud}
{Jens og Bennys ligevægtsudtryk}
K = (1.303E-6*(T_ud+273.15) + 7.17e-4)*(T_ud+273.15) - 1.3006
n_CH4_gas_ud = CH4%vol_tør_gas/100*n_gas_ud
{mol H, O og C i gas og damp ud af forgasseren fratrukket methan}
n_H_g_d_uCH4_ud = (m_H_gas_ud + m_H_damp_ud)/MO_H - 4*n_CH4_gas_ud
n_O_g_d_uCH4_ud = (m_O_gas_ud + m_O_damp_ud)/MO_O
n_C_g_d_uCH4_ud = m_C_gas_ud/MO_C - n_CH4_gas_ud
{andengradsligning for vandgasshift og de tre grundstof/gaskomp-balancer)}
a = K - 1
b = K*(n_H_g_d_uCH4_ud/2 - n_O_g_d_uCH4_ud + n_C_g_d_uCH4_ud) + n_O_g_d_uCH4_ud
c = n_C_g_d_uCH4_ud*n_C_g_d_uCH4_ud - n_C_g_d_uCH4_ud * n_O_g_d_uCH4_ud
D = b*b - 4*a*c
x = (-b+sqrt(abs(D))) / (2*a)
n_CO2_gas_ud = x
n_CO_gas_ud = n_C_g_d_uCH4_ud - n_CO2_gas_ud
n_H2O_gas_ud = n_O_g_d_uCH4_ud - 2*n_CO2_gas_ud - n_CO_gas_ud
n_H2_gas_ud = n_H_g_d_uCH4_ud/2 - n_H2O_gas_ud
{ mol<->masse }
n_CO2_gas_ud = m_CO2_gas_ud/MO_CO2
n_CO_gas_ud = m_CO_gas_ud/MO_CO
n_CH4_gas_ud = m_CH4_gas_ud/MO_CH4
n_H2O_gas_ud = m_H2O_gas_ud/MO_H2O
n_H2_gas_ud = m_H2_gas_ud/MO_H2
n_N2_gas_ud = m_N2_gas_ud/MO_N2
{Omregning af gassammensætning til masseprocent}
n_gas_ud = n_CO2_gas_ud + n_CO_gas_ud + n_CH4_gas_ud + n_H2_gas_ud + n_N2_gas_ud
n_gas_våd_ud = n_CO2_gas_ud + n_CO_gas_ud + n_CH4_gas_ud + n_H2O_gas_ud + n_H2_gas_ud + n_N2_gas_ud
{Omregning af gassammensætning til volumenprocent}
CH4_våd_vol%_ud = n_CH4_gas_ud/n_gas_våd_ud*100
CO2_våd_vol%_ud = n_CO2_gas_ud/n_gas_våd_ud*100
H2_våd_vol%_ud = n_H2_gas_ud/n_gas_våd_ud*100
H2O_våd_vol%_ud = n_H2O_gas_ud/n_gas_våd_ud*100
CO_våd_vol%_ud = n_CO_gas_ud/n_gas_våd_ud*100
N2_våd_vol%_ud = n_N2_gas_ud/n_gas_våd_ud*100
CH4_tør_vol%_ud = n_CH4_gas_ud/n_gas_ud*100
CO2_tør_vol%_ud = n_CO2_gas_ud/n_gas_ud*100
H2_tør_vol%_ud = n_H2_gas_ud/n_gas_ud*100
CO_tør_vol%_ud = n_CO_gas_ud/n_gas_ud*100
N2_tør_vol%_ud = n_N2_gas_ud/n_gas_ud*100
{Energibalance}
Hm_ind = Hm_ud + Q_tab
Hm_ind = Hm_flis_ind + Hm_fugt_ind + Hm_damp_ind + Hm_luft_ind
Hm_brændsel_ind = Hm_flis_ind + Hm_fugt_ind
Hm_ud = Hm_gas + Hm_damp + Hm_koks_ud
{Hm_flis_ind = h_flis_ind*m_flis_ind
Hm_fugt_ind = Hm_vand_damp (T_ind; m_fugt_ind;H_fordampning)
Hm_damp_ind = Hm_vand_damp (T_damp_ind; m_damp_ind;H_fordampning)
Hm_luft_ind = (ENTHALPY(N2;T=T_luft_ind)*0,79 + ENTHALPY(O2;T=T_luft_ind)*0,21)*m_luft_ind
Hm_gas = h_gas * m_gas_ud
Hm_damp = ENTHALPY(H2O;T=T_ud)* m_damp_ud}
Hm_koks_ud = h_koks_ud* m_koks_ud
h_koks_ud = 0.000425*(T_ud+273.15)^2+0.8679*(T_ud+273.15)-318.61
{Nedre brændværdi for gas på våd basis ud af forgasser}
Br_n_gas_masse =(Br_n_H2*m_H2_gas_ud + Br_n_CH4*m_CH4_gas_ud + Br_n_CO*m_CO_gas_ud)/m_gas_ud
Br_n_gas_vol = Br_n_gas_masse * DENSITY_N_gas_ud
DENSITY_N_gas_ud = MO_gas_ud*0.04462
Br_n_gas =(Br_n_H2*m_H2_gas_ud + Br_n_CH4*m_CH4_gas_ud + Br_n_CO*m_CO_gas_ud)
Br_n_koks =Br_n_C*m_koks_ud
{{Øvre brændværdi for gas på våd basis ud af forgasser}
Br_ø_gas_masse =(Br_ø_H2*m_H2_gas_ud + Br_ø_CH4*m_CH4_gas_ud + Br_ø_CO*m_CO_gas_ud)/m_gas_ud}
{Br_ø_gas_vol = Br_ø_gas_masse * DENSITY_N_gas_ud }
{Koldgaseffektivitet}
K_eff = Br_n_gas_masse * m_gas_ud/(Br_n_flis*m_flis_ind)*100
{NEDKØLING AF GAS}
Hm_gas = Hm_gas_ud+ Q_gas
Hm_gas = h_gas*m_gas_ud
Hm_gas_ud = h_gas_ud*m_gas_ud
h_gas*m_gas_ud = ENTHALPY(CO, T=T_ud)*m_CO_gas_ud + ENTHALPY(CO2, T=T_ud)*m_CO2_gas_ud + ENTHALPY(CH4, T=T_ud)*m_CH4_gas_ud + ENTHALPY(H2, T=T_ud)*m_H2_gas_ud + ENTHALPY(N2, T=T_ud)*m_N2_gas_ud
h_gas_ud*m_gas_ud = ENTHALPY(CO, T=T_gas_ud)*m_CO_gas_ud + ENTHALPY(CO2, T=T_gas_ud)*m_CO2_gas_ud + ENTHALPY(CH4, T=T_gas_ud)*m_CH4_gas_ud + ENTHALPY(H2, T=T_gas_ud)*m_H2_gas_ud + ENTHALPY(N2, T=T_gas_ud)*m_N2_gas_ud
{NEDKØLING AF DAMP}
Hm_damp = Hm_damp_ud + Q_damp_ud
Hm_damp= Hm_vand_damp (T_ud, m_damp_ud,H_fordampning)
Hm_damp_ud = Hm_vand_damp (T_gas_ud, m_damp_ud,H_fordampning)
{Tab}
Q_tab= tab%/100*m_flis_ind*Br_n_flis
{Konstanter}
H_fordampning =-2442
{Værdier}
P_ind = 101.3
DELTAP= 4
{n_H_Cflis =1,45
n_O_Cflis = 0,87}
MO_C = 12.011
MO_H = 1.0079
MO_O = 15.9994
MO_N = 14.005
Br_n_H2=119972
Br_n_CH4=50013
Br_n_CO=10103
Br_n_C=30000
{Enhedsomregning}
Hm_ud_f = Hm_ud/1000
Hm_ind_f = Hm_ind/1000
Hm_brændsel_ind_f = Hm_brændsel_ind/1000
Hm_damp_ind_f = Hm_damp_ind/1000
Hm_luft_ind_f = Hm_luft_ind/1000
Hm_fugt_ind_f = Hm_fugt_ind/1000
Hm_koks_ud_f = Hm_koks_ud/1000
Hm_våd_gas_ud_f = (Hm_damp+ Hm_gas)/1000
Q_tab_f = Q_tab/1000
Q_pyrolyse_f = Q_pyrolyse/1000
Q_fugt_f = Q_fugt/1000
{Q_flis_f = abs(Q_flis/1000)}
Q_luft_f = Q_luft/1000
Q_damp_f = Q_damp/1000
Q_gas_f = Q_gas/1000
Q_damp_ud_f = Q_damp_ud/1000
Q_våd_gas_f = Q_gas_f + Q_damp_ud_f
{Q_flis_pyrolyse_f = Q_flis_f + Q_pyrolyse_f }
Br_n_gas_ud_f = Br_n_gas/1000
Br_n_koks_ud_f = Br_n_koks/1000
m_flis_ind_ny = m_flis_ind*3.6
m_damp_ind_ny = m_damp_ind*3.6
m_fugt_ind_ny = m_fugt_ind*3.6
m_luft_ind_ny = m_luft_ind*3.6
{procenter}
m_flis_ind%= m_flis_ind/m_flis_ind*100
m_damp_ind%= m_damp_ind/m_flis_ind*100
m_fugt_ind%= m_fugt_ind/m_flis_ind*100
m_luft_ind%= m_luft_ind/m_flis_ind*100
Br_ind_sys% = Br_ind_sys/Br_ind_sys*100
Br_n_gas_ud_f% = Br_n_gas_ud_f/Br_ind_sys*100
Br_n_koks_ud_f% = Br_n_koks_ud_f/Br_ind_sys*100
Q_luft_f% = Q_luft_f/Br_ind_sys*100
Q_damp_f% = Q_damp_f/Br_ind_sys*100
Q_tab_f% = Q_tab_f/Br_ind_sys*100
Q_fugt_f% = Q_fugt_f/Br_ind_sys*100
{Q_flis_f% = abs(Q_flis_f/Br_ind_sys*100)}
Q_pyrolyse_f% = (Q_pyrolyse_f/Br_ind_sys)*100
Q_gas_f% = (Q_gas_f + Q_damp_ud_f)/Br_ind_sys*100
{Q_flis_pyrolyse_f%= Q_flis_pyrolyse_f/ Br_ind_sys*100}
- Hide quoted text -