23 "Calcium current portion of the total current carried by the NMDAR" );
54 "Temperature in degrees Kelvin.",
59 "External concentration of Calcium in millimolar",
64 "Internal concentration of Calcium in millimolar."
65 "This is the final value used by the internal calculations, "
66 "and may also be updated by the assignIntCa message after "
67 "offset and scaling.",
72 "Scale factor for internal concentration of Calcium in mM, "
73 "applied to values coming in through the assignIntCa message. "
74 "Required because in many models the units of calcium may "
80 "Offsetfor internal concentration of Calcium in mM, "
81 "applied _after_ the scaling to mM is done. "
82 "Applied to values coming in through the assignIntCa message. "
83 "Required because in many models the units of calcium may "
89 "Fraction of total channel conductance that is due to the "
90 "passage of Ca ions. This is related to the ratio of "
91 "permeabilities of different ions, and is typically in "
92 "the range of 0.02. This small fraction is largely because "
93 "the concentrations of Na and K ions are far larger than that "
94 "of Ca. Thus, even though the channel is more permeable to "
95 "Ca, the conductivity and hence current due to Ca is smaller. ",
100 "Current carried by Ca ions",
105 "Permeability. Alias for Gbar. Note that the mapping is not"
106 " really correct. Permeability is in units of m/s whereas "
107 "Gbar is 1/ohm. Some nasty scaling is involved in the "
108 "conversion, some of which itself involves concentration "
109 "variables. Done internally. ",
115 "Assign the internal concentration of Ca. The final value "
117 " intCa = assignIntCa * intCaScale + intCaOffset ",
121 static Finfo* NMDAChanFinfos[] =
138 static string doc[] =
141 "Author",
"Upinder S. Bhalla, 2007, NCBS",
142 "Description",
"NMDAChan: Ligand-gated ion channel incorporating "
143 "both the Mg block and a GHK calculation for Calcium "
144 "component of the current carried by the channel. "
145 "Assumes a steady reversal potential regardless of "
147 "Derived from SynChan. "
154 sizeof( NMDAChanFinfos )/
sizeof(
Finfo *),
157 sizeof( doc ) /
sizeof(
string )
178 condFraction_( 0.02 ),
193 cout <<
"Error: KMg_A=" << KMg_A <<
" must be > 0. Not set.\n";
205 cout <<
"Error: KMg_B=" << KMg_B <<
" must be > 0. Not set.\n";
217 cout <<
"Error: CMg = " << CMg <<
" must be > 0. Not set.\n";
230 cout <<
"Error: Cout = " << Cout <<
" must be > 0. Not set.\n";
243 cout <<
"Error: IntCa = " << Cin <<
" must be > 0. Not set.\n";
296 cout <<
"Error: temperature = " << temperature <<
" must be > 0. Not set.\n";
337 Gk *= KMg / (KMg +
CMg_);
435 double e2e = exp( -exponent );
436 if ( fabs( exponent) < 0.00001 ) {
438 ( (
Cin_ -
Cout_ ) * (1 - 0.5 * exponent ) );
453 cout <<
"Error: NMDAChan::innerReinitFunc: fields KMg_A, KMg_B, CMg\nmust be greater than zero. Resetting to 1 to avoid numerical errors\n";
static const Cinfo * initCinfo()
void setIntCaOffset(double v)
void setCondFraction(double v)
void vReinit(const Eref &e, ProcPtr p)
static const Cinfo * initCinfo()
double getIntCaOffset() const
double getTemperature() const
double getExtCa() const
Set external conc.
const double FaradayConst
SrcFinfo1< double > * ICaOut()
void setExtCa(double conc)
void log(string msg, serverity_level_ type=debug, bool redirectToConsole=true, bool removeTicks=true)
Log to console (and to a log-file)
void setGk(const Eref &e, double Gk)
static SrcFinfo1< double > * permeability()
double getCondFraction() const
void setIntCaScale(double v)
double getIntCaScale() const
double Vm_
Vm_ is input variable from compartment, used for most rates.
double calcGk()
Update alpha function terms for synaptic channel.
void assignIntCa(double v)
void setIntCa(double conc)
void setKMg_A(double Gbar)
double getIntCa() const
Set external conc.
void sendReinitMsgs(const Eref &e, const ProcPtr info)
void setGbar(const Eref &e, double Gbar)
void vReinit(const Eref &e, ProcPtr p)
static const Cinfo * NMDAChanCinfo
void sendProcessMsgs(const Eref &e, const ProcPtr info)
double getGbar(const Eref &e) const
static const double valency_
void setTemperature(double temperature)
void vProcess(const Eref &e, ProcPtr p)