NEURON {
    SUFFIX nakpump 
    USEION na READ nai WRITE ina
    USEION k READ ko WRITE ik
    USEION ATP READ ATPi WRITE iATP CHARGE 1
    NONSPECIFIC_CURRENT i
    RANGE imax, ik, ina, Kk, accna, acck
}

UNITS {
    (mV)	= (millivolt)
	(mA)	= (milliamp)
    (molar) = (1/liter)
    (mM)	= (millimolar)
}

ASSIGNED {
    ina (mA/cm2)
    ik (mA/cm2)
    accna (mA/cm2)
    acck (mA/cm2)
    iATP (mA/cm2)
    i (mA/cm2)
    ATPi (mM)
    nai (mM)
    ko (mM)
    v (mV)
    ipump (mA/cm2)
}

INITIAL {
    accna = 0
    acck = 0
}

PARAMETER {
    : pump
    imax = 0.1 (mA/cm2)
    Kna = 22.0 (mM)
    Kk = 3.5 (mM)
    NaDiv = 3.0 (mM)
    KDiv = 1.0 (mM)
    ATPss = 2.59 (mM)
    kATP = 0.58 (mM)
}

BREAKPOINT {
    :ipump = imax / (pow(1 + 2. / ko, 2) * pow(1 + 7.7 / nai, 3))
    ipump = imax * ((kATP + ATPss)/ATPss)*(ATPi/(kATP + ATPi)) / ( (1.0 + exp((Kna - nai)/NaDiv)) * (1.0 + exp( (Kk - ko)/KDiv) ) )
    iATP = fabs(ipump)
    i = -iATP
    ina = (3 * ipump)
    ik = (-2 * ipump)
    accna = accna + ina
    acck = acck + ik
}