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

#include <HHChannel2D.h>

+ Inheritance diagram for HHChannel2D:
+ Collaboration diagram for HHChannel2D:

Public Member Functions

bool checkOriginal (Id chanId) const
 Returns true if channel is original, false if copy. More...
 
void conc1 (double conc)
 
void conc2 (double conc)
 
void createGate (const Eref &e, string gateType)
 
void destroyGate (const Eref &e, string gateType)
 
int getInstant () 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 ()
 
double getX () const
 
HHGate2DgetXgate (unsigned int i)
 Access function used for the X gate. The index is ignored. More...
 
string getXindex () const
 
double getXpower (const Eref &e) const
 
double getY () const
 
HHGate2DgetYgate (unsigned int i)
 Access function used for the Y gate. The index is ignored. More...
 
string getYindex () const
 
double getYpower (const Eref &e) const
 
double getZ () const
 
HHGate2DgetZgate (unsigned int i)
 Access function used for the Z gate. The index is ignored. More...
 
string getZindex () const
 
double getZpower (const Eref &e) const
 
 HHChannel2D ()
 
void innerCreateGate (const string &gateName, HHGate2D **gatePtr, Id chanId, Id gateId)
 Inner utility function for creating the gate. More...
 
void innerDestroyGate (const string &gateName, HHGate2D **gatePtr, Id chanId)
 
bool setGatePower (const Eref &e, double power, double *assignee, const string &gateType)
 
void setInstant (int Instant)
 
void setNumGates (unsigned int num)
 Dummy assignment function for the number of gates. More...
 
void setUseConcentration (int value)
 
void setX (double X)
 
void setXindex (string index)
 
void setXpower (const Eref &e, double Xpower)
 
void setY (double Y)
 
void setYindex (string index)
 
void setYpower (const Eref &e, double Ypower)
 
void setZ (double Z)
 
void setZindex (string index)
 
void setZpower (const Eref &e, double Zpower)
 
void vProcess (const Eref &e, ProcPtr p)
 
void vReinit (const Eref &e, ProcPtr p)
 
- Public Member Functions inherited from ChanCommon
 ChanCommon ()
 
double getGbar () const
 Utility function to acces Gbar. More...
 
double getModulation () const
 
double getVm () const
 Utility function to access Vm. More...
 
void sendProcessMsgs (const Eref &e, const ProcPtr info)
 
void sendReinitMsgs (const Eref &e, const ProcPtr info)
 
void updateIk ()
 
double vGetEk (const Eref &e) const
 
double vGetGbar (const Eref &e) const
 
double vGetGk (const Eref &e) const
 
double vGetIk (const Eref &e) const
 
double vGetModulation (const Eref &e) const
 
void vHandleVm (double Vm)
 
void vSetEk (const Eref &e, double Ek)
 
void vSetGbar (const Eref &e, double Gbar)
 
void vSetGk (const Eref &e, double Gk)
 
void vSetIk (const Eref &e, double Ic)
 
void vSetModulation (const Eref &e, double modulation)
 
 ~ChanCommon ()
 
- 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)
 
 ~ChanBase ()
 

Static Public Member Functions

static const CinfoinitCinfo ()
 
static PFDD selectPower (double power)
 
- Static Public Member Functions inherited from ChanCommon
static const CinfoinitCinfo ()
 Specify the Class Info static variable for initialization. More...
 
- 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 ()
 

Public Attributes

double(* takeXpower_ )(double, double)
 
double(* takeYpower_ )(double, double)
 
double(* takeZpower_ )(double, double)
 

Private Member Functions

int dependency (string index, unsigned int dim)
 
double depValue (int dependency)
 
double integrate (double state, double dt, double A, double B)
 

Static Private Member Functions

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)
 

Private Attributes

double conc1_
 Internal variable used to calculate conductance. More...
 
double conc2_
 
double g_
 
int instant_
 Exponent for Z gate. More...
 
double X_
 
int Xdep0_
 
int Xdep1_
 
HHGate2DxGate_
 
string Xindex_
 
bool xInited_
 State variable for Z gate. More...
 
double Xpower_
 
double Y_
 State variable for X gate. More...
 
int Ydep0_
 
int Ydep1_
 
HHGate2DyGate_
 
string Yindex_
 
bool yInited_
 
double Ypower_
 Exponent for X gate. More...
 
double Z_
 State variable for Y gate. More...
 
int Zdep0_
 
int Zdep1_
 
HHGate2DzGate_
 HHGate2D for the yGate. More...
 
string Zindex_
 
bool zInited_
 
double Zpower_
 Exponent for Y gate. More...
 

Static Private Attributes

static const double EPSILON = 1.0e-10
 HHGate2D for the zGate. More...
 
static const int INSTANT_X = 1
 
static const int INSTANT_Y = 2
 
static const int INSTANT_Z = 4
 

Additional Inherited Members

- Protected Attributes inherited from ChanCommon
double Vm_
 Vm_ is input variable from compartment, used for most rates. More...
 

Detailed Description

Definition at line 24 of file HHChannel2D.h.

Constructor & Destructor Documentation

HHChannel2D::HHChannel2D ( )

Definition at line 173 of file HHChannel2D.cpp.

174  : ChanCommon(),
175  Xpower_( 0.0 ),
176  Ypower_( 0.0 ),
177  Zpower_( 0.0 ),
178  instant_(0),
179  X_(0.0),
180  Y_(0.0),
181  Z_(0.0),
182  xInited_(false),
183  yInited_(false),
184  zInited_(false),
185  conc1_(0.0),
186  conc2_(0.0),
187  Xdep0_( -1 ),
188  Xdep1_( -1 ),
189  Ydep0_( -1 ),
190  Ydep1_( -1 ),
191  Zdep0_( -1 ),
192  Zdep1_( -1 ),
193  xGate_( 0 ),
194  yGate_( 0 ),
195  zGate_( 0 )
196 {;}
bool xInited_
State variable for Z gate.
Definition: HHChannel2D.h:176
HHGate2D * yGate_
Definition: HHChannel2D.h:200
int instant_
Exponent for Z gate.
Definition: HHChannel2D.h:168
double Y_
State variable for X gate.
Definition: HHChannel2D.h:170
double Ypower_
Exponent for X gate.
Definition: HHChannel2D.h:164
HHGate2D * xGate_
Definition: HHChannel2D.h:199
HHGate2D * zGate_
HHGate2D for the yGate.
Definition: HHChannel2D.h:201
double Z_
State variable for Y gate.
Definition: HHChannel2D.h:171
double conc1_
Internal variable used to calculate conductance.
Definition: HHChannel2D.h:180
double Zpower_
Exponent for Y gate.
Definition: HHChannel2D.h:165
double conc2_
Definition: HHChannel2D.h:181
double Xpower_
Definition: HHChannel2D.h:163

