//FILE IN USE 09/30/2004 -- present.

//genesis - genesis2.2 script, J Hanson 5/02
//axon rebuilt with hillock, initial segment, nodes and internodal
//	segments 06/25/2004 according to Shen et al (1999).
// 06/28/2004: added KCNQ to axon, added G_mult_KCNQ_dend and G_mult_KCNQ_axon
// 09/30/2004: changed dendritic subclassifications to match the data of
//		Hanson & Smith, 2004.

float PI = 3.14159

function make_GP_comps
	float len, dia, surf, rad, vol, core_vol, shell_vol
	float rad_core, shell_vol
	int i

/* make spherical soma prototype */
	len = 0 
	dia = 1 
	rad = {dia}/2
	rad_core = rad - {shell_thick} 
	surf = 4*{PI}*rad*rad
	vol = 4.0/3.0*{PI}*rad*rad*rad
	core_vol = 4.0/3.0*{PI}*rad_core*rad_core*rad_core
	shell_vol = vol - core_vol
	if (!({exists GP_soma}))
		create compartment GP_soma
	end
	setfield GP_soma Cm {{CM}*surf} Ra {8.0*{RA}/({dia}*{PI})}  \
		Em {ELEAK_sd} initVm {EREST_ACT} Rm {{RM_sd}/surf} inject 0.0  \
		dia {dia} len {len}

/* put channels in soma */
	copy Ca_HVA_GP GP_soma/Ca_HVA_GP
	addmsg GP_soma GP_soma/Ca_HVA_GP VOLTAGE Vm
	addmsg GP_soma/Ca_HVA_GP GP_soma CHANNEL Gk Ek
	setfield GP_soma/Ca_HVA_GP Gbar	\
		{{G_Ca_HVA_soma}*surf}

	copy K_ahp_GP GP_soma/K_ahp_GP
	addmsg GP_soma GP_soma/K_ahp_GP VOLTAGE Vm
        addmsg GP_soma/K_ahp_GP GP_soma CHANNEL Gk Ek
        setfield GP_soma/K_ahp_GP Gbar	\
		{{G_SK_soma}*surf}

	copy Ca_GP_nernst GP_soma/Ca_GP_nernst
	copy Ca_GP_conc GP_soma/Ca_GP_conc
	addmsg GP_soma/Ca_HVA_GP GP_soma/Ca_GP_conc I_Ca Ik 
	addmsg GP_soma/Ca_GP_conc GP_soma/Ca_HVA_GP CONCEN Ca
	addmsg GP_soma/Ca_GP_conc GP_soma/K_ahp_GP CONCEN Ca
	addmsg GP_soma/Ca_GP_conc GP_soma/Ca_GP_nernst CIN Ca
	addmsg GP_soma/Ca_GP_nernst GP_soma/Ca_HVA_GP EK E 
	setfield GP_soma/Ca_GP_conc B {{B_Ca_GP_conc}/shell_vol}

   	copy Na_fast_GP GP_soma/Na_fast_GP
        addmsg GP_soma GP_soma/Na_fast_GP VOLTAGE Vm
        addmsg GP_soma/Na_fast_GP GP_soma CHANNEL Gk Ek
        setfield GP_soma/Na_fast_GP Gbar	\
		{{G_NaF_soma}*surf}

	copy Na_slow_GP GP_soma/Na_slow_GP
        addmsg GP_soma GP_soma/Na_slow_GP VOLTAGE Vm
        addmsg GP_soma/Na_slow_GP GP_soma CHANNEL Gk Ek
        setfield GP_soma/Na_slow_GP Gbar	\
		{{G_NaP_soma}*surf}

	copy Kv3_GP GP_soma/Kv3_GP
        addmsg GP_soma GP_soma/Kv3_GP VOLTAGE Vm
        addmsg GP_soma/Kv3_GP GP_soma CHANNEL Gk Ek
        setfield GP_soma/Kv3_GP Gbar	\
		{{G_Kv3_soma}*surf} 

	copy Kv2_GP GP_soma/Kv2_GP
        addmsg GP_soma GP_soma/Kv2_GP VOLTAGE Vm
        addmsg GP_soma/Kv2_GP GP_soma CHANNEL Gk Ek
	setfield GP_soma/Kv2_GP Gbar	\
		{{G_Kv2_soma}*surf}

	copy Kv4_fast_GP GP_soma/Kv4_fast_GP
        addmsg GP_soma GP_soma/Kv4_fast_GP VOLTAGE Vm
        addmsg GP_soma/Kv4_fast_GP GP_soma CHANNEL Gk Ek
        setfield GP_soma/Kv4_fast_GP Gbar	\
		{{G_Kv4f_soma}*surf}

	copy Kv4_slow_GP GP_soma/Kv4_slow_GP
        addmsg GP_soma GP_soma/Kv4_slow_GP VOLTAGE Vm
        addmsg GP_soma/Kv4_slow_GP GP_soma CHANNEL Gk Ek
        setfield GP_soma/Kv4_slow_GP Gbar	\
		{{G_Kv4s_soma}*surf}
	
	copy KCNQ_GP GP_soma/KCNQ_GP
        addmsg GP_soma GP_soma/KCNQ_GP VOLTAGE Vm
        addmsg GP_soma/KCNQ_GP GP_soma CHANNEL Gk Ek
        setfield GP_soma/KCNQ_GP Gbar	\
		{{G_KCNQ_soma}*surf}

	copy h_HCN_GP GP_soma/h_HCN_GP
        addmsg GP_soma GP_soma/h_HCN_GP VOLTAGE Vm
        addmsg GP_soma/h_HCN_GP GP_soma CHANNEL Gk Ek
        setfield GP_soma/h_HCN_GP Gbar	\
		{{G_h_HCN_soma}*surf}
		
	copy h_HCN2_GP GP_soma/h_HCN2_GP
        addmsg GP_soma GP_soma/h_HCN2_GP VOLTAGE Vm
        addmsg GP_soma/h_HCN2_GP GP_soma CHANNEL Gk Ek
        setfield GP_soma/h_HCN2_GP Gbar	\
		{{G_h_HCN2_soma}*surf}

/* make axon comp*/
	len = 1 
	dia = 1 
	rad = {dia} / 2
	surf = 2*{PI}*rad*{len} 
	vol = {PI}*rad*rad*{len} 
        if (!({exists GP_ax}))
            create compartment GP_ax
        end
        setfield GP_ax Cm {{CM}*surf} Ra {4.0*{RA}*{len}/({dia}*{dia}*{PI})}  \
                Em {ELEAK_sd} initVm {EREST_ACT} Rm {{RM_sd}/surf} inject 0.0  \
                dia {dia} len {len}

/* put channels in axon comp */

	copy Na_fast_GP GP_ax/Na_fast_GP
	addmsg GP_ax GP_ax/Na_fast_GP VOLTAGE Vm
	addmsg GP_ax/Na_fast_GP GP_ax CHANNEL Gk Ek
	setfield GP_ax/Na_fast_GP Gbar	\
		{{G_NaF_axon}*surf}
	
	copy Na_slow_GP GP_ax/Na_slow_GP
        addmsg GP_ax GP_ax/Na_slow_GP VOLTAGE Vm
        addmsg GP_ax/Na_slow_GP GP_ax CHANNEL Gk Ek
        setfield GP_ax/Na_slow_GP Gbar	\
		{{G_NaP_axon}*surf}
		
	copy Kv4_fast_GP GP_ax/Kv4_fast_GP
        addmsg GP_ax GP_ax/Kv4_fast_GP VOLTAGE Vm
        addmsg GP_ax/Kv4_fast_GP GP_ax CHANNEL Gk Ek
        setfield GP_ax/Kv4_fast_GP Gbar	\
		{{G_Kv4f_axon}*surf}

	copy Kv4_slow_GP GP_ax/Kv4_slow_GP
        addmsg GP_ax GP_ax/Kv4_slow_GP VOLTAGE Vm
        addmsg GP_ax/Kv4_slow_GP GP_ax CHANNEL Gk Ek
        setfield GP_ax/Kv4_slow_GP Gbar	\
		{{G_Kv4s_axon}*surf}
	
	copy Kv3_GP GP_ax/Kv3_GP
        addmsg GP_ax GP_ax/Kv3_GP VOLTAGE Vm
        addmsg GP_ax/Kv3_GP GP_ax CHANNEL Gk Ek
        setfield GP_ax/Kv3_GP Gbar	\
		{{G_Kv3_axon}*surf}
	
	copy Kv2_GP GP_ax/Kv2_GP
        addmsg GP_ax GP_ax/Kv2_GP VOLTAGE Vm
        addmsg GP_ax/Kv2_GP GP_ax CHANNEL Gk Ek
        setfield GP_ax/Kv2_GP Gbar	\
		{{G_Kv2_axon}*surf}

	copy KCNQ_GP GP_ax/KCNQ_GP
        addmsg GP_ax GP_ax/KCNQ_GP VOLTAGE Vm
        addmsg GP_ax/KCNQ_GP GP_ax CHANNEL Gk Ek
        setfield GP_ax/KCNQ_GP Gbar	\
		{{G_KCNQ_axon}*surf}


/* make axon hillock prototype --> extension of soma */
/*	len = 1 
	dia = 1 
	rad = {dia} / 2
	surf = 2*{PI}*rad*{len} 
	vol = {PI}*rad*rad*{len} 
	if (dia > {{shell_thick}*2})
		rad_core = rad - {shell_thick}
		core_vol = {PI}*rad_core*rad_core*{len} 
		shell_vol = vol - core_vol
	else
		shell_vol = vol
	end
	if (!({exists GP_axHill}))
	    create compartment GP_axHill
	end
	setfield GP_axHill Cm {{CM}*surf} Ra {4.0*{RA}*{len}/({dia}*{dia}*{PI})}  \
        	Em {ELEAK_sd} initVm {EREST_ACT} Rm {{RM_sd}/surf} inject 0.0  \
        	dia {dia} len {len}
*/
/* put channels in axon hillock --> same as soma */
/*	copy Ca_HVA_GP GP_axHill/Ca_HVA_GP
	addmsg GP_axHill GP_axHill/Ca_HVA_GP VOLTAGE Vm
	addmsg GP_axHill/Ca_HVA_GP GP_axHill CHANNEL Gk Ek
	setfield GP_axHill/Ca_HVA_GP Gbar	\
		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_soma}*{G_mult}}

	copy K_ahp_GP GP_axHill/K_ahp_GP
	addmsg GP_axHill GP_axHill/K_ahp_GP VOLTAGE Vm
        addmsg GP_axHill/K_ahp_GP GP_axHill CHANNEL Gk Ek
        setfield GP_axHill/K_ahp_GP Gbar	\
		{{G_K_ahp_GP}*surf*{G_mult_SK_soma}*{G_mult}}

	copy Ca_GP_nernst GP_axHill/Ca_GP_nernst
	copy Ca_GP_conc GP_axHill/Ca_GP_conc
	addmsg GP_axHill/Ca_HVA_GP GP_axHill/Ca_GP_conc I_Ca Ik 
	addmsg GP_axHill/Ca_GP_conc GP_axHill/Ca_HVA_GP CONCEN Ca
	addmsg GP_axHill/Ca_GP_conc GP_axHill/K_ahp_GP CONCEN Ca
	addmsg GP_axHill/Ca_GP_conc GP_axHill/Ca_GP_nernst CIN Ca
	addmsg GP_axHill/Ca_GP_nernst GP_axHill/Ca_HVA_GP EK E 
	setfield GP_axHill/Ca_GP_conc B {{B_Ca_GP_conc}/shell_vol}

   	copy Na_fast_GP GP_axHill/Na_fast_GP
        addmsg GP_axHill GP_axHill/Na_fast_GP VOLTAGE Vm
        addmsg GP_axHill/Na_fast_GP GP_axHill CHANNEL Gk Ek
        setfield GP_axHill/Na_fast_GP Gbar	\
		{{G_Na_fast_GP}*surf*{G_mult_Na_soma}*{G_mult}}

	copy Na_slow_GP GP_axHill/Na_slow_GP
        addmsg GP_axHill GP_axHill/Na_slow_GP VOLTAGE Vm
        addmsg GP_axHill/Na_slow_GP GP_axHill CHANNEL Gk Ek
        setfield GP_axHill/Na_slow_GP Gbar	\
		{{G_Na_slow_GP}*surf*{G_mult_Na_soma}*{G_mult}}

	copy Kv3_GP GP_axHill/Kv3_GP
        addmsg GP_axHill GP_axHill/Kv3_GP VOLTAGE Vm
        addmsg GP_axHill/Kv3_GP GP_axHill CHANNEL Gk Ek
        setfield GP_axHill/Kv3_GP Gbar	\
		{{G_Kv3_GP}*surf*{G_mult_Kdr_soma}*{G_mult}} 

	copy Kv2_GP GP_axHill/Kv2_GP
        addmsg GP_axHill GP_axHill/Kv2_GP VOLTAGE Vm
        addmsg GP_axHill/Kv2_GP GP_axHill CHANNEL Gk Ek
	setfield GP_axHill/Kv2_GP Gbar	\
		{{G_Kv2_GP}*surf*{G_mult_Kdr_soma}*{G_mult}}

	copy Kv4_fast_GP GP_axHill/Kv4_fast_GP
        addmsg GP_axHill GP_axHill/Kv4_fast_GP VOLTAGE Vm
        addmsg GP_axHill/Kv4_fast_GP GP_axHill CHANNEL Gk Ek
        setfield GP_axHill/Kv4_fast_GP Gbar	\
		{{G_Kv4_fast_GP}*surf*{G_mult_KA_soma}*{G_mult}}

	copy Kv4_slow_GP GP_axHill/Kv4_slow_GP
        addmsg GP_axHill GP_axHill/Kv4_slow_GP VOLTAGE Vm
        addmsg GP_axHill/Kv4_slow_GP GP_axHill CHANNEL Gk Ek
        setfield GP_axHill/Kv4_slow_GP Gbar	\
		{{G_Kv4_slow_GP}*surf*{G_mult_KA_soma}*{G_mult}}
	
	copy KCNQ_GP GP_axHill/KCNQ_GP
        addmsg GP_axHill GP_axHill/KCNQ_GP VOLTAGE Vm
        addmsg GP_axHill/KCNQ_GP GP_axHill CHANNEL Gk Ek
        setfield GP_axHill/KCNQ_GP Gbar	\
		{{G_KCNQ_GP}*surf*{G_mult}}

	copy h_HCN_GP GP_axHill/h_HCN_GP
        addmsg GP_axHill GP_axHill/h_HCN_GP VOLTAGE Vm
        addmsg GP_axHill/h_HCN_GP GP_axHill CHANNEL Gk Ek
        setfield GP_axHill/h_HCN_GP Gbar	\
		{{G_h_HCN_GP}*surf*{G_mult}}
		
	copy h_HCN2_GP GP_axHill/h_HCN2_GP
        addmsg GP_axHill GP_axHill/h_HCN2_GP VOLTAGE Vm
        addmsg GP_axHill/h_HCN2_GP GP_axHill CHANNEL Gk Ek
        setfield GP_axHill/h_HCN2_GP Gbar	\
		{{G_h_HCN2_GP}*surf*{G_mult}}
*/
/* make axon initial segment prototype--> low Rm */
/*	len = 1 
	dia = 1 
	rad = {dia} / 2
	surf = 2*{PI}*rad*{len} 
	vol = {PI}*rad*rad*{len} 
        if (!({exists GP_axIS}))
            create compartment GP_axIS
        end
        setfield GP_axIS Cm {{CM}*surf} Ra {4.0*{RA}*{len}/({dia}*{dia}*{PI})}  \
                Em {ELEAK_ax} initVm {EREST_ACT} Rm {{RM_ax}/surf} inject 0.0  \
                dia {dia} len {len}
*/		
/* put channels in axon initial segment */
/*	copy Na_fast_GP GP_axIS/Na_fast_GP
	addmsg GP_axIS GP_axIS/Na_fast_GP VOLTAGE Vm
	addmsg GP_axIS/Na_fast_GP GP_axIS CHANNEL Gk Ek
	setfield GP_axIS/Na_fast_GP Gbar	\
		{{G_Na_fast_GP}*surf*{G_mult_Na_axon}*{G_mult}}
	
	copy Na_slow_GP GP_axIS/Na_slow_GP
        addmsg GP_axIS GP_axIS/Na_slow_GP VOLTAGE Vm
        addmsg GP_axIS/Na_slow_GP GP_axIS CHANNEL Gk Ek
        setfield GP_axIS/Na_slow_GP Gbar	\
		{{G_Na_slow_GP}*surf*{G_mult_Na_axon}*{G_mult}}
		
	copy Kv4_fast_GP GP_axIS/Kv4_fast_GP
        addmsg GP_axIS GP_axIS/Kv4_fast_GP VOLTAGE Vm
        addmsg GP_axIS/Kv4_fast_GP GP_axIS CHANNEL Gk Ek
        setfield GP_axIS/Kv4_fast_GP Gbar	\
		{{G_Kv4_fast_GP}*surf*{G_mult_KA_axon}*{G_mult}}

	copy Kv4_slow_GP GP_axIS/Kv4_slow_GP
        addmsg GP_axIS GP_axIS/Kv4_slow_GP VOLTAGE Vm
        addmsg GP_axIS/Kv4_slow_GP GP_axIS CHANNEL Gk Ek
        setfield GP_axIS/Kv4_slow_GP Gbar	\
		{{G_Kv4_slow_GP}*surf*{G_mult_KA_axon}*{G_mult}}
	
	copy Kv3_GP GP_axIS/Kv3_GP
        addmsg GP_axIS GP_axIS/Kv3_GP VOLTAGE Vm
        addmsg GP_axIS/Kv3_GP GP_axIS CHANNEL Gk Ek
        setfield GP_axIS/Kv3_GP Gbar	\
		{{G_Kv3_GP}*surf*{G_mult_Kdr_axon}*{G_mult}}
	
	copy Kv2_GP GP_axIS/Kv2_GP
        addmsg GP_axIS GP_axIS/Kv2_GP VOLTAGE Vm
        addmsg GP_axIS/Kv2_GP GP_axIS CHANNEL Gk Ek
        setfield GP_axIS/Kv2_GP Gbar	\
		{{G_Kv2_GP}*surf*{G_mult_Kdr_axon}*{G_mult}}

	copy KCNQ_GP GP_axIS/KCNQ_GP
        addmsg GP_axIS GP_axIS/KCNQ_GP VOLTAGE Vm
        addmsg GP_axIS/KCNQ_GP GP_axIS CHANNEL Gk Ek
        setfield GP_axIS/KCNQ_GP Gbar	\
		{{G_KCNQ_GP}*surf*{G_mult_KCNQ_axon}*{G_mult}}
*/
	
/* make axon internodal segment prototype--> low Cm, high Rm, no chans */
/*	len = 1 
	dia = 1 
	rad = {dia} / 2
	surf = 2*{PI}*rad*{len} 
	vol = {PI}*rad*rad*{len} 
        if (!({exists GP_axIN}))
            create compartment GP_axIN
        end
        setfield GP_axIN Cm {{CM_my}*surf} Ra {4.0*{RA}*{len}/({dia}*{dia}*{PI})}  \
                Em {ELEAK_ax} initVm {EREST_ACT} Rm {{RM_my}/surf} inject 0.0  \
                dia {dia} len {len}
*/
// no channels in axIN segments.


/* make axon node prototype--> same characteristics as initial segment */
/*	len = 1 
	dia = 1 
	rad = {dia} / 2
	surf = 2*{PI}*rad*{len} 
	vol = {PI}*rad*rad*{len} 
        if (!({exists GP_axNode}))
            create compartment GP_axNode
        end
        setfield GP_axNode Cm {{CM}*surf} Ra {4.0*{RA}*{len}/({dia}*{dia}*{PI})}  \
                Em {ELEAK_ax} initVm {EREST_ACT} Rm {{RM_ax}/surf} inject 0.0  \
                dia {dia} len {len}
*/
/* put channels in node--> exclude NaP to prevent spontaneous initiation */
/*	copy Na_fast_GP GP_axNode/Na_fast_GP
	addmsg GP_axNode GP_axNode/Na_fast_GP VOLTAGE Vm
	addmsg GP_axNode/Na_fast_GP GP_axNode CHANNEL Gk Ek
	setfield GP_axNode/Na_fast_GP Gbar	\
		{{G_Na_fast_GP}*surf*{G_mult_Na_axon}*{G_mult}}
	
	copy Na_slow_GP GP_axNode/Na_slow_GP
        addmsg GP_axNode GP_axNode/Na_slow_GP VOLTAGE Vm
        addmsg GP_axNode/Na_slow_GP GP_axNode CHANNEL Gk Ek
        setfield GP_axNode/Na_slow_GP Gbar	\
		{{G_Na_slow_GP}*surf*{G_mult_Na_axon}*{G_mult}}
		
	copy Kv4_fast_GP GP_axNode/Kv4_fast_GP
        addmsg GP_axNode GP_axNode/Kv4_fast_GP VOLTAGE Vm
        addmsg GP_axNode/Kv4_fast_GP GP_axNode CHANNEL Gk Ek
        setfield GP_axNode/Kv4_fast_GP Gbar	\
		{{G_Kv4_fast_GP}*surf*{G_mult_KA_axon}*{G_mult}}

	copy Kv4_slow_GP GP_axNode/Kv4_slow_GP
        addmsg GP_axNode GP_axNode/Kv4_slow_GP VOLTAGE Vm
        addmsg GP_axNode/Kv4_slow_GP GP_axNode CHANNEL Gk Ek
        setfield GP_axNode/Kv4_slow_GP Gbar	\
		{{G_Kv4_slow_GP}*surf*{G_mult_KA_axon}*{G_mult}}
	
	copy Kv3_GP GP_axNode/Kv3_GP
        addmsg GP_axNode GP_axNode/Kv3_GP VOLTAGE Vm
        addmsg GP_axNode/Kv3_GP GP_axNode CHANNEL Gk Ek
        setfield GP_axNode/Kv3_GP Gbar	\
		{{G_Kv3_GP}*surf*{G_mult_Kdr_axon}*{G_mult}}
	
	copy Kv2_GP GP_axNode/Kv2_GP
        addmsg GP_axNode GP_axNode/Kv2_GP VOLTAGE Vm
        addmsg GP_axNode/Kv2_GP GP_axNode CHANNEL Gk Ek
        setfield GP_axNode/Kv2_GP Gbar	\
		{{G_Kv2_GP}*surf*{G_mult_Kdr_axon}*{G_mult}}

	copy KCNQ_GP GP_axNode/KCNQ_GP
        addmsg GP_axNode GP_axNode/KCNQ_GP VOLTAGE Vm
        addmsg GP_axNode/KCNQ_GP GP_axNode CHANNEL Gk Ek
        setfield GP_axNode/KCNQ_GP Gbar	\
		{{G_KCNQ_GP}*surf*{G_mult_KCNQ_axon}*{G_mult}}

*/


//	Dendritic prototype = dendrite_p
	len = 1 
	dia = 1 
	rad = {dia} / 2
	surf = 2*{PI}*rad*{len} 
	vol = {PI}*rad*rad*{len} 
	if (dia > {{shell_thick}*2})
		rad_core = rad - {shell_thick}
		core_vol = {PI}*rad_core*rad_core*{len} 
		shell_vol = vol - core_vol
	else
		shell_vol = vol
	end
	if (!({exists GP_dendrite_p}))
	    create compartment GP_dendrite_p
	end
	setfield GP_dendrite_p Cm {{CM}*surf} Ra {4.0*{RA}*{len}/({dia}*{dia}*{PI})}  \
        	Em {ELEAK_sd} initVm {EREST_ACT} Rm {{RM_sd}/surf} inject 0.0  \
        	dia {dia} len {len}

// Put shared channels in prototype dendrite
        copy Ca_HVA_GP GP_dendrite_p/Ca_HVA_GP
        addmsg GP_dendrite_p GP_dendrite_p/Ca_HVA_GP VOLTAGE Vm
        addmsg GP_dendrite_p/Ca_HVA_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/Ca_HVA_GP Gbar	\
		{{G_Ca_HVA_dend}*surf}

	copy K_ahp_GP GP_dendrite_p/K_ahp_GP
        addmsg GP_dendrite_p GP_dendrite_p/K_ahp_GP VOLTAGE Vm
        addmsg GP_dendrite_p/K_ahp_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/K_ahp_GP Gbar	\
		{{G_SK_dend}*surf}

	copy Ca_GP_nernst GP_dendrite_p/Ca_GP_nernst 
        copy Ca_GP_conc GP_dendrite_p/Ca_GP_conc
        addmsg GP_dendrite_p/Ca_HVA_GP GP_dendrite_p/Ca_GP_conc I_Ca Ik 
        addmsg GP_dendrite_p/Ca_GP_conc GP_dendrite_p/Ca_HVA_GP CONCEN Ca
	addmsg GP_dendrite_p/Ca_GP_conc GP_dendrite_p/K_ahp_GP CONCEN Ca 
	addmsg GP_dendrite_p/Ca_GP_conc GP_dendrite_p/Ca_GP_nernst CIN Ca
        addmsg GP_dendrite_p/Ca_GP_nernst GP_dendrite_p/Ca_HVA_GP EK E 
        setfield GP_dendrite_p/Ca_GP_conc B {{B_Ca_GP_conc}/shell_vol}

        copy Na_fast_GP GP_dendrite_p/Na_fast_GP
        addmsg GP_dendrite_p GP_dendrite_p/Na_fast_GP VOLTAGE Vm
        addmsg GP_dendrite_p/Na_fast_GP GP_dendrite_p CHANNEL Gk Ek
	setfield GP_dendrite_p/Na_fast_GP Gbar	\
	{{G_NaF_dend}*surf}

	copy Na_slow_GP GP_dendrite_p/Na_slow_GP
        addmsg GP_dendrite_p GP_dendrite_p/Na_slow_GP VOLTAGE Vm
        addmsg GP_dendrite_p/Na_slow_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/Na_slow_GP Gbar	\
	{{G_NaP_dend}*surf}

	copy Kv3_GP GP_dendrite_p/Kv3_GP
        addmsg GP_dendrite_p GP_dendrite_p/Kv3_GP VOLTAGE Vm
        addmsg GP_dendrite_p/Kv3_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/Kv3_GP Gbar	\
		{{G_Kv3_dend}*surf}

	copy Kv2_GP GP_dendrite_p/Kv2_GP
        addmsg GP_dendrite_p GP_dendrite_p/Kv2_GP VOLTAGE Vm
        addmsg GP_dendrite_p/Kv2_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/Kv2_GP Gbar	\
		{{G_Kv2_dend}*surf}

	copy Kv4_fast_GP GP_dendrite_p/Kv4_fast_GP
        addmsg GP_dendrite_p GP_dendrite_p/Kv4_fast_GP VOLTAGE Vm
        addmsg GP_dendrite_p/Kv4_fast_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/Kv4_fast_GP Gbar	\
		{{G_Kv4f_dend}*surf}

	copy Kv4_slow_GP GP_dendrite_p/Kv4_slow_GP
        addmsg GP_dendrite_p GP_dendrite_p/Kv4_slow_GP VOLTAGE Vm
        addmsg GP_dendrite_p/Kv4_slow_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/Kv4_slow_GP Gbar	\
		{{G_Kv4s_dend}*surf}
	
	copy KCNQ_GP GP_dendrite_p/KCNQ_GP
        addmsg GP_dendrite_p GP_dendrite_p/KCNQ_GP VOLTAGE Vm
        addmsg GP_dendrite_p/KCNQ_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/KCNQ_GP Gbar	\
		{{G_KCNQ_dend}*surf}

        copy h_HCN_GP GP_dendrite_p/h_HCN_GP
        addmsg GP_dendrite_p GP_dendrite_p/h_HCN_GP VOLTAGE Vm
        addmsg GP_dendrite_p/h_HCN_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/h_HCN_GP Gbar	\
		{{G_h_HCN_dend}*surf}

        copy h_HCN2_GP GP_dendrite_p/h_HCN2_GP
        addmsg GP_dendrite_p GP_dendrite_p/h_HCN2_GP VOLTAGE Vm
        addmsg GP_dendrite_p/h_HCN2_GP GP_dendrite_p CHANNEL Gk Ek
        setfield GP_dendrite_p/h_HCN2_GP Gbar	\
		{{G_h_HCN2_dend}*surf}

