105 int main(
int argc,
char *argv[])
122 IFstream controlFile(controlFileName);
125 if (!controlFile.good())
128 <<
"Cannot read file " << controlFileName
138 IFstream BurcatCpDataFile(BurcatCpDataFileName);
141 if (!BurcatCpDataFile.good())
144 <<
"Cannot read file " << BurcatCpDataFileName
150 word fuelName(control.lookup(
"fuel"));
154 scalar stoicO2 = n + m/4.0;
155 scalar stoicN2 = (0.79/0.21)*(n + m/4.0);
157 scalar stoicH2O = m/2.0;
162 thermo(CpData.lookup(fuelName))
168 stoicO2*
thermo(CpData.lookup(
"O2"))
169 + stoicN2*
thermo(CpData.lookup(
"N2"))
174 "stoichiometricAirFuelMassRatio",
176 (oxidant.W()*oxidant.nMoles())/(fuel.W()*fuel.nMoles())
181 fileName LookUpTableFile(control.lookup(
"fileName"));
183 OFstream controlFileOutput(LookUpTableFile);
185 if (!controlFileOutput.good())
188 <<
"Cannot open file " << LookUpTableFile
203 for (label i=0; i <= dim[fti]; i++)
205 scalar
ft =
Foam::min(scalar(i)*delta[fti] + min[fti] + 0.001, 0.999);
209 scalar o2 = (1.0/equiv)*stoicO2;
210 scalar n2 = (0.79/0.21)*o2;
211 scalar fres =
max(1.0 - 1.0/equiv, 0.0);
212 scalar ores =
max(1.0/equiv - 1.0, 0.0);
213 scalar fburnt = 1.0 - fres;
219 fres*
thermo(CpData.lookup(fuelName))
225 n2*
thermo(CpData.lookup(
"N2"))
231 ores*
thermo(CpData.lookup(
"O2"))
237 fburnt*stoicCO2*
thermo(CpData.lookup(
"CO2"))
243 fburnt*stoicH2O*
thermo(CpData.lookup(
"H2O"))
247 scalar ToTalMoles = fuel.nMoles() + CO2.nMoles() +
H2O.nMoles() +
248 N2.nMoles() + O2.nMoles();
250 LookUpTable[fti][count] =
ft;
251 LookUpTable[CH4i][count] = fuel.nMoles()/ToTalMoles;
252 LookUpTable[CO2i][count] = CO2.nMoles()/ToTalMoles;
253 LookUpTable[H2Oi][count] =
H2O.nMoles()/ToTalMoles;
258 controlFileOutput <<
"\n" <<
nl;
259 controlFileOutput.writeKeyword(
"fields");
262 controlFileOutput.writeKeyword(
"output");
265 if (LookUpTable.size() == 0)
269 "Foam::IFCLookUpTableGen"
270 ) <<
"table is empty" << nl
274 controlFileOutput.writeKeyword(
"values");