MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
HHGate.h
Go to the documentation of this file.
1 #ifndef _HHGate_h
2 #define _HHGate_h
3 /**********************************************************************
4 ** This program is part of 'MOOSE', the
5 ** Messaging Object Oriented Simulation Environment.
6 ** copyright (C) 2003-2011 Upinder S. Bhalla. and NCBS
7 ** It is made available under the terms of the
8 ** GNU Lesser General Public License version 2.1
9 ** See the file COPYING.LIB for the full notice.
10 **********************************************************************/
11 
31 class HHGate
32 {
33  friend void testHHGateLookup();
34  friend void testHHGateSetup();
35  public:
39  HHGate();
40 
47  HHGate( Id originalChanId, Id originalGateId );
48 
50  // LookupValueFinfos
52 
61  double lookupA( double v ) const;
62 
66  double lookupB( double v ) const;
67 
69  // Field functions
71  void setAlpha( const Eref& e, vector< double > val);
72  vector< double > getAlpha( const Eref& e) const;
73  void setBeta( const Eref& e, vector< double > val );
74  vector< double > getBeta( const Eref& e) const;
75  void setTau( const Eref& e, vector< double > val );
76  vector< double > getTau( const Eref& e) const;
77  void setMinfinity( const Eref& e,
78  vector< double > val );
79  vector< double > getMinfinity( const Eref& e) const;
80 
81  void setMin( const Eref& e, double val );
82  double getMin( const Eref& e) const;
83  void setMax( const Eref& e, double val );
84  double getMax( const Eref& e) const;
85  void setDivs( const Eref& e, unsigned int val );
86  unsigned int getDivs( const Eref& e) const;
87 
88  void setTableA( const Eref& e, vector< double > v);
89  vector< double > getTableA( const Eref& e) const;
90 
91  void setTableB( const Eref& e, vector< double > v);
92  vector< double > getTableB( const Eref& e) const;
93 
94  void setUseInterpolation( const Eref& e, bool val );
95  bool getUseInterpolation( const Eref& e) const;
96 
97  void setupAlpha( const Eref& e, vector< double > parms );
98  vector< double > getAlphaParms( const Eref& e ) const;
99 
101  // DestFinfos
103  void setupTau( const Eref& e,
104  vector< double > parms );
105  void tweakAlpha();
106  void tweakTau();
107  void setupGate( const Eref& e,
108  vector< double > parms );
109  void setupTables( const vector< double >& parms, bool doTau );
110  void tweakTables( bool doTau );
111 
115  void lookupBoth( double v, double* A, double* B ) const;
116 
117 
119  // Utility funcs
121 
124  double lookupTable( const vector< double >& tab, double v ) const;
125 
131  bool checkOriginal( Id id, const string& field ) const;
132 
137  bool isOriginalChannel( Id id ) const;
138 
143  bool isOriginalGate( Id id ) const;
144 
148  Id originalChannelId() const;
149 
153  Id originalGateId() const;
154 
163  void tabFill( vector< double >& table,
164  unsigned int newXdivs, double newXmin, double newXmax );
165 
170  void updateTauMinf();
171 
176  void updateAlphaBeta();
177 
182  void updateTables();
183 
184  static const Cinfo* initCinfo();
185  private:
187  vector< double > alpha_;
188 
190  vector< double > beta_;
191 
193  vector< double > tau_;
194 
196  vector< double > mInfinity_;
197 
199  vector< double > A_;
200 
202  vector< double > B_;
203 
205  double xmin_;
206 
208  double xmax_;
209 
211  double invDx_;
212 
218 
225 
231 
239 };
240 
241 #endif // _HHGate_h
vector< double > getTableB(const Eref &e) const
Definition: HHGate.cpp:463
vector< double > beta_
5 parameters for beta
Definition: HHGate.h:190
double getMin(const Eref &e) const
Definition: HHGate.cpp:378
Definition: HHGate.h:31
Id originalGateId_
Definition: HHGate.h:224
void setBeta(const Eref &e, vector< double > val)
Definition: HHGate.cpp:323
void setTableA(const Eref &e, vector< double > v)
Definition: HHGate.cpp:448
Id originalGateId() const
Definition: HHGate.cpp:801
void setUseInterpolation(const Eref &e, bool val)
Definition: HHGate.cpp:485
vector< double > getAlpha(const Eref &e) const
Definition: HHGate.cpp:298
friend void testHHGateLookup()
double lookupA(double v) const
Definition: HHGate.cpp:265
double lookupB(double v) const
Definition: HHGate.cpp:270
vector< double > tau_
5 parameters for tau
Definition: HHGate.h:193
void tabFill(vector< double > &table, unsigned int newXdivs, double newXmin, double newXmax)
Definition: HHGate.cpp:755
void setTau(const Eref &e, vector< double > val)
Definition: HHGate.cpp:343
void setupTau(const Eref &e, vector< double > parms)
Definition: HHGate.cpp:524
vector< double > A_
The actual lookup table for calculations. Holds alpha(V).
Definition: HHGate.h:199
vector< double > getTau(const Eref &e) const
Definition: HHGate.cpp:338
vector< double > B_
The lookup table for calculations. Holds alpha(V) + beta(V).
Definition: HHGate.h:202
vector< double > getBeta(const Eref &e) const
Definition: HHGate.cpp:318
void updateAlphaBeta()
Definition: HHGate.cpp:806
double lookupTable(const vector< double > &tab, double v) const
Definition: HHGate.cpp:250
void lookupBoth(double v, double *A, double *B) const
Definition: HHGate.cpp:275
void tweakTau()
Definition: HHGate.cpp:541
void tweakAlpha()
Definition: HHGate.cpp:536
unsigned int getDivs(const Eref &e) const
Definition: HHGate.cpp:421
friend void testHHGateSetup()
bool isDirectTable_
Definition: HHGate.h:238
vector< double > getMinfinity(const Eref &e) const
Definition: HHGate.cpp:358
vector< double > mInfinity_
5 parameters for mInfinity
Definition: HHGate.h:196
void updateTauMinf()
Definition: HHGate.cpp:810
static const Cinfo * initCinfo()
Definition: HHGate.cpp:16
void setMax(const Eref &e, double val)
Definition: HHGate.cpp:404
bool isOriginalGate(Id id) const
Definition: HHGate.cpp:791
Definition: Eref.h:26
void tweakTables(bool doTau)
Definition: HHGate.cpp:650
void setMin(const Eref &e, double val)
Definition: HHGate.cpp:383
vector< double > getAlphaParms(const Eref &e) const
Definition: HHGate.cpp:509
void setDivs(const Eref &e, unsigned int val)
Definition: HHGate.cpp:426
void updateTables()
Definition: HHGate.cpp:814
void setupAlpha(const Eref &e, vector< double > parms)
Definition: HHGate.cpp:491
vector< double > getTableA(const Eref &e) const
Definition: HHGate.cpp:443
double xmax_
Max of the voltage (or conc) range.
Definition: HHGate.h:208
void setupGate(const Eref &e, vector< double > parms)
Definition: HHGate.cpp:674
bool checkOriginal(Id id, const string &field) const
Definition: HHGate.cpp:776
void setTableB(const Eref &e, vector< double > v)
Definition: HHGate.cpp:468
Id originalChannelId() const
Definition: HHGate.cpp:796
bool getUseInterpolation(const Eref &e) const
Definition: HHGate.cpp:480
Definition: Id.h:17
void setAlpha(const Eref &e, vector< double > val)
Definition: HHGate.cpp:303
bool lookupByInterpolation_
Definition: HHGate.h:230
void setMinfinity(const Eref &e, vector< double > val)
Definition: HHGate.cpp:363
double xmin_
Minimum of the voltage (or conc) range.
Definition: HHGate.h:205
double invDx_
increment of the range.
Definition: HHGate.h:211
vector< double > alpha_
5 parameters for alpha
Definition: HHGate.h:187
void setupTables(const vector< double > &parms, bool doTau)
Definition: HHGate.cpp:551
Definition: Cinfo.h:18
double getMax(const Eref &e) const
Definition: HHGate.cpp:399
bool isOriginalChannel(Id id) const
Definition: HHGate.cpp:786
HHGate()
Definition: HHGate.cpp:227
Id originalChanId_
Definition: HHGate.h:217