Cantera  3.1.0a1
CVodesIntegrator Class Reference

Wrapper class for 'cvodes' integrator from LLNL. More...

#include <CVodesIntegrator.h>

Inheritance diagram for CVodesIntegrator:
[legend]

Detailed Description

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. More...
 
void setTolerances (double reltol, size_t n, double *abstol) override
 Set error tolerances. More...
 
void setTolerances (double reltol, double abstol) override
 Set error tolerances. More...
 
void setSensitivityTolerances (double reltol, double abstol) override
 Set the sensitivity error tolerances. More...
 
void initialize (double t0, FuncEval &func) override
 Initialize the integrator for a new problem. More...
 
void reinitialize (double t0, FuncEval &func) override
 
void integrate (double tout) override
 Integrate the system of equations. More...
 
double step (double tout) override
 Integrate the system of equations. More...
 
double & solution (size_t k) override
 The current value of the solution of equation k. More...
 
double * solution () override
 The current value of the solution of the system of equations. More...
 
double * derivative (double tout, int n) override
 n-th derivative of the output function at time tout. More...
 
int lastOrder () const override
 Order used during the last solution step. More...
 
int nEquations () const override
 The number of equations. More...
 
int nEvals () const override
 The number of function evaluations. More...
 
void setMaxOrder (int n) override
 Set the maximum integration order that will be used. More...
 
void setMethod (MethodType t) override
 Set the solution method. More...
 
void setMaxStepSize (double hmax) override
 Set the maximum step size. More...
 
void setMinStepSize (double hmin) override
 Set the minimum step size. More...
 
void setMaxSteps (int nmax) override
 Set the maximum number of time-steps the integrator can take before reaching the next output time. More...
 
int maxSteps () override
 Returns the maximum number of time-steps the integrator can take before reaching the next output time. More...
 
void setMaxErrTestFails (int n) override
 Set the maximum permissible number of error test failures. More...
 
AnyMap solverStats () const override
 Get solver stats from integrator. More...
 
void setLinearSolverType (const string &linSolverType) override
 Set the linear solver type. More...
 
string linearSolverType () const override
 Return the integrator problem type. More...
 
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. More...
 
- Public Member Functions inherited from Integrator
 Integrator ()
 Default Constructor. More...
 
virtual ~Integrator ()
 Destructor. More...
 
virtual void setPreconditioner (shared_ptr< PreconditionerBase > preconditioner)
 Set preconditioner used by the linear solver. More...
 
virtual void preconditionerSolve (size_t stateSize, double *rhs, double *output)
 Solve a linear system Ax=b where A is the preconditioner. More...
 
virtual PreconditionerSide preconditionerSide ()
 Return the side of the system on which the preconditioner is applied. More...
 
virtual shared_ptr< PreconditionerBasepreconditioner ()
 Return preconditioner reference to object. More...
 
virtual int maxOrder () const
 
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. 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)
 
void checkError (long flag, const string &ctMethod, const string &cvodesMethod) const
 Check whether a CVODES method indicated an error. More...
 

Private Attributes

size_t m_neq = 0
 
void * m_cvode_mem = nullptr
 
SundialsContext m_sundials_ctx
 SUNContext object for Sundials>=6.0. More...
 
void * m_linsol = nullptr
 Sundials linear solver object. More...
 
void * m_linsol_matrix = nullptr
 matrix used by Sundials More...
 
FuncEvalm_func = nullptr
 
double m_t0 = 0.0
 
double m_time
 The current system time, corresponding to m_y. More...
 
double m_tInteg
 The latest time reached by the integrator. May be greater than m_time. More...
 
N_Vector m_y = nullptr
 The system state at m_time. More...
 
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. More...
 

Additional Inherited Members

- Protected Attributes inherited from Integrator
shared_ptr< PreconditionerBasem_preconditioner
 Pointer to preconditioner object used in integration which is set by setPreconditioner and initialized inside of ReactorNet::initialize() More...
 
PreconditionerSide m_prec_side = PreconditionerSide::NO_PRECONDITION
 Type of preconditioning used in applyOptions. More...
 

Constructor & Destructor Documentation

◆ CVodesIntegrator()

Constructor.

Default settings: dense Jacobian, no user-supplied Jacobian function, Newton iteration.

Definition at line 79 of file CVodesIntegrator.cpp.

Member Function Documentation

◆ setTolerances() [1/2]

void setTolerances ( double  reltol,
size_t  n,
double *  abstol 
)
overridevirtual

Set error tolerances.

Parameters
reltolscalar relative tolerance
nNumber of equations
abstolarray of N absolute tolerance values

Reimplemented from Integrator.

Definition at line 126 of file CVodesIntegrator.cpp.

◆ setTolerances() [2/2]

void setTolerances ( double  reltol,
double  abstol 
)
overridevirtual

Set error tolerances.

Parameters
reltolscalar relative tolerance
abstolscalar absolute tolerance

Reimplemented from Integrator.

Definition at line 142 of file CVodesIntegrator.cpp.

◆ setSensitivityTolerances()

void setSensitivityTolerances ( double  reltol,
double  abstol 
)
overridevirtual

Set the sensitivity error tolerances.

Parameters
reltolscalar relative tolerance
abstolscalar absolute tolerance

Reimplemented from Integrator.

Definition at line 149 of file CVodesIntegrator.cpp.

◆ initialize()

void initialize ( double  t0,
FuncEval func 
)
overridevirtual

Initialize the integrator for a new problem.

Call after all options have been set.

Parameters
t0initial time
funcRHS evaluator object for system of equations.

Reimplemented from Integrator.

Definition at line 233 of file CVodesIntegrator.cpp.

◆ integrate()

