18const int c_GE_ZERO = 1;
19const int c_GT_ZERO = 2;
20const int c_LE_ZERO = -1;
21const int c_LT_ZERO = -2;
47 virtual void constrain(
const int k,
const int flag) {
48 m_constrain[k] = flag;
50 int constraint(
const int k)
const {
51 return getValue(m_constrain, k, c_NONE);
65 if ((
int)
m_alg.size() < (k+1)) {
71 virtual bool isAlgebraic(
const int k) {
72 return (
m_alg[k] == 1);
82 virtual int eval(
const doublereal t,
const doublereal*
const y,
83 const doublereal*
const ydot,
84 doublereal*
const r) {
88 virtual int evalSS(
const doublereal t,
const doublereal*
const y,
89 doublereal*
const r) {
90 return eval(t, y, 0, r);
93 virtual int evalSimpleTD(
const doublereal t,
const doublereal*
const y,
94 const doublereal*
const yold, doublereal deltaT,
95 doublereal*
const r) {
98 for (
int i = 0; i < nn; i++) {
99 ydot[i] = (y[i] - yold[i]) / deltaT;
101 return eval(t, y, ydot.data(), r);
117 doublereal*
const ydot) {
133 const int time_step_num,
134 const double* y,
const double* ydot) {
136 writelog(
"ResidEval::writeSolution\n");
137 writelogf(
" Time = %g, ievent = %d, deltaT = %g\n", time, ievent, deltaT);
141 writelogf(
"%d %g %g\n", k, y[k], ydot[k]);
167 std::map<int, int> m_constrain;
An error indicating that an unimplemented function has been called.
Virtual base class for DAE residual function evaluators.
virtual int eval(const doublereal t, const doublereal *const y, const doublereal *const ydot, doublereal *const r)
Evaluate the residual function.
virtual void writeSolution(int ievent, const double time, const double deltaT, const int time_step_num, const double *y, const double *ydot)
Write out to a file or to standard output the current solution.
virtual int getInitialConditions(const doublereal t0, doublereal *const y, doublereal *const ydot)
Fill in the initial conditions.
virtual void setAlgebraic(const int k)
Specify that solution component k is purely algebraic - that is, the derivative of this component doe...
virtual int nEquations() const =0
Return the number of equations in the equation system.
int nparams() const
Return the number of parameters in the calculation.
vector_int m_alg
Mapping vector that stores whether a degree of freedom is a DAE or not.
virtual void constrain(const int k, const int flag)
Constrain solution component k.
virtual void initSizes()
Initialization 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...
This file contains definitions for utility functions and text for modules, inputfiles,...
void writelog(const std::string &fmt, const Args &... args)
Write a formatted message to the screen.
void writelogf(const char *fmt, const Args &... args)
Write a formatted message to the screen.
Namespace for the Cantera kernel.
std::vector< int > vector_int
Vector of ints.
std::vector< double > vector_fp
Turn on the use of stl vectors for the basic array type within cantera Vector of doubles.
const U & getValue(const std::map< T, U > &m, const T &key, const U &default_val)
Const accessor for a value in a std::map.
Various templated functions that carry out common vector operations (see Templated Utility Functions)...