// genesis


/* FILE INFORMATION
** Several Voltage dependent channels
** Developed by : Maurice Lee for Inferior Olive simulations
** Implemented in NEUROKIT format by : Upinder S. Bhalla
**
** This file depends on functions and constants defined in defaults.g
*/

// CONSTANTS
	float EREST_ACT = -0.07	// V
	float ENA = 0.045 	// V
	float EK = -0.085	// V
	float ECA = 0.070	// V
	float SOMA_A = 1e-9     // m^2

	//	----------------------------------------------
	//	HH CHANNELS
	//	----------------------------------------------

/*************************************************************** \
**
**			Na channel
*****************************************************************/

function make_Na_io_vdep
	if (({exists Na_io_vdep}))
		return
	end

	create vdep_channel Na_io_vdep
	setfield Na_io_vdep Ek {ENA} gbar {1200.0*SOMA_A} Ik 0 Gk 0

	create vdep_gate Na_io_vdep/m
	// 1/sec
	// 1/V*sec
	// no unit
	// V
	// V
	// 1/sec
	// 1/V*sec
	// no unit
	// V
	// V
	setfield ^ alpha_A {5000.0 - (-200000.0*EREST_ACT)}  \
	    alpha_B -200000.0 alpha_C -1.0  \
	    alpha_D {(25/-1000) - EREST_ACT} alpha_F {10.0/-1000.0}  \
	    beta_A 8000.0 beta_B 0 beta_C 0 beta_D {-EREST_ACT}  \
	    beta_F {18.0/1000.0}

	create vdep_gate Na_io_vdep/h
	// 1/sec
	// 1/V*sec
	// no unit
	// V
	// V
	// 1/sec
	// 1/V*sec
	// no unit
	// V
	// V
	setfield ^ alpha_A 70.0 alpha_B 0 alpha_C 0 alpha_D {-EREST_ACT} \
	     alpha_F {20.0/1000.0} beta_A 1000.0 beta_B 0 beta_C 1.0  \
	    beta_D {30.0/-1000.0 - EREST_ACT} beta_F {10.0/-1000.0}

	addmsg Na_io_vdep/m Na_io_vdep MULTGATE m 3
	addmsg Na_io_vdep/h Na_io_vdep MULTGATE m 1
	addfield  Na_io_vdep addmsg1
	addfield  Na_io_vdep addmsg2
	setfield  Na_io_vdep addmsg1 ".. m	VOLTAGE	Vm"  \
	    addmsg2 ".. h	VOLTAGE	Vm"
end

/*****************************************************************
**			Ca channel
*****************************************************************/

function make_Ca_io_vdep
	if (({exists Ca_io_vdep}))
		return
	end

	create vdep_channel Ca_io_vdep
	setfield Ca_io_vdep Ek {ECA} gbar {750.0*SOMA_A} Ik 0 Gk 0

	create vdep_gate Ca_io_vdep/d
	// 1/sec
	// 1/V*sec
	// no unit
	// V
	// V
	// 1/sec
	// 1/V*sec
	// no unit
	// V
	// V
	setfield ^ alpha_A 28.55 alpha_B 0 alpha_C 0  \
	    alpha_D {(-0.24/10.0) - EREST_ACT} alpha_F {-1.0/10.0}  \
	    beta_A 28.55 beta_B 0 beta_C 0  \
	    beta_D {1.728/-72.0 - EREST_ACT} beta_F {-1.0/-72.0}

	create vdep_gate Ca_io_vdep/f
	// 1/sec
	// 1/V*sec
	// no unit
	// V
	// V
	// 1/sec
	// 1/V*sec
	// no unit
	// V
	// V
	setfield ^ alpha_A 9.5 alpha_B 0 alpha_C 0  \
	    alpha_D {-2.26/-112.75 - EREST_ACT} alpha_F {-1.0/-112.75}  \
	    beta_A 9.5 beta_B 0 beta_C 0 beta_D {2.1/96.25 - EREST_ACT}  \
	    beta_F {-1/96.25}

	addmsg Ca_io_vdep/d Ca_io_vdep MULTGATE m 2
	addmsg Ca_io_vdep/f Ca_io_vdep MULTGATE m 1
	addfield  Ca_io_vdep addmsg1
	addfield  Ca_io_vdep addmsg2
	setfield  Ca_io_vdep addmsg1 ".. d	VOLTAGE	Vm"  \
	    addmsg2 ".. f	VOLTAGE	Vm"
end


/*****************************************************************
**			K0 channel
*****************************************************************/



function make_K0_io_tchan
	if (({exists K0_io_tchan}))
		return
	end
	create tabchannel K0_io_tchan
		// Volts
		// Seimens
		setfield ^ Ek {EK} Gbar {1.2e3*SOMA_A} Ik 0 Gk 0  \
		    Xpower 4 Ypower 0 Zpower 0

	setupalpha K0_io_tchan X {100.0 + 1e4*EREST_ACT} -1e4 -1.0  \
	    {-0.01 - EREST_ACT} -0.01 125.0 0.0 0.0 {-EREST_ACT} 0.08
end

/*****************************************************************
**			K1 channel
*****************************************************************/



function make_K1_io_tchan
	if (({exists K1_io_tchan}))
		return
	end
	create tabchannel K1_io_tchan
		setfield ^ Ek {EK} Gbar {1.2e3*SOMA_A} Ik 0 Gk 0  \
		    Xpower 1 Ypower 0 Zpower 0

	setupalpha K1_io_tchan X 17.5 0.0 0.0 0.0 100.0 250.0 0.0 1.0 \
	     {-8e-4 - EREST_ACT} 2e-5

	// FIXED
	// constant to return
	setfield K1_io_tchan X_A->calc_mode 2 X_A->oy 17.5
end