20 ResidJacEval::ResidJacEval(doublereal atol) :
38 ResidEval::operator=(right);
61 "atol must be greater than zero");
68 for (
int i = 0; i <
neq_; i++) {
72 for (
int i = 0; i <
neq_; i++) {
80 user_out2(
const int ifunc,
const doublereal t,
const doublereal deltaT,
81 const doublereal* y,
const doublereal* ydot)
87 const doublereal* y,
const doublereal* ydot)
94 const doublereal* ydot)
101 const doublereal*
const ySolnDot, doublereal*
const deltaYSoln,
102 const doublereal*
const solnWeights)
105 for (
int i = 0; i <
neq_; i++) {
106 deltaYSoln[i] =
m_atol + fabs(1.0E-6 * ySoln[i]);
109 for (
int i = 0; i <
neq_; i++) {
110 deltaYSoln[i] = std::max(1.0E-2 * solnWeights[i], 1.0E-6 * fabs(ySoln[i]));
117 calcSolnScales(
const doublereal t,
const doublereal*
const ysoln,
const doublereal*
const ysolnOld,
118 doublereal*
const ysolnScales)
121 if (ysolnScales[0] == 0.0) {
122 for (
int i = 0; i <
neq_; i++) {
123 ysolnScales[i] = 1.0;
141 const doublereal delta_t,
142 const doublereal*
const y,
143 const doublereal*
const ydot)
155 evalResidNJ(
const doublereal t,
const doublereal deltaT,
const doublereal* y,
157 const int id_x,
const doublereal delta_x)
159 throw CanteraError(
"ResidJacEval::evalResidNJ()",
"Not implemented\n");
166 double deltaT = -1.0;
171 evalJacobian(
const doublereal t,
const doublereal delta_t, doublereal cj,
172 const doublereal*
const y,
173 const doublereal*
const ydot,
175 doublereal*
const resid)
177 doublereal*
const* jac_colPts = J.
colPts();
178 return evalJacobianDP(t, delta_t, cj, y, ydot, jac_colPts, resid);
183 const doublereal c_j,
184 const doublereal*
const y,
185 const doublereal*
const ydot,
186 doublereal*
const* jac_colPts,
187 doublereal*
const resid)
189 throw CanteraError(
"ResidJacEval::evalJacobianDP()",
"Not implemented\n");
virtual int evalJacobianDP(const doublereal t, const doublereal delta_t, doublereal cj, const doublereal *const y, const doublereal *const ydot, doublereal *const *jacobianColPts, doublereal *const resid)
Calculate an analytical jacobian and the residual at the current time and values. ...
virtual void user_out2(const int ifunc, const doublereal t, const doublereal delta_t, const doublereal *const y, const doublereal *const ydot)
This function may be used to create output at various points in the execution of an application...
virtual int nEquations() const
Return the number of equations in the equation system.
virtual int evalResidNJ(const doublereal t, const doublereal delta_t, const doublereal *const y, const doublereal *const ydot, doublereal *const resid, const ResidEval_Type_Enum evalType=Base_ResidEval, const int id_x=-1, const doublereal delta_x=0.0)
Evaluate the residual function.
virtual int evalJacobian(const doublereal t, const doublereal delta_t, doublereal cj, const doublereal *const y, const doublereal *const ydot, GeneralMatrix &J, doublereal *const resid)
Calculate an analytical jacobian and the residual at the current time and values. ...
int neq_
Number of equations.
virtual int eval(const doublereal t, const doublereal *const y, const doublereal *const ydot, doublereal *const r)
Evaluate the residual function.
This file contains definitions of terms that are used in internal routines and are unlikely to need m...
virtual int getInitialConditions(const doublereal t0, doublereal *const y, doublereal *const ydot)
Fill in the initial conditions.
ResidJacEval(doublereal atol=1.0e-13)
Default constructor.
virtual void user_out(const int ifunc, const doublereal t, const doublereal *y, const doublereal *ydot)
This function may be used to create output at various points in the execution of an application...
virtual ResidJacEval * duplMyselfAsResidJacEval() const
Duplication routine for objects derived from residJacEval.
ResidEval_Type_Enum
Differentiates the type of residual evaluations according to functionality.
Wrappers for the function evaluators for Nonlinear solvers and Time steppers.
virtual int calcDeltaSolnVariables(const doublereal t, const doublereal *const y, const doublereal *const ydot, doublereal *const delta_y, const doublereal *const solnWeights=0)
Return a vector of delta y's for calculation of the numerical Jacobian.
virtual int matrixConditioning(doublereal *const matrix, const int nrows, doublereal *const rhs)
Multiply the matrix by another matrix that leads to better conditioning.
Virtual base class for DAE residual function evaluators.
Dense, Square (not sparse) matrices.
doublereal m_atol
constant value of atol
Base class for exceptions thrown by Cantera classes.
virtual int evalTimeTrackingEqns(const doublereal t, const doublereal delta_t, const doublereal *const y, const doublereal *const ydot)
Evaluate the time tracking equations, if any.
virtual void calcSolnScales(const doublereal t, const doublereal *const y, const doublereal *const y_old, doublereal *const yScales)
Returns a vector of column scale factors that can be used to column scale Jacobians.
ResidJacEval & operator=(const ResidJacEval &right)
Assignment operator.
virtual doublereal *const * colPts()=0
Return a vector of const pointers to the columns.
virtual doublereal filterSolnPrediction(const doublereal t, doublereal *const y)
Filter the solution predictions.
virtual bool evalStoppingCritera(const doublereal t, const doublereal delta_t, const doublereal *const y, const doublereal *const ydot)
Evaluate any stopping criteria other than a final time limit.
void setAtol(doublereal atol)
Set a global value of the absolute tolerance.
virtual doublereal filterNewStep(const doublereal t, const doublereal *const ybase, doublereal *const step)
Filter the solution predictions.