MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
HHChannelBase Class Referenceabstract

#include <HHChannelBase.h>

+ Inheritance diagram for HHChannelBase:
+ Collaboration diagram for HHChannelBase:

Public Member Functions

void createGate (const Eref &e, string gateType)
 
int getInstant (const Eref &e) const
 
unsigned int getNumXgates () const
 
unsigned int getNumYgates () const
 Returns 1 if Y gate present, otherwise 0. More...
 
unsigned int getNumZgates () const
 Returns 1 if Z gate present, otherwise 0. More...
 
int getUseConcentration (const Eref &e) const
 
double getX (const Eref &e) const
 
HHGategetXgate (unsigned int i)
 
double getXpower (const Eref &e) const
 
double getY (const Eref &e) const
 
HHGategetYgate (unsigned int i)
 
double getYpower (const Eref &e) const
 
double getZ (const Eref &e) const
 
HHGategetZgate (unsigned int i)
 
double getZpower (const Eref &e) const
 
void handleConc (const Eref &e, double conc)
 
 HHChannelBase ()
 
void setInstant (const Eref &e, int Instant)
 
void setNumGates (unsigned int num)
 
void setUseConcentration (const Eref &e, int value)
 
void setX (const Eref &e, double X)
 
void setXpower (const Eref &e, double Xpower)
 
void setY (const Eref &e, double Y)
 
void setYpower (const Eref &e, double Ypower)
 
void setZ (const Eref &e, double Z)
 
void setZpower (const Eref &e, double Zpower)
 
virtual void vCreateGate (const Eref &e, string gateType)=0
 
virtual int vGetInstant (const Eref &e) const =0
 
double vGetModulation (const Eref &e) const
 
virtual double vGetX (const Eref &e) const =0
 
virtual HHGatevGetXgate (unsigned int i) const =0
 
virtual double vGetY (const Eref &e) const =0
 
virtual HHGatevGetYgate (unsigned int i) const =0
 
virtual double vGetZ (const Eref &e) const =0
 
virtual HHGatevGetZgate (unsigned int i) const =0
 
virtual void vHandleConc (const Eref &e, double conc)=0
 
virtual void vSetInstant (const Eref &e, int Instant)=0
 
virtual void vSetSolver (const Eref &e, Id hsolve)
 
virtual void vSetUseConcentration (const Eref &e, int value)=0
 
virtual void vSetX (const Eref &e, double X)=0
 
virtual void vSetXpower (const Eref &e, double Xpower)=0
 
virtual void vSetY (const Eref &e, double Y)=0
 
virtual void vSetYpower (const Eref &e, double Ypower)=0
 
virtual void vSetZ (const Eref &e, double Z)=0
 
virtual void vSetZpower (const Eref &e, double Zpower)=0
 
 ~HHChannelBase ()
 
- Public Member Functions inherited from ChanBase
 ChanBase ()
 
double getEk (const Eref &e) const
 
double getGbar (const Eref &e) const
 
double getGk (const Eref &e) const
 
double getIk (const Eref &e) const
 
double getModulation (const Eref &e) const
 
void handleVm (double Vm)
 
void process (const Eref &e, const ProcPtr info)
 
void reinit (const Eref &e, const ProcPtr info)
 
void setEk (const Eref &e, double Ek)
 
void setGbar (const Eref &e, double Gbar)
 
void setGk (const Eref &e, double Gk)
 
void setIk (const Eref &e, double Ic)
 
void setModulation (const Eref &e, double modulation)
 
virtual double vGetEk (const Eref &e) const =0
 
virtual double vGetGbar (const Eref &e) const =0
 
virtual double vGetGk (const Eref &e) const =0
 
virtual double vGetIk (const Eref &e) const =0
 
virtual void vHandleVm (double Vm)=0
 
virtual void vProcess (const Eref &e, const ProcPtr info)=0
 
