| Cantera 3.0.0

Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
IdasIntegrator Class Reference

Wrapper for Sundials IDAS solver. More...

`#include <IdasIntegrator.h>`

Inheritance diagram for IdasIntegrator:
[legend]

## Detailed Description

Wrapper for Sundials IDAS solver.

See also
  FuncEval.h. Classes that use IdasIntegrator: FlowReactor

Definition at line 25 of file IdasIntegrator.h.

## Public Member Functions
| IdasIntegrator ()
| 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 | setLinearSolverType (const string &linearSolverType) override
| Set the linear solver type.
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.
int | nEquations () const override
| The number of equations.
int | maxOrder () const override
void | setMaxOrder (int n) override
| Set the maximum integration order that will be used.
void | setMaxStepSize (double hmax) override
| Set the maximum 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.
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.
int | maxNonlinIterations () const override
void | setMaxNonlinIterations (int n) override
int | maxNonlinConvFailures () const override
void | setMaxNonlinConvFailures (int n) override
bool | algebraicInErrorTest () const override
void | includeAlgebraicInErrorTest (bool yesno) override
void | setMethod (MethodType t) override
| Set the solution method.
Public Member Functions inherited from Integrator
| Integrator ()
| Default Constructor.
virtual | ~Integrator ()
| Destructor.
virtual void | setProblemType (int probtype)
| Set the problem 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 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 | nEvals () const
| The number of function evaluations.
virtual void | setMinStepSize (double hmin)
| Set the minimum step size.
virtual void | setBandwidth (int N_Upper, int N_Lower)

## Public Attributes
string | m_error_message
| Error message information provide by IDAS.

## Protected Member Functions
void | applyOptions ()
| Applies user-specified options to the underlying IDAS solver.

## Private Member Functions
void | sensInit (double t0, FuncEval &func)
void | checkError (long flag, const string &ctMethod, const string &idaMethod) const
| Check whether an IDAS method indicated an error.

## Private Attributes
size_t | m_neq
| Number of equations/variables in the system.
void * | m_ida_mem = nullptr
| Pointer to the IDA memory for the problem.
void * | m_linsol = nullptr
| Sundials linear solver object.
void * | m_linsol_matrix = nullptr
| matrix used by Sundials
SundialsContext | m_sundials_ctx
| SUNContext object for Sundials>=6.0.
FuncEval * | m_func = nullptr
| Object implementing the DAE residual function \( f(t, y, \dot{y}) = 0 \).
double | m_t0 = 0.0
| The start time for the integrator.
double | m_time
| The current integrator 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 current system state.
N_Vector | m_ydot = nullptr
| The time derivatives of the system state.
N_Vector | m_abstol = nullptr
| Absolute tolerances for each state variable.
string | m_type = "DENSE"
| The linear solver type.
int | m_itol
| Flag indicating whether scalar (`IDA_SS`) or vector (`IDA_SV`) absolute tolerances are being used.
int | m_maxord = 0
| Maximum order allowed for the BDF method.
double | m_reltol = 1.0e-9
| Relative tolerance for all state variables.
double | m_abstols = 1.0e-15
| Scalar absolute tolerance.
double | m_reltolsens
| Scalar relative tolerance for sensitivities.
double | m_abstolsens
| Scalar absolute tolerance for sensitivities.
size_t | m_nabs = 0
| ! Number of variables for which absolute tolerances were provided
double | m_hmax = 0.0
| Maximum time step size. Zero means infinity.
int | m_maxsteps = 20000
| Maximum number of internal steps taken in a call to integrate()
int | m_maxErrTestFails = -1
| Maximum number of error test failures in attempting one step.
size_t | m_np
| Number of sensitivity parameters.
N_Vector * | m_yS = nullptr
| Sensitivities of y, size m_np by m_neq.
N_Vector * | m_ySdot = nullptr
| Sensitivities of ydot, size m_np by m_neq.
N_Vector | m_constraints = nullptr
bool | m_sens_ok
| Indicates whether the sensitivities stored in m_yS and m_ySdot have been updated for the current integrator time.
int | m_maxNonlinIters = 0
| Maximum number of nonlinear solver iterations at one solution.
int | m_maxNonlinConvFails = -1
| Maximum number of nonlinear convergence failures.
bool | m_setSuppressAlg = false
| If true, the algebraic variables don't contribute to error tolerances.
double | m_init_step = 1e-14
| Initial IDA step size.

## 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.

## Constructor & Destructor Documentation

## ◆ IdasIntegrator()

