79 Func1(shared_ptr<Func1> f1, shared_ptr<Func1> f2) : m_f1(f1), m_f2(f2) {}
81 Func1(shared_ptr<Func1> f1,
double A) : m_c(A), m_f1(f1) {}
83 virtual ~Func1() =
default;
85 Func1(
const Func1& right) =
delete;
86 Func1& operator=(
const Func1& right) =
delete;
90 virtual string type()
const {
102 virtual double eval(
double t)
const;
120 virtual bool isIdentical(shared_ptr<Func1> other)
const;
123 virtual string write(
const string& arg)
const;
141 virtual int order()
const;
145 shared_ptr<Func1> m_f1;
146 shared_ptr<Func1> m_f2;
151shared_ptr<Func1>
newSumFunction(shared_ptr<Func1> f1, shared_ptr<Func1> f2);
155shared_ptr<Func1>
newDiffFunction(shared_ptr<Func1> f1, shared_ptr<Func1> f2);
159shared_ptr<Func1>
newProdFunction(shared_ptr<Func1> f1, shared_ptr<Func1> f2);
163shared_ptr<Func1>
newRatioFunction(shared_ptr<Func1> f1, shared_ptr<Func1> f2);
184class Sin1 :
public Func1
187 Sin1(
double omega=1.0) {
192 Sin1(
const vector<double>& params);
194 string write(
const string& arg)
const override;
200 double eval(
double t)
const override{
204 shared_ptr<Func1>
derivative()
const override;
215class Cos1 :
public Func1
218 Cos1(
double omega=1.0) {
223 Cos1(
const vector<double>& params);
225 string write(
const string& arg)
const override;
231 double eval(
double t)
const override {
234 shared_ptr<Func1>
derivative()
const override;
244class Exp1 :
public Func1
252 Exp1(
const vector<double>& params);
254 string write(
const string& arg)
const override;
260 double eval(
double t)
const override {
264 shared_ptr<Func1>
derivative()
const override;
275class Log1 :
public Func1
283 Log1(
const vector<double>& params);
289 double eval(
double t)
const override {
293 shared_ptr<Func1>
derivative()
const override;
295 string write(
const string& arg)
const override;
304class Pow1 :
public Func1
312 Pow1(
const vector<double>& params);
314 string write(
const string& arg)
const override;
320 double eval(
double t)
const override {
323 shared_ptr<Func1>
derivative()
const override;
346 Tabulated1(
size_t n,
const double* tvals,
const double* fvals,
347 const string& method=
"linear");
364 string write(
const string& arg)
const override;
368 return "tabulated-linear";
370 return "tabulated-previous";
373 double eval(
double t)
const override;
374 shared_ptr<Func1>
derivative()
const override;
388class Const1 :
public Func1
396 Const1(
const vector<double>& params);
398 string write(
const string& arg)
const override;
404 double eval(
double t)
const override {
408 return make_shared<Const1>(0.0);
420class Sum1 :
public Func1
423 Sum1(shared_ptr<Func1> f1, shared_ptr<Func1> f2) : Func1(f1, f2) {}
429 double eval(
double t)
const override {
430 return m_f1->eval(t) + m_f2->eval(t);
441 string write(
const string& arg)
const override;
451class Diff1 :
public Func1
454 Diff1(shared_ptr<Func1> f1, shared_ptr<Func1> f2) : Func1(f1, f2) {}
460 double eval(
double t)
const override {
461 return m_f1->eval(t) - m_f2->eval(t);
472 string write(
const string& arg)
const override;
483class Product1 :
public Func1
486 Product1(shared_ptr<Func1> f1, shared_ptr<Func1> f2) : Func1(f1, f2) {}
492 string write(
const string& arg)
const override;
494 double eval(
double t)
const override {
495 return m_f1->eval(t) * m_f2->eval(t);
498 shared_ptr<Func1>
derivative()
const override;
512class TimesConstant1 :
public Func1
515 TimesConstant1(shared_ptr<Func1> f1,
double a) : Func1(f1, a) {}
518 return "times-constant";
521 double eval(
double t)
const override {
522 return m_f1->eval(t) * m_c;
529 string write(
const string& arg)
const override;
543class PlusConstant1 :
public Func1
546 PlusConstant1(shared_ptr<Func1> f1,
double a) : Func1(f1, a) {}
549 return "plus-constant";
552 double eval(
double t)
const override {
553 return m_f1->eval(t) + m_c;
557 return m_f1->derivative();
560 string write(
const string& arg)
const override;
575class Ratio1 :
public Func1
578 Ratio1(shared_ptr<Func1> f1, shared_ptr<Func1> f2) : Func1(f1, f2) {}
584 double eval(
double t)
const override {
585 return m_f1->eval(t) / m_f2->eval(t);
588 shared_ptr<Func1>
derivative()
const override;
590 string write(
const string& arg)
const override;
604class Composite1 :
public Func1
607 Composite1(shared_ptr<Func1> f1, shared_ptr<Func1> f2) : Func1(f1, f2) {}
613 double eval(
double t)
const override {
614 return m_f1->eval(m_f2->eval(t));
617 shared_ptr<Func1>
derivative()
const override;
619 string write(
const string& arg)
const override;
642class Gaussian1 :
public Func1
645 Gaussian1(
double A,
double t0,
double fwhm) {
648 m_tau = fwhm/(2.0*std::sqrt(std::log(2.0)));
653 Gaussian1(
const vector<double>& params);
663 double eval(
double t)
const override {
664 double x = (t - m_t0)/m_tau;
665 return m_A * std::exp(-x*x);
669 double m_A, m_t0, m_tau;
685class Poly1 :
public Func1
688 Poly1(
size_t n,
const double*
c) {
690 std::copy(
c,
c+m_cpoly.size(), m_cpoly.begin());
695 Poly1(
const vector<double>& params);
698 return "polynomial3";
705 double eval(
double t)
const override {
706 double r = m_cpoly[0];
707 for (
size_t n = 1; n < m_cpoly.size(); n++) {
714 string write(
const string& arg)
const override;
717 vector<double> m_cpoly;
729class Fourier1 :
public Func1
732 Fourier1(
size_t n,
double omega,
double a0,
const double* a,
const double* b) {
737 std::copy(a, a+n, m_ccos.begin());
738 std::copy(b, b+n, m_csin.begin());
743 Fourier1(
const vector<double>& params);
753 double eval(
double t)
const override {
756 for (n = 0; n < m_ccos.size(); n++) {
758 sum += m_ccos[n]*std::cos(m_omega*nn*t)
759 + m_csin[n]*std::sin(m_omega*nn*t);
765 double m_omega, m_a0_2;
766 vector<double> m_ccos, m_csin;
778class Arrhenius1 :
public Func1
781 Arrhenius1(
size_t n,
const double*
c) {
785 for (
size_t i = 0; i < n; i++) {
795 Arrhenius1(
const vector<double>& params);
805 double eval(
double t)
const override {
807 for (
size_t n = 0; n < m_A.size(); n++) {
808 sum += m_A[n]*std::pow(t,m_b[n])*std::exp(-m_E[n]/t);
814 vector<double> m_A, m_b, m_E;
824class Periodic1 :
public Func1
827 Periodic1(shared_ptr<Func1> f,
double A) : Func1(f, A) {}
833 double eval(
double t)
const override {
835 double time = t - np*m_c;
836 return m_f1->eval(time);
double eval(double t) const override
Evaluate the function.
string type() const override
Returns a string describing the type of the function.
bool isIdentical(shared_ptr< Func1 > other) const override
Routine to determine if two functions are the same.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
int order() const override
Return the order of the function, if it makes sense.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
int order() const override
Return the order of the function, if it makes sense.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
string type() const override
Returns a string describing the type of the function.
bool isIdentical(shared_ptr< Func1 > other) const override
Routine to determine if two functions are the same.
string typeName() const
Returns a string with the class name of the functor.
virtual shared_ptr< Func1 > derivative() const
Creates a derivative to the current function.
virtual string type() const
Returns a string describing the type of the function.
virtual double eval(double t) const
Evaluate the function.
shared_ptr< Func1 > func1_shared() const
Accessor function for m_f1.
virtual string write(const string &arg) const
Write LaTeX string describing function.
double operator()(double t) const
Calls method eval to evaluate the function.
virtual bool isIdentical(shared_ptr< Func1 > other) const
Routine to determine if two functions are the same.
virtual int order() const
Return the order of the function, if it makes sense.
shared_ptr< Func1 > func2_shared() const
Accessor function for m_f2.
double c() const
Accessor function for the stored constant m_c.
double eval(double t) const override
Evaluate the function.
string type() const override
Returns a string describing the type of the function.
bool isIdentical(shared_ptr< Func1 > other) const override
Routine to determine if two functions are the same.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
string type() const override
Returns a string describing the type of the function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
int order() const override
Return the order of the function, if it makes sense.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
string type() const override
Returns a string describing the type of the function.
bool isIdentical(shared_ptr< Func1 > other) const override
Routine to determine if two functions are the same.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
int order() const override
Return the order of the function, if it makes sense.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
int order() const override
Return the order of the function, if it makes sense.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
int order() const override
Return the order of the function, if it makes sense.
string write(const string &arg) const override
Write LaTeX string describing function.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
bool isIdentical(shared_ptr< Func1 > other) const override
Routine to determine if two functions are the same.
string write(const string &arg) const override
Write LaTeX string describing function.
void setMethod(const string &method)
Set the interpolation method.
vector< double > m_tvec
Vector of time values.
bool m_isLinear
Boolean indicating interpolation method.
vector< double > m_fvec
Vector of function values.
Tabulated1(size_t n, const double *tvals, const double *fvals, const string &method="linear")
Constructor.
Implements the product of a function and a constant.
double eval(double t) const override
Evaluate the function.
shared_ptr< Func1 > derivative() const override
Creates a derivative to the current function.
string type() const override
Returns a string describing the type of the function.
int order() const override
Return the order of the function, if it makes sense.
string write(const string &arg) const override
Write LaTeX string describing function.
This file contains definitions of constants, types and terms that are used in internal routines and a...
Definitions for the classes that are thrown when Cantera experiences an error condition (also contain...
shared_ptr< Func1 > newCompositeFunction(shared_ptr< Func1 > f1, shared_ptr< Func1 > f2)
Composite of two functions.
shared_ptr< Func1 > newProdFunction(shared_ptr< Func1 > f1, shared_ptr< Func1 > f2)
Product of two functions.
shared_ptr< Func1 > newDiffFunction(shared_ptr< Func1 > f1, shared_ptr< Func1 > f2)
Difference of two functions.
shared_ptr< Func1 > newTimesConstFunction(shared_ptr< Func1 > f, double c)
Product of function and constant.
shared_ptr< Func1 > newSumFunction(shared_ptr< Func1 > f1, shared_ptr< Func1 > f2)
Sum of two functions.
shared_ptr< Func1 > newRatioFunction(shared_ptr< Func1 > f1, shared_ptr< Func1 > f2)
Ratio of two functions.
shared_ptr< Func1 > newPlusConstFunction(shared_ptr< Func1 > f, double c)
Sum of function and constant.
Namespace for the Cantera kernel.