virtual void vReinit (const Eref &e, const ProcPtr info)=0
 
virtual void vSetEk (const Eref &e, double Ek)=0
 
virtual void vSetGbar (const Eref &e, double Gbar)=0
 
virtual void vSetGk (const Eref &e, double Gk)=0
 
virtual void vSetIk (const Eref &e, double Ik)=0
 
virtual void vSetModulation (const Eref &e, double modulation)=0
 
 ~ChanBase ()
 

Static Public Member Functions

static const CinfoinitCinfo ()
 
static double power1 (double x, double p)
 
static double power2 (double x, double p)
 
static double power3 (double x, double p)
 
static double power4 (double x, double p)
 
static double powerN (double x, double p)
 
static PFDD selectPower (double power)
 
static void zombify (Element *orig, const Cinfo *zClass, Id hsolve)
 
- Static Public Member Functions inherited from ChanBase
static SrcFinfo2< double,
double > * 
channelOut ()
 
static SrcFinfo1< double > * IkOut ()
 
static const CinfoinitCinfo ()
 Specify the Class Info static variable for initialization. More...
 
static SrcFinfo1< double > * permeability ()
 

Protected Attributes

double modulation_
 Value used to scale channel conductance up or down. More...
 
bool useConcentration_
 Flag for use of conc for input to Z gate calculations. More...
 
double Xpower_
 Exponent for X gate. More...
 
double Ypower_
 Exponent for Y gate. More...
 
double Zpower_
 Exponent for Z gate. More...
 

Detailed Description

The HHChannelBase is the base class for defining Hodgkin-Huxley type channels, specifically dealing with derivatives used in the HSolver. This is derived from the ChanBase rather than the ChanCommon, since the Zombie classes used in the HSolver will not use the ChanCommon fields.

Definition at line 24 of file HHChannelBase.h.

Constructor & Destructor Documentation

HHChannelBase::HHChannelBase ( )

Definition at line 170 of file HHChannelBase.cpp.

171  :
172  Xpower_( 0.0 ),
173  Ypower_( 0.0 ),
174  Zpower_( 0.0 ),
175  useConcentration_( 0 ),
176  modulation_( 1.0 )
177 {;}
double modulation_
Value used to scale channel conductance up or down.
double Zpower_
Exponent for Z gate.
bool useConcentration_
Flag for use of conc for input to Z gate calculations.
double Ypower_
Exponent for Y gate.
double Xpower_
Exponent for X gate.
HHChannelBase::~HHChannelBase ( )

Definition at line 179 of file HHChannelBase.cpp.

180 {;}

Member Function Documentation

void HHChannelBase::createGate ( const Eref e,
string  gateType 
)

Function for safely creating each gate, identified by strings as X, Y and Z. Will only work on a new channel, not on a copy. The idea is that the gates are always referred to the original 'library' channel, and their contents cannot be touched except by the original.

Definition at line 218 of file HHChannelBase.cpp.

References vCreateGate().

Referenced by initCinfo(), and HHChannel::setGatePower().

219 {
220  vCreateGate( e, gateType );
221 }
virtual void vCreateGate(const Eref &e, string gateType)=0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int HHChannelBase::getInstant ( const Eref e) const

Definition at line 246 of file HHChannelBase.cpp.

References vGetInstant().

Referenced by initCinfo().

247 {
248  return vGetInstant( e );
249 }
virtual int vGetInstant(const Eref &e) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

unsigned int HHChannelBase::getNumXgates ( ) const

Access function for the number of Xgates. Gives 1 if present, otherwise 0.

Definition at line 327 of file HHChannelBase.cpp.

References vGetXgate().

Referenced by initCinfo().

328 {
329  return ( vGetXgate(0) != 0 );
330 }
virtual HHGate * vGetXgate(unsigned int i) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

unsigned int HHChannelBase::getNumYgates ( ) const

Returns 1 if Y gate present, otherwise 0.