IdasIntegrator | ( |  | ) |

Constructor.

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

Definition at line 66 of file IdasIntegrator.cpp.

## ◆ ~IdasIntegrator()

~IdasIntegrator | ( |  | ) |
| override

Definition at line 71 of file IdasIntegrator.cpp.

## Member Function Documentation

## ◆ setTolerances() [1/2]

void setTolerances | ( | double | reltol,
|  | size_t | n,
|  | double * | abstol
| ) |  |
| override virtual

Set error tolerances.

Parameters

  reltol | scalar relative tolerance
  n | Number of equations
  abstol | array of N absolute tolerance values

Reimplemented from Integrator.

Definition at line 100 of file IdasIntegrator.cpp.

## ◆ setTolerances() [2/2]

void setTolerances | ( | double | reltol,
|  | double | abstol
| ) |  |
| override virtual

Set error tolerances.

Parameters

  reltol | scalar relative tolerance
  abstol | scalar absolute tolerance

Reimplemented from Integrator.

Definition at line 116 of file IdasIntegrator.cpp.

## ◆ setSensitivityTolerances()

void setSensitivityTolerances | ( | double | reltol,
|  | double | abstol
| ) |  |
| override virtual

Set the sensitivity error tolerances.

Parameters

  reltol | scalar relative tolerance
  abstol | scalar absolute tolerance

Reimplemented from Integrator.

Definition at line 123 of file IdasIntegrator.cpp.

## ◆ setLinearSolverType()

void setLinearSolverType | ( | const string & | linSolverType | ) |
| override virtual

Set the linear solver type.

Parameters

  linSolverType | Type of the linear solver

Reimplemented from Integrator.

Definition at line 130 of file IdasIntegrator.cpp.

## ◆ initialize()

void initialize | ( | double | t0,
|  | FuncEval & | func
| ) |  |
| override virtual

Initialize the integrator for a new problem.

Call after all options have been set.

Parameters

  t0 | initial time
  func | RHS evaluator object for system of equations.

Reimplemented from Integrator.

Definition at line 225 of file IdasIntegrator.cpp.

## ◆ reinitialize()

void reinitialize | ( | double | t0,
|  | FuncEval & | func
| ) |  |
| override virtual

Reimplemented from Integrator.

Definition at line 317 of file IdasIntegrator.cpp.

## ◆ integrate()

void integrate | ( | double | tout | ) |
| override virtual

Integrate the system of equations.

Parameters

  tout | Integrate to this time. Note that this is the absolute time value, not a time interval.

Reimplemented from Integrator.

Definition at line 452 of file IdasIntegrator.cpp.

## ◆ step()

double step | ( | double | tout | ) |
| override virtual

Integrate the system of equations.

Parameters

  tout | integrate to this time. Note that this is the absolute time value, not a time interval.

Reimplemented from Integrator.

Definition at line 489 of file IdasIntegrator.cpp.

## ◆ solution() [1/2]

double & solution | ( | size_t | k | ) |
| override virtual

The current value of the solution of equation k.

Reimplemented from Integrator.

Definition at line 90 of file IdasIntegrator.cpp.

## ◆ solution() [2/2]

double * solution | ( |  | ) |
| override virtual

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

Reimplemented from Integrator.

Definition at line 95 of file IdasIntegrator.cpp.

## ◆ nEquations()

int nEquations | ( |  | ) | const
| inline override virtual

The number of equations.

Reimplemented from Integrator.

Definition at line 44 of file IdasIntegrator.h.

## ◆ maxOrder()

int maxOrder | ( |  | ) | const
| inline override virtual

Reimplemented from Integrator.

Definition at line 47 of file IdasIntegrator.h.

## ◆ setMaxOrder()

void setMaxOrder | ( | int | n | ) |
| override virtual

Set the maximum integration order that will be used.

Reimplemented from Integrator.

Definition at line 135 of file IdasIntegrator.cpp.

## ◆ setMaxStepSize()

void setMaxStepSize | ( | double | hmax | ) |
| override virtual

Set the maximum step size.

Reimplemented from Integrator.

Definition at line 144 of file IdasIntegrator.cpp.

## ◆ setMaxSteps()

void setMaxSteps | ( | int | nmax | ) |
| override virtual

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

Parameters

  nmax | The maximum number of steps, setting this value to zero disables this option.

Reimplemented from Integrator.

Definition at line 153 of file IdasIntegrator.cpp.

## ◆ maxSteps()

int maxSteps | ( |  | ) |
| override virtual

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

Reimplemented from Integrator.

Definition at line 161 of file IdasIntegrator.cpp.

## ◆ setMaxErrTestFails()

void setMaxErrTestFails | ( | int | n | ) |
| override virtual

Set the maximum permissible number of error test failures.

Reimplemented from Integrator.

Definition at line 166 of file IdasIntegrator.cpp.

## ◆ solverStats()

AnyMap solverStats | ( |  | ) | const
| override virtual

Get solver stats from integrator.

Reimplemented from Integrator.

Definition at line 174 of file IdasIntegrator.cpp.

## ◆ nSensParams()

int nSensParams | ( |  | ) |
| inline override virtual

Reimplemented from Integrator.

Definition at line 56 of file IdasIntegrator.h.

## ◆ sensitivity()

double sensitivity | ( | size_t | k,
|  | size_t | p
| ) |  |
| override virtual

Reimplemented from Integrator.

Definition at line 508 of file IdasIntegrator.cpp.

## ◆ 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 531 of file IdasIntegrator.cpp.

## ◆ maxNonlinIterations()

int maxNonlinIterations | ( |  | ) | const
| inline override virtual

Reimplemented from Integrator.

Definition at line 70 of file IdasIntegrator.h.

## ◆ setMaxNonlinIterations()

void setMaxNonlinIterations | ( | int | n | ) |
| override virtual

Reimplemented from Integrator.

Definition at line 198 of file IdasIntegrator.cpp.

## ◆ maxNonlinConvFailures()

int maxNonlinConvFailures | ( |  | ) | const
| inline override virtual

Reimplemented from Integrator.

Definition at line 75 of file IdasIntegrator.h.

## ◆ setMaxNonlinConvFailures()

void setMaxNonlinConvFailures | ( | int | n | ) |
| override virtual

Reimplemented from Integrator.

Definition at line 207 of file IdasIntegrator.cpp.

## ◆ algebraicInErrorTest()

bool algebraicInErrorTest | ( |  | ) | const
| inline override virtual

Reimplemented from Integrator.

Definition at line 80 of file IdasIntegrator.h.

## ◆ includeAlgebraicInErrorTest()

void includeAlgebraicInErrorTest | ( | bool | yesno | ) |
| override virtual

Reimplemented from Integrator.

Definition at line 216 of file IdasIntegrator.cpp.

## ◆ setMethod()

void setMethod | ( | MethodType | t | ) |
| override virtual

Set the solution method.

Reimplemented from Integrator.

Definition at line 571 of file IdasIntegrator.cpp.

## ◆ applyOptions()

void applyOptions | ( |  | ) |
| protected

Applies user-specified options to the underlying IDAS solver.

Called during integrator initialization or reinitialization.

Definition at line 331 of file IdasIntegrator.cpp.

## ◆ sensInit()

void sensInit | ( | double | t0,
|  | FuncEval & | func
| ) |  |
| private

Definition at line 413 of file IdasIntegrator.cpp.

## ◆ checkError()

void checkError | ( | long | flag,
|  | const string & | ctMethod,
|  | const string & | idaMethod
| ) |  | const
| private

Check whether an IDAS method indicated an error.

If so, throw an exception containing the method name and the error code stashed by the ida_err() function.

Definition at line 555 of file IdasIntegrator.cpp.

## Member Data Documentation

## ◆ m_error_message

string m_error_message

Error message information provide by IDAS.

Definition at line 68 of file IdasIntegrator.h.

## ◆ m_neq

size_t m_neq
| private

Number of equations/variables in the system.

Definition at line 100 of file IdasIntegrator.h.

## ◆ m_ida_mem

void* m_ida_mem = nullptr
| private

Pointer to the IDA memory for the problem.

Definition at line 101 of file IdasIntegrator.h.

## ◆ m_linsol

void* m_linsol = nullptr
| private

Sundials linear solver object.

Definition at line 102 of file IdasIntegrator.h.

## ◆ m_linsol_matrix

void* m_linsol_matrix = nullptr
| private

matrix used by Sundials

Definition at line 103 of file IdasIntegrator.h.

## ◆ m_sundials_ctx

SundialsContext m_sundials_ctx
| private

SUNContext object for Sundials>=6.0.

Definition at line 104 of file IdasIntegrator.h.

## ◆ m_func

FuncEval* m_func = nullptr
| private

Object implementing the DAE residual function \( f(t, y, \dot{y}) = 0 \).

Definition at line 107 of file IdasIntegrator.h.

