add O2/O2- collision data to deal with resonant charge transfer effect

This commit is contained in:
bangshiuh
2018-08-21 23:06:26 -04:00
committed by Ray Speth
parent e0d3509597
commit 7f13f4d832
2 changed files with 37 additions and 4 deletions

View File

@@ -24,7 +24,7 @@ namespace Cantera
* 1. Selle, Stefan, and Uwe Riedel. "Transport properties of ionized species."
* Annals of the New York Academy of Sciences 891.1 (1999): 72-80.
* 2. Selle, Stefan, and Uwe Riedel. "Transport coefficients of reacting air at
* high temperatures." 38th Aerospace Sciences Meeting and Exhibit. 1999.
* high temperatures." 38th Aerospace Sciences Meeting and Exhibit. 1999.
* 3. Han, Jie, et al. "Numerical modelling of ion transport in flames."
* Combustion Theory and Modelling 19.6 (2015): 744-772.
* DOI: 10.1080/13647830.2015.1090018
@@ -34,6 +34,16 @@ namespace Cantera
* 5. Viehland, L. A., et al. "Tables of transport collision integrals for
* (n, 6, 4) ion-neutral potentials." Atomic Data and Nuclear Data Tables
* 16.6 (1975): 495-514.
*
* Stockmayer-(n,6,4) model is not suitable for collision between O2/O2-
* due to resonant charge transfer. Therefore, an experimental collision
* data is used instead.
*
* Data taken from:
*
* Prager, Jens. Modeling and simulation of charged species in
* lean methane-oxygen flames. Diss. 2005. Page 104.
*
* @ingroup tranprops
*/
class IonGasTransport : public MixTransport
@@ -94,6 +104,9 @@ protected:
//! parameter of omega11 of n64
DenseMatrix m_gamma;
//! polynomial of the collision integral for O2/O2-
vector_fp m_om11_O2;
};
}

View File

@@ -45,6 +45,17 @@ void IonGasTransport::init(thermo_t* thermo, int mode, int log_level)
m_kNeutral.push_back(k);
}
}
// set up O2/O2- collision integral [A^2]
// Data taken from Prager (2005)
const vector_fp temp{300.0, 400.0, 500.0, 600.0, 800.0, 1000.0,
1200.0, 1500.0, 2000.0, 2500.0, 3000.0, 4000.0};
const vector_fp om11_O2{120.0, 107.0, 98.1, 92.1, 83.0, 77.0,
72.6, 67.9, 62.7, 59.3, 56.7, 53.8};
vector_fp w(temp.size(),-1);
int degree = 5;
m_om11_O2.resize(degree + 1);
polyfit(temp.size(), degree, temp.data(), om11_O2.data(),
w.data(), m_om11_O2.data());
// set up Monchick and Mason parameters
setupCollisionParameters();
// set up n64 parameters
@@ -160,9 +171,19 @@ void IonGasTransport::fitDiffCoeffs(MMCollisionInt& integrals)
double eps = m_epsilon(j,k);
double tstar = Boltzmann * t/eps;
double sigma = m_diam(j,k);
double om11 = omega11_n64(tstar, m_gamma(j,k));
double om11 = omega11_n64(tstar, m_gamma(j,k))
* Pi * sigma * sigma;
// Stockmayer-(n,6,4) model is not suitable for collision
// between O2/O2- due to resonant charge transfer.
// Therefore, the experimental collision data is used instead.
if ((k == m_thermo->speciesIndex("O2-") ||
j == m_thermo->speciesIndex("O2-")) &&
(k == m_thermo->speciesIndex("O2") ||
j == m_thermo->speciesIndex("O2"))) {
om11 = poly5(t, m_om11_O2.data()) / 1e20;
}
double diffcoeff = 3.0/16.0 * sqrt(2.0 * Pi/m_reducedMass(k,j))
* pow(Boltzmann * t, 1.5) / (Pi * sigma * sigma * om11);
* pow(Boltzmann * t, 1.5) / om11;
diff[n] = diffcoeff/pow(t, 1.5);
w[n] = 1.0/(diff[n]*diff[n]);
@@ -353,4 +374,3 @@ void IonGasTransport::getMobilities(double* const mobi)
}
}