Definition at line 332 of file HHChannelBase.cpp.

References vGetYgate().

Referenced by initCinfo().

333 {
334  return ( vGetYgate(0) != 0 );
335 }
virtual HHGate * vGetYgate(unsigned int i) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

unsigned int HHChannelBase::getNumZgates ( ) const

Returns 1 if Z gate present, otherwise 0.

Definition at line 337 of file HHChannelBase.cpp.

References vGetZgate().

Referenced by initCinfo().

338 {
339  return ( vGetZgate(0) != 0 );
340 }
virtual HHGate * vGetZgate(unsigned int i) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int HHChannelBase::getUseConcentration ( const Eref e) const

Definition at line 284 of file HHChannelBase.cpp.

References useConcentration_.

Referenced by initCinfo(), and zombify().

285 {
286  return useConcentration_;
287 }
bool useConcentration_
Flag for use of conc for input to Z gate calculations.

+ Here is the caller graph for this function:

double HHChannelBase::getX ( const Eref e) const

Definition at line 255 of file HHChannelBase.cpp.

References vGetX().

Referenced by initCinfo().

256 {
257  return vGetX( e );
258 }
virtual double vGetX(const Eref &e) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HHGate * HHChannelBase::getXgate ( unsigned int  i)

Access function used for the X gate. The index is ignored.

Definition at line 309 of file HHChannelBase.cpp.

References vGetXgate().

Referenced by initCinfo().

310 {
311  return vGetXgate( i );
312 }
virtual HHGate * vGetXgate(unsigned int i) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double HHChannelBase::getXpower ( const Eref e) const

Definition at line 227 of file HHChannelBase.cpp.

References Xpower_.

Referenced by initCinfo(), and zombify().

228 {
229  return Xpower_;
230 }
double Xpower_
Exponent for X gate.

+ Here is the caller graph for this function:

double HHChannelBase::getY ( const Eref e) const

Definition at line 264 of file HHChannelBase.cpp.

References vGetY().

Referenced by initCinfo().

265 {
266  return vGetY( e );
267 }
virtual double vGetY(const Eref &e) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HHGate * HHChannelBase::getYgate ( unsigned int  i)

Access function used for the Y gate. The index is ignored.

Definition at line 314 of file HHChannelBase.cpp.

References vGetYgate().

Referenced by initCinfo().

315 {
316  return vGetYgate( i );
317 }
virtual HHGate * vGetYgate(unsigned int i) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double HHChannelBase::getYpower ( const Eref e) const

Definition at line 232 of file HHChannelBase.cpp.

References Ypower_.

Referenced by initCinfo(), and zombify().

233 {
234  return Ypower_;
235 }
double Ypower_
Exponent for Y gate.

+ Here is the caller graph for this function:

double HHChannelBase::getZ ( const Eref e) const

Definition at line 273 of file HHChannelBase.cpp.

References vGetZ().

Referenced by initCinfo().

274 {
275  return vGetZ( e );
276 }
virtual double vGetZ(const Eref &e) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HHGate * HHChannelBase::getZgate ( unsigned int  i)

Access function used for the Z gate. The index is ignored.

Definition at line 319 of file HHChannelBase.cpp.

References vGetZgate().

Referenced by initCinfo().

320 {
321  return vGetZgate( i );
322 }
virtual HHGate * vGetZgate(unsigned int i) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double HHChannelBase::getZpower ( const Eref e) const

Definition at line 237 of file HHChannelBase.cpp.

References Zpower_.

Referenced by initCinfo(), and zombify().

238 {
239  return Zpower_;
240 }
double Zpower_
Exponent for Z gate.

+ Here is the caller graph for this function:

void HHChannelBase::handleConc ( const Eref e,
double  conc 
)

Assign the local conc_ to the incoming conc from the concentration calculations for the compartment. Typically the message source will be a CaConc object, but there are other options for computing the conc.

