54 int main(
int argc,
char *argv[])
62 IFstream controlFile(controlFileName);
65 if (!controlFile.good())
68 <<
"Cannot read file " << controlFileName
76 const word fuelName(control.lookup(
"fuel"));
81 Info<<
nl <<
"Reading thermodynamic data dictionary" <<
endl;
86 IFstream thermoDataFile(thermoDataFileName);
89 if (!thermoDataFile.good())
92 <<
"Cannot read file " << thermoDataFileName
99 Info<<
nl <<
"Reading thermodynamic data for relevant species"
103 thermo FUEL(thermoData.subDict(fuelName));
104 thermo O2(thermoData.subDict(
"O2"));
105 thermo N2(thermoData.subDict(
"N2"));
108 thermo CO2(thermoData.subDict(
"CO2"));
112 thermo CO(thermoData.subDict(
"CO"));
113 thermo H2(thermoData.subDict(
"H2"));
130 scalar stoicO2 =
n + m/4.0;
131 scalar stoicN2 = (0.79/0.21)*(
n + m/4.0);
133 scalar stoicH2O = m/2.0;
145 "stoichiometricAirFuelMassRatio",
147 (oxidant.W()*oxidant.nMoles())/FUEL.W()
150 Info<<
"stoichiometricAirFuelMassRatio "
151 << stoichiometricAirFuelMassRatio <<
';' <<
endl;
153 Info<<
"Equilibrium flame temperature data ("
154 << P/1e5 <<
" bar)" <<
nl <<
nl
160 <<
setw(12) <<
"Terror"
161 <<
setw(20) <<
"O2res (mole frac)" <<
nl
166 for (
int i=0; i<16; i++)
168 scalar equiv = 0.6 + i*0.05;
169 scalar ft = 1/(1 + stoichiometricAirFuelMassRatio.value()/equiv);
172 for (
int j=0; j<28; j++)
174 scalar T0 = 300.0 + j*100.0;
177 scalar o2 = (1.0/equiv)*stoicO2;
178 scalar n2 = (0.79/0.21)*o2;
179 scalar fres =
max(1.0 - 1.0/equiv, 0.0);
180 scalar fburnt = 1.0 - fres;
184 scalar oresInit =
max(1.0/equiv - 1.0, 0.0)*stoicO2;
185 scalar co2Init = fburnt*stoicCO2;
186 scalar h2oInit = fburnt*stoicH2O;
188 scalar ores = oresInit;
189 scalar co2 = co2Init;
190 scalar h2o = h2oInit;
196 scalar
N = fres + n2 + co2 + h2o + ores;
200 scalar adiabaticFlameTemperature =
202 + (fburnt/(1.0 + o2 + n2))/(1.0/(1.0 + (1.0 + 0.79/0.21)*stoicO2))
205 scalar equilibriumFlameTemperature = adiabaticFlameTemperature;
209 for (
int j=0; j<20; j++)
217 CO2BreakUp.Kn(P, equilibriumFlameTemperature,
N)
225 H2OBreakUp.Kn(P, equilibriumFlameTemperature,
N)
232 ores = oresInit + 0.5*co + 0.5*h2;
242 fres*FUEL + ores*O2 + n2*
N2
243 + co2*CO2 + h2o*
H2O + co*CO + h2*H2
247 scalar equilibriumFlameTemperatureNew =
248 products.THa(reactants.Ha(P, T0), P, adiabaticFlameTemperature);
252 adiabaticFlameTemperature = equilibriumFlameTemperatureNew;
256 equilibriumFlameTemperature = 0.5*
258 equilibriumFlameTemperature
259 + equilibriumFlameTemperatureNew
267 <<
setw(12) << adiabaticFlameTemperature
268 <<
setw(12) << equilibriumFlameTemperature
270 << adiabaticFlameTemperature - equilibriumFlameTemperature
271 <<
setw(12) << ores/
N