27 m_logA = std::log(m_A);
31 SurfaceArrhenius::SurfaceArrhenius()
41 SurfaceArrhenius::SurfaceArrhenius(
double A,
double b,
double Ta)
52 doublereal m, doublereal e)
63 Plog::Plog(
const std::multimap<double, Arrhenius>& rates)
70 rates_.reserve(
rates.size());
72 for (
const auto& rate :
rates) {
73 double logp = std::log(rate.first);
83 rates_.push_back(rate.second);
93 fmt::memory_buffer err_reactions;
94 double T[] = {200.0, 500.0, 1000.0, 2000.0, 5000.0, 10000.0};
96 for (
auto iter = ++
pressures_.begin(); iter->first < 1000; iter++) {
98 for (
size_t i=0; i < 6; i++) {
100 for (
size_t p =
ilow1_; p < ilow2_; p++) {
101 k += rates_[p].updateRC(log(T[i]), 1.0/T[i]);
104 format_to(err_reactions,
105 "\nInvalid rate coefficient for reaction '{}'\n"
106 "at P = {:.5g}, T = {:.1f}\n",
107 equation, std::exp(iter->first), T[i]);
111 if (err_reactions.size()) {
112 throw CanteraError(
"Plog::validate", to_string(err_reactions));
118 std::vector<std::pair<double, Arrhenius> > R;
123 for (
size_t i = iter->second.first;
124 i < iter->second.second;
126 R.emplace_back(std::exp(iter->first), rates_[i]);
139 , nP_(coeffs.nColumns())
140 , nT_(coeffs.nRows())
141 , chebCoeffs_(coeffs.nColumns() * coeffs.nRows(), 0.0)
142 , dotProd_(coeffs.nRows())
144 double logPmin = std::log10(
Pmin);
145 double logPmax = std::log10(
Pmax);
146 double TminInv = 1.0 /
Tmin;
147 double TmaxInv = 1.0 /
Tmax;
149 TrNum_ = - TminInv - TmaxInv;
150 TrDen_ = 1.0 / (TmaxInv - TminInv);
151 PrNum_ = - logPmin - logPmax;
152 PrDen_ = 1.0 / (logPmax - logPmin);
154 for (
size_t t = 0; t <
nT_; t++) {
155 for (
size_t p = 0; p <
nP_; p++) {