MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
HSolveActive.h
Go to the documentation of this file.
1 /**********************************************************************
2 ** This program is part of 'MOOSE', the
3 ** Messaging Object Oriented Simulation Environment.
4 ** copyright (C) 2003-2007 Upinder S. Bhalla, Niraj Dudani and NCBS
5 ** It is made available under the terms of the
6 ** GNU Lesser General Public License version 2.1
7 ** See the file COPYING.LIB for the full notice.
8 **********************************************************************/
9 
10 #ifndef _HSOLVE_ACTIVE_H
11 #define _HSOLVE_ACTIVE_H
12 
13 #include "../basecode/header.h"
14 #include <set>
15 #include <limits> // Max and min 'double' values needed for lookup table init.
16 #include "../biophysics/CaConcBase.h"
17 #include "../biophysics/HHGate.h"
18 #include "../biophysics/ChanBase.h"
19 #include "../biophysics/ChanCommon.h"
20 #include "../biophysics/HHChannelBase.h"
21 #include "../biophysics/HHChannel.h"
22 #include "../biophysics/SpikeGen.h"
23 #include "HSolveUtils.h"
24 #include "HSolveStruct.h"
25 #include "HinesMatrix.h"
26 #include "HSolvePassive.h"
27 #include "RateLookup.h"
28 
30 {
31  typedef vector< CurrentStruct >::iterator currentVecIter;
32 
33 public:
34  HSolveActive();
35 
36  void setup( Id seed, double dt );
37  void step( ProcPtr info );
38  void reinit( ProcPtr info );
39 
40 protected:
54 
63  double vMin_;
64  double vMax_;
65  int vDiv_;
66  double caMin_;
67  double caMax_;
68  int caDiv_;
69 
73  vector< CurrentStruct > current_;
74  vector< double > state_;
75  //~ vector< int > instant_;
76  vector< ChannelStruct > channel_;
77  vector< SpikeGenStruct > spikegen_;
79  vector< SynChanStruct > synchan_;
80  vector< CaConcStruct > caConc_;
81  vector< double > ca_;
82  vector< double > caActivation_;
83  vector< double* > caTarget_;
89  vector< bool > gCaDepend_;
90  vector< unsigned int > caCount_;
92  vector< int > caDependIndex_;
94  vector< LookupColumn > column_;
96  vector< LookupRow > caRowCompt_;
104  vector< LookupRow* > caRow_;
109  vector< int > channelCount_;
110  vector< currentVecIter > currentBoundary_;
112  vector< unsigned int > chan2compt_;
115  vector< unsigned int > chan2state_;
118  vector< double > externalCurrent_;
120  vector< double > externalCalcium_;
123  vector< Id > caConcId_;
124  vector< Id > channelId_;
125  vector< Id > gateId_;
126  //~ vector< vector< Id > > externalChannelId_;
127  vector< unsigned int > outVm_;
131  vector< unsigned int > outCa_;
135  vector< unsigned int > outIk_;
136 
137 private:
141  void readHHChannels();
142  void readGates();
143  void readCalcium();
144  void readSynapses();
145  void readExternalChannels();
146  void createLookupTables();
147  void manageOutgoingMessages();
148 
149  void cleanup();
150 
154  void reinitSpikeGens( ProcPtr info );
155  void reinitCompartments();
156  void reinitCalcium();
157  void reinitChannels();
158 
163  void updateMatrix();
164  void forwardEliminate();
165  void backwardSubstitute();
166  void advanceCalcium();
167  void advanceChannels( double dt );
168  void advanceSynChans( ProcPtr info );
169  void sendSpikes( ProcPtr info );
170  void sendValues( ProcPtr info );
171 
172  static const int INSTANT_X;
173  static const int INSTANT_Y;
174  static const int INSTANT_Z;
175 };
176 
177 #endif // _HSOLVE_ACTIVE_H
vector< double > state_
Fraction of gates open.
Definition: HSolveActive.h:74
static const int INSTANT_X
Definition: HSolveActive.h:172
vector< unsigned int > chan2state_
a state index
Definition: HSolveActive.h:117
vector< CurrentStruct >::iterator currentVecIter
Definition: HSolveActive.h:31
vector< unsigned int > outCa_
Definition: HSolveActive.h:131
vector< LookupRow > caRowCompt_
Definition: HSolveActive.h:97
vector< double > ca_
Ca conc in each pool.
Definition: HSolveActive.h:81
static const int INSTANT_Z
Definition: HSolveActive.h:174
vector< double > caActivation_
calcium pool
Definition: HSolveActive.h:82
vector< bool > gCaDepend_
depend on Ca conc?
Definition: HSolveActive.h:89
vector< unsigned int > outVm_
Definition: HSolveActive.h:127
LookupTable caTable_
Definition: HSolveActive.h:88
vector< ChannelStruct > channel_
to compartment: chan2compt
Definition: HSolveActive.h:76
vector< int > channelCount_
compartment
Definition: HSolveActive.h:109
void sendValues(ProcPtr info)
vector< int > caDependIndex_
depdt channel depend upon?
Definition: HSolveActive.h:93
void setup(Id seed, double dt)
void reinit(ProcPtr info)
void advanceSynChans(ProcPtr info)
vector< Id > gateId_
Used for localIndex-ing.
Definition: HSolveActive.h:125
void advanceChannels(double dt)
vector< double * > caTarget_
Definition: HSolveActive.h:84
void sendSpikes(ProcPtr info)
vector< CaConcStruct > caConc_
Ca pool info.
Definition: HSolveActive.h:80
void backwardSubstitute()
double vMin_
Definition: HSolveActive.h:63
void reinitSpikeGens(ProcPtr info)
vector< LookupRow * > caRow_
Definition: HSolveActive.h:104
LookupTable vTable_
Definition: HSolveActive.h:87
vector< double > externalCalcium_
Definition: HSolveActive.h:122
vector< currentVecIter > currentBoundary_
Definition: HSolveActive.h:111
vector< unsigned int > chan2compt_
Definition: HSolveActive.h:114
double caMin_
Definition: HSolveActive.h:66
double caMax_
Definition: HSolveActive.h:67
static const int INSTANT_Y
Definition: HSolveActive.h:173
void advanceCalcium()
void manageOutgoingMessages()
void step(ProcPtr info)
Equivalent to process.
vector< double > externalCurrent_
Definition: HSolveActive.h:119
vector< SynChanStruct > synchan_
Definition: HSolveActive.h:79
vector< SpikeGenStruct > spikegen_
Definition: HSolveActive.h:78
Definition: Id.h:17
void calculateChannelCurrents()
vector< unsigned int > outIk_
Definition: HSolveActive.h:135
vector< Id > channelId_
Used for localIndex-ing.
Definition: HSolveActive.h:124
vector< unsigned int > caCount_
each compartment
Definition: HSolveActive.h:91
vector< CurrentStruct > current_
Channel current.
Definition: HSolveActive.h:73
vector< LookupColumn > column_
to lookup for this species
Definition: HSolveActive.h:95
vector< Id > caConcId_
calcium from difshells
Definition: HSolveActive.h:123
void forwardEliminate()
double vMax_
Definition: HSolveActive.h:64
void updateMatrix()