Definition at line 298 of file HHChannelBase.cpp.

References vHandleConc().

Referenced by initCinfo().

299 {
300  vHandleConc( e, conc );
301 }
virtual void vHandleConc(const Eref &e, double conc)=0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const Cinfo * HHChannelBase::initCinfo ( )
static

Definition at line 16 of file HHChannelBase.cpp.

References createGate(), getInstant(), getNumXgates(), getNumYgates(), getNumZgates(), getUseConcentration(), getX(), getXgate(), getXpower(), getY(), getYgate(), getYpower(), getZ(), getZgate(), getZpower(), handleConc(), ChanBase::initCinfo(), HHGate::initCinfo(), setInstant(), setNumGates(), setUseConcentration(), setX(), setXpower(), setY(), setYpower(), setZ(), and setZpower().

Referenced by ZombieHHChannel::initCinfo(), and HHChannel::initCinfo().

17 {
19  // Shared messages
21 
23  // Field definitions
25  static ElementValueFinfo< HHChannelBase, double > Xpower( "Xpower",
26  "Power for X gate",
29  );
30  static ElementValueFinfo< HHChannelBase, double > Ypower( "Ypower",
31  "Power for Y gate",
34  );
35  static ElementValueFinfo< HHChannelBase, double > Zpower( "Zpower",
36  "Power for Z gate",
39  );
40  static ElementValueFinfo< HHChannelBase, int > instant( "instant",
41  "Bitmapped flag: bit 0 = Xgate, bit 1 = Ygate, bit 2 = Zgate"
42  "When true, specifies that the lookup table value should be"
43  "used directly as the state of the channel, rather than used"
44  "as a rate term for numerical integration for the state",
47  );
49  "State variable for X gate",
52  );
54  "State variable for Y gate",
57  );
59  "State variable for Y gate",
62  );
63  static ElementValueFinfo< HHChannelBase, int > useConcentration(
64  "useConcentration",
65  "Flag: when true, use concentration message rather than Vm to"
66  "control Z gate",
69  );
70 
72 // MsgSrc definitions
74  // IkOut SrcFinfo defined in base classes.
75 
77 // MsgDest definitions
79  static DestFinfo concen( "concen",
80  "Incoming message from Concen object to specific conc to use"
81  "in the Z gate calculations",
83  );
84  static DestFinfo createGate( "createGate",
85  "Function to create specified gate."
86  "Argument: Gate type [X Y Z]",
88  );
90 // FieldElementFinfo definition for HHGates. Note that these are made
91 // with the deferCreate flag off, so that the HHGates are created
92 // right away even if they are empty.
93 // Assume only a single entry allocated in each gate.
95  static FieldElementFinfo< HHChannelBase, HHGate > gateX( "gateX",
96  "Sets up HHGate X for channel",
101  // 1
102  );
103  static FieldElementFinfo< HHChannelBase, HHGate > gateY( "gateY",
104  "Sets up HHGate Y for channel",
109  // 1
110  );
111  static FieldElementFinfo< HHChannelBase, HHGate > gateZ( "gateZ",
112  "Sets up HHGate Z for channel",
117  // 1
118  );
119 
121  static Finfo* HHChannelBaseFinfos[] =
122  {
123  &Xpower, // Value
124  &Ypower, // Value
125  &Zpower, // Value
126  &instant, // Value
127  &X, // Value
128  &Y, // Value
129  &Z, // Value
130  &useConcentration, // Value
131  &concen, // Dest
132  &createGate, // Dest
133  &gateX, // FieldElement
134  &gateY, // FieldElement
135  &gateZ // FieldElement
136  };
137 
138  static string doc[] =
139  {
140  "Name", "HHChannelBase",
141  "Author", "Upinder S. Bhalla, 2014, NCBS",
142  "Description", "HHChannelBase: Base class for "
143  "Hodgkin-Huxley type voltage-gated Ion channels. Something "
144  "like the old tabchannel from GENESIS, but also presents "
145  "a similar interface as hhchan from GENESIS. ",
146  };
147 
148  static ZeroSizeDinfo< int > dinfo;
149 
150  static Cinfo HHChannelBaseCinfo(
151  "HHChannelBase",
153  HHChannelBaseFinfos,
154  sizeof( HHChannelBaseFinfos )/sizeof(Finfo *),
155  &dinfo,
156  doc,
157  sizeof(doc)/sizeof(string)
158  );
159 
160  return &HHChannelBaseCinfo;
161 }
double getZpower(const Eref &e) const
double getYpower(const Eref &e) const
unsigned int getNumZgates() const
Returns 1 if Z gate present, otherwise 0.
Definition: EpFunc.h:64
void setNumGates(unsigned int num)
void setInstant(const Eref &e, int Instant)
void setY(const Eref &e, double Y)
unsigned int getNumYgates() const
Returns 1 if Y gate present, otherwise 0.
HHGate * getXgate(unsigned int i)
double getXpower(const Eref &e) const
void setUseConcentration(const Eref &e, int value)
HHGate * getZgate(unsigned int i)
unsigned int getNumXgates() const
double getY(const Eref &e) const
void handleConc(const Eref &e, double conc)
void setZ(const Eref &e, double Z)
HHGate * getYgate(unsigned int i)
static const Cinfo * initCinfo()
Definition: HHGate.cpp:16
void createGate(const Eref &e, string gateType)
void setYpower(const Eref &e, double Ypower)
void setX(const Eref &e, double X)
int getInstant(const Eref &e) const
int getUseConcentration(const Eref &e) const
double getX(const Eref &e) const
void setZpower(const Eref &e, double Zpower)
void setXpower(const Eref &e, double Xpower)
double getZ(const Eref &e) const
Definition: Cinfo.h:18
static const Cinfo * initCinfo()
Specify the Class Info static variable for initialization.
Definition: ChanBase.cpp:36
Definition: Finfo.h:12

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static double HHChannelBase::power1 ( double  x,
double  p 
)
inlinestatic

