Cantera  3.1.0a1

Pressure-dependent rate expression where the rate coefficient is expressed as a bivariate Chebyshev polynomial in temperature and pressure. More...

#include <ChebyshevRate.h>

Inheritance diagram for ChebyshevRate:
[legend]

Detailed Description

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. More...
 
 ChebyshevRate (double Tmin, double Tmax, double Pmin, double Pmax, const Array2D &coeffs)
 Constructor directly from coefficient array. More...
 
 ChebyshevRate (const AnyMap &node, const UnitStack &rate_units={})
 
unique_ptr< MultiRateBasenewMultiRate () const override
 Create a rate evaluator for reactions of a particular derived type. More...
 
const string type () const override
 String identifying reaction rate specialization. More...
 
void setParameters (const AnyMap &node, const UnitStack &rate_units) override
 Perform object setup based on AnyMap node information. More...
 
void getParameters (AnyMap &rateNode) const override
 Get parameters. More...
 
void validate (const string &equation, const Kinetics &kin) override
 Validate the reaction rate expression. More...
 
void updateFromStruct (const ChebyshevData &shared_data)
 Update information specific to reaction. More...
 
double evalFromStruct (const ChebyshevData &shared_data)
 Evaluate reaction rate. More...
 
void setLimits (double Tmin, double Tmax, double Pmin, double Pmax)
 Set limits for ChebyshevRate object. More...
 
double Tmin () const
 Minimum valid temperature [K]. More...
 
double Tmax () const
 Maximum valid temperature [K]. More...
 
double Pmin () const
 Minimum valid pressure [Pa]. More...
 
double Pmax () const
 Maximum valid pressure [Pa]. More...
 
size_t nPressure () const
 Number of points in the pressure direction. More...
 
size_t nTemperature () const
 Number of points in the temperature direction. More...
 
const Array2Ddata () const
 Access Chebyshev coefficients as 2-dimensional array with temperature and pressure dimensions corresponding to rows and columns, respectively. More...
 
void setData (const Array2D &coeffs)
 Set the Chebyshev coefficients as 2-dimensional array. More...
 
- Public Member Functions inherited from ReactionRate
 ReactionRate (const ReactionRate &other)
 
ReactionRateoperator= (const ReactionRate &other)
 
virtual const string subType () const
 String identifying sub-type of reaction rate specialization. More...
 
AnyMap parameters () const
 Return the parameters such that an identical Reaction could be reconstructed using the newReaction() function. More...
 
const UnitsconversionUnits () const
 Get the units for converting the leading term in the reaction rate expression. More...
 
virtual void setRateUnits (const UnitStack &rate_units)
 Set the units of the reaction rate expression. More...
 
virtual void check (const string &equation)
 Check basic syntax and settings of reaction rate expression. More...
 
size_t rateIndex () const
 Reaction rate index within kinetics evaluator. More...
 
void setRateIndex (size_t idx)
 Set reaction rate index within kinetics evaluator. More...
 
virtual void setContext (const Reaction &rxn, const Kinetics &kin)
 Set context of reaction rate evaluation. More...
 
double eval (double T)
 Evaluate reaction rate based on temperature. More...
 
double eval (double T, double extra)
 Evaluate reaction rate based on temperature and an extra parameter. More...
 
double eval (double T, const vector< double > &extra)
 Evaluate reaction rate based on temperature and an extra vector parameter. More...
 
bool valid () const
 Get flag indicating whether reaction rate is set up correctly. More...
 
bool compositionDependent ()
 Boolean indicating whether rate has compositional dependence. More...
 
void setCompositionDependence (bool comp_dep)
 Set rate compositional dependence. More...
 

Protected Attributes

double m_log10P = NAN
 value detecting updates More...
 
double Tmin_
 
double Tmax_
 valid temperature range More...
 
double Pmin_
 
double Pmax_
 valid pressure range More...
 
double TrNum_
 
double TrDen_
 terms appearing in the reduced temperature More...
 
double PrNum_
 
double PrDen_
 terms appearing in the reduced pressure More...
 
Array2D m_coeffs
 < coefficient array More...
 
vector< double > dotProd_
 dot product of coeffs with the reduced pressure polynomial More...
 
- Protected Attributes inherited from ReactionRate
AnyMap m_input
 Input data used for specific models. More...
 
size_t m_rate_index = npos
 Index of reaction rate within kinetics evaluator. More...
 
bool m_valid = false
 Flag indicating whether reaction rate is set up correctly. More...
 
