8 throw cms::Exception(
"In PadeTableODE constructor: Pade table row number out of range");
10 throw cms::Exception(
"In PadeTableODE constructor: Pade table column number out of range");
14 const double currentIn,
19 const unsigned firstNode,
22 if (lenX < firstNode +
col_)
23 throw cms::Exception(
"In PadeTableODE::calculate: insufficient number of variables");
25 throw cms::Exception(
"In PadeTableODE::calculate: delay time is not positive");
58 derivative[firstNode] = 2.0 * (currentIn -
x[firstNode]) /
tau - dIdt;
62 derivative[firstNode] = 3.0 * (currentIn -
x[firstNode]) /
tau - 2.0 * dIdt + 0.5 *
tau * d2Id2t;
80 (6.0 * (currentIn -
x[firstNode]) - 2.0 *
tau * dIdt - 4.0 *
tau *
x[firstNode + 1]) /
tau /
tau;
85 12.0 * (currentIn -
x[firstNode]) /
tau /
tau - 6.0 * (
x[firstNode + 1] + dIdt) /
tau + d2Id2t;
100 6.0 * (currentIn -
x[firstNode] -
tau *
x[firstNode + 1] - 0.5 *
tau *
tau *
x[firstNode + 2]) /
tau /
106 (currentIn -
x[firstNode] - 0.25 *
tau * dIdt - 0.75 *
tau *
x[firstNode + 1] -
107 0.25 *
tau *
tau *
x[firstNode + 2]);
112 (currentIn -
x[firstNode] - 0.4 *
tau * dIdt + 0.05 *
tau *
tau * d2Id2t -
113 0.6 *
tau *
x[firstNode + 1] - 0.15 *
tau *
tau *
x[firstNode + 2]);
void calculate(double tau, double inputCurrent, double dIdt, double d2Id2t, const double *x, unsigned lenX, unsigned firstNode, double *derivative) const
Derivative< X, A >::type derivative(const A &_)
void setParameters(const double *pars, unsigned nPars)
PadeTableODE(unsigned padeRow, unsigned padeColumn)