Definition at line 153 of file HHChannelBase.h.

Referenced by selectPower().

153  {
154  return x;
155  }

+ Here is the caller graph for this function:

static double HHChannelBase::power2 ( double  x,
double  p 
)
inlinestatic

Definition at line 156 of file HHChannelBase.h.

Referenced by power4(), and selectPower().

156  {
157  return x * x;
158  }

+ Here is the caller graph for this function:

static double HHChannelBase::power3 ( double  x,
double  p 
)
inlinestatic

Definition at line 159 of file HHChannelBase.h.

Referenced by selectPower().

159  {
160  return x * x * x;
161  }

+ Here is the caller graph for this function:

static double HHChannelBase::power4 ( double  x,
double  p 
)
inlinestatic

Definition at line 162 of file HHChannelBase.h.

References power2().

Referenced by selectPower().

162  {
163  return power2( x * x, p );
164  }
static double power2(double x, double p)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double HHChannelBase::powerN ( double  x,
double  p 
)
static

Definition at line 344 of file HHChannelBase.cpp.

References moose::log().

Referenced by selectPower().

345 {
346  if ( x > 0.0 )
347  return exp( p * log( x ) );
348  return 0.0;
349 }
void log(string msg, serverity_level_ type=debug, bool redirectToConsole=true, bool removeTicks=true)
Log to console (and to a log-file)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PFDD HHChannelBase::selectPower ( double  power)
static

Definition at line 351 of file HHChannelBase.cpp.

References doubleEq(), power1(), power2(), power3(), power4(), and powerN().

Referenced by HHChannel::vSetXpower(), HHChannel::vSetYpower(), and HHChannel::vSetZpower().

