To calculate the flux of calcium via ion channels into the ca[0] state, this mechanism must subtract the pump's own current from the total calcium current. The description in the pdf file subtracts ica_pmp, which is the pump's current computed at the present time. With fixed time step methods, this is incorrect--instead it should subtract the pump current computed at the end of the previous time step. The code as described in the pdf produces simulations in which the time course of calcium concentration is affected by the calcium concentration at the end of the previous simulation.
The fix is merely to introduce a new variable ica_pmp_last whose value is the pump current at the end of the previous step. This requires proper declaration and initialization of ica_pmp and ica_pmp_last, which involves the following changes to the mod file. For the convenience of users, at the end of this erratum is a link to a version of the mod file cdp.mod that contains all of the necessary changes.
Page 44 The ASSIGNED block
This needs to have _four_ additions:
cao (mM) ica_pmp (mA/cm2) ica_pmp_last (mA/cm2) parea (um) : pump area per unit length
Page 45 The BREAKPOINT block
This should include a statement that assigns a value to ica_pmp_last
BREAKPOINT { SOLVE state METHOD sparse ica_pmp_last = ica_pmp ica = ica_pmp }
Page 45 The INITIAL block
For the "alternative style of initialization," in which NEURON calculates the values of pump and pumpca, the statements
ica=0 SOLVE state STEADYSTATE sparseshould be
ica=0 ica_pmp = 0 ica_pmp_last = 0 SOLVE state STEADYSTATE sparseNote that the KINETIC block on page 46 already contains the CONSERVE statement
CONSERVE pump + pumpca = TotalPump * parea * (1e10)that is necessary for independence of the equations that describe free and bound buffer.
Page 46 The STATE block
This section of the paper should actually be called The KINETIC block. The LONGITUDINAL_DIFFUSION statement should be changed from
LONGITUDINAL_DIFFUSION i, DCa {ca}to
LONGITUDINAL_DIFFUSION i, DCa*diam*diam*vrat[i] {ca}i.e. exactly as in Listing 8 on page 38.
The expression for the flux into ca[0] should subtract ica_pmp_last instead of ica_pmp, i.e. it should be changed from
~ ca[0] << (-(ica - ica_pmp)*PI*diam/(2*FARADAY)) : ica is Ca effluxto
~ ca[0] << (-(ica - ica_pmp_last)*PI*diam/(2*FARADAY)) : ica is Ca efflux
Complete listing of cdp.mod
Here is the complete, correct cdp.mod for four radial compartments (Nannuli == 4).