MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
ConcChan.cpp
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-2010 Upinder S. Bhalla. 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 #include "header.h"
11 #include "ConcChan.h"
12 
15  "inPoolOut",
16  "Sends out increment to molecules on inside of membrane"
17  );
18  return &inPoolOut;
19 }
20 
23  "outPoolOut",
24  "Sends out increment to molecules on outside of membrane"
25  );
26  return &outPoolOut;
27 }
28 
30 {
32  // Field Definitions
34  static ValueFinfo< ConcChan, double > permeability(
35  "permeability",
36  "Permability, in units of vol/(#s) i.e., 1/(numconc.s) "
37  "Flux (#/s) = permeability * N * (#out/vol_out - #in/vol_in)",
40  );
41  static ValueFinfo< ConcChan, double > numChan(
42  "numChan",
43  "numChan is the number of molecules of the channel.",
46  );
48  "flux",
49  "Flux of molecules through channel, in units of #/s ",
51  );
52 
54  // MsgDest Definitions
56  static DestFinfo process( "process",
57  "Handles process call",
59  static DestFinfo reinit( "reinit",
60  "Handles reinit call",
62 
64  // Shared Msg Definitions
66 
67  static DestFinfo inPool( "inPool",
68  "Handles # of molecules of pool inside membrane",
70  static DestFinfo outPool( "outPool",
71  "Handles # of molecules of pool outside membrane",
73  static Finfo* inShared[] = {
74  inPoolOut(), &inPool
75  };
76  static Finfo* outShared[] = {
77  outPoolOut(), &outPool
78  };
79  static SharedFinfo in( "in",
80  "Connects to pool on inside",
81  inShared, sizeof( inShared ) / sizeof( const Finfo* )
82  );
83  static SharedFinfo out( "out",
84  "Connects to pool on outside",
85  outShared, sizeof( outShared ) / sizeof( const Finfo* )
86  );
87  static Finfo* procShared[] = {
88  &process, &reinit
89  };
90  static SharedFinfo proc( "proc",
91  "Shared message for process and reinit",
92  procShared, sizeof( procShared ) / sizeof( const Finfo* )
93  );
94 
95 
96  static Finfo* concChanFinfos[] = {
97  &permeability, // Value
98  &numChan, // Value
99  &flux, // ReadOnlyValue
100  &in, // SharedFinfo
101  &out, // SharedFinfo
102  &proc, // SharedFinfo
103  };
104 
105  static string doc[] =
106  {
107  "Name", "ConcChan",
108  "Author", "Upinder S. Bhalla, 2018, NCBS",
109  "Description", "Channel for molecular flow between cellular "
110  "compartments. Need not be ions, and the flux is not a current, "
111  "but number of molecules/sec. ",
112  };
113 
114  static Dinfo< ConcChan > dinfo;
115  static Cinfo concChanCinfo (
116  "ConcChan",
118  concChanFinfos,
119  sizeof( concChanFinfos ) / sizeof ( Finfo* ),
120  &dinfo,
121  doc,
122  sizeof( doc ) / sizeof( string )
123  );
124 
125  return &concChanCinfo;
126 }
127 
129 
131 // ConcChan internal functions
133 
134 
136  : permeability_( 0.1 ),
137  n_( 0.0 ),
138  flux_( 0.0 ),
139  charge_( 0.0 ),
140  Vm_( 0.0 )
141 {
142  ;
143 }
144 
146 {;}
147 
149 // MsgDest Definitions
151 
152 
153 void ConcChan::process( const Eref& e, ProcPtr p )
154 {
155 }
156 
157 void ConcChan::reinit( const Eref& e, ProcPtr p )
158 {
159 }
160 
161 void ConcChan::inPool( double conc )
162 {
163 }
164 
165 void ConcChan::outPool( double conc )
166 {
167 }
168 
170 // Field Definitions
172 
174 {
175  permeability_ = v;
176 }
177 
179 {
180  return permeability_;
181 }
182 
183 void ConcChan::setNumChan( double v )
184 {
185  n_ = v;
186 }
187 
188 double ConcChan::getNumChan() const
189 {
190  return n_;
191 }
192 
193 double ConcChan::getFlux() const
194 {
195  return flux_;
196 }
197 
199 // Utility function
201 double ConcChan::flux( double inConc, double outConc, double dt )
202 {
203  return permeability_ * n_ * ( outConc - inConc ) * dt;
204  // Later add stuff for voltage dependence.
205  // Also use exp Euler
206 }
double getFlux() const
Definition: ConcChan.cpp:193
Definition: Dinfo.h:60
void inPool(double conc)
Definition: ConcChan.cpp:161
double getPermeability() const
Definition: ConcChan.cpp:178
void setNumChan(double v)
Definition: ConcChan.cpp:183
static SrcFinfo2< double, double > * inPoolOut()
Definition: ConcChan.cpp:13
double flux(double inConc, double outConc, double dt)
Definition: ConcChan.cpp:201
void outPool(double conc)
Definition: ConcChan.cpp:165
double flux_
Number of molecules of channel.
Definition: ConcChan.h:47
Definition: OpFunc.h:27
Definition: Eref.h:26
void process(const Eref &e, ProcPtr p)
Definition: ConcChan.cpp:153
void setPermeability(double v)
Definition: ConcChan.cpp:173
static const Cinfo * initCinfo()
Definition: Neutral.cpp:16
static SrcFinfo2< double, double > * outPoolOut()
Definition: ConcChan.cpp:21
double permeability_
Definition: ConcChan.h:45
static const Cinfo * concChanCinfo
Definition: ConcChan.cpp:128
static const Cinfo * initCinfo()
Definition: ConcChan.cpp:29
void reinit(const Eref &e, ProcPtr p)
Definition: ConcChan.cpp:157
Definition: Cinfo.h:18
double n_
permeability in vol/(#.s) units.
Definition: ConcChan.h:46
Definition: Finfo.h:12
double getNumChan() const
Definition: ConcChan.cpp:188