Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "egrMixture.H"
00027 #include <finiteVolume/fvMesh.H>
00028
00029
00030
00031 template<class ThermoType>
00032 const char* Foam::egrMixture<ThermoType>::specieNames_[3] = {"ft", "bprog", "egr"};
00033
00034
00035
00036
00037 template<class ThermoType>
00038 Foam::egrMixture<ThermoType>::egrMixture
00039 (
00040 const dictionary& thermoDict,
00041 const fvMesh& mesh
00042 )
00043 :
00044 basicMultiComponentMixture
00045 (
00046 thermoDict,
00047 speciesTable(nSpecies_, specieNames_),
00048 mesh
00049 ),
00050
00051 stoicRatio_(thermoDict.lookup("stoichiometricAirFuelMassRatio")),
00052
00053 fuel_(thermoDict.lookup("fuel")),
00054 oxidant_(thermoDict.lookup("oxidant")),
00055 products_(thermoDict.lookup("burntProducts")),
00056
00057 mixture_("mixture", fuel_),
00058
00059 ft_(Y("ft")),
00060 b_(Y("bprog")),
00061 egr_(Y("egr"))
00062 {}
00063
00064
00065
00066
00067 template<class ThermoType>
00068 const ThermoType& Foam::egrMixture<ThermoType>::mixture
00069 (
00070 const scalar ft,
00071 const scalar b,
00072 const scalar egr
00073 ) const
00074 {
00075 if (ft < 0.0001)
00076 {
00077 return oxidant_;
00078 }
00079 else
00080 {
00081
00082 scalar fu = b*ft + (1.0 - b)*fres(ft, stoicRatio().value());
00083 scalar ox = 1 - ft - (ft - fu)*stoicRatio().value();
00084
00085 fu *= (1.0 - egr);
00086 ox *= (1.0 - egr);
00087
00088 scalar pr = 1 - fu - ox;
00089
00090 mixture_ = fu/fuel_.W()*fuel_;
00091 mixture_ += ox/oxidant_.W()*oxidant_;
00092 mixture_ += pr/products_.W()*products_;
00093
00094 return mixture_;
00095 }
00096 }
00097
00098
00099 template<class ThermoType>
00100 void Foam::egrMixture<ThermoType>::read(const dictionary& thermoDict)
00101 {
00102 stoicRatio_ = thermoDict.lookup("stoichiometricAirFuelMassRatio");
00103
00104 fuel_ = ThermoType(thermoDict.lookup("fuel"));
00105 oxidant_ = ThermoType(thermoDict.lookup("oxidant"));
00106 products_ = ThermoType(thermoDict.lookup("burntProducts"));
00107 }
00108
00109
00110