CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Attributes
ThirdOrderDelayODE Class Reference

#include <ThirdOrderDelayODE.h>

Public Member Functions

void calculate (double tau, double inputCurrent, double dIdt, double d2Id2t, const double *x, unsigned lenX, unsigned firstNode, double *derivative) const
 
unsigned getPadeColumn () const
 
unsigned getPadeRow () const
 
unsigned nParameters () const
 
void setParameters (const double *pars, unsigned nPars)
 
 ThirdOrderDelayODE (unsigned, unsigned)
 

Private Attributes

double a_
 
double b_
 
double c_
 

Detailed Description

Definition at line 9 of file ThirdOrderDelayODE.h.

Constructor & Destructor Documentation

ThirdOrderDelayODE::ThirdOrderDelayODE ( unsigned  ,
unsigned   
)
inline

Definition at line 11 of file ThirdOrderDelayODE.h.

11 : a_(1.0) {}

Member Function Documentation

void ThirdOrderDelayODE::calculate ( double  tau,
double  inputCurrent,
double  dIdt,
double  d2Id2t,
const double *  x,
unsigned  lenX,
unsigned  firstNode,
double *  derivative 
) const

Definition at line 7 of file ThirdOrderDelayODE.cc.

References a_, cms::cuda::assert(), b_, c_, and Exception.

14  {
15  // Check input sanity
16  if (lenX < firstNode + 3U)
17  throw cms::Exception("In ThirdOrderDelayODE::calculate: insufficient number of variables");
18  if (tau <= 0.0)
19  throw cms::Exception("In ThirdOrderDelayODE::calculate: delay time is not positive");
20  assert(x);
22 
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]) /
27  tau / tau / tau;
28 }
Derivative< X, A >::type derivative(const A &_)
Definition: Derivative.h:18
assert(be >=bs)
unsigned ThirdOrderDelayODE::getPadeColumn ( ) const
inline

Definition at line 23 of file ThirdOrderDelayODE.h.

23 { return 3U; }
unsigned ThirdOrderDelayODE::getPadeRow ( ) const
inline

Definition at line 22 of file ThirdOrderDelayODE.h.

22 { return 0U; }
unsigned ThirdOrderDelayODE::nParameters ( ) const
inline

Definition at line 24 of file ThirdOrderDelayODE.h.

24 { return 3U; }
void ThirdOrderDelayODE::setParameters ( const double *  pars,
unsigned  nPars 
)

Definition at line 30 of file ThirdOrderDelayODE.cc.

References a_, cms::cuda::assert(), b_, c_, and funct::exp().

30  {
31  assert(nPars == 3U);
32  assert(pars);
33  a_ = exp(pars[0]);
34  b_ = exp(pars[1]);
35  c_ = exp(pars[2]);
36 }
Exp< T >::type exp(const T &t)
Definition: Exp.h:22
assert(be >=bs)

Member Data Documentation

double ThirdOrderDelayODE::a_
private

Definition at line 30 of file ThirdOrderDelayODE.h.

Referenced by calculate(), and setParameters().

double ThirdOrderDelayODE::b_
private

Definition at line 31 of file ThirdOrderDelayODE.h.

Referenced by calculate(), and setParameters().

double ThirdOrderDelayODE::c_
private

Definition at line 32 of file ThirdOrderDelayODE.h.

Referenced by calculate(), and setParameters().