Cantera
2.5.1
|
Wrapper class for 'cvodes' integrator from LLNL. More...
#include <CVodesIntegrator.h>
Public Member Functions | |
CVodesIntegrator () | |
Constructor. More... | |
virtual void | setTolerances (double reltol, size_t n, double *abstol) |
Set error tolerances. More... | |
virtual void | setTolerances (double reltol, double abstol) |
Set error tolerances. More... | |
virtual void | setSensitivityTolerances (double reltol, double abstol) |
Set the sensitivity error tolerances. More... | |
virtual void | setProblemType (int probtype) |
Set the problem type. More... | |
virtual void | initialize (double t0, FuncEval &func) |
Initialize the integrator for a new problem. More... | |
virtual void | reinitialize (double t0, FuncEval &func) |
virtual void | integrate (double tout) |
Integrate the system of equations. More... | |
virtual doublereal | step (double tout) |
Integrate the system of equations. More... | |
virtual double & | solution (size_t k) |
The current value of the solution of equation k. More... | |
virtual double * | solution () |
The current value of the solution of the system of equations. More... | |
virtual double * | derivative (double tout, int n) |
n-th derivative of the output function at time tout. More... | |
virtual int | lastOrder () const |
Order used during the last solution step. More... | |
virtual int | nEquations () const |
The number of equations. More... | |
virtual int | nEvals () const |
The number of function evaluations. More... | |
virtual void | setMaxOrder (int n) |
Set the maximum integration order that will be used. More... | |
virtual void | setMethod (MethodType t) |
Set the solution method. More... | |
virtual void | setMaxStepSize (double hmax) |
Set the maximum step size. More... | |
virtual void | setMinStepSize (double hmin) |
Set the minimum step size. More... | |
virtual void | setMaxSteps (int nmax) |
Set the maximum number of time-steps the integrator can take before reaching the next output time. More... | |
virtual int | maxSteps () |
Returns the maximum number of time-steps the integrator can take before reaching the next output time. More... | |
virtual void | setMaxErrTestFails (int n) |
Set the maximum permissible number of error test failures. More... | |
virtual void | setBandwidth (int N_Upper, int N_Lower) |
virtual int | nSensParams () |
virtual double | sensitivity (size_t k, size_t p) |
virtual std::string | getErrorInfo (int N) |
Returns a string listing the weighted error estimates associated with each solution component. More... | |
Public Member Functions inherited from Integrator | |
Integrator () | |
Default Constructor. More... | |
virtual | ~Integrator () |
Destructor. More... | |
virtual void | setIterator (IterType t) |
Set the linear iterator. More... | |
Public Attributes | |
std::string | m_error_message |
Error message information provide by CVodes. More... | |
Protected Member Functions | |
void | applyOptions () |
Applies user-specified options to the underlying CVODES solver. More... | |
Private Member Functions | |
void | sensInit (double t0, FuncEval &func) |
Private Attributes | |
size_t | m_neq |
void * | m_cvode_mem |
void * | m_linsol |
Sundials linear solver object. More... | |
void * | m_linsol_matrix |
matrix used by Sundials More... | |
FuncEval * | m_func |
double | m_t0 |
double | m_time |
The current integrator time. More... | |
N_Vector | m_y |
N_Vector | m_abstol |
N_Vector | m_dky |
int | m_type |
int | m_itol |
int | m_method |
int | m_maxord |
double | m_reltol |
double | m_abstols |
double | m_reltolsens |
double | m_abstolsens |
size_t | m_nabs |
double | m_hmax |
double | m_hmin |
int | m_maxsteps |
int | m_maxErrTestFails |
N_Vector * | m_yS |
size_t | m_np |
int | m_mupper |
int | m_mlower |
bool | m_sens_ok |
Indicates whether the sensitivities stored in m_yS have been updated for at the current integrator time. More... | |
Wrapper class for 'cvodes' integrator from LLNL.
Definition at line 25 of file CVodesIntegrator.h.
CVodesIntegrator | ( | ) |
Constructor.
Default settings: dense Jacobian, no user-supplied Jacobian function, Newton iteration.
Definition at line 79 of file CVodesIntegrator.cpp.
|
virtual |
Set error tolerances.
reltol | scalar relative tolerance |
n | Number of equations |
abstol | array of N absolute tolerance values |
Reimplemented from Integrator.
Definition at line 147 of file CVodesIntegrator.cpp.
|
virtual |
Set error tolerances.
reltol | scalar relative tolerance |
abstol | scalar absolute tolerance |
Reimplemented from Integrator.
Definition at line 163 of file CVodesIntegrator.cpp.
|
virtual |
Set the sensitivity error tolerances.
reltol | scalar relative tolerance |
abstol | scalar absolute tolerance |
Reimplemented from Integrator.
Definition at line 170 of file CVodesIntegrator.cpp.
|
virtual |
Set the problem type.
probtype | Type of the problem |
Reimplemented from Integrator.
Definition at line 176 of file CVodesIntegrator.cpp.
|
virtual |
Initialize the integrator for a new problem.
Call after all options have been set.
t0 | initial time |
func | RHS evaluator object for system of equations. |
Reimplemented from Integrator.
Definition at line 256 of file CVodesIntegrator.cpp.
References FuncEval::clearErrors(), CVodesIntegrator::m_time, and FuncEval::neq().
|
virtual |
Integrate the system of equations.
tout | Integrate to this time. Note that this is the absolute time value, not a time interval. |
Reimplemented from Integrator.
Definition at line 453 of file CVodesIntegrator.cpp.
References CVodesIntegrator::getErrorInfo(), FuncEval::getErrors(), CVodesIntegrator::m_error_message, CVodesIntegrator::m_sens_ok, and CVodesIntegrator::m_time.
|
virtual |
Integrate the system of equations.
tout | integrate to this time. Note that this is the absolute time value, not a time interval. |
Reimplemented from Integrator.
Definition at line 473 of file CVodesIntegrator.cpp.
References CVodesIntegrator::getErrorInfo(), FuncEval::getErrors(), CVodesIntegrator::m_error_message, CVodesIntegrator::m_sens_ok, and CVodesIntegrator::m_time.
|
virtual |
The current value of the solution of equation k.
Reimplemented from Integrator.
Definition at line 137 of file CVodesIntegrator.cpp.
|
virtual |
The current value of the solution of the system of equations.
Reimplemented from Integrator.
Definition at line 142 of file CVodesIntegrator.cpp.
|
virtual |
n-th derivative of the output function at time tout.
Reimplemented from Integrator.
Definition at line 492 of file CVodesIntegrator.cpp.
References FuncEval::getErrors(), and CVodesIntegrator::m_error_message.
|
virtual |
Order used during the last solution step.
Reimplemented from Integrator.
Definition at line 508 of file CVodesIntegrator.cpp.
|
inlinevirtual |
The number of equations.
Reimplemented from Integrator.
Definition at line 46 of file CVodesIntegrator.h.
|
virtual |
The number of function evaluations.
Reimplemented from Integrator.
Definition at line 515 of file CVodesIntegrator.cpp.
|
inlinevirtual |
Set the maximum integration order that will be used.
Reimplemented from Integrator.
Definition at line 50 of file CVodesIntegrator.h.
|
virtual |
Set the solution method.
Reimplemented from Integrator.
Definition at line 181 of file CVodesIntegrator.cpp.
References Cantera::Adams_Method, and Cantera::BDF_Method.
|
virtual |
Set the maximum step size.
Reimplemented from Integrator.
Definition at line 192 of file CVodesIntegrator.cpp.
|
virtual |
Set the minimum step size.
Reimplemented from Integrator.
Definition at line 200 of file CVodesIntegrator.cpp.
|
virtual |
Set the maximum number of time-steps the integrator can take before reaching the next output time.
nmax | The maximum number of steps, setting this value to zero disables this option. |
Reimplemented from Integrator.
Definition at line 208 of file CVodesIntegrator.cpp.
|
virtual |
Returns the maximum number of time-steps the integrator can take before reaching the next output time.
Reimplemented from Integrator.
Definition at line 216 of file CVodesIntegrator.cpp.
|
virtual |
Set the maximum permissible number of error test failures.
Reimplemented from Integrator.
Definition at line 221 of file CVodesIntegrator.cpp.
|
virtual |
Returns a string listing the weighted error estimates associated with each solution component.
This information can be used to identify which variables are responsible for integrator failures or unexpected small timesteps.
Definition at line 548 of file CVodesIntegrator.cpp.
Referenced by CVodesIntegrator::integrate(), and CVodesIntegrator::step().
|
protected |
Applies user-specified options to the underlying CVODES solver.
Called during integrator initialization or reinitialization.
Definition at line 365 of file CVodesIntegrator.cpp.
References CVodesIntegrator::m_linsol, and CVodesIntegrator::m_linsol_matrix.
std::string m_error_message |
Error message information provide by CVodes.
Definition at line 75 of file CVodesIntegrator.h.
Referenced by Cantera::cvodes_err(), CVodesIntegrator::derivative(), CVodesIntegrator::integrate(), and CVodesIntegrator::step().
|
private |
Sundials linear solver object.
Definition at line 87 of file CVodesIntegrator.h.
Referenced by CVodesIntegrator::applyOptions().
|
private |
matrix used by Sundials
Definition at line 88 of file CVodesIntegrator.h.
Referenced by CVodesIntegrator::applyOptions().
|
private |
The current integrator time.
Definition at line 91 of file CVodesIntegrator.h.
Referenced by CVodesIntegrator::initialize(), CVodesIntegrator::integrate(), and CVodesIntegrator::step().
|
private |
Indicates whether the sensitivities stored in m_yS have been updated for at the current integrator time.
Definition at line 111 of file CVodesIntegrator.h.
Referenced by CVodesIntegrator::integrate(), and CVodesIntegrator::step().