352 {
353  if ( doubleEq( power, 0.0 ) )
354  return powerN;
355  else if ( doubleEq( power, 1.0 ) )
356  return power1;
357  else if ( doubleEq( power, 2.0 ) )
358  return power2;
359  else if ( doubleEq( power, 3.0 ) )
360  return power3;
361  else if ( doubleEq( power, 4.0 ) )
362  return power4;
363  else
364  return powerN;
365 }
bool doubleEq(double x, double y)
Definition: doubleEq.cpp:16
static double powerN(double x, double p)
static double power2(double x, double p)
static double power4(double x, double p)
static double power1(double x, double p)
static double power3(double x, double p)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannelBase::setInstant ( const Eref e,
int  Instant 
)

Definition at line 242 of file HHChannelBase.cpp.

References vSetInstant().

Referenced by initCinfo().

243 {
244  vSetInstant( e, instant );
245 }
virtual void vSetInstant(const Eref &e, int Instant)=0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannelBase::setNumGates ( unsigned int  num)

Dummy assignment function for the number of gates.

Definition at line 324 of file HHChannelBase.cpp.

Referenced by initCinfo().

325 { ; }

+ Here is the caller graph for this function:

void HHChannelBase::setUseConcentration ( const Eref e,
int  value 
)

Definition at line 278 of file HHChannelBase.cpp.

References useConcentration_, value, and vSetUseConcentration().

Referenced by initCinfo().

279 {
282 }
uint32_t value
Definition: moosemodule.h:42
bool useConcentration_
Flag for use of conc for input to Z gate calculations.
virtual void vSetUseConcentration(const Eref &e, int value)=0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannelBase::setX ( const Eref e,
double  X 
)

Definition at line 251 of file HHChannelBase.cpp.

References vSetX().

Referenced by initCinfo().

252 {
253  vSetX( e, X );
254 }
virtual void vSetX(const Eref &e, double X)=0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannelBase::setXpower ( const Eref e,
double  power 
)

Assigns the Xpower for this gate. If the gate exists and has only this element for input, then change the gate value. If the gate exists and has multiple parents, then make a new gate. If the gate does not exist, make a new gate

Definition at line 200 of file HHChannelBase.cpp.

References checkPower(), and vSetXpower().

Referenced by initCinfo().

201 {
202  if ( checkPower( power ) )
203  vSetXpower( e, power );
204 }
bool checkPower(double power)
virtual void vSetXpower(const Eref &e, double Xpower)=0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannelBase::setY ( const Eref e,
double  Y 
)

Definition at line 260 of file HHChannelBase.cpp.

References vSetY().

Referenced by initCinfo().

261 {
262  vSetY( e, Y );
263 }
virtual void vSetY(const Eref &e, double Y)=0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannelBase::setYpower ( const Eref e,
double  Ypower 
)

Definition at line 206 of file HHChannelBase.cpp.

References checkPower(), and vSetYpower().

Referenced by initCinfo().

207 {
208  if ( checkPower( power ) )
209  vSetYpower( e, power );
210 }
virtual void vSetYpower(const Eref &e, double Ypower)=0
bool checkPower(double power)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannelBase::setZ ( const Eref e,
double  Z 
)

Definition at line 269 of file HHChannelBase.cpp.

References vSetZ().

Referenced by initCinfo().

270 {
271  vSetZ( e, Z );
272 }
virtual void vSetZ(const Eref &e, double Z)=0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannelBase::setZpower ( const Eref e,
double  Zpower 
)

Definition at line 212 of file HHChannelBase.cpp.

References checkPower(), and vSetZpower().

Referenced by initCinfo().

213 {
214  if ( checkPower( power ) )
215  vSetZpower( e, power );
216 }
virtual void vSetZpower(const Eref &e, double Zpower)=0
bool checkPower(double power)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

virtual void HHChannelBase::vCreateGate ( const Eref e,
string  gateType 
)
pure virtual

Implemented in HHChannel.

Referenced by createGate().

+ Here is the caller graph for this function:

