// CA1 Model //
// Primary Model  -   Kv1 //


load_file("nrngui.hoc")
cvode_active(1)


xopen("geo9068802.hoc")             //geometry file
xopen("fixnseg.hoc")           


dist=7
numbasal=70
Rm = 35000
Rm_node=1000
Cm    = 1
RaAll= 150
RaAx = 50
Vrest = -70
gna = 0.09                  
AXONM = 3
gkdr =0.03          
celsius = 31.0  
ka = 0.001                          
ghd=0.00000005
gkm= 0.02            
gcat= 0.0001
gahp=0.00001

objref g, b,c, stim, s, rsyn, nc, m, gt, gk



//topological parameters//		
axonnodes=17  			
paranodes1=33
paranodes2=33	
axoninter=17


//electrical parameters//		
rhoa=0.5e6       //Ohm-um//
mycm=0.1        //uF/cm2/lamella membrane//
mygm=0.001     //S/cm2/lamella membrane//



paralength1=3  
nodelength=1.0
space_p1=0.0018  
space_p2=0.008
space_i=0.008
fiberD=0.65
axonD=0.5 
nodeD=0.234
paraD1=0.5
paraD2=0.5
paralength2=5
interlength=83
nl=15
Rpx=5.8e+05	
Rpn0=(rhoa*.01)/(PI*((((nodeD/2)+space_p1)^2)-((nodeD/2)^2)))






	for i=0,axonnodes-1 {
		node[i]{					
			nseg=1
			diam=nodeD
			L=nodelength
			Ra=50                         
			cm=1		
			insert km gbar_km= 0.2              
                        insert Kv1  gbar_Kv1= 0.07                           
                        insert nax gbar_nax=gna*AXONM*3
                        insert pas
			g_pas=0.001		
			e_pas=-70
			insert extracellular xraxial=Rpn0 xg=1e10 xc=0
                        insert chanrhod
                        channel_density_chanrhod=2.8e010 
			}
		}



	for i=0, paranodes1-1 {
		MYSA[i]{
			nseg=1
			diam=paraD1
			L=paralength1
			Ra=50            
			cm=2*0.468                        
			insert pas
			g_pas=0.001*0.468                      		
			e_pas=-70
			insert extracellular xraxial=Rpn0 xg=mygm/(nl*2)  xc=mycm/(nl*2)
                        insert km gbar_km= 0.0008  
                        insert Kv1  gbar_Kv1= 0.07    
                        insert nax gbar_nax= 0.04                            
                        insert chanrhod
                        channel_density_chanrhod=2.8e010  


			  }
	          }




	for i=0, paranodes2-1 {
		FLUT[i]{
			nseg=1
			diam=paraD2
			L=paralength2
			Ra=50                 
			cm=2*0.668                   
			insert pas
			g_pas=0.0001*0.668                    		
			e_pas=-70
			insert extracellular xraxial=Rpx xg=mygm/(nl*2)  xc=mycm/(nl*2)
                        insert km gbar_km= 0.0008                       
                        insert nax gbar_nax=0.04                                      
                        insert Kv1  gbar_Kv1=0.2                  
                        insert chanrhod
                        channel_density_chanrhod=2.8e010 

			  }
	          }
 




	for i=0, axoninter-1 {
		STIN[i]{
			nseg=3
			diam=axonD
			L=interlength
			Ra=50                  
			cm=2*0.668                           
			insert pas
			g_pas=0.0001*0.668                         
			e_pas=-70
			insert extracellular xraxial=Rpx xg=mygm/(nl*2)  xc=mycm/(nl*2)
                        insert km gbar_km= 0.0008                        
                        insert nax gbar_nax= 0.04                 
                        insert Kv1  gbar_Kv1= 0.08                        
                        insert chanrhod
                        channel_density_chanrhod=2.8e010 
			  }
	          }



	
forsec "hill" {insert pas e_pas=Vrest g_pas=1/Rm  Ra=RaAll cm=Cm}                        
forsec "ais" {insert pas e_pas=Vrest g_pas =1/Rm  Ra=RaAx cm=Cm}
forsec "soma" {insert pas e_pas=Vrest g_pas =1/Rm  Ra=RaAll cm=Cm}
forsec "dendrite"{insert pas e_pas=Vrest g_pas =1/Rm Ra=RaAll cm=Cm}
forsec "user5" {insert pas e_pas=Vrest g_pas =1/Rm Ra=RaAll cm=Cm}


