75 int main(
int argc,
char *argv[])
84 IFstream controlFile(controlFileName);
87 if (!controlFile.good())
90 <<
"Cannot read file " << controlFileName
98 word fuel(control.lookup(
"fuel"));
103 Info<<
nl <<
"Reading Burcat data dictionary" <<
endl;
108 IFstream BurcatCpDataFile(BurcatCpDataFileName);
111 if (!BurcatCpDataFile.good())
114 <<
"Cannot read file " << BurcatCpDataFileName
121 Info<<
nl <<
"Reading Burcat data for relevant species" <<
nl <<
endl;
124 thermo FUEL(thermoData.lookup(fuel));
125 thermo O2(thermoData.lookup(
"O2"));
129 thermo CO2(thermoData.lookup(
"CO2"));
133 thermo CO(thermoData.lookup(
"CO"));
134 thermo H2(thermoData.lookup(
"H2"));
151 scalar stoicO2 = n + m/4.0;
152 scalar stoicN2 = (0.79/0.21)*(n + m/4.0);
154 scalar stoicH2O = m/2.0;
166 "stoichiometricAirFuelMassRatio",
168 (oxidant.W()*oxidant.nMoles())/FUEL.W()
171 Info<<
"stoichiometricAirFuelMassRatio "
172 << stoichiometricAirFuelMassRatio <<
';' <<
endl;
174 Info<<
"Equilibrium flame temperature data ("
175 << P/1e5 <<
" bar)" <<
nl <<
nl
181 <<
setw(12) <<
"Terror"
182 <<
setw(20) <<
"O2res (mole frac)" <<
nl
187 for (
int i=0; i<16; i++)
189 scalar equiv = 0.6 + i*0.05;
190 scalar
ft = 1/(1 + stoichiometricAirFuelMassRatio.value()/equiv);
193 for (
int j=0; j<28; j++)
195 scalar T0 = 300.0 + j*100.0;
198 scalar o2 = (1.0/equiv)*stoicO2;
199 scalar n2 = (0.79/0.21)*o2;
200 scalar fres =
max(1.0 - 1.0/equiv, 0.0);
201 scalar fburnt = 1.0 - fres;
205 scalar oresInit =
max(1.0/equiv - 1.0, 0.0)*stoicO2;
206 scalar co2Init = fburnt*stoicCO2;
207 scalar h2oInit = fburnt*stoicH2O;
209 scalar ores = oresInit;
210 scalar co2 = co2Init;
211 scalar h2o = h2oInit;
217 scalar N = fres + n2 + co2 + h2o + ores;
221 scalar adiabaticFlameTemperature =
223 + (fburnt/(1.0 + o2 + n2))/(1.0/(1.0 + (1.0 + 0.79/0.21)*stoicO2))
226 scalar equilibriumFlameTemperature = adiabaticFlameTemperature;
230 for (
int j=0; j<20; j++)
238 CO2BreakUp.Kn(equilibriumFlameTemperature, P, N)
246 H2OBreakUp.Kn(equilibriumFlameTemperature, P, N)
253 ores = oresInit + 0.5*co + 0.5*h2;
263 fres*FUEL + ores*O2 + n2*
N2
264 + co2*CO2 + h2o*
H2O + co*CO + h2*H2
268 scalar equilibriumFlameTemperatureNew =
269 products.TH(reactants.H(T0), adiabaticFlameTemperature);
273 adiabaticFlameTemperature = equilibriumFlameTemperatureNew;
277 equilibriumFlameTemperature = 0.5*
279 equilibriumFlameTemperature
280 + equilibriumFlameTemperatureNew
288 <<
setw(12) << adiabaticFlameTemperature
289 <<
setw(12) << equilibriumFlameTemperature
291 << adiabaticFlameTemperature - equilibriumFlameTemperature
292 <<
setw(12) << ores/N