Cantera  3.2.0a2
Loading...
Searching...
No Matches

Electron collision plasma reaction rate type. More...

#include <ElectronCollisionPlasmaRate.h>

Inheritance diagram for ElectronCollisionPlasmaRate:
[legend]

Detailed Description

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).

Since
New in Cantera 3.1.

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< MultiRateBasenewMultiRate () 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].
 
- Public Member Functions inherited from ReactionRate
 ReactionRate (const ReactionRate &other)
 
ReactionRateoperator= (const ReactionRate &other)
 
virtual unique_ptr< MultiRateBasenewMultiRate () 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 UnitsconversionUnits () 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.
 
- Protected Attributes inherited from ReactionRate
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.
 

Constructor & Destructor Documentation

◆ ElectronCollisionPlasmaRate()

ElectronCollisionPlasmaRate ( const AnyMap node,
const UnitStack rate_units = {} 
)
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.

Parameters
nodeThe AnyMap node containing rate fields from YAML
rate_unitsUnits used for interpreting the rate fields

Definition at line 114 of file ElectronCollisionPlasmaRate.h.

Member Function Documentation

◆ setParameters()

void setParameters ( const AnyMap node,
const UnitStack units 
)
overridevirtual

Set parameters.

Parameters
nodeAnyMap object containing reaction rate specification
unitsunit definitions specific to rate information

Reimplemented from ReactionRate.

Definition at line 48 of file ElectronCollisionPlasmaRate.cpp.

◆ getParameters()

void getParameters ( AnyMap node) const
overridevirtual

Get parameters.

Parameters
nodeAnyMap 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.

◆ newMultiRate()

unique_ptr< MultiRateBase > newMultiRate ( ) const
inlineoverridevirtual

Create a rate evaluator for reactions of a particular derived type.

Derived classes usually implement this as:

unique_ptr<MultiRateBase> newMultiRate() const override {
return make_unique<MultiRate<RateType, DataType>>();
unique_ptr< MultiRateBase > newMultiRate() const override
Create a rate evaluator for reactions of a particular derived type.

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.

◆ type()

virtual const std::string type ( ) const
inlineoverridevirtual

String identifying reaction rate specialization.

Implements ReactionRate.

Definition at line 129 of file ElectronCollisionPlasmaRate.h.

◆ setContext()

void setContext ( const Reaction rxn,
const Kinetics kin 
)
overridevirtual

Set context of reaction rate evaluation.

Parameters
rxnReaction object associated with rate
kinKinetics 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.

◆ evalFromStruct()

double evalFromStruct ( const ElectronCollisionPlasmaData shared_data)

Evaluate reaction rate.

Parameters
shared_datadata shared by all reactions of a given type

Definition at line 89 of file ElectronCollisionPlasmaRate.cpp.

◆ modifyRateConstants()

void modifyRateConstants ( const ElectronCollisionPlasmaData shared_data,
double &  kf,
double &  kr 
)

Calculate the reverse rate coefficient for super-elastic collisions.

Parameters
shared_dataData structure with energy levels and EEDF
kfForward rate coefficient (input, unused)
krReverse rate coefficient (output, modified)

Definition at line 127 of file ElectronCollisionPlasmaRate.cpp.

◆ ddTScaledFromStruct()

double ddTScaledFromStruct ( const ElectronCollisionPlasmaData shared_data) const
inline

Evaluate derivative of reaction rate with respect to temperature divided by reaction rate.

Parameters
shared_datadata shared by all reactions of a given type

Definition at line 151 of file ElectronCollisionPlasmaRate.h.

◆ kind()

const string & kind ( ) const
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
    Since
    New in Cantera 3.2.

Definition at line 161 of file ElectronCollisionPlasmaRate.h.

◆ target()

const string & target ( ) const
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

Since
New in Cantera 3.2.

Definition at line 168 of file ElectronCollisionPlasmaRate.h.

◆ product()

const string & product ( ) const
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.

Note
this may not necessarily be represented by a distinct species in the mixture.
Since
New in Cantera 3.2.

Definition at line 178 of file ElectronCollisionPlasmaRate.h.

◆ threshold()

double threshold ( ) const
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.

Note
This behavior may be subject to change. A more robust approach may use the energy corresponding to the first non-zero cross section value, rather than the first non-zero energy point in the data table.
Since
New in Cantera 3.2.

Definition at line 192 of file ElectronCollisionPlasmaRate.h.

◆ energyLevels()

const vector< double > & energyLevels ( ) const
inline

The value of m_energyLevels [eV].

Definition at line 197 of file ElectronCollisionPlasmaRate.h.

◆ crossSections()

const vector< double > & crossSections ( ) const
inline

The value of m_crossSections [m2].

Definition at line 202 of file ElectronCollisionPlasmaRate.h.

◆ crossSectionInterpolated()

const vector< double > & crossSectionInterpolated ( ) const
inline

The value of m_crossSectionsInterpolated [m2].

Definition at line 207 of file ElectronCollisionPlasmaRate.h.

◆ updateInterpolatedCrossSection()

void updateInterpolatedCrossSection ( const vector< double > &  sharedLevels)

Update the value of m_crossSectionsInterpolated [m2].

Definition at line 79 of file ElectronCollisionPlasmaRate.cpp.

Member Data Documentation

◆ m_kind

string m_kind
private

The name of the kind of electron collision.

Definition at line 216 of file ElectronCollisionPlasmaRate.h.

◆ m_target

string m_target
private

The name of the target of electron collision.

Definition at line 219 of file ElectronCollisionPlasmaRate.h.

◆ m_product

string m_product
private

The product of electron collision.

Definition at line 222 of file ElectronCollisionPlasmaRate.h.

◆ m_threshold

double m_threshold
private

The energy threshold of electron collision.

Definition at line 225 of file ElectronCollisionPlasmaRate.h.

◆ m_energyLevels

vector<double> m_energyLevels
private

electron energy levels [eV]

Definition at line 228 of file ElectronCollisionPlasmaRate.h.

◆ m_levelNumber

int m_levelNumber = -3
private

Counter used to indicate when m_energyLevels needs to be synced with the phase.

Definition at line 231 of file ElectronCollisionPlasmaRate.h.

◆ m_levelNumberSuperelastic

int m_levelNumberSuperelastic = -2
private

Counter used to indicate when m_crossSectionsOffset needs to be synced with the phase.

Definition at line 235 of file ElectronCollisionPlasmaRate.h.

◆ m_crossSections

vector<double> m_crossSections
private

collision cross sections [m2] at m_energyLevels

Definition at line 238 of file ElectronCollisionPlasmaRate.h.

◆ m_crossSectionsInterpolated

vector<double> m_crossSectionsInterpolated
private

collision cross sections [m2] after interpolation

Definition at line 241 of file ElectronCollisionPlasmaRate.h.

◆ m_crossSectionsOffset

Eigen::ArrayXd m_crossSectionsOffset
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.


The documentation for this class was generated from the following files: