12 #include "../biophysics/CompartmentBase.h"
13 #include "../biophysics/Compartment.h"
17 using namespace moose;
24 "Author",
"Aditya Gilra",
25 "Description",
"Izhikevich neuron (integrate and fire)."
26 "d Vm /dt = a0 * Vm^2 + b0 * Vm + c0 - u + I/Cm "
27 "d u / dt = a * ( b * Vm - u ) "
28 "at each spike, u -> u + d "
29 "by default, a0 = 0.04e6/V/s, b0 = 5e3/s, c0 = 140 V/s are set to SI units, "
30 "so use SI consistently, or change a0, b0, c0 also if you wish to use other units. "
31 "Rm, Em from Compartment are not used here, vReset is same as c in the usual formalism. "
32 "At rest, u0 = b V0, and V0 = ( -(-b0-b) +/- sqrt((b0-b)^2 - 4*a0*c0)) / (2*a0) "
33 "equivalently, to obtain resting Em, set b = (a0*Em^2 + b0*Em + c0)/Em"
38 "factor for Vm^2 term in evolution equation for Vm: "
39 "d Vm /dt = a0 * Vm^2 + b0 * Vm + c0 - u + I/Cm ",
46 "factor for Vm term in evolution equation for Vm: "
47 "d Vm /dt = a0 * Vm^2 + b0 * Vm + c0 - u + I/Cm ",
54 "constant term in evolution equation for Vm: "
55 "d Vm /dt = a0 * Vm^2 + b0 * Vm + c0 - u + I/Cm ",
62 "a as in d u / dt = a * ( b * Vm - u ) ",
69 "b as in d u / dt = a * ( b * Vm - u ) ",
76 "u jumps by d at every spike",
83 "u is an adaptation variable",
90 "Vm is reset when Vm > vPeak",
97 "Initial value of u. It is reset at reinit()",
102 static Finfo* IzhIFFinfos[] = {
119 sizeof( IzhIFFinfos ) /
sizeof (
Finfo*),
122 sizeof(doc)/
sizeof(
string)
void setB0(const Eref &e, double val)
void setA0(const Eref &e, double val)
void setUInit(const Eref &e, double val)
double getD(const Eref &e) const
void vReinit(const Eref &e, ProcPtr p)
void vReinit(const Eref &e, ProcPtr p)
void setD(const Eref &e, double val)
double getC0(const Eref &e) const
double getA(const Eref &e) const
double getA0(const Eref &e) const
void setU(const Eref &e, double val)
double getB0(const Eref &e) const
void setC0(const Eref &e, double val)
void vProcess(const Eref &e, ProcPtr p)
static SrcFinfo1< double > * spikeOut()
Message src for outgoing spikes.
double getVPeak(const Eref &e) const
static const Cinfo * initCinfo()
static const Cinfo * initCinfo()
double getU(const Eref &e) const
void setA(const Eref &e, double val)
static const Cinfo * IzhIFCinfo
double getUInit(const Eref &e) const
double getB(const Eref &e) const
static SrcFinfo1< double > * VmOut()
void setB(const Eref &e, double val)
void setVPeak(const Eref &e, double val)