virtual int HHChannelBase::vGetInstant ( const Eref e) const
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by getInstant().

+ Here is the caller graph for this function:

double HHChannelBase::vGetModulation ( const Eref e) const
virtual

Implements ChanBase.

Definition at line 289 of file HHChannelBase.cpp.

References modulation_.

290 {
291  return modulation_;
292 }
double modulation_
Value used to scale channel conductance up or down.
virtual double HHChannelBase::vGetX ( const Eref e) const
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by getX().

+ Here is the caller graph for this function:

virtual HHGate* HHChannelBase::vGetXgate ( unsigned int  i) const
pure virtual

Implemented in HHChannel, and ZombieHHChannel.

Referenced by getNumXgates(), and getXgate().

+ Here is the caller graph for this function:

virtual double HHChannelBase::vGetY ( const Eref e) const
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by getY().

+ Here is the caller graph for this function:

virtual HHGate* HHChannelBase::vGetYgate ( unsigned int  i) const
pure virtual

Implemented in HHChannel, and ZombieHHChannel.

Referenced by getNumYgates(), and getYgate().

+ Here is the caller graph for this function:

virtual double HHChannelBase::vGetZ ( const Eref e) const
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by getZ().

+ Here is the caller graph for this function:

virtual HHGate* HHChannelBase::vGetZgate ( unsigned int  i) const
pure virtual

Implemented in HHChannel, and ZombieHHChannel.

Referenced by getNumZgates(), and getZgate().

+ Here is the caller graph for this function:

virtual void HHChannelBase::vHandleConc ( const Eref e,
double  conc 
)
pure virtual

Implemented in HHChannel, and ZombieHHChannel.

Referenced by handleConc().

+ Here is the caller graph for this function:

virtual void HHChannelBase::vSetInstant ( const Eref e,
int  Instant 
)
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by setInstant().

+ Here is the caller graph for this function:

void HHChannelBase::vSetSolver ( const Eref e,
Id  hsolve 
)
virtual

Reimplemented in ZombieHHChannel.

Definition at line 368 of file HHChannelBase.cpp.

Referenced by zombify().

369 {;}

+ Here is the caller graph for this function:

virtual void HHChannelBase::vSetUseConcentration ( const Eref e,
int  value 
)
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by setUseConcentration().

+ Here is the caller graph for this function:

virtual void HHChannelBase::vSetX ( const Eref e,
double  X 
)
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by setX().

+ Here is the caller graph for this function:

virtual void HHChannelBase::vSetXpower ( const Eref e,
double  Xpower 
)
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by setXpower(), and zombify().

+ Here is the caller graph for this function:

virtual void HHChannelBase::vSetY ( const Eref e,
double  Y 
)
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by setY().

+ Here is the caller graph for this function:

virtual void HHChannelBase::vSetYpower ( const Eref e,
double  Ypower 
)
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by setYpower(), and zombify().

+ Here is the caller graph for this function:

virtual void HHChannelBase::vSetZ ( const Eref e,
double  Z 
)
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by setZ().

+ Here is the caller graph for this function:

virtual void HHChannelBase::vSetZpower ( const Eref e,
double  Zpower 
)
pure virtual

Implemented in ZombieHHChannel, and HHChannel.

Referenced by setZpower(), and zombify().

+ Here is the caller graph for this function:

void HHChannelBase::zombify ( Element orig,
const Cinfo zClass,
Id  hsolve 
)
static

Definition at line 371 of file HHChannelBase.cpp.

References Element::cinfo(), Eref::data(), getUseConcentration(), getXpower(), getYpower(), getZpower(), Element::localDataStart(), Element::numLocalData(), ChanBase::vGetEk(), ChanBase::vGetGbar(), ChanBase::vSetEk(), ChanBase::vSetGbar(), vSetSolver(), vSetXpower(), vSetYpower(), vSetZpower(), and Element::zombieSwap().

