#include <Omu_IntSDIRK.h>


The implementation is based on Hairer/Wanner: "Solving ordinary differential equations II".
Public Member Functions | |
| Omu_IntSDIRK () | |
| constructor | |
| ~Omu_IntSDIRK () | |
| destructor | |
Implementation of predefined methods. | |
| char * | name () |
| Name of a specific integrator. | |
| virtual void | init (int k, const Omu_StateVec &xc, const Omu_Vec &q, const Omu_DependentVec &Fc, bool sa) |
| Initialize integrator, like adaptation of array dimensions and test of pre-conditions, like explicit ODE. | |
| virtual void | solve (int kk, double tstart, double tend, Omu_StateVec &xc, Omu_StateVec &dxc, Omu_Vec &q, Omu_DependentVec &Fc) |
| Solve differential equations over one sample period. | |
Protected Attributes | |
| int | _jac_sbw |
| User given semi-bandwidth of Jacobian (default: -1). | |
| bool | _banded |
| User specification to allow banded solver (default: false). | |
| bool | _banded_solver |
| internal flag for using banded solver | |
| bool | _sparse_solver |
| User specification to allow sparse solver (default: false). | |
| char* Omu_IntSDIRK::name | ( | ) | [inline, virtual] |
| virtual void Omu_IntSDIRK::init | ( | int | k, | |
| const Omu_StateVec & | xc, | |||
| const Omu_Vec & | q, | |||
| const Omu_DependentVec & | Fc, | |||
| bool | sa | |||
| ) | [virtual] |
Initialize integrator, like adaptation of array dimensions and test of pre-conditions, like explicit ODE.
An explicit ODE is present if Fc.Jdx.is_scalar() and Fc.Jdx[0][0] != 0.0. An algebraic state j, 0<=j<_n can be identified with Fc.Jdx.is_zero_column[j]. Note that the init method should not find consistent initial conditions of a DAE as parameters may jump between sample periods kk afterwards.
| k | stage | |
| xc | continuous-time states, dim(xc)=_n | |
| q | sensitivity parameters, dim(q)=_nq | |
| Fc | pre-initialized data structures for evaluating residuals, dim(Fc)=_n, including structurally analyzed Jacobians, dim(Fc.Jx)=_n._n, dim(Fc.Jxp)=_n._n, dim(Fc.Jq)=_n._nq | |
| sa | indicates if sensitivity analysis is required |
Reimplemented from Omu_Integrator.
| virtual void Omu_IntSDIRK::solve | ( | int | kk, | |
| double | tstart, | |||
| double | tend, | |||
| Omu_StateVec & | xc, | |||
| Omu_StateVec & | dxc, | |||
| Omu_Vec & | q, | |||
| Omu_DependentVec & | Fc | |||
| ) | [virtual] |
Solve differential equations over one sample period.
Additionally solve sensitivity equations if _sa is true. The default implementation calls the depreciated solve method.
| kk | sample period | |
| tstart | start time for integration | |
| tend | end time for integration | |
| xc | continuous-time states at tstart, dim(xc)=_n; sensitivities xc.Sq at tstart, dim(xc.Sq)=_n._nq, if _sa is true | |
| dxc | pre-allocated time derivatives of continuous-time states, dim(dxc)=_n | |
| q | sensitivity parameters, dim(q)=_nq | |
| Fc | pre-allocated argument for residual calls, dim(Fc)=_n, including structurally analyzed Jacobians Fc.Jx, Fc.Jdx, Fc.Jq |
| xc | continuous-time states at tend; sensitivities xc.Sq at tend if _sa is true |
| E_CONV | indicate that the integrator failed to converge; may be caught during optimization step length test |
Reimplemented from Omu_Integrator.
int Omu_IntSDIRK::_jac_sbw [protected] |
User given semi-bandwidth of Jacobian (default: -1).
If a value >= 0 is specified, then it is used instead of the automatic detection.
bool Omu_IntSDIRK::_banded [protected] |
User specification to allow banded solver (default: false).
Banded solvers are used if _banded is true, _jac_sbw < 0, and if the automatic detection indicates that the problem can be solved more efficiently in this way.
.