Member Function Documentation

bool HHChannel2D::checkOriginal ( Id  chanId) const

Returns true if channel is original, false if copy.

If the gate exists and has only this element for input, then change the gate power. If the gate exists and has multiple parents, then make a new gate, set its power. If the gate does not exist, make a new gate, set its power.

The function is designed with the idea that if copies of this channel are made, then they all point back to the original HHGate. (Unless they are cross-node copies). It is only if we subsequently alter the HHGate of this channel that we need to make our own variant of the HHGate, or disconnect from an existing one.

Definition at line 599 of file HHChannel2D.cpp.

References HHGate2D::isOriginalChannel(), xGate_, yGate_, and zGate_.

Referenced by createGate(), and destroyGate().

600 {
601  bool isOriginal = 1;
602  if ( xGate_ ) {
603  isOriginal = xGate_->isOriginalChannel( chanId );
604  } else if ( yGate_ ) {
605  isOriginal = yGate_->isOriginalChannel( chanId );
606  } else if ( zGate_ ) {
607  isOriginal = zGate_->isOriginalChannel( chanId );
608  }
609  return isOriginal;
610 }
bool isOriginalChannel(Id id) const
Definition: HHGate2D.cpp:242
HHGate2D * yGate_
Definition: HHChannel2D.h:200
HHGate2D * xGate_
Definition: HHChannel2D.h:199
HHGate2D * zGate_
HHGate2D for the yGate.
Definition: HHChannel2D.h:201

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannel2D::conc1 ( 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 402 of file HHChannel2D.cpp.

References conc1_.

Referenced by initCinfo().

403 {
404  conc1_ = conc;
405 }
double conc1_
Internal variable used to calculate conductance.
Definition: HHChannel2D.h:180

+ Here is the caller graph for this function:

void HHChannel2D::conc2 ( double  conc)

Definition at line 407 of file HHChannel2D.cpp.

References conc2_.

Referenced by initCinfo().

408 {
409  conc2_ = conc;
410 }
double conc2_
Definition: HHChannel2D.h:181

+ Here is the caller graph for this function:

void HHChannel2D::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 624 of file HHChannel2D.cpp.

References checkOriginal(), Eref::id(), innerCreateGate(), Id::path(), Id::value(), xGate_, yGate_, and zGate_.

Referenced by setGatePower().

626 {
627  if ( !checkOriginal( e.id() ) ) {
628  cout << "Warning: HHChannel2D::createGate: Not allowed from copied channel:\n" << e.id().path() << "\n";
629  return;
630  }
631 
632  if ( gateType == "X" )
633  innerCreateGate( "xGate", &xGate_, e.id(), Id(e.id().value() + 1) );
634  else if ( gateType == "Y" )
635  innerCreateGate( "yGate", &yGate_, e.id(), Id(e.id().value() + 2) );
636  else if ( gateType == "Z" )
637  innerCreateGate( "zGate", &zGate_, e.id(), Id(e.id().value() + 3) );
638  else
639  cout << "Warning: HHChannel2D::createGate: Unknown gate type '" <<
640  gateType << "'. Ignored\n";
641 }
Id id() const
Definition: Eref.cpp:62
HHGate2D * yGate_
Definition: HHChannel2D.h:200
std::string path(const std::string &separator="/") const
Definition: Id.cpp:76
unsigned int value() const
Definition: Id.cpp:197
HHGate2D * xGate_
Definition: HHChannel2D.h:199
HHGate2D * zGate_
HHGate2D for the yGate.
Definition: HHChannel2D.h:201
void innerCreateGate(const string &gateName, HHGate2D **gatePtr, Id chanId, Id gateId)
Inner utility function for creating the gate.
bool checkOriginal(Id chanId) const
Returns true if channel is original, false if copy.
Definition: Id.h:17

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int HHChannel2D::dependency ( string  index,
unsigned int  dim 
)
private

Definition at line 362 of file HHChannel2D.cpp.

Referenced by setXindex(), setYindex(), and setZindex().

363 {
364  static vector< map< string, int > > dep;
365  if ( dep.empty() ) {
366  dep.resize( 2 );
367 
368  dep[ 0 ][ "VOLT_INDEX" ] = 0;
369  dep[ 0 ][ "C1_INDEX" ] = 1;
370  dep[ 0 ][ "C2_INDEX" ] = 2;
371 
372  dep[ 0 ][ "VOLT_C1_INDEX" ] = 0;
373  dep[ 0 ][ "VOLT_C2_INDEX" ] = 0;
374  dep[ 0 ][ "C1_C2_INDEX" ] = 1;
375 
376  dep[ 1 ][ "VOLT_INDEX" ] = -1;
377  dep[ 1 ][ "C1_INDEX" ] = -1;
378  dep[ 1 ][ "C2_INDEX" ] = -1;
379 
380  dep[ 1 ][ "VOLT_C1_INDEX" ] = 1;
381  dep[ 1 ][ "VOLT_C2_INDEX" ] = 2;
382  dep[ 1 ][ "C1_C2_INDEX" ] = 2;
383  }
384 
385  if ( dep[ dim ].find( index ) == dep[ dim ].end() )
386  return -1;
387 
388  if ( dep[ dim ][ index ] == 0 )
389  return 0;
390  if ( dep[ dim ][ index ] == 1 )
391  return 1;
392  if ( dep[ dim ][ index ] == 2 )
393  return 2;
394 
395  return -1;
396 }

+ Here is the caller graph for this function:

double HHChannel2D::depValue ( int  dependency)
private

Definition at line 351 of file HHChannel2D.cpp.

References conc1_, conc2_, and ChanCommon::Vm_.

Referenced by vProcess(), and vReinit().

352 {
353  switch( dep )
354  {
355  case 0: return Vm_;
356  case 1: return conc1_;
357  case 2: return conc2_;
358  default: assert( 0 ); return 0.0;
359  }
360 }
double Vm_
Vm_ is input variable from compartment, used for most rates.
Definition: ChanCommon.h:80
double conc1_
Internal variable used to calculate conductance.
Definition: HHChannel2D.h:180
double conc2_
Definition: HHChannel2D.h:181

+ Here is the caller graph for this function:

void HHChannel2D::destroyGate ( const Eref e,
string  gateType 
)

Utility function for destroying gate. Works only on original HHChannel. Somewhat dangerous, should never be used after a copy has been made as the pointer of the gate will be in use elsewhere.

Definition at line 655 of file HHChannel2D.cpp.

References checkOriginal(), Eref::id(), innerDestroyGate(), Id::path(), xGate_, yGate_, and zGate_.

Referenced by setGatePower().

657 {
658  if ( !checkOriginal( e.id() ) ) {
659  cout << "Warning: HHChannel2D::destroyGate: Not allowed from copied channel:\n" << e.id().path() << "\n";
660  return;
661  }
662 
663  if ( gateType == "X" )
664  innerDestroyGate( "xGate", &xGate_, e.id() );
665  else if ( gateType == "Y" )
666  innerDestroyGate( "yGate", &yGate_, e.id() );
667  else if ( gateType == "Z" )
668  innerDestroyGate( "zGate", &zGate_, e.id() );
669  else
670  cout << "Warning: HHChannel2D::destroyGate: Unknown gate type '" <<
671  gateType << "'. Ignored\n";
672 }
Id id() const
Definition: Eref.cpp:62
HHGate2D * yGate_
Definition: HHChannel2D.h:200
std::string path(const std::string &separator="/") const
Definition: Id.cpp:76
HHGate2D * xGate_
Definition: HHChannel2D.h:199
void innerDestroyGate(const string &gateName, HHGate2D **gatePtr, Id chanId)
HHGate2D * zGate_
HHGate2D for the yGate.
Definition: HHChannel2D.h:201
bool checkOriginal(Id chanId) const
Returns true if channel is original, false if copy.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int HHChannel2D::getInstant ( ) const

Definition at line 228 of file HHChannel2D.cpp.

References instant_.

Referenced by initCinfo().

229 {
230  return instant_;
231 }
int instant_
Exponent for Z gate.
Definition: HHChannel2D.h:168

+ Here is the caller graph for this function:

unsigned int HHChannel2D::getNumXgates ( ) const

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

Definition at line 336 of file HHChannel2D.cpp.

References xGate_.

Referenced by initCinfo().

337 {
338  return ( xGate_ != 0 );
339 }
HHGate2D * xGate_
Definition: HHChannel2D.h:199

+ Here is the caller graph for this function:

unsigned int HHChannel2D::getNumYgates ( ) const

Returns 1 if Y gate present, otherwise 0.

Definition at line 341 of file HHChannel2D.cpp.

References yGate_.

Referenced by initCinfo().

342 {
343  return ( yGate_ != 0 );
344 }
HHGate2D * yGate_
Definition: HHChannel2D.h:200

+ Here is the caller graph for this function:

unsigned int HHChannel2D::getNumZgates ( ) const

Returns 1 if Z gate present, otherwise 0.

Definition at line 346 of file HHChannel2D.cpp.

References zGate_.

Referenced by initCinfo().

347 {
348  return ( zGate_ != 0 );
349 }
HHGate2D * zGate_
HHGate2D for the yGate.
Definition: HHChannel2D.h:201

+ Here is the caller graph for this function:

int HHChannel2D::getUseConcentration ( )
double HHChannel2D::getX ( ) const

Definition at line 238 of file HHChannel2D.cpp.

References X_.

Referenced by initCinfo().

239 {
240  return X_;
241 }

+ Here is the caller graph for this function:

HHGate2D * HHChannel2D::getXgate ( unsigned int  i)

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

Definition at line 318 of file HHChannel2D.cpp.

References xGate_.

Referenced by initCinfo().

319 {
320  return xGate_;
321 }
HHGate2D * xGate_
Definition: HHChannel2D.h:199

+ Here is the caller graph for this function:

string HHChannel2D::getXindex ( ) const

Definition at line 263 of file HHChannel2D.cpp.

References Xindex_.

Referenced by initCinfo().

264 {
265  return Xindex_;
266 }
string Xindex_
Definition: HHChannel2D.h:183

+ Here is the caller graph for this function:

double HHChannel2D::getXpower ( const Eref e) const

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 209 of file HHChannel2D.cpp.

References Xpower_.

Referenced by initCinfo().

210 {
211  return Xpower_;
212 }
double Xpower_
Definition: HHChannel2D.h:163

+ Here is the caller graph for this function:

double HHChannel2D::getY ( ) const

Definition at line 248 of file HHChannel2D.cpp.

References Y_.

Referenced by initCinfo().

249 {
250  return Y_;
251 }
double Y_
State variable for X gate.
Definition: HHChannel2D.h:170

+ Here is the caller graph for this function:

HHGate2D * HHChannel2D::getYgate ( unsigned int  i)

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

Definition at line 323 of file HHChannel2D.cpp.

References yGate_.

Referenced by initCinfo().

324 {
325  return yGate_;
326 }
HHGate2D * yGate_
Definition: HHChannel2D.h:200

+ Here is the caller graph for this function:

string HHChannel2D::getYindex ( ) const

Definition at line 280 of file HHChannel2D.cpp.

References Yindex_.

Referenced by initCinfo().

281 {
282  return Yindex_;
283 }
string Yindex_
Definition: HHChannel2D.h:184

+ Here is the caller graph for this function:

double HHChannel2D::getYpower ( const Eref e) const

Definition at line 214 of file HHChannel2D.cpp.

References Ypower_.

Referenced by initCinfo().

215 {
216  return Ypower_;
217 }
double Ypower_
Exponent for X gate.
Definition: HHChannel2D.h:164

+ Here is the caller graph for this function:

double HHChannel2D::getZ ( ) const

Definition at line 258 of file HHChannel2D.cpp.

References Z_.

Referenced by initCinfo().

259 {
260  return Z_;
261 }
double Z_
State variable for Y gate.
Definition: HHChannel2D.h:171

+ Here is the caller graph for this function:

HHGate2D * HHChannel2D::getZgate ( unsigned int  i)

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

Definition at line 328 of file HHChannel2D.cpp.

References zGate_.

Referenced by initCinfo().

329 {
330  return zGate_;
331 }
HHGate2D * zGate_
HHGate2D for the yGate.
Definition: HHChannel2D.h:201

+ Here is the caller graph for this function:

string HHChannel2D::getZindex ( ) const

Definition at line 297 of file HHChannel2D.cpp.

References Zindex_.

Referenced by initCinfo().

298 {
299  return Zindex_;
300 }
string Zindex_
Definition: HHChannel2D.h:185

+ Here is the caller graph for this function:

double HHChannel2D::getZpower ( const Eref e) const

Definition at line 219 of file HHChannel2D.cpp.

References Zpower_.

Referenced by initCinfo().

220 {
221  return Zpower_;
222 }
double Zpower_
Exponent for Y gate.
Definition: HHChannel2D.h:165

+ Here is the caller graph for this function:

const Cinfo * HHChannel2D::initCinfo ( )
static

Definition at line 23 of file HHChannel2D.cpp.

References conc1(), conc2(), getInstant(), getNumXgates(), getNumYgates(), getNumZgates(), getX(), getXgate(), getXindex(), getXpower(), getY(), getYgate(), getYindex(), getYpower(), getZ(), getZgate(), getZindex(), getZpower(), HHChannel2DCinfo, ChanBase::initCinfo(), HHGate2D::initCinfo(), setInstant(), setNumGates(), setX(), setXindex(), setXpower(), setY(), setYindex(), setYpower(), setZ(), setZindex(), and setZpower().

24 {
26  // Shared messages
29 // Field definitions
31  static ValueFinfo< HHChannel2D, string > Xindex( "Xindex",
32  "String for setting X index.",
35  );
36  static ValueFinfo< HHChannel2D, string > Yindex( "Yindex",
37  "String for setting Y index.",
40  );
41  static ValueFinfo< HHChannel2D, string > Zindex( "Zindex",
42  "String for setting Z index.",
45  );
46  static ElementValueFinfo< HHChannel2D, double > Xpower( "Xpower",
47  "Power for X gate",
50  );
51  static ElementValueFinfo< HHChannel2D, double > Ypower( "Ypower",
52  "Power for Y gate",
55  );
56  static ElementValueFinfo< HHChannel2D, double > Zpower( "Zpower",
57  "Power for Z gate",
60  );
61  static ValueFinfo< HHChannel2D, int > instant( "instant",
62  "Bitmapped flag: bit 0 = Xgate, bit 1 = Ygate, bit 2 = Zgate"
63  "When true, specifies that the lookup table value should be"
64  "used directly as the state of the channel, rather than used"
65  "as a rate term for numerical integration for the state",
68  );
70  "State variable for X gate",
73  );
75  "State variable for Y gate",
78  );
80  "State variable for Y gate",
83  );
84 
86 // MsgSrc definitions
88 
90 // MsgDest definitions
92  static DestFinfo concen( "concen",
93  "Incoming message from Concen object to specific conc to use"
94  "as the first concen variable",
96  );
97  static DestFinfo concen2( "concen2",
98  "Incoming message from Concen object to specific conc to use"
99  "as the second concen variable",
101  );
103 // FieldElementFinfo definition for HHGates. Note that these are made
104 // with the deferCreate flag off, so that the HHGates are created
105 // right away even if they are empty.
106 // I assume that we only have a single HHGate entry for each one.
108  static FieldElementFinfo< HHChannel2D, HHGate2D > gateX( "gateX",
109  "Sets up HHGate X for channel",
114  );
115  static FieldElementFinfo< HHChannel2D, HHGate2D > gateY( "gateY",
116  "Sets up HHGate Y for channel",
121  );
122  static FieldElementFinfo< HHChannel2D, HHGate2D > gateZ( "gateZ",
123  "Sets up HHGate Z for channel",
128  );
129  static Finfo* HHChannel2DFinfos[] =
130  {
131  &Xindex, // Value
132  &Yindex, // Value
133  &Zindex, // Value
134  &Xpower, // Value
135  &Ypower, // Value
136  &Zpower, // Value
137  &instant, // Value
138  &X, // Value
139  &Y, // Value
140  &Z, // Value
141  &concen, // Dest
142  &concen2, // Dest
143  &gateX, // FieldElement
144  &gateY, // FieldElement
145  &gateZ // FieldElement
146  };
147 
148  static string doc[] =
149  {
150  "Name", "HHChannel2D",
151  "Author", "Niraj Dudani, 2009, NCBS, Updated Upi Bhalla, 2011",
152  "Description", "HHChannel2D: Hodgkin-Huxley type voltage-gated Ion channel. Something "
153  "like the old tabchannel from GENESIS, but also presents "
154  "a similar interface as hhchan from GENESIS. ",
155  };
156 
157  static Dinfo< HHChannel2D > dinfo;
158  static Cinfo HHChannel2DCinfo(
159  "HHChannel2D",
161  HHChannel2DFinfos,
162  sizeof( HHChannel2DFinfos ) / sizeof(Finfo *),
163  &dinfo,
164  doc,
165  sizeof(doc) / sizeof(string)
166  );
167 
168  return &HHChannel2DCinfo;
169 }
void setZindex(string index)
double getZpower(const Eref &e) const
string getYindex() const
static const Cinfo * HHChannel2DCinfo
void setX(double X)
Definition: Dinfo.h:60
void setYpower(const Eref &e, double Ypower)
void setInstant(int Instant)
unsigned int getNumZgates() const
Returns 1 if Z gate present, otherwise 0.
void setZpower(const Eref &e, double Zpower)
void setXpower(const Eref &e, double Xpower)
double getYpower(const Eref &e) const
void setXindex(string index)
void setY(double Y)
int getInstant() const
void setYindex(string index)
void conc1(double conc)
double getZ() const
void setZ(double Z)
HHGate2D * getYgate(unsigned int i)
Access function used for the Y gate. The index is ignored.
Definition: OpFunc.h:27
unsigned int getNumXgates() const
string getZindex() const
unsigned int getNumYgates() const
Returns 1 if Y gate present, otherwise 0.
void setNumGates(unsigned int num)
Dummy assignment function for the number of gates.
void conc2(double conc)
HHGate2D * getZgate(unsigned int i)
Access function used for the Z gate. The index is ignored.
static const Cinfo * initCinfo()
Definition: HHGate2D.cpp:17
double getXpower(const Eref &e) const
HHGate2D * getXgate(unsigned int i)
Access function used for the X gate. The index is ignored.
double getY() const
string getXindex() 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
double getX() const