Referenced by HSolve::unzombify(), and HSolve::zombify().

372 {
373  if ( orig->cinfo() == zClass )
374  return;
375  unsigned int start = orig->localDataStart();
376  unsigned int num = orig->numLocalData();
377  if ( num == 0 )
378  return;
379  // Parameters are Gbar, Ek, Xpower, Ypower, Zpower, useConcentration
380  // We also want to haul the original gates over, this is done earlier
381  // in the HSolve building process. So just six terms.
382  vector< double > chandata( num * 6, 0.0 );
383  vector< double >::iterator j = chandata.begin();
384 
385  for ( unsigned int i = 0; i < num; ++i ) {
386  Eref er( orig, i + start );
387  const HHChannelBase* hb =
388  reinterpret_cast< const HHChannelBase* >( er.data() );
389  *j = hb->vGetGbar( er );
390  *(j+1) = hb->vGetEk( er);
391  *(j+2) = hb->getXpower( er );
392  *(j+3) = hb->getYpower( er );
393  *(j+4) = hb->getZpower( er );
394  *(j+5) = hb->getUseConcentration( er );
395  j+= 6;
396  }
397  orig->zombieSwap( zClass );
398  j = chandata.begin();
399  for ( unsigned int i = 0; i < num; ++i ) {
400  Eref er( orig, i + start );
401  HHChannelBase* hb = reinterpret_cast< HHChannelBase* >( er.data() );
402  hb->vSetSolver( er, hsolve );
403  hb->vSetGbar( er, *j );
404  hb->vSetEk( er, *(j+1) );
405  hb->vSetXpower( er, *(j+2) );
406  hb->vSetYpower( er, *(j+3) );
407  hb->vSetZpower( er, *(j+4) );
408  // hb->vSetUseConcentration( er, *(j+5) > 0.5 );
409  // Disable this assignment because the Solver already reads the
410  // value, and it triggers an error msg.
411  j+= 6;
412  }
413 }
double getZpower(const Eref &e) const
double getYpower(const Eref &e) const
virtual void vSetEk(const Eref &e, double Ek)=0
virtual double vGetGbar(const Eref &e) const =0
virtual void vSetYpower(const Eref &e, double Ypower)=0
virtual void zombieSwap(const Cinfo *zCinfo)
virtual func, this base version must be called by all derived classes
Definition: Element.cpp:159
double getXpower(const Eref &e) const
virtual void vSetSolver(const Eref &e, Id hsolve)
virtual void vSetGbar(const Eref &e, double Gbar)=0
virtual void vSetZpower(const Eref &e, double Zpower)=0
Definition: Eref.h:26
const Cinfo * cinfo() const
Definition: Element.cpp:66
virtual unsigned int localDataStart() const =0
Returns index of first data entry on this node.
virtual unsigned int numLocalData() const =0
Returns number of local data entries on this node.
int getUseConcentration(const Eref &e) const
virtual void vSetXpower(const Eref &e, double Xpower)=0
virtual double vGetEk(const Eref &e) const =0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

double HHChannelBase::modulation_
protected

Value used to scale channel conductance up or down.

Definition at line 188 of file HHChannelBase.h.

Referenced by vGetModulation(), HHChannel::vGetModulation(), HHChannel::vProcess(), HHChannel::vReinit(), HHChannel::vSetModulation(), and ZombieHHChannel::vSetModulation().

bool HHChannelBase::useConcentration_
protected

Flag for use of conc for input to Z gate calculations.

Definition at line 185 of file HHChannelBase.h.

Referenced by getUseConcentration(), setUseConcentration(), HHChannel::vProcess(), HHChannel::vReinit(), HHChannel::vSetUseConcentration(), and HHChannel::vSetZpower().

double HHChannelBase::Xpower_
protected
double HHChannelBase::Ypower_
protected
double HHChannelBase::Zpower_
protected

The documentation for this class was generated from the following files: