TITLE Decay of internal calcium concentration

COMMENT
    26 Ago 2002 Modification of original channel to allow variable time step
            and to correct an initialization error.

    Done by Michael Hines (michael.hines@yale.edu) and Ruggero Scorcioni (rscorcio@gmu.edu)
             at EU Advance Course in Computational Neuroscience. Obidos, Portugal

    Internal calcium concentration due to calcium currents and pump.
    Differential equations.

    Simple model of ATPase pump with 3 kinetic constants (Destexhe 92)
            Cai + P <-> CaP -> Cao + P  (k1,k2,k3)

    A Michaelis-Menten approximation is assumed, which reduces the complexity
            of the system to 2 parameters:

            kt = <tot enzyme concentration> * k3  -> TIME CONSTANT OF THE PUMP
            kd = k2/k1 (dissociation constant)    -> EQUILIBRIUM CALCIUM VALUE

    The values of these parameters are chosen assuming a high affinity of
        the pump to calcium and a low transport capacity (cfr. Blaustein,
        TINS, 11: 438, 1988, and references therein).

    Units checked using "modlunit" -> factor 10000 needed in ca entry

    VERSION OF PUMP + DECAY (decay can be viewed as simplified buffering)

    All variables are range variables

    This mechanism was published in:  Destexhe, A. Babloyantz, A. and
    Sejnowski, TJ.  Ionic mechanisms for intrinsic slow oscillations in
    thalamic relay neurons. Biophys. J. 65: 1538-1552, 1993)

    Written by Alain Destexhe, Salk Institute, Nov 12, 1992

ENDCOMMENT

INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}

NEURON {
    SUFFIX cad
    USEION ca
    READ ica, cai
    WRITE cai

    : SRJones put taur up here
    RANGE ca, taur
    GLOBAL depth, cainf
    : GLOBAL depth, cainf, taur
}

UNITS {
    : moles do not appear in units
    (molar) = (1/liter)
    (mM)    = (millimolar)
    (um)    = (micron)
    (mA)    = (milliamp)
    (msM)   = (ms mM)
    FARADAY = (faraday) (coulomb)
}

PARAMETER {
    depth = .1     (um)        : depth of shell
    taur  = 200    (ms)        : rate of calcium removal 200 default
    cainf = 100e-6 (mM)
    cai            (mM)
}

STATE {
    ca             (mM) <1e-5>
}

INITIAL {
    ca = cainf
    cai = ca
}

ASSIGNED {
    ica            (mA/cm2)
    drive_channel  (mM/ms)
}

BREAKPOINT {
    SOLVE state METHOD cnexp
}

DERIVATIVE state {
    drive_channel = -(10000) * ica / (2 * FARADAY * depth)

    : cannot pump inward
    if (drive_channel <= 0.) { drive_channel = 0. }

    ca' = drive_channel + (cainf-ca) / taur
    cai = ca
}