bool m_composition_dependent_rate = false
 Flag indicating composition dependent rate. More...
 
Units m_conversion_units {0.}
 Units of the leading term in the reaction rate expression. More...
 

Additional Inherited Members

Constructor & Destructor Documentation

◆ ChebyshevRate() [1/2]

ChebyshevRate ( )
default

Default constructor.

◆ ChebyshevRate() [2/2]

ChebyshevRate ( double  Tmin,
double  Tmax,
double  Pmin,
double  Pmax,
const Array2D coeffs 
)

Constructor directly from coefficient array.

Parameters
TminMinimum temperature [K]
TmaxMaximum temperature [K]
PminMinimum pressure [Pa]
PmaxMaximum pressure [Pa]
coeffsCoefficient 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.

Member Function Documentation

◆ 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 112 of file ChebyshevRate.h.

◆ type()

const string type ( ) const
inlineoverridevirtual

String identifying reaction rate specialization.

Implements ReactionRate.

Definition at line 116 of file ChebyshevRate.h.

◆ setParameters()

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

Perform object setup based on AnyMap node information.

Parameters
nodeAnyMap containing rate information
rate_unitsUnit definitions specific to rate information

Reimplemented from ReactionRate.

Definition at line 63 of file ChebyshevRate.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 126 of file ChebyshevRate.cpp.

◆ validate()

void validate ( const string &  equation,
const Kinetics kin 
)
overridevirtual

Validate the reaction rate expression.

Reimplemented from ReactionRate.

Definition at line 160 of file ChebyshevRate.cpp.

◆ updateFromStruct()

void updateFromStruct ( const ChebyshevData shared_data)
inline

Update information specific to reaction.

Parameters
shared_datadata shared by all reactions of a given type

Definition at line 133 of file ChebyshevRate.h.

◆ evalFromStruct()

double evalFromStruct ( const ChebyshevData shared_data)
inline

Evaluate reaction rate.

Parameters
shared_datadata shared by all reactions of a given type

Definition at line 158 of file ChebyshevRate.h.

◆ setLimits()

void setLimits ( double  Tmin,
double  Tmax,
double  Pmin,
double  Pmax 
)

Set limits for ChebyshevRate object.

Parameters
TminMinimum temperature [K]
TmaxMaximum temperature [K]
PminMinimum pressure [Pa]
PmaxMaximum pressure [Pa]

Definition at line 96 of file ChebyshevRate.cpp.

◆ Tmin()

double Tmin ( ) const
inline

Minimum valid temperature [K].

Definition at line 183 of file ChebyshevRate.h.

◆ Tmax()

double Tmax ( ) const
inline

Maximum valid temperature [K].

Definition at line 188 of file ChebyshevRate.h.

◆ Pmin()

double Pmin ( ) const
inline

Minimum valid pressure [Pa].

Definition at line 193 of file ChebyshevRate.h.

◆ Pmax()

double Pmax ( ) const
inline

Maximum valid pressure [Pa].

Definition at line 198 of file ChebyshevRate.h.

◆ nPressure()

size_t nPressure ( ) const
inline

Number of points in the pressure direction.

Definition at line 203 of file ChebyshevRate.h.

◆ nTemperature()

size_t nTemperature ( ) const
inline

Number of points in the temperature direction.

Definition at line 208 of file ChebyshevRate.h.

◆ data()

const Array2D& data ( ) const
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.

◆ setData()

void setData ( const Array2D coeffs)

Set the Chebyshev coefficients as 2-dimensional array.

Definition at line 114 of file ChebyshevRate.cpp.

Member Data Documentation

◆ m_log10P

double m_log10P = NAN
protected

value detecting updates

Definition at line 222 of file ChebyshevRate.h.

◆ Tmax_

double Tmax_
protected

valid temperature range

Definition at line 223 of file ChebyshevRate.h.

◆ Pmax_

double Pmax_
protected

valid pressure range

Definition at line 224 of file ChebyshevRate.h.

◆ TrDen_

double TrDen_
protected

terms appearing in the reduced temperature

Definition at line 225 of file ChebyshevRate.h.

◆ PrDen_

double PrDen_
protected

terms appearing in the reduced pressure

Definition at line 226 of file ChebyshevRate.h.

◆ m_coeffs

Array2D m_coeffs
protected

< coefficient array

Definition at line 228 of file ChebyshevRate.h.

◆ dotProd_

vector<double> dotProd_
protected

dot product of coeffs with the reduced pressure polynomial

Definition at line 229 of file ChebyshevRate.h.


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