## ◆ m_t0

double m_t0 = 0.0
| private

The start time for the integrator.

Definition at line 109 of file IdasIntegrator.h.

## ◆ m_time

double m_time
| private

The current integrator time, corresponding to m_y.

Definition at line 110 of file IdasIntegrator.h.

## ◆ m_tInteg

double m_tInteg
| private

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

Definition at line 113 of file IdasIntegrator.h.

## ◆ m_y

N_Vector m_y = nullptr
| private

The current system state.

Definition at line 115 of file IdasIntegrator.h.

## ◆ m_ydot

N_Vector m_ydot = nullptr
| private

The time derivatives of the system state.

Definition at line 116 of file IdasIntegrator.h.

## ◆ m_abstol

N_Vector m_abstol = nullptr
| private

Absolute tolerances for each state variable.

Definition at line 117 of file IdasIntegrator.h.

## ◆ m_type

string m_type = "DENSE"
| private

The linear solver type.

See also
  setLinearSolverType()

Definition at line 118 of file IdasIntegrator.h.

## ◆ m_itol

int m_itol
| private

Flag indicating whether scalar (`IDA_SS`) or vector (`IDA_SV`) absolute tolerances are being used.

Definition at line 122 of file IdasIntegrator.h.

## ◆ m_maxord

int m_maxord = 0
| private

Maximum order allowed for the BDF method.

Definition at line 124 of file IdasIntegrator.h.

## ◆ m_reltol

double m_reltol = 1.0e-9
| private

Relative tolerance for all state variables.

Definition at line 125 of file IdasIntegrator.h.

## ◆ m_abstols

double m_abstols = 1.0e-15
| private

Scalar absolute tolerance.

Definition at line 126 of file IdasIntegrator.h.

## ◆ m_reltolsens

double m_reltolsens
| private

Scalar relative tolerance for sensitivities.

Definition at line 127 of file IdasIntegrator.h.

## ◆ m_abstolsens

double m_abstolsens
| private

Scalar absolute tolerance for sensitivities.

Definition at line 128 of file IdasIntegrator.h.

## ◆ m_nabs

size_t m_nabs = 0
| private

! Number of variables for which absolute tolerances were provided

Definition at line 131 of file IdasIntegrator.h.

## ◆ m_hmax

double m_hmax = 0.0
| private

Maximum time step size. Zero means infinity.

Definition at line 133 of file IdasIntegrator.h.

## ◆ m_maxsteps

int m_maxsteps = 20000
| private

Maximum number of internal steps taken in a call to integrate()

Definition at line 136 of file IdasIntegrator.h.

## ◆ m_maxErrTestFails

int m_maxErrTestFails = -1
| private

Maximum number of error test failures in attempting one step.

Definition at line 139 of file IdasIntegrator.h.

## ◆ m_np

size_t m_np
| private

Number of sensitivity parameters.

Definition at line 141 of file IdasIntegrator.h.

## ◆ m_yS

N_Vector* m_yS = nullptr
| private

Sensitivities of y, size m_np by m_neq.

Definition at line 142 of file IdasIntegrator.h.

## ◆ m_ySdot

N_Vector* m_ySdot = nullptr
| private

Sensitivities of ydot, size m_np by m_neq.

Definition at line 143 of file IdasIntegrator.h.

## ◆ m_constraints

N_Vector m_constraints = nullptr
| private

Definition at line 144 of file IdasIntegrator.h.

## ◆ m_sens_ok

bool m_sens_ok
| private

Indicates whether the sensitivities stored in m_yS and m_ySdot have been updated for the current integrator time.

Definition at line 148 of file IdasIntegrator.h.

## ◆ m_maxNonlinIters

int m_maxNonlinIters = 0
| private

Maximum number of nonlinear solver iterations at one solution.

If zero, this is the default of 4.

Definition at line 154 of file IdasIntegrator.h.

## ◆ m_maxNonlinConvFails

int m_maxNonlinConvFails = -1
| private

Maximum number of nonlinear convergence failures.

Definition at line 157 of file IdasIntegrator.h.

## ◆ m_setSuppressAlg

bool m_setSuppressAlg = false
| private

If true, the algebraic variables don't contribute to error tolerances.

Definition at line 160 of file IdasIntegrator.h.

## ◆ m_init_step

double m_init_step = 1e-14
| private

Initial IDA step size.

Definition at line 163 of file IdasIntegrator.h.

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

- IdasIntegrator.h
- IdasIntegrator.cpp