27 "Concentration of Ca in pool" );
37 "Handles process call",
40 "Handles reinit call",
43 static Finfo* processShared[] =
49 "Shared message to receive Process message from scheduler",
50 processShared,
sizeof( processShared ) /
sizeof(
Finfo* ) );
56 "Calcium concentration.",
61 "Basal Calcium concentration.",
66 "Basal Calcium concentration, synonym for CaBasal",
71 "Settling time for Ca concentration",
76 "Volume scaling factor. "
77 "Deprecated. This is a legacy field from GENESIS and exposes "
78 "internal calculations. Please do not use. \n"
79 "B = 1/(vol * F) so that it obeys:\n"
80 "dC/dt = B*I_Ca - C/tau",
85 "Thickness of Ca shell, assumed cylindrical. Legal range is between 0 \n"
86 "and the radius. If outside this range it is taken as the radius. \n"
87 " Default zero, ie, the shell is the entire thickness of the cylinder \n",
92 "Length of Ca shell, assumed cylindrical",
97 "Diameter of Ca shell, assumed cylindrical",
102 "Ceiling value for Ca concentration. If Ca > ceiling, Ca = ceiling. \n"
103 "If ceiling <= 0.0, there is no upper limit on Ca concentration value.",
108 "Floor value for Ca concentration. If Ca < floor, Ca = floor",
118 "Calcium Ion current, due to be converted to conc.",
123 "Fraction of total Ion current, that is carried by Ca2+.",
128 "Any input current that increases the concentration.",
133 "Any input current that decreases the concentration.",
138 "Synonym for assignment of basal conc.",
142 static Finfo* CaConcBaseFinfos[] =
166 static string doc[] =
168 "Name",
"CaConcBase",
169 "Author",
"Upinder S. Bhalla, 2014, NCBS",
171 "CaConcBase: Base class for Calcium concentration pool. \n"
172 "Takes current from a channel and keeps track of calcium buildup and \n"
173 " depletion by a single exponential process. ",
178 static Cinfo CaConcBaseCinfo(
182 sizeof( CaConcBaseFinfos )/
sizeof(
Finfo *),
185 sizeof(doc)/
sizeof(
string)
188 return &CaConcBaseCinfo;
261 vol -=
PI * coreRadius * coreRadius *
length_;
346 if ( orig->
cinfo() == zClass )
352 vector< double > data( num * 9 );
355 for (
unsigned int i = 0; i < num; ++i ) {
356 Eref er( orig, i + start );
359 data[j + 0] = cb->
getCa( er );
361 data[j + 2] = cb->
getTau( er );
362 data[j + 3] = cb->
getB( er );
372 for (
unsigned int i = 0; i < num; ++i ) {
373 Eref er( orig, i + start );
376 cb->
setCa( er, data[j + 0] );
378 cb->
setTau( er, data[j + 2] );
379 cb->
setB( er, data[j + 3] );
void increase(const Eref &e, double I)
double getLength(const Eref &e) const
virtual void vSetFloor(const Eref &e, double val)=0
void setDiameter(const Eref &e, double val)
double getCa(const Eref &e) const
static const Cinfo * caConcCinfo
virtual void vSetCeiling(const Eref &e, double val)=0
double getThickness(const Eref &e) const
void currentFraction(const Eref &e, double I, double fraction)
virtual void vProcess(const Eref &, ProcPtr info)=0
virtual void vSetSolver(const Eref &e, Id hsolve)
Used to set up the solver. Dummy for regular classes.
double getTau(const Eref &e) const
virtual double vGetCa(const Eref &e) const =0
virtual void vSetCaBasal(const Eref &e, double val)=0
void setTau(const Eref &e, double val)
void setCa(const Eref &e, double val)
virtual void zombieSwap(const Cinfo *zCinfo)
virtual func, this base version must be called by all derived classes
const double FaradayConst
static void zombify(Element *orig, const Cinfo *zClass, Id hsolve)
virtual double vGetCaBasal(const Eref &e) const =0
virtual double vGetFloor(const Eref &e) const =0
virtual double vGetB(const Eref &e) const =0
double getDiameter(const Eref &e) const
void updateDimensions(const Eref &e)
static SrcFinfo1< double > * concOut()
virtual double vGetCeiling(const Eref &e) const =0
double getCaBasal(const Eref &e) const
double getFloor(const Eref &e) const
virtual void vSetCa(const Eref &e, double val)=0
void setCaBasal(const Eref &e, double val)
void setFloor(const Eref &e, double val)
void setCeiling(const Eref &e, double val)
virtual void vSetTau(const Eref &e, double val)=0
virtual void vIncrease(const Eref &e, double I)=0
void setLength(const Eref &e, double val)
const Cinfo * cinfo() const
virtual void vDecrease(const Eref &e, double I)=0
static const Cinfo * initCinfo()
virtual unsigned int localDataStart() const =0
Returns index of first data entry on this node.
virtual unsigned int numLocalData() const =0
Returns number of local data entries on this node.
double getCeiling(const Eref &e) const
virtual void vCurrent(const Eref &e, double I)=0
virtual void vCurrentFraction(const Eref &e, double I, double fraction)=0
void current(const Eref &e, double I)
void setB(const Eref &e, double val)
void reinit(const Eref &, ProcPtr info)
virtual double vGetTau(const Eref &e) const =0
double getB(const Eref &e) const
static const Cinfo * initCinfo()
void setThickness(const Eref &e, double val)
virtual void vReinit(const Eref &, ProcPtr info)=0
void decrease(const Eref &e, double I)
virtual void vSetB(const Eref &e, double val)=0
void process(const Eref &, ProcPtr info)