mirror of
https://github.com/Cantera/cantera.git
synced 2025-02-25 18:55:29 -06:00
add O2/O2- collision data to deal with resonant charge transfer effect
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user