+ Here is the call graph for this function:

void HHChannel2D::innerCreateGate ( const string &  gateName,
HHGate2D **  gatePtr,
Id  chanId,
Id  gateId 
)

Inner utility function for creating the gate.

Definition at line 612 of file HHChannel2D.cpp.

References Id::path().

Referenced by createGate().

614 {
615  //Shell* shell = reinterpret_cast< Shell* >( ObjId( Id(), 0 ).data() );
616  if ( *gatePtr ) {
617  cout << "Warning: HHChannel2D::createGate: '" << gateName <<
618  "' on Element '" << chanId.path() << "' already present\n";
619  return;
620  }
621  *gatePtr = new HHGate2D( chanId, gateId );
622 }
std::string path(const std::string &separator="/") const
Definition: Id.cpp:76

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannel2D::innerDestroyGate ( const string &  gateName,
HHGate2D **  gatePtr,
Id  chanId 
)

Inner utility for destroying the gate

Definition at line 643 of file HHChannel2D.cpp.

References Id::path().

Referenced by destroyGate().

645 {
646  if ( *gatePtr == 0 ) {
647  cout << "Warning: HHChannel2D::destroyGate: '" << gateName <<
648  "' on Element '" << chanId.path() << "' not present\n";
649  return;
650  }
651  delete (*gatePtr);
652  *gatePtr = 0;
653 }
std::string path(const std::string &separator="/") const
Definition: Id.cpp:76

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double HHChannel2D::integrate ( double  state,
double  dt,
double  A,
double  B 
)
private

