|
|||||||||||
Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages
hh_squid_channels.h00001 #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 |