/*--------------------------------------------------------------------------
Author: Christopher Buckley
--------------------------------------------------------------------------*/
#ifndef CN_POISSONRATENEURON_CC
#define CN_POISSONRATENEURON_CC
#include "CN_neuron.cc"
PoissonRateNeuron::PoissonRateNeuron(int inlabel, double *the_p= POISSONRATENEURON_p):
neuron(inlabel, POISSONRATENEURON_IVARNO, POISSONRATENEURON, the_p, NEUROSYN_PNO)
{
mVrest = -60;
}
PoissonRateNeuron::PoissonRateNeuron(int inlabel, vector<int> inpos, double *the_p= POISSONRATENEURON_p):
neuron(inlabel, POISSONRATENEURON_IVARNO, POISSONRATENEURON, inpos, the_p, NEUROSYN_PNO)
{
}
inline double PoissonRateNeuron::E(double *x)
{
assert(enabled);
return mVrest;
}
inline double PoissonRateNeuron::F(double *x)
{
return Isyn;
}
double PoissonRateNeuron::S(double *x)
{
assert(enabled);
return x[idx];
}
void PoissonRateNeuron::derivative(double *x, double *dx)
{
Isyn= 0.0;
forall(den, den_it) {
Isyn+= (*den_it)->Isyn(x);
}
double alpha = p[5];
double beta = p[6];
double tr = p[7];
dx[idx] = -x[idx]*beta+alpha*tr*Isyn;
}
void PoissonRateNeuron::init(double *x, double *iniVars)
{
assert(enabled);
for (int i= 0; i < iVarNo; i++)
x[idx+i]= 0.0;
}
void PoissonRateNeuron::ResetSynapse(double *x){
x[idx] = 0;
}
#endif