access soma


freq=50

distance()
geom_nseg()



               

forsec "hill" {   
		insert km gbar_km= 0                                             
                insert na3 gbar_na3=gna*AXONM                                       
                insert kdr gkdrbar_kdr=0.001                
                insert chanrhod
                channel_density_chanrhod=1.3e011                                           
          }




forsec "ais" {   
		insert km gbar_km= 0.04                                                
                insert nax gbar_nax= gna*AXONM*13
                insert kdr gkdrbar_kdr=0.001               
               //insert Kv1  gbar_Kv1= 0.0007  
                 insert chanrhod
                 channel_density_chanrhod=1.3e011                                         
          }





forsec "soma" {  
		insert km gbar_km=0               
		insert hd ghdbar_hd=0	
                insert na3 gbar_na3=gna*AXONM             
                insert kdr gkdrbar_kdr= 0.001                
                insert kap gkabar_kap = ka
                insert cat  gcatbar_cat=gcat
		insert cacum tau_cacum=100 depth_cacum=diam/2
		insert KahpM95 gbar_KahpM95 = gahp
                //insert Kv1  gbar_Kv1= 0.0007  
                insert chanrhod
                channel_density_chanrhod=1.3e011                

            }






for i=0, numbasal-1 dendrite[i] {
                insert na3 gbar_na3=0
                insert cat  gcatbar_cat=gcat
		insert cacum tau_cacum=100 depth_cacum=diam/2
		insert KahpM95 gbar_KahpM95 = gahp 
                insert chanrhod
                channel_density_chanrhod=1.3e011
           }

   

             
forsec "apical_dendrite" {
		insert hd ghdbar_hd=ghd	
                insert na3 gbar_na3= 0.02
                insert kdr gkdrbar_kdr= gkdr
		insert kap gkabar_kap=0
		insert kad gkabar_kad=0
		insert cacum tau_cacum=100 depth_cacum=diam/2
		insert KahpM95 gbar_KahpM95 = gahp 
                insert cat  gcatbar_cat=gcat
                insert chanrhod
                channel_density_chanrhod=1.3e011

		for (x,0) { xdist = distance(x)
                	ghdbar_hd(x) = ghd*(1+3*xdist/100)
                		if (xdist > 100){
                        		gkabar_kad(x) = ka*(1+xdist/100)
                			} else {
                        		gkabar_kap(x) = ka*(1+xdist/100)
               				}
		}
}





forsec "user5" {
		insert hd ghdbar_hd=ghd	
                insert na3 gbar_na3=0.02
                insert kdr gkdrbar_kdr= gkdr
		insert kap gkabar_kap=0
		insert kad gkabar_kad=0
		insert cacum tau_cacum=100 depth_cacum=diam/2
                insert cat  gcatbar_cat=gcat
		insert KahpM95 gbar_KahpM95 = gahp 
                insert chanrhod
                channel_density_chanrhod=1.3e011


		for (x,0) { xdist = distance(x)
                	ghdbar_hd(x) = ghd*(1+3*xdist/100)
                		if (xdist > 100){
                        		gkabar_kad(x) = ka*(1+xdist/100)
                			} else {
                        		gkabar_kap(x) = ka*(1+xdist/100)
               				}
		}
}





proc init() {
	t=0
        forall {
        v=Vrest
        if (ismembrane("nax") || ismembrane("na3")) {ena=55}
        if (ismembrane("KahpM95") || ismembrane("kap") || ismembrane("kad")) {ek=-90}
        if (ismembrane("hd") ) {ehd_hd=-30}
	}
	finitialize(Vrest)
        fcurrent()

        forall {
	for (x) {
	if (ismembrane("na3")||ismembrane("nax")){e_pas(x)=v(x)+(ina(x)+ik(x))/g_pas(x)}
	if (ismembrane("hd")) {e_pas(x)=e_pas(x)+i_hd(x)/g_pas(x)}
	if (ismembrane("cat")){e_pas(x)=e_pas(x)+ica(x)/g_pas(x)}
		}
	}
	
}





//returns total surface area

//proc totalarea() { local sum
  //finitialize()
  //sum = 0
  //forall for (x,0) sum += area(x)
  //print "total surface area = ", sum, " um2"
//}
//totalarea()