Returns the state variable for the new timestep based on the internal variables A_ and B_ which were passed in from the gate.

Definition at line 420 of file HHChannel2D.cpp.

References EPSILON.

Referenced by vProcess().

421 {
422  if ( B > EPSILON ) {
423  double x = exp( -B * dt );
424  return state * x + ( A / B ) * ( 1 - x );
425  }
426  return state + A * dt ;
427 }
static const double EPSILON
HHGate2D for the zGate.
Definition: HHChannel2D.h:203

+ Here is the caller graph for this function:

static double HHChannel2D::power1 ( double  x,
double  p 
)
inlinestaticprivate

Definition at line 208 of file HHChannel2D.h.

Referenced by selectPower().

208  {
209  return x;
210  }

+ Here is the caller graph for this function:

static double HHChannel2D::power2 ( double  x,
double  p 
)
inlinestaticprivate

Definition at line 211 of file HHChannel2D.h.

Referenced by power4(), and selectPower().

211  {
212  return x * x;
213  }

+ Here is the caller graph for this function:

static double HHChannel2D::power3 ( double  x,
double  p 
)
inlinestaticprivate

Definition at line 214 of file HHChannel2D.h.

Referenced by selectPower().

214  {
215  return x * x * x;
216  }

+ Here is the caller graph for this function:

static double HHChannel2D::power4 ( double  x,
double  p 
)
inlinestaticprivate

Definition at line 217 of file HHChannel2D.h.

References power2().

Referenced by selectPower().

217  {
218  return power2( x * x, p );
219  }
static double power2(double x, double p)
Definition: HHChannel2D.h:211

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double HHChannel2D::powerN ( double  x,
double  p 
)
staticprivate

Definition at line 674 of file HHChannel2D.cpp.

References moose::log().

Referenced by selectPower().

675 {
676  if ( x > 0.0 )
677  return exp( p * log( x ) );
678  return 0.0;
679 }
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 HHChannel2D::selectPower ( double  power)
static

Definition at line 681 of file HHChannel2D.cpp.

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

Referenced by setXpower(), setYpower(), and setZpower().

682 {
683  if ( power == 0.0 )
684  return powerN;
685  else if ( power == 1.0 )
686  return power1;
687  else if ( power == 2.0 )
688  return power2;
689  else if ( power == 3.0 )
690  return power3;
691  else if ( power == 4.0 )
692  return power4;
693  else
694  return powerN;
695 }
static double power1(double x, double p)
Definition: HHChannel2D.h:208
static double power4(double x, double p)
Definition: HHChannel2D.h:217
static double power2(double x, double p)
Definition: HHChannel2D.h:211
static double power3(double x, double p)
Definition: HHChannel2D.h:214
static double powerN(double x, double p)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool HHChannel2D::setGatePower ( const Eref e,
double  power,
double *  assignee,
const string &  gateType 
)

Utility for altering gate powers

Definition at line 535 of file HHChannel2D.cpp.

References createGate(), destroyGate(), and doubleEq().

Referenced by setXpower(), setYpower(), and setZpower().

537 {
538  if ( power < 0 ) {
539  cout << "Error: HHChannel2D::set" << gateType <<
540  "power: Cannot use negative power: " << power << endl;
541  return 0;
542  }
543 
544  if ( doubleEq( power, *assignee ) )
545  return 0;
546 
547  if ( doubleEq( *assignee, 0.0 ) && power > 0 ) {
548  createGate( e, gateType );
549  } else if ( doubleEq( power, 0.0 ) ) {
550  destroyGate( e, gateType );
551  }
552 
553  *assignee = power;
554  return 1;
555 }
bool doubleEq(double x, double y)
Definition: doubleEq.cpp:16
void createGate(const Eref &e, string gateType)
void destroyGate(const Eref &e, string gateType)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannel2D::setInstant ( int  Instant)

Definition at line 224 of file HHChannel2D.cpp.

References instant_.

Referenced by initCinfo().

225 {
226  instant_ = instant;
227 }
int instant_
Exponent for Z gate.
Definition: HHChannel2D.h:168

+ Here is the caller graph for this function:

void HHChannel2D::setNumGates ( unsigned int  num)

Dummy assignment function for the number of gates.

Definition at line 333 of file HHChannel2D.cpp.

Referenced by initCinfo().

334 { ; }

+ Here is the caller graph for this function:

void HHChannel2D::setUseConcentration ( int  value)
void HHChannel2D::setX ( double  X)

Definition at line 233 of file HHChannel2D.cpp.

References X_, and xInited_.

Referenced by initCinfo().

234 {
235  X_ = X;
236  xInited_ = true;
237 }
bool xInited_
State variable for Z gate.
Definition: HHChannel2D.h:176

+ Here is the caller graph for this function:

void HHChannel2D::setXindex ( string  index)

Definition at line 268 of file HHChannel2D.cpp.

References dependency(), Xdep0_, Xdep1_, and Xindex_.

Referenced by initCinfo().

269 {
270  if ( Xindex == Xindex_ )
271  return;
272 
273  Xindex_ = Xindex;
274  Xdep0_ = dependency( Xindex, 0 );
275  Xdep1_ = dependency( Xindex, 1 );
276 
277  assert( Xdep0_ >= 0 );
278 }
int dependency(string index, unsigned int dim)
string Xindex_
Definition: HHChannel2D.h:183

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannel2D::setXpower ( const Eref e,
double  Xpower 
)

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 563 of file HHChannel2D.cpp.

References selectPower(), setGatePower(), takeXpower_, and Xpower_.

Referenced by initCinfo().

564 {
565  if ( setGatePower( e, Xpower, &Xpower_, "X" ) )
566  takeXpower_ = selectPower( Xpower );
567 }
bool setGatePower(const Eref &e, double power, double *assignee, const string &gateType)
static PFDD selectPower(double power)
double Xpower_
Definition: HHChannel2D.h:163
double(* takeXpower_)(double, double)
Definition: HHChannel2D.h:113

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannel2D::setY ( double  Y)

Definition at line 243 of file HHChannel2D.cpp.

References Y_, and yInited_.

Referenced by initCinfo().

244 {
245  Y_ = Y;
246  yInited_ = true;
247 }
double Y_
State variable for X gate.
Definition: HHChannel2D.h:170

+ Here is the caller graph for this function:

void HHChannel2D::setYindex ( string  index)

Definition at line 285 of file HHChannel2D.cpp.

References dependency(), Ydep0_, Ydep1_, and Yindex_.

Referenced by initCinfo().

286 {
287  if ( Yindex == Yindex_ )
288  return;
289 
290  Yindex_ = Yindex;
291  Ydep0_ = dependency( Yindex, 0 );
292  Ydep1_ = dependency( Yindex, 1 );
293 
294  assert( Ydep0_ >= 0 );
295 }
int dependency(string index, unsigned int dim)
string Yindex_
Definition: HHChannel2D.h:184

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 569 of file HHChannel2D.cpp.

References selectPower(), setGatePower(), takeYpower_, and Ypower_.

Referenced by initCinfo().

570 {
571  if ( setGatePower( e, Ypower, &Ypower_, "Y" ) )
572  takeYpower_ = selectPower( Ypower );
573 }
bool setGatePower(const Eref &e, double power, double *assignee, const string &gateType)
double Ypower_
Exponent for X gate.
Definition: HHChannel2D.h:164
double(* takeYpower_)(double, double)
Definition: HHChannel2D.h:114
static PFDD selectPower(double power)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannel2D::setZ ( double  Z)

Definition at line 253 of file HHChannel2D.cpp.

References Z_, and zInited_.

Referenced by initCinfo().

254 {
255  Z_ = Z;
256  zInited_ = true;
257 }
double Z_
State variable for Y gate.
Definition: HHChannel2D.h:171

+ Here is the caller graph for this function:

void HHChannel2D::setZindex ( string  index)

Definition at line 302 of file HHChannel2D.cpp.

References dependency(), Zdep0_, Zdep1_, and Zindex_.

Referenced by initCinfo().

303 {
304  if ( Zindex == Zindex_ )
305  return;
306 
307  Zindex_ = Zindex;
308  Zdep0_ = dependency( Zindex, 0 );
309  Zdep1_ = dependency( Zindex, 1 );
310 
311  assert( Zdep0_ >= 0 );
312 }
int dependency(string index, unsigned int dim)
string Zindex_
Definition: HHChannel2D.h:185

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 575 of file HHChannel2D.cpp.

References selectPower(), setGatePower(), takeZpower_, and Zpower_.

Referenced by initCinfo().

576 {
577  if ( setGatePower( e, Zpower, &Zpower_, "Z" ) )
578  takeZpower_ = selectPower( Zpower );
579 }
bool setGatePower(const Eref &e, double power, double *assignee, const string &gateType)
double(* takeZpower_)(double, double)
Definition: HHChannel2D.h:115
static PFDD selectPower(double power)
double Zpower_
Exponent for Y gate.
Definition: HHChannel2D.h:165

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void HHChannel2D::vProcess ( const Eref e,
ProcPtr  p 
)
virtual

processFunc handles the update and calculations every clock tick. It first sends the request for evaluation of the gate variables to the respective gate objects and recieves their response immediately through a return message. This is done so that many channel instances can share the same gate lookup tables, but do so cleanly. Such messages should never go to a remote node. Then the function does its own little calculations to send back to the parent compartment through regular messages.

Implements ChanBase.

Definition at line 429 of file HHChannel2D.cpp.

References depValue(), ProcInfo::dt, g_, ChanBase::getGbar(), instant_, INSTANT_X, INSTANT_Y, INSTANT_Z, integrate(), HHGate2D::lookupBoth(), ChanCommon::sendProcessMsgs(), ChanBase::setGk(), takeXpower_, takeYpower_, takeZpower_, ChanCommon::updateIk(), ChanCommon::vGetModulation(), X_, Xdep0_, Xdep1_, xGate_, Xpower_, Y_, Ydep0_, Ydep1_, yGate_, Ypower_, Z_, Zdep0_, Zdep1_, zGate_, and Zpower_.

