Cantera 2.6.0
TwoTempPlasmaRate.h
Go to the documentation of this file.
1//! @file TwoTempPlasmaRate.h Header for plasma reaction rates parameterized by two
2//! temperatures (gas and electron).
3
4// This file is part of Cantera. See License.txt in the top-level directory or
5// at https://cantera.org/license.txt for license and copyright information.
6
7#ifndef CT_TWOTEMPPLASMARATE_H
8#define CT_TWOTEMPPLASMARATE_H
9
10#include "Arrhenius.h"
11
12namespace Cantera
13{
14
15//! Data container holding shared data specific to TwoTempPlasmaRate
16/**
17 * The data container `TwoTempPlasmaData` holds precalculated data common to
18 * all `TwoTempPlasmaRate` objects.
19 */
21{
22 TwoTempPlasmaData() : electronTemp(1.), logTe(0.), recipTe(1.) {}
23
24 virtual bool update(const ThermoPhase& phase, const Kinetics& kin) override;
25 virtual void update(double T) override;
26 virtual void update(double T, double Te) override;
28
29 virtual void updateTe(double Te);
30
31 virtual void invalidateCache() override {
33 electronTemp = NAN;
34 }
35
36 double electronTemp; //!< electron temperature
37 double logTe; //!< logarithm of electron temperature
38 double recipTe; //!< inverse of electron temperature
39};
40
41
42//! Two temperature plasma reaction rate type depends on both
43//! gas temperature and electron temperature.
44/*!
45 * The form of the two temperature plasma reaction rate coefficient is similar to an
46 * Arrhenius reaction rate coefficient. The temperature exponent (b) is applied to
47 * the electron temperature instead. In addition, the exponential term with
48 * activation energy for electron is included.
49 *
50 * \f[
51 * k_f = A T_e^b \exp (-E_{a,g}/RT) \exp (E_{a,e} (T_e - T)/(R T T_e))
52 * \f]
53 *
54 * where \f$ T_e \f$ is the electron temperature, \f$ E_{a,g} \f$ is the activation
55 * energy for gas, and \f$ E_{a,e} \f$ is the activation energy for electron.
56 * Ref.: Kossyi, I. A., Kostinsky, A. Y., Matveyev, A. A., & Silakov, V. P. (1992).
57 * Kinetic scheme of the non-equilibrium discharge in nitrogen-oxygen mixtures.
58 * Plasma Sources Science and Technology, 1(3), 207.
59 * doi: 10.1088/0963-0252/1/3/011
60 *
61 * @ingroup arrheniusGroup
62 */
64{
65public:
67
68 //! Constructor.
69 /*!
70 * @param A Pre-exponential factor. The unit system is (kmol, m, s); actual units
71 * depend on the reaction order and the dimensionality (surface or bulk).
72 * @param b Temperature exponent (non-dimensional)
73 * @param Ea Activation energy in energy units [J/kmol]
74 * @param EE Activation electron energy in energy units [J/kmol]
75 */
76 TwoTempPlasmaRate(double A, double b, double Ea=0.0, double EE=0.0);
77
78 TwoTempPlasmaRate(const AnyMap& node, const UnitStack& rate_units={}) : TwoTempPlasmaRate() {
79 setParameters(node, rate_units);
80 }
81
82 unique_ptr<MultiRateBase> newMultiRate() const override {
83 return unique_ptr<MultiRateBase>(
85 }
86
87 virtual const std::string type() const override {
88 return "two-temperature-plasma";
89 }
90
91 virtual void setContext(const Reaction& rxn, const Kinetics& kin) override;
92
93 //! Evaluate reaction rate
94 /*!
95 * @param shared_data data shared by all reactions of a given type
96 */
97 double evalFromStruct(const TwoTempPlasmaData& shared_data) const {
98 // m_E4_R is the electron activation (in temperature units)
99 return m_A * std::exp(m_b * shared_data.logTe -
100 m_Ea_R * shared_data.recipT +
101 m_E4_R * (shared_data.electronTemp - shared_data.temperature)
102 * shared_data.recipTe * shared_data.recipT);
103 }
104
105 //! Evaluate derivative of reaction rate with respect to temperature
106 //! divided by reaction rate
107 /*!
108 * This method does not consider changes of electron temperature.
109 * A corresponding warning is raised.
110 * @param shared_data data shared by all reactions of a given type
111 */
112 double ddTScaledFromStruct(const TwoTempPlasmaData& shared_data) const;
113
114 //! Return the electron activation energy *Ea* [J/kmol]
116 return m_E4_R * GasConstant;
117 }
118};
119
120}
121
122#endif
Header for reaction rates that involve Arrhenius-type kinetics.
A map of string keys to values whose type can vary at runtime.
Definition: AnyMap.h:399
Base class for Arrhenius-type Parameterizations.
Definition: Arrhenius.h:52
virtual void setParameters(const AnyMap &node, const UnitStack &rate_units) override
Set parameters.
Definition: Arrhenius.cpp:113
double m_E4_R
Optional 4th energy parameter (in temperature units)
Definition: Arrhenius.h:167
double m_A
Pre-exponential factor.
Definition: Arrhenius.h:164
double m_b
Temperature exponent.
Definition: Arrhenius.h:165
double m_Ea_R
Activation energy (in temperature units)
Definition: Arrhenius.h:166
Public interface for kinetics managers.
Definition: Kinetics.h:114
A class template handling ReactionRate specializations.
Definition: MultiRate.h:21
Abstract base class which stores data about a reaction and its rate parameterization so that it can b...
Definition: Reaction.h:33
Base class for a phase with thermodynamic properties.
Definition: ThermoPhase.h:102
Two temperature plasma reaction rate type depends on both gas temperature and electron temperature.
double evalFromStruct(const TwoTempPlasmaData &shared_data) const
Evaluate reaction rate.
virtual void setContext(const Reaction &rxn, const Kinetics &kin) override
Set context of reaction rate evaluation.
unique_ptr< MultiRateBase > newMultiRate() const override
Create a rate evaluator for reactions of a particular derived type.
double ddTScaledFromStruct(const TwoTempPlasmaData &shared_data) const
Evaluate derivative of reaction rate with respect to temperature divided by reaction rate.
double activationElectronEnergy() const
Return the electron activation energy Ea [J/kmol].
virtual const std::string type() const override
String identifying reaction rate specialization.
Namespace for the Cantera kernel.
Definition: AnyMap.h:29
const double GasConstant
Universal Gas Constant [J/kmol/K].
Definition: ct_defs.h:113
Data container holding shared data used for ReactionRate calculation.
Definition: ReactionData.h:26
double recipT
inverse of temperature
Definition: ReactionData.h:111
virtual void update(double T)
Update data container based on temperature T
Definition: ReactionData.h:35
double temperature
temperature
Definition: ReactionData.h:109
virtual void invalidateCache()
Force shared data and reaction rates to be updated next time.
Definition: ReactionData.h:105
Data container holding shared data specific to TwoTempPlasmaRate.
virtual bool update(const ThermoPhase &phase, const Kinetics &kin) override
Update data container based on thermodynamic phase state.
double electronTemp
electron temperature
double logTe
logarithm of electron temperature
double recipTe
inverse of electron temperature
virtual void invalidateCache() override
Force shared data and reaction rates to be updated next time.
Unit aggregation utility.
Definition: Units.h:99