4 #include "../utility/numutil.h"
11 "Sends out reaction rates (forward and backward), and concentrations"
12 " (free-buffer and bound-buffer molecules).");
19 "Sends out source information.");
25 "Sends out source information.");
32 "Handles process call",
35 "Reinit happens only in stage 0",
38 static Finfo* processShared[] = {
45 "Here we create 2 shared finfos to attach with the Ticks. This is because we want to perform DifBufferBase "
46 "computations in 2 stages, much as in the Compartment object. "
47 "In the first stage we send out the concentration value to other DifBufferBases and Buffer elements. We also",
49 sizeof( processShared ) /
sizeof(
Finfo* ));
51 static DestFinfo concentration(
"concentration",
52 "Receives concentration (from DifShell).",
54 static Finfo* bufferShared[] = {
58 "This is a shared message with DifShell. "
60 " - DifBufferBase sends ion concentration\n"
61 " - Buffer updates buffer concentration and sends it back immediately using a call-back.\n"
62 " - DifShell updates the time-derivative ( dC / dt ) \n"
65 " - DifShell advances concentration C \n\n"
66 "This scheme means that the Buffer does not need to be scheduled, and it does its computations when "
67 "it receives a cue from the DifShell. May not be the best idea, but it saves us from doing the above "
68 "computations in 3 stages instead of 2." ,
70 sizeof( bufferShared ) /
sizeof(
Finfo* ));
73 "Destination message",
76 static Finfo* innerDifShared[] = {
83 "This shared message (and the next) is between DifBufferBases: adjoining shells exchange information to "
84 "find out the flux between them. "
85 "Using this message, an inner shell sends to, and receives from its outer shell." ,
87 sizeof( innerDifShared ) /
sizeof(
Finfo* ));
92 static Finfo* outerDifShared[] = {
99 "Using this message, an outer shell sends to, and receives from its inner shell." ,
101 sizeof( outerDifShared ) /
sizeof(
Finfo* ));
107 "Ion concentration from incoming conc message.",
111 "Forward rate constant of buffer molecules 1/mM/s (?)",
115 "Backward rate constant of buffer molecules. 1/s",
119 "Diffusion constant of buffer molecules. m^2/s",
123 "Free buffer concentration",
127 "Bound buffer concentration",
131 "Total buffer concentration.",
143 "shape of the shell: SHELL=0, SLICE=SLAB=1, USERDEF=3",
148 "Thickness of shell",
153 "Inner area of shell",
157 "Outer area of shell",
167 static Finfo * difBufferFinfos[] = {
205 static string doc[] = {
206 "Name",
"DifBufferBase",
207 "Author",
"Subhasis Ray (ported from GENESIS2)",
208 "Description",
"Models diffusible buffer where total concentration is constant. It is"
209 " coupled with a DifShell.",
216 sizeof(difBufferFinfos)/
sizeof(
Finfo*),
219 sizeof(doc)/
sizeof(
string));
virtual double vGetActivation(const Eref &e) const =0
static const Cinfo * initCinfo()
virtual void vReinit(const Eref &e, ProcPtr p)=0
void setBBound(const Eref &e, double value)
void fluxFromOut(const Eref &e, double outerC, double outerThickness)
virtual void vSetKb(const Eref &e, double value)=0
double getVolume(const Eref &e) const
virtual double vGetD(const Eref &e) const =0
virtual void vSetThickness(const Eref &e, double thickness)=0
static const Cinfo * difBufferCinfo
double getD(const Eref &e) const
virtual void vSetActivation(const Eref &e, double value)=0
double getThickness(const Eref &e) const
double getKb(const Eref &e) const
void setDiameter(const Eref &e, double value)
virtual double vGetBFree(const Eref &e) const =0
void fluxFromIn(const Eref &e, double innerC, double innerThickness)
virtual double vGetKf(const Eref &e) const =0
static SrcFinfo4< double, double, double, double > * reactionOut()
virtual double vGetInnerArea(const Eref &e) const =0
void setKf(const Eref &e, double value)
virtual double vGetOuterArea(const Eref &e) const =0
double getLength(const Eref &e) const
virtual void vSetBFree(const Eref &e, double value)=0
virtual double vGetBTot(const Eref &e) const =0
virtual void vFluxFromOut(const Eref &e, double outerC, double outerThickness)=0
static SrcFinfo2< double, double > * outerDifSourceOut()
virtual void vSetOuterArea(const Eref &e, double outerArea)=0
virtual void vSetBBound(const Eref &e, double value)=0
virtual double vGetKb(const Eref &e) const =0
void setShapeMode(const Eref &e, unsigned int value)
void setInnerArea(const Eref &e, double innerArea)
virtual void vBuffer(const Eref &e, double C)=0
double getBFree(const Eref &e) const
double getInnerArea(const Eref &e) const
virtual void vSetBTot(const Eref &e, double value)=0
virtual void vSetVolume(const Eref &e, double volume)=0
virtual double vGetThickness(const Eref &e) const =0
virtual void vProcess(const Eref &e, ProcPtr p)=0
void setVolume(const Eref &e, double volume)
unsigned int getShapeMode(const Eref &e) const
virtual void vFluxFromIn(const Eref &e, double innerC, double innerThickness)=0
virtual void vSetKf(const Eref &e, double value)=0
virtual double vGetDiameter(const Eref &e) const =0
void process(const Eref &e, ProcPtr p)
double getOuterArea(const Eref &e) const
virtual double vGetVolume(const Eref &e) const =0
void setOuterArea(const Eref &e, double outerArea)
virtual void vSetDiameter(const Eref &e, double diameter)=0
void reinit(const Eref &e, ProcPtr p)
double getBTot(const Eref &e) const
void setThickness(const Eref &e, double value)
void setD(const Eref &e, double value)
void setActivation(const Eref &e, double value)
void setKb(const Eref &e, double value)
double getBBound(const Eref &e) const
virtual double vGetLength(const Eref &e) const =0
double getActivation(const Eref &e) const
double getDiameter(const Eref &e) const
static SrcFinfo2< double, double > * innerDifSourceOut()
virtual double vGetBBound(const Eref &e) const =0
virtual void vSetShapeMode(const Eref &e, unsigned int shapeMode)=0
virtual void vSetInnerArea(const Eref &e, double innerArea)=0
virtual void vSetD(const Eref &e, double value)=0
static const Cinfo * initCinfo()
virtual void vSetLength(const Eref &e, double length)=0
void buffer(const Eref &e, double C)
void setLength(const Eref &e, double value)
double getKf(const Eref &e) const
void setBTot(const Eref &e, double value)
void setBFree(const Eref &e, double value)
virtual unsigned int vGetShapeMode(const Eref &e) const =0