430 {
431  g_ += ChanBase::getGbar( e );
432  double A = 0;
433  double B = 0;
434  if ( Xpower_ > 0 ) {
435  xGate_->lookupBoth( depValue( Xdep0_ ), depValue( Xdep1_ ), &A, &B );
436  if ( instant_ & INSTANT_X )
437  X_ = A/B;
438  else
439  X_ = integrate( X_, info->dt, A, B );
440  g_ *= takeXpower_( X_, Xpower_ );
441  }
442 
443  if ( Ypower_ > 0 ) {
444  yGate_->lookupBoth( depValue( Ydep0_ ), depValue( Ydep1_ ), &A, &B );
445  if ( instant_ & INSTANT_Y )
446  Y_ = A/B;
447  else
448  Y_ = integrate( Y_, info->dt, A, B );
449 
450  g_ *= takeYpower_( Y_, Ypower_ );
451  }
452 
453  if ( Zpower_ > 0 ) {
454  zGate_->lookupBoth( depValue( Zdep0_ ), depValue( Zdep1_ ), &A, &B );
455  if ( instant_ & INSTANT_Z )
456  Z_ = A/B;
457  else
458  Z_ = integrate( Z_, info->dt, A, B );
459 
460  g_ *= takeZpower_( Z_, Zpower_ );
461  }
462 
463  ChanBase::setGk( e, g_ * vGetModulation( e ) );
464  updateIk();
465  // Gk_ = g_;
466  // Ik_ = ( Ek_ - Vm_ ) * g_;
467 
468  // Send out the relevant channel messages.
469  sendProcessMsgs( e, info );
470  g_ = 0.0;
471  }
static const int INSTANT_X
Definition: HHChannel2D.h:204
double depValue(int dependency)
HHGate2D * yGate_
Definition: HHChannel2D.h:200
double vGetModulation(const Eref &e) const
Definition: ChanCommon.cpp:49
int instant_
Exponent for Z gate.
Definition: HHChannel2D.h:168
double Y_
State variable for X gate.
Definition: HHChannel2D.h:170
double Ypower_
Exponent for X gate.
Definition: HHChannel2D.h:164
HHGate2D * xGate_
Definition: HHChannel2D.h:199
double(* takeZpower_)(double, double)
Definition: HHChannel2D.h:115
void updateIk()
Definition: ChanCommon.cpp:119
HHGate2D * zGate_
HHGate2D for the yGate.
Definition: HHChannel2D.h:201
double Z_
State variable for Y gate.
Definition: HHChannel2D.h:171
void setGk(const Eref &e, double Gk)
Definition: ChanBase.cpp:216
double(* takeYpower_)(double, double)
Definition: HHChannel2D.h:114
static const int INSTANT_Z
Definition: HHChannel2D.h:206
double integrate(double state, double dt, double A, double B)
void lookupBoth(double v, double c, double *A, double *B) const
Definition: HHGate2D.cpp:208
double Zpower_
Exponent for Y gate.
Definition: HHChannel2D.h:165
static const int INSTANT_Y
Definition: HHChannel2D.h:205
void sendProcessMsgs(const Eref &e, const ProcPtr info)
Definition: ChanCommon.cpp:100
double getGbar(const Eref &e) const
Definition: ChanBase.cpp:191
double Xpower_
Definition: HHChannel2D.h:163
double(* takeXpower_)(double, double)
Definition: HHChannel2D.h:113

+ Here is the call graph for this function:

void HHChannel2D::vReinit ( const Eref er,
ProcPtr  info 
)
virtual

Reinitializes the values for the channel. This involves computing the steady-state value for the channel gates using the provided Vm from the parent compartment. It involves a similar cycle through the gates and then updates to the parent compartment as for the processFunc.

Here we get the steady-state values for the gate (the 'instant' calculation) as A_/B_.

Implements ChanBase.

Definition at line 477 of file HHChannel2D.cpp.

References depValue(), Eref::element(), EPSILON, g_, ChanBase::getGbar(), Element::getName(), HHGate2D::lookupBoth(), ChanCommon::sendReinitMsgs(), ChanBase::setGk(), takeXpower_, takeYpower_, takeZpower_, ChanCommon::updateIk(), ChanCommon::vGetModulation(), X_, Xdep0_, Xdep1_, xGate_, xInited_, Xpower_, Y_, Ydep0_, Ydep1_, yGate_, yInited_, Ypower_, Z_, Zdep0_, Zdep1_, zGate_, zInited_, and Zpower_.

478  {
479  g_ = ChanBase::getGbar( er );
480  Element* e = er.element();
481 
482  double A = 0.0;
483  double B = 0.0;
484  if ( Xpower_ > 0 ) {
485  xGate_->lookupBoth( depValue( Xdep0_ ), depValue( Xdep1_ ), &A, &B );
486  if ( B < EPSILON ) {
487  cout << "Warning: B_ value for " << e->getName() <<
488  " is ~0. Check X table\n";
489  return;
490  }
491  if (!xInited_)
492  X_ = A/B;
493  g_ *= takeXpower_( X_, Xpower_ );
494  }
495 
496  if ( Ypower_ > 0 ) {
497  yGate_->lookupBoth( depValue( Ydep0_ ), depValue( Ydep1_ ), &A, &B );
498  if ( B < EPSILON ) {
499  cout << "Warning: B value for " << e->getName() <<
500  " is ~0. Check Y table\n";
501  return;
502  }
503  if (!yInited_)
504  Y_ = A/B;
505  g_ *= takeYpower_( Y_, Ypower_ );
506  }
507 
508  if ( Zpower_ > 0 ) {
509  zGate_->lookupBoth( depValue( Zdep0_ ), depValue( Zdep1_ ), &A, &B );
510  if ( B < EPSILON ) {
511  cout << "Warning: B value for " << e->getName() <<
512  " is ~0. Check Z table\n";
513  return;
514  }
515  if (!zInited_)
516  Z_ = A/B;
517  g_ *= takeZpower_( Z_, Zpower_ );
518  }
519 
520  ChanBase::setGk( er, g_ * vGetModulation( er ) );
521  updateIk();
522  // Gk_ = g_;
523  // Ik_ = ( Ek_ - Vm_ ) * g_;
524 
525  // Send out the relevant channel messages.
526  // Same for reinit as for process.
527  sendReinitMsgs( er, info );
528  g_ = 0.0;
529 }
static const double EPSILON
HHGate2D for the zGate.
Definition: HHChannel2D.h:203
bool xInited_
State variable for Z gate.
Definition: HHChannel2D.h:176
double depValue(int dependency)
HHGate2D * yGate_
Definition: HHChannel2D.h:200
double vGetModulation(const Eref &e) const
Definition: ChanCommon.cpp:49
double Y_
State variable for X gate.
Definition: HHChannel2D.h:170
double Ypower_
Exponent for X gate.
Definition: HHChannel2D.h:164
HHGate2D * xGate_
Definition: HHChannel2D.h:199
double(* takeZpower_)(double, double)
Definition: HHChannel2D.h:115
Element * element() const
Definition: Eref.h:42
void updateIk()
Definition: ChanCommon.cpp:119
HHGate2D * zGate_
HHGate2D for the yGate.
Definition: HHChannel2D.h:201
double Z_
State variable for Y gate.
Definition: HHChannel2D.h:171
void setGk(const Eref &e, double Gk)
Definition: ChanBase.cpp:216
double(* takeYpower_)(double, double)
Definition: HHChannel2D.h:114
void sendReinitMsgs(const Eref &e, const ProcPtr info)
Definition: ChanCommon.cpp:111
void lookupBoth(double v, double c, double *A, double *B) const
Definition: HHGate2D.cpp:208
double Zpower_
Exponent for Y gate.
Definition: HHChannel2D.h:165
const string & getName() const
Definition: Element.cpp:56
double getGbar(const Eref &e) const
Definition: ChanBase.cpp:191
double Xpower_
Definition: HHChannel2D.h:163
double(* takeXpower_)(double, double)
Definition: HHChannel2D.h:113

