8 const double currentIn,
13 const unsigned firstNode,
16 if (lenX < firstNode + 3U)
17 throw cms::Exception(
"In ThirdOrderDelayODE::calculate: insufficient number of variables");
19 throw cms::Exception(
"In ThirdOrderDelayODE::calculate: delay time is not positive");
23 derivative[firstNode] = x[firstNode + 1];
24 derivative[firstNode + 1] = x[firstNode + 2];
25 derivative[firstNode + 2] =
26 6.0 /
a_ * (currentIn - x[firstNode] -
c_ * tau * x[firstNode + 1] -
b_ / 2.0 * tau * tau * x[firstNode + 2]) /
Derivative< X, A >::type derivative(const A &_)
Exp< T >::type exp(const T &t)
void calculate(double tau, double inputCurrent, double dIdt, double d2Id2t, const double *x, unsigned lenX, unsigned firstNode, double *derivative) const
uint16_t const *__restrict__ x
void setParameters(const double *pars, unsigned nPars)