Wrapper class for 'cvodes' integrator from LLNL. More...
#include <CVodesIntegrator.h>
Wrapper class for 'cvodes' integrator from LLNL.
See FuncEval.h. Classes that use CVodesIntegrator: ImplicitSurfChem, ReactorNet
Definition at line 26 of file CVodesIntegrator.h.
Public Member Functions | |
CVodesIntegrator () | |
Constructor. | |
void | setTolerances (double reltol, size_t n, double *abstol) override |
Set error tolerances. | |
void | setTolerances (double reltol, double abstol) override |
Set error tolerances. | |
void | setSensitivityTolerances (double reltol, double abstol) override |
Set the sensitivity error tolerances. | |
void | initialize (double t0, FuncEval &func) override |
Initialize the integrator for a new problem. | |
void | reinitialize (double t0, FuncEval &func) override |
void | integrate (double tout) override |
Integrate the system of equations. | |
double | step (double tout) override |
Integrate the system of equations. | |
double & | solution (size_t k) override |
The current value of the solution of equation k. | |
double * | solution () override |
The current value of the solution of the system of equations. | |
double * | derivative (double tout, int n) override |
n-th derivative of the output function at time tout. | |
int | lastOrder () const override |
Order used during the last solution step. | |
int | nEquations () const override |
The number of equations. | |
int | nEvals () const override |
The number of function evaluations. | |
void | setMaxOrder (int n) override |
Set the maximum integration order that will be used. | |
void | setMethod (MethodType t) override |
Set the solution method. | |
void | setMaxStepSize (double hmax) override |
Set the maximum step size. | |
void | setMinStepSize (double hmin) override |
Set the minimum step size. | |
void | setMaxSteps (int nmax) override |
Set the maximum number of time-steps the integrator can take before reaching the next output time. | |
int | maxSteps () override |
Returns the maximum number of time-steps the integrator can take before reaching the next output time. | |
void | setMaxErrTestFails (int n) override |
Set the maximum permissible number of error test failures. | |
AnyMap | solverStats () const override |
Get solver stats from integrator. | |
void | setLinearSolverType (const string &linSolverType) override |
Set the linear solver type. | |
string | linearSolverType () const override |
Return the integrator problem type. | |
void | setBandwidth (int N_Upper, int N_Lower) override |
int | nSensParams () override |
double | sensitivity (size_t k, size_t p) override |
string | getErrorInfo (int N) |
Returns a string listing the weighted error estimates associated with each solution component. | |
Public Member Functions inherited from Integrator | |
Integrator () | |
Default Constructor. | |
virtual | ~Integrator () |
Destructor. | |
virtual void | setTolerances (double reltol, size_t n, double *abstol) |
Set error tolerances. | |
virtual void | setTolerances (double reltol, double abstol) |
Set error tolerances. | |
virtual void | setSensitivityTolerances (double reltol, double abstol) |
Set the sensitivity error tolerances. | |
virtual void | setLinearSolverType (const string &linSolverType) |
Set the linear solver type. | |
virtual void | setPreconditioner (shared_ptr< PreconditionerBase > preconditioner) |
Set preconditioner used by the linear solver. | |
virtual void | preconditionerSolve (size_t stateSize, double *rhs, double *output) |
Solve a linear system Ax=b where A is the preconditioner. | |
virtual PreconditionerSide | preconditionerSide () |
Return the side of the system on which the preconditioner is applied. | |
virtual shared_ptr< PreconditionerBase > | preconditioner () |
Return preconditioner reference to object. | |
virtual string | linearSolverType () const |
Return the integrator problem type. | |
virtual void | initialize (double t0, FuncEval &func) |
Initialize the integrator for a new problem. | |
virtual void | reinitialize (double t0, FuncEval &func) |
virtual void | integrate (double tout) |
Integrate the system of equations. | |
virtual double | step (double tout) |
Integrate the system of equations. | |
virtual double & | solution (size_t k) |
The current value of the solution of equation k. | |
virtual double * | solution () |
The current value of the solution of the system of equations. | |
virtual double * | derivative (double tout, int n) |
n-th derivative of the output function at time tout. | |
virtual int | lastOrder () const |
Order used during the last solution step. | |
virtual int | nEquations () const |
The number of equations. | |
virtual int | nEvals () const |
The number of function evaluations. | |
virtual int | maxOrder () const |
virtual void | setMaxOrder (int n) |
Set the maximum integration order that will be used. | |
virtual void | setMethod (MethodType t) |
Set the solution method. | |
virtual void | setMaxStepSize (double hmax) |
Set the maximum step size. | |
virtual void | setMinStepSize (double hmin) |
Set the minimum step size. | |
virtual void | setMaxErrTestFails (int n) |
Set the maximum permissible number of error test failures. | |
virtual void | setMaxSteps (int nmax) |
Set the maximum number of time-steps the integrator can take before reaching the next output time. | |
virtual int | maxSteps () |
Returns the maximum number of time-steps the integrator can take before reaching the next output time. | |
virtual void | setBandwidth (int N_Upper, int N_Lower) |
virtual int | nSensParams () |
virtual double | sensitivity (size_t k, size_t p) |
virtual AnyMap | solverStats () const |
Get solver stats from integrator. | |
virtual int | maxNonlinIterations () const |
virtual void | setMaxNonlinIterations (int n) |
virtual int | maxNonlinConvFailures () const |
virtual void | setMaxNonlinConvFailures (int n) |
virtual bool | algebraicInErrorTest () const |
virtual void | includeAlgebraicInErrorTest (bool yesno) |
Public Attributes | |
string | m_error_message |
Error message information provide by CVodes. | |
Protected Member Functions | |
void | applyOptions () |
Applies user-specified options to the underlying CVODES solver. | |
Private Member Functions | |
void | sensInit (double t0, FuncEval &func) |
void | checkError (long flag, const string &ctMethod, const string &cvodesMethod) const |
Check whether a CVODES method indicated an error. | |
Private Attributes | |
size_t | m_neq = 0 |
void * | m_cvode_mem = nullptr |
CVODES internal memory object. | |
SundialsContext | m_sundials_ctx |
SUNContext object for Sundials>=6.0. | |
void * | m_linsol = nullptr |
Sundials linear solver object. | |
void * | m_linsol_matrix = nullptr |
matrix used by Sundials | |
FuncEval * | m_func = nullptr |
double | m_t0 = 0.0 |
double | m_time |
The current system time, corresponding to m_y. | |
double | m_tInteg |
The latest time reached by the integrator. May be greater than m_time. | |
N_Vector | m_y = nullptr |
The system state at m_time. | |
N_Vector | m_abstol = nullptr |
N_Vector | m_dky = nullptr |
string | m_type = "DENSE" |
int | m_itol |
int | m_method |
int | m_maxord = 0 |
double | m_reltol = 1e-9 |
double | m_abstols = 1e-15 |
double | m_reltolsens = 1e-5 |
double | m_abstolsens = 1e-4 |
size_t | m_nabs = 0 |
double | m_hmax = 0.0 |
double | m_hmin = 0.0 |
int | m_maxsteps = 20000 |
int | m_maxErrTestFails = 0 |
N_Vector * | m_yS = nullptr |
size_t | m_np = 0 |
int | m_mupper = 0 |
int | m_mlower = 0 |
bool | m_sens_ok = false |
Indicates whether the sensitivities stored in m_yS have been updated for at the current integrator time. | |
Additional Inherited Members | |
Protected Attributes inherited from Integrator | |
shared_ptr< PreconditionerBase > | m_preconditioner |
Pointer to preconditioner object used in integration which is set by setPreconditioner and initialized inside of ReactorNet::initialize() | |
PreconditionerSide | m_prec_side = PreconditionerSide::NO_PRECONDITION |
Type of preconditioning used in applyOptions. | |
CVodesIntegrator | ( | ) |
Constructor.
Default settings: dense Jacobian, no user-supplied Jacobian function, Newton iteration.
Definition at line 95 of file CVodesIntegrator.cpp.
|
override |
Definition at line 101 of file CVodesIntegrator.cpp.
|
overridevirtual |
Set error tolerances.
reltol | scalar relative tolerance |
n | Number of equations |
abstol | array of N absolute tolerance values |
Reimplemented from Integrator.
Definition at line 142 of file CVodesIntegrator.cpp.
|
overridevirtual |
Set error tolerances.
reltol | scalar relative tolerance |
abstol | scalar absolute tolerance |
Reimplemented from Integrator.
Definition at line 158 of file CVodesIntegrator.cpp.
|
overridevirtual |
Set the sensitivity error tolerances.
reltol | scalar relative tolerance |
abstol | scalar absolute tolerance |
Reimplemented from Integrator.
Definition at line 165 of file CVodesIntegrator.cpp.
|
overridevirtual |
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 249 of file CVodesIntegrator.cpp.
|
overridevirtual |
Reimplemented from Integrator.
Definition at line 337 of file CVodesIntegrator.cpp.
|
overridevirtual |
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 497 of file CVodesIntegrator.cpp.
|
overridevirtual |
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 535 of file CVodesIntegrator.cpp.
|
overridevirtual |
The current value of the solution of equation k.
Reimplemented from Integrator.
Definition at line 132 of file CVodesIntegrator.cpp.
|
overridevirtual |
The current value of the solution of the system of equations.
Reimplemented from Integrator.
Definition at line 137 of file CVodesIntegrator.cpp.
|
overridevirtual |
n-th derivative of the output function at time tout.
Reimplemented from Integrator.
Definition at line 555 of file CVodesIntegrator.cpp.
|
overridevirtual |
Order used during the last solution step.
Reimplemented from Integrator.
Definition at line 562 of file CVodesIntegrator.cpp.
|
inlineoverridevirtual |
The number of equations.
Reimplemented from Integrator.
Definition at line 46 of file CVodesIntegrator.h.
|
overridevirtual |
The number of function evaluations.
Reimplemented from Integrator.
Definition at line 569 of file CVodesIntegrator.cpp.
|
inlineoverridevirtual |
Set the maximum integration order that will be used.
Reimplemented from Integrator.
Definition at line 50 of file CVodesIntegrator.h.
|
overridevirtual |
Set the solution method.
Reimplemented from Integrator.
Definition at line 171 of file CVodesIntegrator.cpp.
|
overridevirtual |
Set the maximum step size.
Reimplemented from Integrator.
Definition at line 182 of file CVodesIntegrator.cpp.
|
overridevirtual |
Set the minimum step size.
Reimplemented from Integrator.
Definition at line 190 of file CVodesIntegrator.cpp.
|
overridevirtual |
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 198 of file CVodesIntegrator.cpp.
|
overridevirtual |
Returns the maximum number of time-steps the integrator can take before reaching the next output time.
Reimplemented from Integrator.
Definition at line 206 of file CVodesIntegrator.cpp.
|
overridevirtual |
Set the maximum permissible number of error test failures.
Reimplemented from Integrator.
Definition at line 211 of file CVodesIntegrator.cpp.
|
overridevirtual |
Get solver stats from integrator.
Reimplemented from Integrator.
Definition at line 576 of file CVodesIntegrator.cpp.
|
inlineoverridevirtual |
Set the linear solver type.
linSolverType | Type of the linear solver |
Reimplemented from Integrator.
Definition at line 60 of file CVodesIntegrator.h.
|
inlineoverridevirtual |
Return the integrator problem type.
Reimplemented from Integrator.
Definition at line 63 of file CVodesIntegrator.h.
|
inlineoverridevirtual |
Reimplemented from Integrator.
Definition at line 66 of file CVodesIntegrator.h.
|
inlineoverridevirtual |
Reimplemented from Integrator.
Definition at line 70 of file CVodesIntegrator.h.
|
overridevirtual |
Reimplemented from Integrator.
Definition at line 635 of file CVodesIntegrator.cpp.
string getErrorInfo | ( | int | N | ) |
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 658 of file CVodesIntegrator.cpp.
|
protected |
Applies user-specified options to the underlying CVODES solver.
Called during integrator initialization or reinitialization.
Definition at line 354 of file CVodesIntegrator.cpp.
|
private |
Definition at line 219 of file CVodesIntegrator.cpp.
|
private |
Check whether a CVODES method indicated an error.
If so, throw an exception containing the method name and the error code stashed by the cvodes_err() function.
Definition at line 683 of file CVodesIntegrator.cpp.
string m_error_message |
Error message information provide by CVodes.
Definition at line 82 of file CVodesIntegrator.h.
|
private |
Definition at line 96 of file CVodesIntegrator.h.
|
private |
CVODES internal memory object.
Definition at line 97 of file CVodesIntegrator.h.
|
private |
SUNContext object for Sundials>=6.0.
Definition at line 98 of file CVodesIntegrator.h.
|
private |
Sundials linear solver object.
Definition at line 99 of file CVodesIntegrator.h.
|
private |
matrix used by Sundials
Definition at line 100 of file CVodesIntegrator.h.
|
private |
Definition at line 101 of file CVodesIntegrator.h.
|
private |
Definition at line 102 of file CVodesIntegrator.h.
|
private |
The current system time, corresponding to m_y.
Definition at line 105 of file CVodesIntegrator.h.
|
private |
The latest time reached by the integrator. May be greater than m_time.
Definition at line 108 of file CVodesIntegrator.h.
|
private |
The system state at m_time.
Definition at line 111 of file CVodesIntegrator.h.
|
private |
Definition at line 113 of file CVodesIntegrator.h.
|
private |
Definition at line 114 of file CVodesIntegrator.h.
|
private |
Definition at line 115 of file CVodesIntegrator.h.
|
private |
Definition at line 116 of file CVodesIntegrator.h.
|
private |
Definition at line 117 of file CVodesIntegrator.h.
|
private |
Definition at line 118 of file CVodesIntegrator.h.
|
private |
Definition at line 119 of file CVodesIntegrator.h.
|
private |
Definition at line 120 of file CVodesIntegrator.h.
|
private |
Definition at line 121 of file CVodesIntegrator.h.
|
private |
Definition at line 122 of file CVodesIntegrator.h.
|
private |
Definition at line 123 of file CVodesIntegrator.h.
|
private |
Definition at line 124 of file CVodesIntegrator.h.
|
private |
Definition at line 125 of file CVodesIntegrator.h.
|
private |
Definition at line 126 of file CVodesIntegrator.h.
|
private |
Definition at line 127 of file CVodesIntegrator.h.
|
private |
Definition at line 128 of file CVodesIntegrator.h.
|
private |
Definition at line 129 of file CVodesIntegrator.h.
|
private |
Definition at line 130 of file CVodesIntegrator.h.
|
private |
Definition at line 131 of file CVodesIntegrator.h.
|
private |
Indicates whether the sensitivities stored in m_yS have been updated for at the current integrator time.
Definition at line 134 of file CVodesIntegrator.h.