/*-------------------------------------------------------------------------- Author: Thomas Nowotny Institute: Institute for Nonlinear Dynamics University of California San Diego La Jolla, CA 92093-0402 email to: tnowotny@ucsd.edu initial version: 2005-08-17 --------------------------------------------------------------------------*/ #ifndef CN_RATEPNNEURON_CC #define CN_RATEPNNEURON_CC #include "CN_neuron.cc" RatePNneuron::RatePNneuron(int inlabel, double *the_p= RATEPN_p): neuron(inlabel, RATEPN_IVARNO, RATEPNNEURON, the_p, RATEPN_PNO) { enabled =1; } RatePNneuron::RatePNneuron(int inlabel, vector<int> inpos, double *the_p= RATEPN_p): neuron(inlabel, RATEPN_IVARNO, RATEPNNEURON, inpos, the_p, RATEPN_PNO) { enabled =1; } inline double RatePNneuron::F(double *x) { Isyn= 0.0; forall(den, den_it) { Isyn+= (*den_it)->Isyn(x); } double A= 0.186337119371455; double betaF = 0.7176; double vrest = -63.4675; double Ic= -p[11]+0.041270138525220;; double g = p[10]; double Ek = p[3]; double D= vrest - Ek; double F; double A2 = pow(A,2); double currentIn = max(Isyn-Ic,0.0); F= (sqrt(4*A2*(currentIn) + pow((A2*betaF*g*D),2)) - A2*betaF*g*D)/2; return max(F,0.0); } #endif