11 "In PadeTableODE constructor: Pade table row number out of range");
13 "In PadeTableODE constructor: Pade table column number out of range");
17 const double dIdt,
const double d2Id2t,
18 const double*
x,
const unsigned lenX,
19 const unsigned firstNode,
double*
derivative)
const
23 "In PadeTableODE::calculate: insufficient number of variables");
25 "In PadeTableODE::calculate: delay time is not positive");
33 derivative[firstNode] = 0.0;
37 derivative[firstNode] += 0.5*tau*tau*d2Id2t;
39 derivative[firstNode] -= tau*dIdt;
41 derivative[firstNode] += currentIn;
54 derivative[firstNode] = (currentIn - x[firstNode])/tau;
58 derivative[firstNode] = 2.0*(currentIn - x[firstNode])/tau - dIdt;
62 derivative[firstNode] = 3.0*(currentIn - x[firstNode])/tau -
63 2.0*dIdt + 0.5*tau*d2Id2t;
73 derivative[firstNode] = x[firstNode+1];
77 derivative[firstNode+1] =
78 2.0*(currentIn-x[firstNode]-tau*x[firstNode+1])/tau/tau;
82 derivative[firstNode+1] = (6.0*(currentIn - x[firstNode]) -
84 4.0*tau*x[firstNode+1])/tau/
tau;
88 derivative[firstNode+1] =
89 12.0*(currentIn - x[firstNode])/tau/tau -
90 6.0*(x[firstNode+1] + dIdt)/tau + d2Id2t;
100 derivative[firstNode] = x[firstNode+1];
101 derivative[firstNode+1] = x[firstNode+2];
105 derivative[firstNode+2] =
106 6.0*(currentIn - x[firstNode] - tau*x[firstNode+1] -
107 0.5*tau*tau*x[firstNode+2])/tau/tau/tau;
111 derivative[firstNode+2] = 24.0/tau/tau/tau*(
112 currentIn - x[firstNode] - 0.25*tau*dIdt -
113 0.75*tau*x[firstNode+1] - 0.25*tau*tau*x[firstNode+2]);
117 derivative[firstNode+2] = 60.0/tau/tau/tau*(
118 currentIn - x[firstNode] - 0.4*tau*dIdt +
119 0.05*tau*tau*d2Id2t - 0.6*tau*x[firstNode+1] -
120 0.15*tau*tau*x[firstNode+2]);
Derivative< X, A >::type derivative(const A &_)
void setParameters(const double *pars, unsigned nPars)
T x() const
Cartesian x coordinate.
PadeTableODE(unsigned padeRow, unsigned padeColumn)
void calculate(double tau, double inputCurrent, double dIdt, double d2Id2t, const double *x, unsigned lenX, unsigned firstNode, double *derivative) const