47 size_t idamax1(
const vector<double> &dx,
const size_t n,
const size_t offset);
49 void dscal1(
const double da, vector<double> &dx,
const size_t n,
52 double ddot1(
const vector<double> &a,
const vector<double> &b,
const size_t n,
53 const size_t offsetA,
const size_t offsetB);
55 void daxpy1(
const double da,
const vector<double> &dx, vector<double> &dy,
56 const size_t n,
const size_t offsetX,
57 const size_t offsetY);
59 void dgesl(
const vector<vector<double>> &a,
const size_t n, vector<int> &
ipvt,
60 vector<double> &b,
const size_t job);
62 void dgefa(vector<vector<double>> &a,
const size_t n, vector<int> &
ipvt,
69 double *t,
double tout,
int itask,
int *istate,
int iopt,
int jt,
70 array<int, 7> &iworks, array<double, 4> &rworks,
void *_data);
73 size_t *corflag,
double pnorm,
double *del,
double *delp,
74 double *told,
size_t *ncf,
double *rh,
size_t *m,
82 vector<double> &y,
double *t,
83 const double tout,
int *istate,
void *
const _data,
84 double rtol = 1.e-6,
double atol = 0.
89 void successreturn(vector<double> &y,
double *t,
int itask,
int ihit,
90 double tcrit,
int *istate);
92 void ewset(
const vector<double> &ycur);
94 void solsy(vector<double> &y);
96 void orderswitch(
double *rhup,
double dsm,
double *pdh,
double *rh,
98 void intdy(
double t,
int k, vector<double> &dky,
int *iflag);
99 void corfailure(
double *told,
double *rh,
size_t *ncf,
size_t *corflag);
100 void methodswitch(
double dsm,
double pnorm,
double *pdh,
double *rh);
102 void scaleh(
double *rh,
double *pdh);
103 double fnorm(
int n,
const vector<vector<double>> &a,
const vector<double> &w);
104 double vmnorm(
const size_t n,
const vector<double> &v,
105 const vector<double> &w);
119 array<double, 14>
el;
123 array<array<double, 14>, 13>
elco;
126 size_t illin,
init,
ierpj,
iersl,
jcur,
l,
miter,
maxord,
maxcor,
msbp,
mxncf;
150 vector<vector<double>>
yh_;
151 vector<vector<double>>
wm_;
void(* LSODA_ODE_SYSTEM_TYPE)(double t, double *y, double *dydt, void *)
Definition LSODA.h:38
std::vector< double > rtol_
Definition LSODA.h:157
size_t illin
Definition LSODA.h:126
array< double, 13 > cm1
Definition LSODA.h:120
size_t n
Definition LSODA.h:133
double vmnorm(const size_t n, const vector< double > &v, const vector< double > &w)
Definition LSODA.cpp:1773
double ddot1(const vector< double > &a, const vector< double > &b, const size_t n, const size_t offsetA, const size_t offsetB)
Definition LSODA.cpp:78
array< size_t, 3 > mord
Definition LSODA.h:116
void dscal1(const double da, vector< double > &dx, const size_t n, const size_t offset)
Definition LSODA.cpp:70
void cfode(int meth_)
Definition LSODA.cpp:1531
void orderswitch(double *rhup, double dsm, double *pdh, double *rh, size_t *orderflag)
Definition LSODA.cpp:2165
size_t maxcor
Definition LSODA.h:126
size_t imxer
Definition LSODA.h:110
void dgefa(vector< vector< double > > &a, const size_t n, vector< int > &ipvt, size_t *const info)
Definition LSODA.cpp:161
double hmin
Definition LSODA.h:138
double hmxi
Definition LSODA.h:138
std::vector< double > atol_
Definition LSODA.h:158
void endstoda(void)
Definition LSODA.cpp:2143
size_t miter
Definition LSODA.h:126
int irflag
Definition LSODA.h:145
void lsoda(LSODA_ODE_SYSTEM_TYPE f, const size_t neq, vector< double > &y, double *t, double tout, int itask, int *istate, int iopt, int jt, array< int, 7 > &iworks, array< double, 4 > &rworks, void *_data)
Definition LSODA.cpp:383
size_t nyh
Definition LSODA.h:135
size_t ialth
Definition LSODA.h:142
void lsoda_update(LSODA_ODE_SYSTEM_TYPE f, const size_t neq, vector< double > &y, double *t, const double tout, int *istate, void *const _data, double rtol=1.e-6, double atol=0.)
Definition LSODA.cpp:2315
size_t mxhnil
Definition LSODA.h:134
size_t meth_
Definition LSODA.h:131
void intdy(double t, int k, vector< double > &dky, int *iflag)
Definition LSODA.cpp:1484
vector< vector< double > > yh_
Definition LSODA.h:150
double tn_
Definition LSODA.h:138
double sqrteta
Definition LSODA.h:111
double fnorm(int n, const vector< vector< double > > &a, const vector< double > &w)
Definition LSODA.cpp:1782
array< double, 6 > cm2
Definition LSODA.h:121
void resetcoeff(void)
Definition LSODA.cpp:2279
int icount
Definition LSODA.h:145
size_t iersl
Definition LSODA.h:126
size_t ierpj
Definition LSODA.h:126
void ewset(const vector< double > &ycur)
Definition LSODA.cpp:1438
vector< double > savf
Definition LSODA.h:148
void daxpy1(const double da, const vector< double > &dx, vector< double > &dy, const size_t n, const size_t offsetX, const size_t offsetY)
Definition LSODA.cpp:88
double hold
Definition LSODA.h:140
size_t msbp
Definition LSODA.h:126
size_t mu
Definition LSODA.h:110
void dgesl(const vector< vector< double > > &a, const size_t n, vector< int > &ipvt, vector< double > &b, const size_t job)
Definition LSODA.cpp:98
double tsw
Definition LSODA.h:139
array< array< double, 14 >, 13 > elco
Definition LSODA.h:123
size_t nslp
Definition LSODA.h:143
double ratio
Definition LSODA.h:144
array< double, 14 > el
Definition LSODA.h:119
void stoda(const size_t neq, vector< double > &y, LSODA_ODE_SYSTEM_TYPE f, void *_data)
Definition LSODA.cpp:1065
array< array< double, 4 >, 13 > tesco
Definition LSODA.h:124
static bool abs_compare(double a, double b)
Definition LSODA.cpp:41
size_t nhnil
Definition LSODA.h:135
size_t ixpr
Definition LSODA.h:130
array< double, 13 > sm1
Definition LSODA.h:117
double pdnorm
Definition LSODA.h:139
size_t nslast
Definition LSODA.h:135
void successreturn(vector< double > &y, double *t, int itask, int ihit, double tcrit, int *istate)
Definition LSODA.cpp:251
void solsy(vector< double > &y)
Definition LSODA.cpp:2001
size_t nqu
Definition LSODA.h:133
size_t ntrep
Definition LSODA.h:135
size_t init
Definition LSODA.h:126
void correction(const size_t neq, vector< double > &y, LSODA_ODE_SYSTEM_TYPE f, size_t *corflag, double pnorm, double *del, double *delp, double *told, size_t *ncf, double *rh, size_t *m, void *_data)
Definition LSODA.cpp:1811
size_t mxords
Definition LSODA.h:130
size_t lmax
Definition LSODA.h:142
size_t jcur
Definition LSODA.h:126
void terminate2(vector< double > &y, double *t)
Definition LSODA.cpp:235
size_t jtyp
Definition LSODA.h:130
size_t nq
Definition LSODA.h:133
double ccmax
Definition LSODA.h:137
void prja(const size_t neq, vector< double > &y, LSODA_ODE_SYSTEM_TYPE f, void *_data)
Definition LSODA.cpp:1701
void methodswitch(double dsm, double pnorm, double *pdh, double *rh)
Definition LSODA.cpp:2014
vector< vector< double > > wm_
Definition LSODA.h:151
size_t mxstep
Definition LSODA.h:134
size_t mxncf
Definition LSODA.h:126
int itol_
Definition LSODA.h:156
vector< double > acor
Definition LSODA.h:149
double el0
Definition LSODA.h:137
double hu
Definition LSODA.h:138
double pdlast
Definition LSODA.h:144
int kflag
Definition LSODA.h:128
size_t mused
Definition LSODA.h:130
size_t ml
Definition LSODA.h:110
int jstart
Definition LSODA.h:128
LSODA()
Definition LSODA.cpp:25
vector< int > ipvt
Definition LSODA.h:153
void corfailure(double *told, double *rh, size_t *ncf, size_t *corflag)
Definition LSODA.cpp:1972
size_t idamax1(const vector< double > &dx, const size_t n, const size_t offset)
Definition LSODA.cpp:47
void scaleh(double *rh, double *pdh)
Definition LSODA.cpp:1662
double rmax
Definition LSODA.h:140
double rc
Definition LSODA.h:138
double crate
Definition LSODA.h:140
size_t l
Definition LSODA.h:126
double h_
Definition LSODA.h:137
void * param
Definition LSODA.h:161
size_t nst
Definition LSODA.h:133
double pdest
Definition LSODA.h:144
void terminate(int *istate)
Definition LSODA.cpp:222
vector< double > ewt
Definition LSODA.h:147
void _freevectors(void)
Definition LSODA.cpp:2295
size_t nje
Definition LSODA.h:133
size_t mxordn
Definition LSODA.h:130
double conit
Definition LSODA.h:140
~LSODA()
Definition LSODA.cpp:39
size_t nfe
Definition LSODA.h:133
size_t maxord
Definition LSODA.h:126
size_t ipup
Definition LSODA.h:142