Pressure-dependent rate expression where the rate coefficient is expressed as a bivariate Chebyshev polynomial in temperature and pressure. More...
#include <ChebyshevRate.h>
Pressure-dependent rate expression where the rate coefficient is expressed as a bivariate Chebyshev polynomial in temperature and pressure.
The rate constant can be written as:
\[ \log_{10} k(T,P) = \sum_{t=1}^{N_T} \sum_{p=1}^{N_P} \alpha_{tp} \phi_t(\tilde{T}) \phi_p(\tilde{P}) \]
where \( \alpha_{tp} \) are the constants defining the rate, \( \phi_n(x) \) is the Chebyshev polynomial of the first kind of degree n evaluated at x, and
\[ \tilde{T} \equiv \frac{2T^{-1} - T_\mathrm{min}^{-1} - T_\mathrm{max}^{-1}} {T_\mathrm{max}^{-1} - T_\mathrm{min}^{-1}} \]
\[ \tilde{P} \equiv \frac{2 \log_{10} P - \log_{10} P_\mathrm{min} - \log_{10} P_\mathrm{max}} {\log_{10} P_\mathrm{max} - \log_{10} P_\mathrm{min}} \]
are reduced temperature and reduced pressures which map the ranges \( (T_\mathrm{min}, T_\mathrm{max}) \) and \( (P_\mathrm{min}, P_\mathrm{max}) \) to (-1, 1).
A ChebyshevRate rate expression is specified in terms of the coefficient matrix \( \alpha \) and the temperature and pressure ranges. Note that the Chebyshev polynomials are not defined outside the interval (-1,1), and therefore extrapolation of rates outside the range of temperatures and pressures for which they are defined is strongly discouraged.
Definition at line 91 of file ChebyshevRate.h.
Public Member Functions | |
ChebyshevRate ()=default | |
Default constructor. | |
ChebyshevRate (double Tmin, double Tmax, double Pmin, double Pmax, const Array2D &coeffs) | |
Constructor directly from coefficient array. | |
ChebyshevRate (const AnyMap &node, const UnitStack &rate_units={}) | |
unique_ptr< MultiRateBase > | newMultiRate () const override |
Create a rate evaluator for reactions of a particular derived type. | |
const string | type () const override |
String identifying reaction rate specialization. | |
void | setParameters (const AnyMap &node, const UnitStack &rate_units) override |
Perform object setup based on AnyMap node information. | |
void | getParameters (AnyMap &rateNode) const override |
Get parameters. | |
void | validate (const string &equation, const Kinetics &kin) override |
Validate the reaction rate expression. | |
void | updateFromStruct (const ChebyshevData &shared_data) |
Update information specific to reaction. | |
double | evalFromStruct (const ChebyshevData &shared_data) |
Evaluate reaction rate. | |
void | setLimits (double Tmin, double Tmax, double Pmin, double Pmax) |
Set limits for ChebyshevRate object. | |
double | Tmin () const |
Minimum valid temperature [K]. | |
double | Tmax () const |
Maximum valid temperature [K]. | |
double | Pmin () const |
Minimum valid pressure [Pa]. | |
double | Pmax () const |
Maximum valid pressure [Pa]. | |
size_t | nPressure () const |
Number of points in the pressure direction. | |
size_t | nTemperature () const |
Number of points in the temperature direction. | |
const Array2D & | data () const |
Access Chebyshev coefficients as 2-dimensional array with temperature and pressure dimensions corresponding to rows and columns, respectively. | |
void | setData (const Array2D &coeffs) |
Set the Chebyshev coefficients as 2-dimensional array. | |
Public Member Functions inherited from ReactionRate | |
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. | |
Protected Attributes | |
double | m_log10P = NAN |
value detecting updates | |
double | Tmin_ |
double | Tmax_ |
valid temperature range | |
double | Pmin_ |
double | Pmax_ |
valid pressure range | |
double | TrNum_ |
double | TrDen_ |
terms appearing in the reduced temperature | |
double | PrNum_ |
double | PrDen_ |
terms appearing in the reduced pressure | |
Array2D | m_coeffs |
< coefficient array | |
vector< double > | dotProd_ |
dot product of coeffs with the reduced pressure polynomial | |
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. | |
Additional Inherited Members | |
virtual void | getParameters (AnyMap &node) const |
Get parameters. | |
|
default |
Default constructor.
ChebyshevRate | ( | double | Tmin, |
double | Tmax, | ||
double | Pmin, | ||
double | Pmax, | ||
const Array2D & | coeffs | ||
) |
Constructor directly from coefficient array.
Tmin | Minimum temperature [K] |
Tmax | Maximum temperature [K] |
Pmin | Minimum pressure [Pa] |
Pmax | Maximum pressure [Pa] |
coeffs | Coefficient array dimensioned nT by nP where nT and nP are the number of temperatures and pressures used in the fit, respectively. |
Definition at line 50 of file ChebyshevRate.cpp.
ChebyshevRate | ( | const AnyMap & | node, |
const UnitStack & | rate_units = {} |
||
) |
Definition at line 57 of file ChebyshevRate.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 112 of file ChebyshevRate.h.
|
inlineoverridevirtual |
String identifying reaction rate specialization.
Implements ReactionRate.
Definition at line 116 of file ChebyshevRate.h.
Perform object setup based on AnyMap node information.
node | AnyMap containing rate information |
rate_units | Unit definitions specific to rate information |
Reimplemented from ReactionRate.
Definition at line 63 of file ChebyshevRate.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 126 of file ChebyshevRate.cpp.
|
overridevirtual |
Validate the reaction rate expression.
Reimplemented from ReactionRate.
Definition at line 160 of file ChebyshevRate.cpp.
|
inline |
Update information specific to reaction.
shared_data | data shared by all reactions of a given type |
Definition at line 133 of file ChebyshevRate.h.
|
inline |
Evaluate reaction rate.
shared_data | data shared by all reactions of a given type |
Definition at line 158 of file ChebyshevRate.h.
void setLimits | ( | double | Tmin, |
double | Tmax, | ||
double | Pmin, | ||
double | Pmax | ||
) |
Set limits for ChebyshevRate object.
Tmin | Minimum temperature [K] |
Tmax | Maximum temperature [K] |
Pmin | Minimum pressure [Pa] |
Pmax | Maximum pressure [Pa] |
Definition at line 96 of file ChebyshevRate.cpp.
|
inline |
Minimum valid temperature [K].
Definition at line 183 of file ChebyshevRate.h.
|
inline |
Maximum valid temperature [K].
Definition at line 188 of file ChebyshevRate.h.
|
inline |
Minimum valid pressure [Pa].
Definition at line 193 of file ChebyshevRate.h.
|
inline |
Maximum valid pressure [Pa].
Definition at line 198 of file ChebyshevRate.h.
|
inline |
Number of points in the pressure direction.
Definition at line 203 of file ChebyshevRate.h.
|
inline |
Number of points in the temperature direction.
Definition at line 208 of file ChebyshevRate.h.
|
inline |
Access Chebyshev coefficients as 2-dimensional array with temperature and pressure dimensions corresponding to rows and columns, respectively.
Definition at line 214 of file ChebyshevRate.h.
void setData | ( | const Array2D & | coeffs | ) |
Set the Chebyshev coefficients as 2-dimensional array.
Definition at line 114 of file ChebyshevRate.cpp.
|
protected |
value detecting updates
Definition at line 222 of file ChebyshevRate.h.
|
protected |
Definition at line 223 of file ChebyshevRate.h.
|
protected |
valid temperature range
Definition at line 223 of file ChebyshevRate.h.
|
protected |
Definition at line 224 of file ChebyshevRate.h.
|
protected |
valid pressure range
Definition at line 224 of file ChebyshevRate.h.
|
protected |
Definition at line 225 of file ChebyshevRate.h.
|
protected |
terms appearing in the reduced temperature
Definition at line 225 of file ChebyshevRate.h.
|
protected |
Definition at line 226 of file ChebyshevRate.h.
|
protected |
terms appearing in the reduced pressure
Definition at line 226 of file ChebyshevRate.h.
|
protected |
< coefficient array
Definition at line 228 of file ChebyshevRate.h.
|
protected |
dot product of coeffs with the reduced pressure polynomial
Definition at line 229 of file ChebyshevRate.h.