// Make the actual dendritic components based on the prototype.
	if (!({exists GP_dendrite_d0_dia2}))
             copy GP_dendrite_p GP_dendrite_d0_dia2
    end
	
	if (!({exists GP_dendrite_d0_dia1}))
             copy GP_dendrite_p GP_dendrite_d0_dia1
    end
	
	if (!({exists GP_dendrite_d0_dia0}))
             copy GP_dendrite_p GP_dendrite_d0_dia0
    end
	
	if (!({exists GP_dendrite_d25_dia2}))
             copy GP_dendrite_p GP_dendrite_d25_dia2
    end
	
	if (!({exists GP_dendrite_d25_dia1}))
             copy GP_dendrite_p GP_dendrite_d25_dia1
    end
	
	if (!({exists GP_dendrite_d25_dia0}))
             copy GP_dendrite_p GP_dendrite_d25_dia0
    end
	
	if (!({exists GP_dendrite_d50_dia2}))
             copy GP_dendrite_p GP_dendrite_d50_dia2
    end
	
	if (!({exists GP_dendrite_d50_dia1}))
             copy GP_dendrite_p GP_dendrite_d50_dia1
    end
	
	if (!({exists GP_dendrite_d50_dia0}))
             copy GP_dendrite_p GP_dendrite_d50_dia0
    end
	
	if (!({exists GP_dendrite_d100_dia2}))
             copy GP_dendrite_p GP_dendrite_d100_dia2
    end
	
	if (!({exists GP_dendrite_d100_dia1}))
             copy GP_dendrite_p GP_dendrite_d100_dia1
    end
	
	if (!({exists GP_dendrite_d100_dia0}))
             copy GP_dendrite_p GP_dendrite_d100_dia0
    end
	
	if (!({exists GP_dendrite_d200_dia2}))
             copy GP_dendrite_p GP_dendrite_d200_dia2
    end
	
	if (!({exists GP_dendrite_d200_dia1}))
             copy GP_dendrite_p GP_dendrite_d200_dia1
    end
	
	if (!({exists GP_dendrite_d200_dia0}))
             copy GP_dendrite_p GP_dendrite_d200_dia0
    end
	
	if (!({exists GP_dendrite_d300_dia2}))
             copy GP_dendrite_p GP_dendrite_d300_dia2
    end
	
	if (!({exists GP_dendrite_d300_dia1}))
             copy GP_dendrite_p GP_dendrite_d300_dia1
    end
	
	if (!({exists GP_dendrite_d300_dia0}))
             copy GP_dendrite_p GP_dendrite_d300_dia0
    end
	
	if (!({exists GP_dendrite_d400_dia2}))
             copy GP_dendrite_p GP_dendrite_d400_dia2
    end
	
	if (!({exists GP_dendrite_d400_dia1}))
             copy GP_dendrite_p GP_dendrite_d400_dia1
    end
	
	if (!({exists GP_dendrite_d400_dia0}))
             copy GP_dendrite_p GP_dendrite_d400_dia0
    end
	
	if (!({exists GP_dendrite_d500_dia2}))
             copy GP_dendrite_p GP_dendrite_d500_dia2
    end
	
	if (!({exists GP_dendrite_d500_dia1}))
             copy GP_dendrite_p GP_dendrite_d500_dia1
    end
	
	if (!({exists GP_dendrite_d500_dia0}))
             copy GP_dendrite_p GP_dendrite_d500_dia0
    end
	
	if (!({exists GP_dendrite_d600_dia2}))
             copy GP_dendrite_p GP_dendrite_d600_dia2
    end
	
	if (!({exists GP_dendrite_d600_dia1}))
             copy GP_dendrite_p GP_dendrite_d600_dia1
    end
	
	if (!({exists GP_dendrite_d600_dia0}))
             copy GP_dendrite_p GP_dendrite_d600_dia0
    end
	
	if (!({exists GP_dendrite_d700_dia2}))
             copy GP_dendrite_p GP_dendrite_d700_dia2
    end
	
	if (!({exists GP_dendrite_d700_dia1}))
             copy GP_dendrite_p GP_dendrite_d700_dia1
    end
	
	if (!({exists GP_dendrite_d700_dia0}))
             copy GP_dendrite_p GP_dendrite_d700_dia0
    end
	
	if (!({exists GP_dendrite_d800_dia2}))
             copy GP_dendrite_p GP_dendrite_d800_dia2
    end
	
	if (!({exists GP_dendrite_d800_dia1}))
             copy GP_dendrite_p GP_dendrite_d800_dia1
    end
	
	if (!({exists GP_dendrite_d800_dia0}))
             copy GP_dendrite_p GP_dendrite_d800_dia0
    end
	
	if (!({exists GP_dendrite_d900_dia2}))
             copy GP_dendrite_p GP_dendrite_d900_dia2
    end
	
	if (!({exists GP_dendrite_d900_dia1}))
             copy GP_dendrite_p GP_dendrite_d900_dia1
    end
	
	if (!({exists GP_dendrite_d900_dia0}))
             copy GP_dendrite_p GP_dendrite_d900_dia0
    end
	
//    setfield GP_dendrite_d0_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d0_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//  setfield GP_dendrite_d25_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d25_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//    setfield GP_dendrite_d50_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d50_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//    setfield GP_dendrite_d100_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d100_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//    setfield GP_dendrite_d200_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d200_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//    setfield GP_dendrite_d300_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d300_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//    setfield GP_dendrite_d400_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d400_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//    setfield GP_dendrite_d500_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d500_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}
    
//	setfield GP_dendrite_d600_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d600_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//	setfield GP_dendrite_d700_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d700_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//	setfield GP_dendrite_d800_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d800_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

//	setfield GP_dendrite_d900_dia1/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*1.5}
    
//	setfield GP_dendrite_d900_dia0/Ca_HVA_GP Gbar	\
//		{{G_Ca_HVA_GP}*surf*{G_mult_Ca_dend}*{G_mult}*3}

end