DifShell

class DifShell

DifShell object: Models diffusion of an ion (typically calcium) within an electric compartment. A DifShell is an iso-concentration region with respect to the ion. Adjoining DifShells exchange flux of this ion, and also keep track of changes in concentration due to pumping, buffering and channel currents, by talking to the appropriate objects.

process_0

void (shared message field) Here we create 2 shared finfos to attach with the Ticks. This is because we want to perform DifShell computations in 2 stages, much as in the Compartment object. In the first stage we send out the concentration value to other DifShells and Buffer elements. We also receive fluxes and currents and sum them up to compute ( dC / dt ). In the second stage we find the new C value using an explicit integration method. This 2-stage procedure eliminates the need to store and send prev_C values, as was common in GENESIS.

process_1

void (shared message field) Second process call

buffer
void (shared message field) This is a shared message from a DifShell to a Buffer (FixBuffer or DifBuffer). During stage 0:
  • DifShell sends ion concentration
  • Buffer updates buffer concentration and sends it back immediately using a call-back.
  • DifShell updates the time-derivative ( dC / dt )
During stage 1:
  • DifShell advances concentration C

This scheme means that the Buffer does not need to be scheduled, and it does its computations when it receives a cue from the DifShell. May not be the best idea, but it saves us from doing the above computations in 3 stages instead of 2.

innerDif

void (shared message field) This shared message (and the next) is between DifShells: adjoining shells exchange information to find out the flux between them. Using this message, an inner shell sends to, and receives from its outer shell.

outerDif

void (shared message field) Using this message, an outer shell sends to, and receives from its inner shell.

getC()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setCeq()

(destination message field) Assigns field value.

getCeq()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setD()

(destination message field) Assigns field value.

getD()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setValence()

(destination message field) Assigns field value.

getValence()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setLeak()

(destination message field) Assigns field value.

getLeak()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setShapeMode()

(destination message field) Assigns field value.

getShapeMode()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setLength()

(destination message field) Assigns field value.

getLength()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setDiameter()

(destination message field) Assigns field value.

getDiameter()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setThickness()

(destination message field) Assigns field value.

getThickness()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setVolume()

(destination message field) Assigns field value.

getVolume()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setOuterArea()

(destination message field) Assigns field value.

getOuterArea()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

setInnerArea()

(destination message field) Assigns field value.

getInnerArea()

(destination message field) Requests field value. The requesting Element must provide a handler for the returned value.

process()

(destination message field) Handles process call

reinit()

(destination message field) Reinit happens only in stage 0

process()

(destination message field) Handle process call

reinit()

(destination message field) Reinit happens only in stage 0

reaction()

(destination message field) Here the DifShell receives reaction rates (forward and backward), and concentrations for the free-buffer and bound-buffer molecules.

fluxFromOut()

(destination message field) Destination message

fluxFromIn()

(destination message field)

influx()

(destination message field)

outflux()

(destination message field)

fInflux()

(destination message field)

fOutflux()

(destination message field)

storeInflux()

(destination message field)

storeOutflux()

(destination message field)

tauPump()

(destination message field)

eqTauPump()

(destination message field)

mmPump()

(destination message field)

hillPump()

(destination message field)

concentrationOut

double (source message field) Sends out concentration

innerDifSourceOut

double,double (source message field) Sends out source information.

outerDifSourceOut

double,double (source message field) Sends out source information.

C

double (value field) Concentration C is computed by the DifShell and is read-only

Ceq

double (value field)

D

double (value field)

valence

double (value field)

leak

double (value field)

shapeMode

unsigned int (value field)

length

double (value field)

diameter

double (value field)

thickness

double (value field)

volume

double (value field)

outerArea

double (value field)

innerArea

double (value field)