CSIM: hh_squid_channels.h Source File

hh_squid_channels.h

00001 #ifndef __HH_SQUID_CHANNELS_H_
00002 #define __HH_SQUID_CHANNELS_H_
00003 
00004 #include "viongate.h"
00005 #include "activechannel.h"
00006 
00007 #define VSCALE 1000
00008 #define TSCALE 1000 
00009 
00011 
00015 class HH_n_Gate : public VIonGate {
00016 public:
00017   HH_n_Gate(void) { k=4; }
00018   double alpha(double V) { return TSCALE*(fabs(10-(V-*Vresting)*VSCALE) < 1e-15 ? 
00019                                           0.1 : 0.01*(10-(V-*Vresting)*VSCALE)/(exp((10-(V-*Vresting)*VSCALE)/10)-1.0)); }
00020   double beta(double V)  { return TSCALE*(0.125*exp(-(V-*Vresting)*VSCALE/80)); }  
00021   IONGATE_TABLES(HH_n_Gate);
00022 };
00023 
00024 
00026 
00030 class HH_K_Channel : public ActiveChannel {
00031 
00032   DO_REGISTERING
00033 
00034 public:
00035 
00036   HH_K_Channel(double Gbar=0.2827430964*1e-3,double Erev=-11.99979305*1e-3) {
00037     addGate(new HH_n_Gate);
00038     this->Gbar = Gbar;
00039     this->Erev = Erev;
00040   }
00041 
00042   virtual ~HH_K_Channel(void) {
00043     for(int i=0;i<nGates;i++)
00044       delete gates[i];
00045   }
00046 
00047 };
00048 
00050 
00054 class HH_m_Gate : public VIonGate {
00055 public:
00056   HH_m_Gate(void) { k=3; }
00057   double alpha(double V) { return TSCALE*(fabs(25-(V-*Vresting)*VSCALE)<1e-15 ?
00058                                           1 : (0.1*(25-(V-*Vresting)*VSCALE))/(exp((25-(V-*Vresting)*VSCALE)/10)-1.0)); }
00059   double beta(double V)  { return TSCALE*(4.0*exp(-(V-*Vresting)*VSCALE/18)); }
00060   IONGATE_TABLES(HH_m_Gate);
00061 };
00062 
00064 
00068 class HH_h_Gate : public VIonGate {
00069 public:
00070   HH_h_Gate(void) { k=1; }
00071   double alpha(double V) { return TSCALE*(0.07*exp(-(V-*Vresting)*VSCALE/20)); }
00072   double beta(double V)  { return TSCALE*(1.0/(exp((30-(V-*Vresting)*VSCALE)/10)+1)); }
00073   IONGATE_TABLES(HH_h_Gate);
00074 };
00075 
00077 
00081 class HH_Na_Channel : public ActiveChannel {
00082 
00083   DO_REGISTERING
00084 
00085 public:
00086 
00087   HH_Na_Channel(double Gbar=0.9424769878*1e-3,double Erev=0.1150009537) {
00088     addGate(new HH_m_Gate);
00089     addGate(new HH_h_Gate);
00090     this->Gbar = Gbar;
00091     this->Erev = Erev;
00092   }
00093 
00094   virtual ~HH_Na_Channel(void) {
00095     for(int i=0;i<nGates;i++)
00096       delete gates[i];
00097   }
00098 
00099 };
00100 
00101 #endif
00102 
00103 
00104 

 
(C) 2003, Thomas Natschläger last modified 07/10/2006