Electron collision plasma reaction rate type. More...
#include <ElectronCollisionPlasmaRate.h>
Electron collision plasma reaction rate type.
The electron collision plasma reaction rate uses the electron collision data and the electron energy distribution to calculate the reaction rate. Hagelaar and Pitchford [14] define the reaction rate coefficient (Eqn. 63) as,
\[ k = \gamma \int_0^{\infty} \epsilon \sigma F_0 d\epsilon, \]
where \( \gamma = \sqrt{2/m_e} \) (Eqn.4 in [15]), \( m_e \) [kg] is the electron mass, \( \epsilon \) [J] is the electron energy, \( \sigma \) [m²] is the reaction collision cross section, \( F_0 \) [ \( \mbox{J}^{-3/2} \)] is the normalized electron energy distribution function, and \( k \) has the unit of [m³/s]. The collision process is treated as a bimolecular reaction and should have units of [m³/kmol/s]. Therefore the forward reaction coefficient becomes,
\[ k_f = \gamma N_A \int_0^{\infty} \epsilon \sigma F_0 d\epsilon, \]
where \( N_A \) [1/kmol] is the Avogadro's number. Since the unit of the electron energy downloaded from LXCat is in [eV], the elementary charge, e, can be taken out of the integral and combine with \( \gamma \) to get,
\[ k_f = \sqrt{\frac{2e}{m_e}} N_A \int_0^{\infty} \epsilon_V \sigma F_{0,V} d\epsilon_V. \]
In addition to the forward reaction coefficient, the reverse (super-elastic) reaction coefficient can be written as,
\[ k_r = \sqrt{\frac{2e}{m_e}} N_A \int_0^{\infty} \epsilon_V \sigma_{super} F_{0,V} d\epsilon_V, \]
where \( \sigma_{super} \) is the super-elastic cross section, defined by the principle of detailed balancing as:
\[ \sigma_{super}(\epsilon) = \frac{\epsilon + U}{\epsilon} \sigma(\epsilon + U), \]
where \( U \) is the threshold energy [eV], equal to the first energy level of the cross section (m_energyLevels).
Definition at line 101 of file ElectronCollisionPlasmaRate.h.
Public Member Functions | |
ElectronCollisionPlasmaRate (const AnyMap &node, const UnitStack &rate_units={}) | |
Constructor from YAML input for ElectronCollisionPlasmaRate. | |
virtual void | setParameters (const AnyMap &node, const UnitStack &units) override |
Set parameters. | |
virtual void | getParameters (AnyMap &node) const override |
Get parameters. | |
unique_ptr< MultiRateBase > | newMultiRate () const override |
Create a rate evaluator for reactions of a particular derived type. | |
virtual const std::string | type () const override |
String identifying reaction rate specialization. | |
virtual void | setContext (const Reaction &rxn, const Kinetics &kin) override |
Set context of reaction rate evaluation. | |
double | evalFromStruct (const ElectronCollisionPlasmaData &shared_data) |
Evaluate reaction rate. | |
void | modifyRateConstants (const ElectronCollisionPlasmaData &shared_data, double &kf, double &kr) |
Calculate the reverse rate coefficient for super-elastic collisions. | |
double | ddTScaledFromStruct (const ElectronCollisionPlasmaData &shared_data) const |
Evaluate derivative of reaction rate with respect to temperature divided by reaction rate. | |
const string & | kind () const |
The kind of the process which will be one of the following: | |
const string & | target () const |
Get the target species of the electron collision process. | |
const string & | product () const |
Get the product of the electron collision process. | |
double | threshold () const |
Get the energy threshold of electron collision [eV]. | |
const vector< double > & | energyLevels () const |
The value of m_energyLevels [eV]. | |
const vector< double > & | crossSections () const |
The value of m_crossSections [m2]. | |
const vector< double > & | crossSectionInterpolated () const |
The value of m_crossSectionsInterpolated [m2]. | |
void | updateInterpolatedCrossSection (const vector< double > &) |
Update the value of m_crossSectionsInterpolated [m2]. | |
![]() | |
ReactionRate (const ReactionRate &other) | |
ReactionRate & | operator= (const ReactionRate &other) |
virtual unique_ptr< MultiRateBase > | newMultiRate () const |
Create a rate evaluator for reactions of a particular derived type. | |
virtual const string | type () const =0 |
String identifying reaction rate specialization. | |
virtual const string | subType () const |
String identifying sub-type of reaction rate specialization. | |
virtual void | setParameters (const AnyMap &node, const UnitStack &units) |
Set parameters. | |
AnyMap | parameters () const |
Return the parameters such that an identical Reaction could be reconstructed using the newReaction() function. | |
const Units & | conversionUnits () const |
Get the units for converting the leading term in the reaction rate expression. | |
virtual void | setRateUnits (const UnitStack &rate_units) |
Set the units of the reaction rate expression. | |
virtual void | check (const string &equation) |
Check basic syntax and settings of reaction rate expression. | |
virtual void | validate (const string &equation, const Kinetics &kin) |
Validate the reaction rate expression. | |
size_t | rateIndex () const |
Reaction rate index within kinetics evaluator. | |
void | setRateIndex (size_t idx) |
Set reaction rate index within kinetics evaluator. | |
virtual void | setContext (const Reaction &rxn, const Kinetics &kin) |
Set context of reaction rate evaluation. | |
double | eval (double T) |
Evaluate reaction rate based on temperature. | |
double | eval (double T, double extra) |
Evaluate reaction rate based on temperature and an extra parameter. | |
double | eval (double T, const vector< double > &extra) |
Evaluate reaction rate based on temperature and an extra vector parameter. | |
bool | valid () const |
Get flag indicating whether reaction rate is set up correctly. | |
bool | compositionDependent () |
Boolean indicating whether rate has compositional dependence. | |
void | setCompositionDependence (bool comp_dep) |
Set rate compositional dependence. | |
Private Attributes | |
string | m_kind |
The name of the kind of electron collision. | |
string | m_target |
The name of the target of electron collision. | |
string | m_product |
The product of electron collision. | |
double | m_threshold |
The energy threshold of electron collision. | |
vector< double > | m_energyLevels |
electron energy levels [eV] | |
int | m_levelNumber = -3 |
Counter used to indicate when m_energyLevels needs to be synced with the phase. | |
int | m_levelNumberSuperelastic = -2 |
Counter used to indicate when m_crossSectionsOffset needs to be synced with the phase. | |
vector< double > | m_crossSections |
collision cross sections [m2] at m_energyLevels | |
vector< double > | m_crossSectionsInterpolated |
collision cross sections [m2] after interpolation | |
Eigen::ArrayXd | m_crossSectionsOffset |
collision cross section [m2] interpolated on m_energyLevels offset by the threshold energy (the first energy level). | |
Additional Inherited Members | |
virtual void | getParameters (AnyMap &node) const |
Get parameters. | |
![]() | |
AnyMap | m_input |
Input data used for specific models. | |
size_t | m_rate_index = npos |
Index of reaction rate within kinetics evaluator. | |
bool | m_valid = false |
Flag indicating whether reaction rate is set up correctly. | |
bool | m_composition_dependent_rate = false |
Flag indicating composition dependent rate. | |
Units | m_conversion_units {0.} |
Units of the leading term in the reaction rate expression. | |
|
inline |
Constructor from YAML input for ElectronCollisionPlasmaRate.
This constructor is used to initialize an electron collision plasma rate from an input YAML file. It extracts the energy levels, cross-sections, and reaction metadata used in the rate coefficient calculation.
node | The AnyMap node containing rate fields from YAML |
rate_units | Units used for interpreting the rate fields |
Definition at line 114 of file ElectronCollisionPlasmaRate.h.
Set parameters.
node | AnyMap object containing reaction rate specification |
units | unit definitions specific to rate information |
Reimplemented from ReactionRate.
Definition at line 48 of file ElectronCollisionPlasmaRate.cpp.
|
overridevirtual |
Get parameters.
node | AnyMap containing rate information Store the parameters of a ReactionRate needed to reconstruct an identical object. Does not include user-defined fields available in the m_input map. |
Reimplemented from ReactionRate.
Definition at line 70 of file ElectronCollisionPlasmaRate.cpp.
|
inlineoverridevirtual |
Create a rate evaluator for reactions of a particular derived type.
Derived classes usually implement this as:
where RateType
is the derived class name and DataType
is the corresponding container for parameters needed to evaluate reactions of that type.
Reimplemented from ReactionRate.
Definition at line 124 of file ElectronCollisionPlasmaRate.h.
|
inlineoverridevirtual |
String identifying reaction rate specialization.
Implements ReactionRate.
Definition at line 129 of file ElectronCollisionPlasmaRate.h.
Set context of reaction rate evaluation.
rxn | Reaction object associated with rate |
kin | Kinetics object used for rate evaluation This method allows for passing of information specific to the associated reaction when a ReactionRate object is added a MultiRate reaction evaluator. |
Reimplemented from ReactionRate.
Definition at line 172 of file ElectronCollisionPlasmaRate.cpp.
double evalFromStruct | ( | const ElectronCollisionPlasmaData & | shared_data | ) |
Evaluate reaction rate.
shared_data | data shared by all reactions of a given type |
Definition at line 89 of file ElectronCollisionPlasmaRate.cpp.
void modifyRateConstants | ( | const ElectronCollisionPlasmaData & | shared_data, |
double & | kf, | ||
double & | kr | ||
) |
Calculate the reverse rate coefficient for super-elastic collisions.
shared_data | Data structure with energy levels and EEDF |
kf | Forward rate coefficient (input, unused) |
kr | Reverse rate coefficient (output, modified) |
Definition at line 127 of file ElectronCollisionPlasmaRate.cpp.
|
inline |
Evaluate derivative of reaction rate with respect to temperature divided by reaction rate.
shared_data | data shared by all reactions of a given type |
Definition at line 151 of file ElectronCollisionPlasmaRate.h.
|
inline |
The kind of the process which will be one of the following:
"effective"
: A generic effective collision"excitation"
: Electronic or vibrational excitation"ionization"
: Electron-impact ionization"attachment"
: Electron attachment Definition at line 161 of file ElectronCollisionPlasmaRate.h.
|
inline |
Get the target species of the electron collision process.
This is the name of the neutral or ionic species that the electron interacts with
Definition at line 168 of file ElectronCollisionPlasmaRate.h.
|
inline |
Get the product of the electron collision process.
This is the name of the species or excited state of some species resulting from the process.
Definition at line 178 of file ElectronCollisionPlasmaRate.h.
|
inline |
Get the energy threshold of electron collision [eV].
By default, the threshold is set to the first non-zero energy value listed in the tabulated cross section data.
Definition at line 192 of file ElectronCollisionPlasmaRate.h.
|
inline |
The value of m_energyLevels [eV].
Definition at line 197 of file ElectronCollisionPlasmaRate.h.
|
inline |
The value of m_crossSections [m2].
Definition at line 202 of file ElectronCollisionPlasmaRate.h.
|
inline |
The value of m_crossSectionsInterpolated [m2].
Definition at line 207 of file ElectronCollisionPlasmaRate.h.
void updateInterpolatedCrossSection | ( | const vector< double > & | sharedLevels | ) |
Update the value of m_crossSectionsInterpolated [m2].
Definition at line 79 of file ElectronCollisionPlasmaRate.cpp.
|
private |
The name of the kind of electron collision.
Definition at line 216 of file ElectronCollisionPlasmaRate.h.
|
private |
The name of the target of electron collision.
Definition at line 219 of file ElectronCollisionPlasmaRate.h.
|
private |
The product of electron collision.
Definition at line 222 of file ElectronCollisionPlasmaRate.h.
|
private |
The energy threshold of electron collision.
Definition at line 225 of file ElectronCollisionPlasmaRate.h.
|
private |
electron energy levels [eV]
Definition at line 228 of file ElectronCollisionPlasmaRate.h.
|
private |
Counter used to indicate when m_energyLevels needs to be synced with the phase.
Definition at line 231 of file ElectronCollisionPlasmaRate.h.
|
private |
Counter used to indicate when m_crossSectionsOffset needs to be synced with the phase.
Definition at line 235 of file ElectronCollisionPlasmaRate.h.
|
private |
collision cross sections [m2] at m_energyLevels
Definition at line 238 of file ElectronCollisionPlasmaRate.h.
|
private |
collision cross sections [m2] after interpolation
Definition at line 241 of file ElectronCollisionPlasmaRate.h.
|
private |
collision cross section [m2] interpolated on m_energyLevels offset by the threshold energy (the first energy level).
This is used for the calculation of the super-elastic collision reaction rate coefficient.
Definition at line 247 of file ElectronCollisionPlasmaRate.h.