Cantera 2.6.0

FuncEval.h
Go to the documentation of this file.
1/**
2 * @file FuncEval.h
3 */
4
5// This file is part of Cantera. See License.txt in the top-level directory or
6// at https://cantera.org/license.txt for license and copyright information.
7
8#ifndef CT_FUNCEVAL_H
9#define CT_FUNCEVAL_H
10
11#include "cantera/base/ct_defs.h"
12#include "cantera/base/ctexceptions.h"
13#include "cantera/base/global.h"
14
15 namespace Cantera
16{
17/**
18 * Virtual base class for ODE right-hand-side function evaluators.
19 * Classes derived from FuncEval evaluate the right-hand-side function
20 * \f$ \vec{F}(t,\vec{y})\f$ in
21 * \f[
22 * \dot{\vec{y}} = \vec{F}(t,\vec{y}).
23 * \f]
24 * @ingroup odeGroup
25 */
26 class FuncEval
27{
28 public:
29 FuncEval();
30 virtual ~FuncEval() {}
31
32 /**
33 * Evaluate the right-hand-side function. Called by the integrator.
34 * @param[in] t time.
35 * @param[in] y solution vector, length neq()
36 * @param[out] ydot rate of change of solution vector, length neq()
37 * @param[in] p sensitivity parameter vector, length nparams()
38 */
39 virtual void eval(double t, double* y, double* ydot, double* p)=0;
40
41 //! Evaluate the right-hand side using return code to indicate status.
42 /*!
43 * Errors are indicated using the return value, rather than by throwing
44 * exceptions. This method is used when calling from a C-based integrator
45 * such as CVODES. Exceptions may either be stored or printed, based on the
46 * setting of suppressErrors().
47 * @returns 0 for a successful evaluation; 1 after a potentially-
48 * recoverable error; -1 after an unrecoverable error.
49 */
50 int eval_nothrow(double t, double* y, double* ydot);
51
52 //! Fill in the vector *y* with the current state of the system
53 virtual void getState(double* y) {
54 throw NotImplementedError("FuncEval::getState");
55 }
56
57 //! Number of equations.
58 virtual size_t neq()=0;
59
60 //! Number of sensitivity parameters.
61 virtual size_t nparams() {
62 return m_sens_params.size();
63 }
64
65 //! Enable or disable suppression of errors when calling eval()
66 void suppressErrors(bool suppress) {
67 m_suppress_errors = suppress;
68 }
69
70 //! Get current state of error suppression
71 bool suppressErrors() const {
72 return m_suppress_errors;
73 };
74
75 //! Return a string containing the text of any suppressed errors
76 std::string getErrors() const;
77
78 //! Clear any previously-stored suppressed errors
79 void clearErrors() {
80 m_errors.clear();
81 };
82
83 //! Values for the problem parameters for which sensitivities are computed
84 //! This is the array which is perturbed and passed back as the fourth
85 //! argument to eval().
86 vector_fp m_sens_params;
87
88 //! Scaling factors for each sensitivity parameter
89 vector_fp m_paramScales;
90
91 protected:
92 // If true, errors are accumulated in m_errors. Otherwise, they are printed
93 bool m_suppress_errors;
94
95 //! Errors occurring during function evaluations
96 std::vector<std::string> m_errors;
97};
98
99}
100
101#endif
Cantera::FuncEval
Virtual base class for ODE right-hand-side function evaluators.
Definition: FuncEval.h:27
Cantera::FuncEval::eval
virtual void eval(double t, double *y, double *ydot, double *p)=0
Evaluate the right-hand-side function.
Cantera::FuncEval::suppressErrors
void suppressErrors(bool suppress)
Enable or disable suppression of errors when calling eval()
Definition: FuncEval.h:66
Cantera::FuncEval::nparams
virtual size_t nparams()
Number of sensitivity parameters.
Definition: FuncEval.h:61
Cantera::FuncEval::m_sens_params
vector_fp m_sens_params
Values for the problem parameters for which sensitivities are computed This is the array which is per...
Definition: FuncEval.h:86
Cantera::FuncEval::clearErrors
void clearErrors()
Clear any previously-stored suppressed errors.
Definition: FuncEval.h:79
Cantera::FuncEval::m_errors
std::vector< std::string > m_errors
Errors occurring during function evaluations.
Definition: FuncEval.h:96
Cantera::FuncEval::suppressErrors
bool suppressErrors() const
Get current state of error suppression.
Definition: FuncEval.h:71
Cantera::FuncEval::neq
virtual size_t neq()=0
Number of equations.
Cantera::FuncEval::getErrors
std::string getErrors() const
Return a string containing the text of any suppressed errors.
Definition: FuncEval.cpp:45
Cantera::FuncEval::eval_nothrow
int eval_nothrow(double t, double *y, double *ydot)
Evaluate the right-hand side using return code to indicate status.
Definition: FuncEval.cpp:12
Cantera::FuncEval::m_paramScales
vector_fp m_paramScales
Scaling factors for each sensitivity parameter.
Definition: FuncEval.h:89
Cantera::FuncEval::getState
virtual void getState(double *y)
Fill in the vector y with the current state of the system.
Definition: FuncEval.h:53
Cantera::NotImplementedError
An error indicating that an unimplemented function has been called.
Definition: ctexceptions.h:187
ct_defs.h
This file contains definitions of constants, types and terms that are used in internal routines and a...
ctexceptions.h
Definitions for the classes that are thrown when Cantera experiences an error condition (also contain...
global.h
This file contains definitions for utility functions and text for modules, inputfiles,...
Cantera
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:557
Cantera::vector_fp
std::vector< double > vector_fp
Turn on the use of stl vectors for the basic array type within cantera Vector of doubles.
Definition: ct_defs.h:184