+ Here is the call graph for this function:

Member Data Documentation

double HHChannel2D::conc1_
private

Internal variable used to calculate conductance.

Definition at line 180 of file HHChannel2D.h.

Referenced by conc1(), and depValue().

double HHChannel2D::conc2_
private

Definition at line 181 of file HHChannel2D.h.

Referenced by conc2(), and depValue().

const double HHChannel2D::EPSILON = 1.0e-10
staticprivate

HHGate2D for the zGate.

Definition at line 203 of file HHChannel2D.h.

Referenced by integrate(), and vReinit().

double HHChannel2D::g_
private

Definition at line 178 of file HHChannel2D.h.

Referenced by vProcess(), and vReinit().

int HHChannel2D::instant_
private

Exponent for Z gate.

bitmapped flag for X, Y, Z, to do equil calculation for gate

Definition at line 168 of file HHChannel2D.h.

Referenced by getInstant(), setInstant(), and vProcess().

const int HHChannel2D::INSTANT_X = 1
staticprivate

Definition at line 204 of file HHChannel2D.h.

Referenced by vProcess().

const int HHChannel2D::INSTANT_Y = 2
staticprivate

Definition at line 205 of file HHChannel2D.h.

Referenced by vProcess().

const int HHChannel2D::INSTANT_Z = 4
staticprivate

Definition at line 206 of file HHChannel2D.h.

Referenced by vProcess().

double( * HHChannel2D::takeXpower_)(double, double)

Definition at line 113 of file HHChannel2D.h.

Referenced by setXpower(), vProcess(), and vReinit().

double( * HHChannel2D::takeYpower_)(double, double)

Definition at line 114 of file HHChannel2D.h.

Referenced by setYpower(), vProcess(), and vReinit().

double( * HHChannel2D::takeZpower_)(double, double)

Definition at line 115 of file HHChannel2D.h.

Referenced by setZpower(), vProcess(), and vReinit().

double HHChannel2D::X_
private

Definition at line 169 of file HHChannel2D.h.

Referenced by getX(), setX(), vProcess(), and vReinit().

int HHChannel2D::Xdep0_
private

Definition at line 187 of file HHChannel2D.h.

Referenced by setXindex(), vProcess(), and vReinit().

int HHChannel2D::Xdep1_
private

Definition at line 188 of file HHChannel2D.h.

Referenced by setXindex(), vProcess(), and vReinit().

HHGate2D* HHChannel2D::xGate_
private

HHGate2D data structure for the xGate. This is writable only on the HHChannel that originally created the HHGate, for others it must be treated as readonly.

Definition at line 199 of file HHChannel2D.h.

Referenced by checkOriginal(), createGate(), destroyGate(), getNumXgates(), getXgate(), vProcess(), and vReinit().

string HHChannel2D::Xindex_
private

Definition at line 183 of file HHChannel2D.h.

Referenced by getXindex(), and setXindex().

bool HHChannel2D::xInited_
private

State variable for Z gate.

true when the matching state variable has been initialized

Definition at line 176 of file HHChannel2D.h.

Referenced by setX(), and vReinit().

double HHChannel2D::Xpower_
private

Definition at line 163 of file HHChannel2D.h.

Referenced by getXpower(), setXpower(), vProcess(), and vReinit().

double HHChannel2D::Y_
private

State variable for X gate.

Definition at line 170 of file HHChannel2D.h.

Referenced by getY(), setY(), vProcess(), and vReinit().

int HHChannel2D::Ydep0_
private

Definition at line 189 of file HHChannel2D.h.

Referenced by setYindex(), vProcess(), and vReinit().

int HHChannel2D::Ydep1_
private

Definition at line 190 of file HHChannel2D.h.

Referenced by setYindex(), vProcess(), and vReinit().

HHGate2D* HHChannel2D::yGate_
private
string HHChannel2D::Yindex_
private

Definition at line 184 of file HHChannel2D.h.

Referenced by getYindex(), and setYindex().

bool HHChannel2D::yInited_
private

Definition at line 176 of file HHChannel2D.h.

Referenced by setY(), and vReinit().

double HHChannel2D::Ypower_
private

Exponent for X gate.

Definition at line 164 of file HHChannel2D.h.

Referenced by getYpower(), setYpower(), vProcess(), and vReinit().

double HHChannel2D::Z_
private

State variable for Y gate.

Definition at line 171 of file HHChannel2D.h.

Referenced by getZ(), setZ(), vProcess(), and vReinit().

int HHChannel2D::Zdep0_
private

Definition at line 191 of file HHChannel2D.h.

Referenced by setZindex(), vProcess(), and vReinit().

int HHChannel2D::Zdep1_
private

Definition at line 192 of file HHChannel2D.h.

Referenced by setZindex(), vProcess(), and vReinit().

HHGate2D* HHChannel2D::zGate_
private

HHGate2D for the yGate.

Definition at line 201 of file HHChannel2D.h.

Referenced by checkOriginal(), createGate(), destroyGate(), getNumZgates(), getZgate(), vProcess(), and vReinit().

string HHChannel2D::Zindex_
private

Definition at line 185 of file HHChannel2D.h.

Referenced by getZindex(), and setZindex().

bool HHChannel2D::zInited_
private

Definition at line 176 of file HHChannel2D.h.

Referenced by setZ(), and vReinit().

double HHChannel2D::Zpower_
private

Exponent for Y gate.

Definition at line 165 of file HHChannel2D.h.

Referenced by getZpower(), setZpower(), vProcess(), and vReinit().


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