예제 #1
0
void
Neuron::derivs(double *y, double *dydt)
{
  dV = (Iapp - G_Na * (V - E_Na) - G_K * (V - E_K) - G_L * (V - E_L)) / Cm;
  dm = (m_inf(V) - m) / tau_m(V);
  dh = (h_inf(V) - h) / tau_h(V);
  dn = (n_inf(V) - n) / tau_n(V);
}
예제 #2
0
void ConnorStevens::derivs(double *y, double *dydt) {
	dV = (Iapp - input(0) * 1e6 - G_Na * (V - E_Na) - G_K * (V - E_K) - G_L * (V - E_L) - G_A * (V - E_A)) * 1000 / Cm;
	dm = (m_inf(V) - m) / tau_m(V);
	dh = (h_inf(V) - h) / tau_h(V);
	dn = (n_inf(V) - n) / tau_n(V);
	da = (a_inf(V) - a) / tau_a(V);
	db = (b_inf(V) - b) / tau_b(V);
	IKA = G_A * (V - E_A) * 1e-6 ; // A
}
예제 #3
0
void derivs_one(const double* y, double* dydt, const double* p)
{
	double V=y[0], h=y[1], n=y[2], x=y[3], Ca=y[4];
	double V_tilde = C_1*V+C_2, V_Ca=p[0];

	dydt[0] = -g_Na*powf(m_inf(V_tilde), 3)*h*(V-V_Na) - g_Ca*x*(V-V_Ca) - (g_K*powf(n, 4)+g_K_Ca*Ca/(0.5+Ca))*(V-V_K) - g_L*(V-V_L);	// dV/dt
        dydt[1] = lambda*(h_inf(V_tilde)-h)/tau_h(V_tilde);	// dh/dt
        dydt[2] = lambda*(n_inf(V_tilde)-n)/tau_n(V_tilde);	// dn/dt
        dydt[3] = (x_inf(V)-x)/tau_x;				// dx/dt
        dydt[4] = rho * (K_c * x * (V_Ca - V) - Ca);		// d[Ca2+]/dt
}
예제 #4
0
void Conductance::derivs(double *y,double *dydt) {
    dm = (m_inf(Vm)-m)/tau_m(Vm);
    dh = (h_inf(Vm)-h)/tau_h(Vm);
    dn = (n_inf(Vm)-n)/tau_n(Vm);
}