void integrate ( double  tout)
overridevirtual

Integrate the system of equations.

Parameters
toutIntegrate to this time. Note that this is the absolute time value, not a time interval.

Reimplemented from Integrator.

Definition at line 477 of file CVodesIntegrator.cpp.

◆ step()

double step ( double  tout)
overridevirtual

Integrate the system of equations.

Parameters
toutintegrate to this time. Note that this is the absolute time value, not a time interval.

Reimplemented from Integrator.

Definition at line 515 of file CVodesIntegrator.cpp.

◆ solution() [1/2]

double & solution ( size_t  k)
overridevirtual

The current value of the solution of equation k.

Reimplemented from Integrator.

Definition at line 116 of file CVodesIntegrator.cpp.

◆ solution() [2/2]

double * solution ( )
overridevirtual

The current value of the solution of the system of equations.

Reimplemented from Integrator.

Definition at line 121 of file CVodesIntegrator.cpp.

◆ derivative()

double * derivative ( double  tout,
int  n 
)
overridevirtual

n-th derivative of the output function at time tout.

Reimplemented from Integrator.

Definition at line 535 of file CVodesIntegrator.cpp.

◆ lastOrder()

int lastOrder ( ) const
overridevirtual

Order used during the last solution step.

Reimplemented from Integrator.

Definition at line 542 of file CVodesIntegrator.cpp.

◆ nEquations()

int nEquations ( ) const
inlineoverridevirtual

The number of equations.

Reimplemented from Integrator.

Definition at line 46 of file CVodesIntegrator.h.

◆ nEvals()

int nEvals ( ) const
overridevirtual

The number of function evaluations.

Reimplemented from Integrator.

Definition at line 549 of file CVodesIntegrator.cpp.

◆ setMaxOrder()

void setMaxOrder ( int  n)
inlineoverridevirtual

Set the maximum integration order that will be used.

Reimplemented from Integrator.

Definition at line 50 of file CVodesIntegrator.h.

◆ setMethod()

void setMethod ( MethodType  t)
overridevirtual

Set the solution method.

Reimplemented from Integrator.

Definition at line 155 of file CVodesIntegrator.cpp.

◆ setMaxStepSize()

void setMaxStepSize ( double  hmax)
overridevirtual

Set the maximum step size.

Reimplemented from Integrator.

Definition at line 166 of file CVodesIntegrator.cpp.

◆ setMinStepSize()

void setMinStepSize ( double  hmin)
overridevirtual

Set the minimum step size.

Reimplemented from Integrator.

Definition at line 174 of file CVodesIntegrator.cpp.

◆ setMaxSteps()

void setMaxSteps ( int  nmax)
overridevirtual

Set the maximum number of time-steps the integrator can take before reaching the next output time.

Parameters
nmaxThe maximum number of steps, setting this value to zero disables this option.

Reimplemented from Integrator.

Definition at line 182 of file CVodesIntegrator.cpp.

◆ maxSteps()

int maxSteps ( )
overridevirtual

Returns the maximum number of time-steps the integrator can take before reaching the next output time.

Reimplemented from Integrator.

Definition at line 190 of file CVodesIntegrator.cpp.

◆ setMaxErrTestFails()

void setMaxErrTestFails ( int  n)
overridevirtual

Set the maximum permissible number of error test failures.

Reimplemented from Integrator.

Definition at line 195 of file CVodesIntegrator.cpp.

◆ solverStats()

AnyMap solverStats ( ) const
overridevirtual

Get solver stats from integrator.

Reimplemented from Integrator.

Definition at line 556 of file CVodesIntegrator.cpp.

◆ setLinearSolverType()

void setLinearSolverType ( const string &  linSolverType)
inlineoverridevirtual

Set the linear solver type.

Parameters
linSolverTypeType of the linear solver

Reimplemented from Integrator.

Definition at line 60 of file CVodesIntegrator.h.

◆ linearSolverType()

string linearSolverType ( ) const
inlineoverridevirtual

Return the integrator problem type.

Reimplemented from Integrator.

Definition at line 63 of file CVodesIntegrator.h.

◆ getErrorInfo()

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 638 of file CVodesIntegrator.cpp.

◆ applyOptions()

void applyOptions ( )
protected

Applies user-specified options to the underlying CVODES solver.

Called during integrator initialization or reinitialization.

Definition at line 334 of file CVodesIntegrator.cpp.

◆ checkError()

void checkError ( long  flag,
const string &  ctMethod,
const string &  cvodesMethod 
) const
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 663 of file CVodesIntegrator.cpp.

Member Data Documentation

◆ m_error_message

string m_error_message

Error message information provide by CVodes.

Definition at line 82 of file CVodesIntegrator.h.

◆ m_sundials_ctx

SundialsContext m_sundials_ctx
private

SUNContext object for Sundials>=6.0.

Definition at line 98 of file CVodesIntegrator.h.

◆ m_linsol

void* m_linsol = nullptr
private

Sundials linear solver object.

Definition at line 99 of file CVodesIntegrator.h.

◆ m_linsol_matrix

void* m_linsol_matrix = nullptr
private

matrix used by Sundials

Definition at line 100 of file CVodesIntegrator.h.

◆ m_time

double m_time
private

The current system time, corresponding to m_y.

Definition at line 105 of file CVodesIntegrator.h.

◆ m_tInteg

double m_tInteg
private

The latest time reached by the integrator. May be greater than m_time.

Definition at line 108 of file CVodesIntegrator.h.

◆ m_y

N_Vector m_y = nullptr
private

The system state at m_time.

Definition at line 111 of file CVodesIntegrator.h.

◆ m_sens_ok

bool m_sens_ok = false
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.


The documentation for this class was generated from the following files: