SootLib
Loading...
Searching...
No Matches
oxidationModel_HACA.cc
Go to the documentation of this file.
2#include "sootDefs.h"
3#include "sootModel.h"
4
5using namespace std;
6using namespace soot;
7
9
11
17
19}
20
33
35
36 double M0, M1; // #/m3, kg/m3
37
41 }
42 else {
43 M0 = state.sootVar[0];
44 M1 = state.sootVar[1];
45 }
46
47 //---------- calculate alpha, other constants
48
49 double RT = 1.9872036E-3 * state.T; // R (=) kcal/mol
50 double chi_CH = 2.3E15; // C-H sites/cm^2
51 double a_param = 33.167 - 0.0154 * state.T; // a parameter for calculating alpha
52 double b_param = -2.5786 + 0.00112 * state.T; // b parameter for calculating alpha
53
54 //---------- calculate raw HACA reaction rates
55
56 double fR1 = 4.2E13 * exp(-13.0 / RT) * state.getGasSpC(gasSp::H) / 1000;
57 double rR1 = 3.9E12 * exp(-11.0 / RT) * state.getGasSpC(gasSp::H2) / 1000;
58 double fR2 = 1.0E10 * pow(state.T, 0.734) * exp(-1.43 / RT) * state.getGasSpC(gasSp::OH) / 1000;
59 double rR2 = 3.68E8 * pow(state.T, 1.139) * exp(-17.1 / RT) * state.getGasSpC(gasSp::H2O) / 1000;
60 double fR3 = 2.0E13 * state.getGasSpC(gasSp::H) / 1000;
61 double fR4 = 8.00E7 * pow(state.T, 1.56) * exp(-3.8 / RT) * state.getGasSpC(gasSp::C2H2) / 1000;
62 double fR5 = 2.2E12 * exp(-7.5 / RT) * state.getGasSpC(gasSp::O2) / 1000;
63
64 //---------- Steady state calculation of chi for soot radical; see Frenklach 1990 pg. 1561
65
66 double denom = rR1 + rR2 + fR3 + fR4 + fR5;
67 double chi_S = denom == 0 ? 0 : 2 * chi_CH * (fR1 + fR2) / denom; // C-* sites/cm^2
68
69 double alpha = 1.0;
70 if (M0 > 0)
71 alpha = tanh(a_param/log10(M1/M0) + b_param); // alpha = fraction of available surface sites
72 if (alpha < 0) alpha=1.0;
73
74 double rxns_s = fR5*alpha*chi_S * 1E4; // reactions at sites per m2 per s.
75 double RO2 = 2.0*rxns_s*gasSpMW[(int)gasSp::C]/Na; // kg/m2/s: each site: 2.0: each site gets 2 Carbons
76 double ROH = 0.13*state.getGasSpC(gasSp::OH)* // kg/m2/s = 1290*0.13*POH/sqrt(T) with POH in atm
77 sqrt(Rg*state.T/(2.0*M_PI*gasSpMW[(int)gasSp::OH]))*
78 gasSpMW[(int)gasSp::C];
79 return RO2 + ROH;
80}
double getOxidationSootRate(const state &state) const override
oxidationMech mechType
identity of the type of oxidation (child)
std::vector< double > oxidationRxnRatios
mole ratios for gas species rate coupling
sootModel * SM
back pointer to soot model
virtual double get_M0_sectional(const state &state)
Definition: sootModel.h:56
psdMech psdMechType
one of MONO, LOGN, QMOM, MOMIC, SECT, etc.
Definition: sootModel.h:37
virtual double get_M1_sectional(const state &state)
Definition: sootModel.h:60
double T
gas temperature (K)
Definition: state.h:23
double getGasSpC(gasSp sp) const
Definition: state.h:46
std::vector< double > sootVar
soot variables (moments or # in sections>
Definition: state.h:32
Definition: sootDefs.h:11
const double Na
Avogadro's constant: #/kmol.
Definition: sootDefs.h:15
const double Rg
Universal gas constant: J/kmol*K.
Definition: sootDefs.h:17
const std::vector< double > gasSpMW
(kg/kmol); make sure the order corresponds to the gasSp enum
Definition: sootDefs.h:74