Full cell models

Note

This documentation is work in progress. Currently, the extension of Documenter.jl in my package MoST.jl is still experimental. As the package evolves further, this documentation will increase in readability.

InaMo.Cells

This package contains the full cell models used in Inada 2009.

Probably, most experiments by Inada et al. were performed with the model variants in VariableCa.

Base classes (Interfaces)

InaMo.Cells.Interfaces

This package contains base models of the three AVN cell types (AN, N, NH), which capture common structure. CellBase is used for all AVN cell types, ANCellBase for all AN cell models (i.e. ANCellConst with constant intracellular Ca2+ and ANCell with variable Ca2+ influenced by the SR), and for N and NH cells the structure is analogous.

InaMo.Cells.Interfaces.CellBase

NOTE: Some parameter settings in this model have a few peculiarities. First, the volume terms v_cyto, v_sub, v_jsr, and v_nsr, are not given by Inada et al.. Formulas are instead taken from Kurata 2002, where the parameters are named v_i, v_sub, v_rel, and v_up respectively. The same formulas are also used in the C++ implementation by Inada et al., which also uses another formula to determine the total cell volume v_cell. This is captured here in the function c_to_v, whose rationale we had to guess from the undocumented C++ version.

Second, the permeability na_p is not given directly by Inada et al., but instead calculated from the conductivity g_na. We use the function p_from_g to convert the value from the article.

Finally, a similar issue occurs with the equilibrium potentia v_k (called E_k in Inada 2009). Its value is also not given in the article, but can be calculated from potassium concentrations using the nernst function.

model CellBase "contains all code that is common among all cell types in Inada 2009"
  extends InaMo.Currents.Interfaces.TwoPinCell;
  extends InaMo.Icons.Cell;
  inner parameter Boolean use_ach = false "should acetylcholine sensitive potassium channel be included in the model";
  inner parameter SI.Concentration ach = 0 "concentration of acetylcholine available for I_ACh";
  inner parameter SI.Concentration na_in = 8 "intracellular sodium concentration";
  inner parameter SI.Concentration na_ex = 140 "extracellular sodium concentration";
  inner parameter PermeabilityFM na_p = p_from_g(253e-9, na_ex, 1, temp) "permeability of cell membrane to sodium ions";
  inner parameter SI.Concentration k_in = 140 "intracellular potassium concentration";
  inner parameter SI.Concentration k_ex = 5.4 "extracellular potassium concentration";
  inner parameter SI.Concentration ca_ex = 2 "extracellular calcium concentration";
  inner parameter SI.Temperature temp = 310 "cell medium temperature";

  function c_to_v "function used to determine cell volume based on membrane capacitance"
    input SI.Capacitance c_m "membrane capacitance";
    input SI.Volume v_low = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
    input SI.Volume v_high = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
    output SI.Volume v_cell "resulting total cell volume";
  protected
    SI.Capacitance c_low = 20e-12 "low value for c_m (where v_low is returned)";
    SI.Capacitance c_span = 45e-12 "span that must be added to c_m to reach an output of v_high";
  algorithm
    v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
    annotation(
      Documentation(info = "<html>
    <p>This function was obtained from the C++ code by Inada et al..
    Unfortunately it was completely undocumented, meaning that the
    documentation in this project represents our best guess of the rationale
    behind the function.</p>
    <p>&quot;v_low&quot; and &quot;v_high&quot; were named &quot;central&quot;
    and &quot;peripheral&quot; in the code and the function itself was named
    &quot;SEt_PArAMS&quot;, which indicates that perhaps the original intent
    of the function was to set multiple parameter values for the SAN cells
    (which use the terms &quot;central&quot; and &quot;peripheral&quot;.
    However, that interpretation does not make a lot of sense anymore when
    talking about AN, N, and NH cells, which is why we changed the parameter
    names.</p>
  </html>"));
  end c_to_v;

  // NOTE: Kurata 2002 uses v_cell = 3.5e-15, Inada 2009 gives no value
  // NOTE: but C++- and CellML-implementations use this formula
  parameter SI.Volume v_cell = c_to_v(l2.c) "total cell volume";
  inner parameter SI.Volume v_cyto = 0.46 * v_cell - v_sub "volume of cytosol";
  // from Kurata 2002 (v_i)
  inner parameter SI.Volume v_sub = 0.01 * v_cell "volume of subspace";
  // from Kurata 2002 (v_sub)
  inner parameter SI.Volume v_jsr = 0.0012 * v_cell "volume of junctional SR";
  // from Kurata 2002 (v_rel)
  inner parameter SI.Volume v_nsr = 0.0116 * v_cell "volume of network SR";
  // from Kurata 2002 (v_up)
  // v_k (E_K) is not given in Inada 2009 => calculate with nernst
  parameter SI.Voltage v_k = nernst(k_in, k_ex, 1, temp) "equilibrium potential for potassium currents";
  InaMo.Currents.Basic.BackgroundChannel bg "I_b" annotation(
    Placement(visible = true, transformation(origin = {-51, 53}, extent = {{-17, -17}, {17, 17}}, rotation = 0)));
  replaceable InaMo.Currents.Atrioventricular.LTypeCalciumChannel cal "I_Ca,L" annotation(
    Placement(visible = true, transformation(origin = {-29, -53}, extent = {{-17, -17}, {17, 17}}, rotation = 180)));
  InaMo.Currents.Atrioventricular.RapidDelayedRectifierChannel kr "I_K,r" annotation(
    Placement(visible = true, transformation(origin = {-63, -53}, extent = {{-17, -17}, {17, 17}}, rotation = 180)));
  InaMo.Currents.Atrioventricular.SodiumCalciumExchanger naca "I_NaCa" annotation(
    Placement(visible = true, transformation(origin = {-17, 53}, extent = {{-17, -17}, {17, 17}}, rotation = 0)));
  InaMo.Currents.Atrioventricular.SodiumPotassiumPump nak "I_NaK / I_p" annotation(
    Placement(visible = true, transformation(origin = {51, 53}, extent = {{-17, -17}, {17, 17}}, rotation = 0)));
  InaMo.Membrane.LipidBilayer l2 "cell membrane as capacitor" annotation(
    Placement(visible = true, transformation(origin = {17, 53}, extent = {{-17, -17}, {17, 17}}, rotation = 0)));
  InaMo.Currents.Atrioventricular.AcetylcholineSensitiveChannel c_ach if use_ach "I_ACh" annotation(
    Placement(visible = true, transformation(origin = {85, 53}, extent = {{-17, -17}, {17, 17}}, rotation = 0)));
equation
  connect(l2.p, p) annotation(
    Line(points = {{18, 70}, {16, 70}, {16, 86}, {-50, 86}, {-50, 100}, {-50, 100}}, color = {0, 0, 255}));
  connect(l2.n, n) annotation(
    Line(points = {{18, 36}, {16, 36}, {16, 26}, {-52, 26}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(bg.p, p) annotation(
    Line(points = {{-50, 70}, {-50, 70}, {-50, 100}, {-50, 100}}, color = {0, 0, 255}));
  connect(bg.n, n) annotation(
    Line(points = {{-50, 36}, {-52, 36}, {-52, 2}, {-50, 2}, {-50, 0}}, color = {0, 0, 255}));
  connect(cal.p, p) annotation(
    Line(points = {{-28, -70}, {-30, -70}, {-30, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(cal.n, n) annotation(
    Line(points = {{-28, -36}, {-28, -36}, {-28, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(kr.p, p) annotation(
    Line(points = {{-62, -70}, {-64, -70}, {-64, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(kr.n, n) annotation(
    Line(points = {{-62, -36}, {-62, -36}, {-62, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(naca.p, p) annotation(
    Line(points = {{-16, 70}, {-18, 70}, {-18, 86}, {-50, 86}, {-50, 100}, {-50, 100}}, color = {0, 0, 255}));
  connect(naca.n, n) annotation(
    Line(points = {{-16, 36}, {-18, 36}, {-18, 26}, {-52, 26}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(nak.p, p) annotation(
    Line(points = {{52, 70}, {50, 70}, {50, 86}, {-50, 86}, {-50, 100}, {-50, 100}}, color = {0, 0, 255}));
  connect(nak.n, n) annotation(
    Line(points = {{52, 36}, {50, 36}, {50, 26}, {-52, 26}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(c_ach.p, p) annotation(
    Line(points = {{86, 70}, {84, 70}, {84, 86}, {-50, 86}, {-50, 100}, {-50, 100}}, color = {0, 0, 255}));
  connect(c_ach.n, n) annotation(
    Line(points = {{86, 36}, {84, 36}, {84, 26}, {-52, 26}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  annotation(
    Documentation(info = "<html>
      <p>
        NOTE: Some parameter settings in this model have a few peculiarities.
        First, the volume terms v_cyto, v_sub, v_jsr, and v_nsr, are not given
        by Inada et al.. Formulas are instead taken from Kurata 2002, where
        the parameters are named v_i, v_sub, v_rel, and v_up respectively.
        The same formulas are also used in the C++ implementation by
        Inada et al., which also uses another formula to determine the total
        cell volume v_cell.
        This is captured here in the function c_to_v, whose rationale we had
        to guess from the undocumented C++ version.
      </p>
      <p>
        Second, the permeability na_p is not given directly by Inada et al.,
        but instead calculated from the conductivity g_na. We use the function
        p_from_g to convert the value from the article.
      </p>
      <p>
        Finally, a similar issue occurs with the equilibrium potentia v_k
        (called E_k in Inada 2009).
        Its value is also not given in the article, but can be calculated from
        potassium concentrations using the nernst function.
      </p>
    </html>"),
    Diagram(graphics = {Rectangle(fillColor = {211, 211, 211}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-100, 60}, {100, -60}})}));
end CellBase;

InaMo.Cells.Interfaces.ANCellBase

partial model ANCellBase "base model for atrio-nodal cells"
  extends CellBase(bg(g_max = 1.8e-9, v_eq = -52.5e-3), cal(g_max = 18.5e-9, v_eq = 62.1e-3, act.n.start = 4.069e-5, inact_slow.n.start = 0.9875, inact_fast.n.start = 0.9985), kr(g_max = 1.5e-9, v_eq = v_k, act_slow.n.start = 0.04840, act_fast.n.start = 0.07107, inact.n.start = 0.9866), naca(k_NaCa = 5.92e-9), nak(i_max = 24.6e-12), l2(c = 40e-12));
  InaMo.Currents.Atrioventricular.InwardRectifier kir(g_max = 12.5e-9, v_eq = v_k) "I_K1" annotation(
    Placement(transformation(extent = {{-12, -70}, {22, -36}}, rotation = 180)));
  InaMo.Currents.Atrioventricular.SodiumChannel na(act.n.start = 0.01227, inact_slow.n.start = 0.6162, inact_fast.n.start = 0.7170) "I_Na" annotation(
    Placement(transformation(extent = {{22, -70}, {56, -36}}, rotation = 180)));
  InaMo.Currents.Atrioventricular.TransientOutwardChannel to(g_max = 20e-9, v_eq = v_k, act.n.start = 8.857e-3, inact_slow.n.start = 0.1503, inact_fast.n.start = 0.8734) "I_to" annotation(
    Placement(transformation(extent = {{56, -70}, {90, -36}}, rotation = 180)));
equation
  connect(kir.p, p) annotation(
    Line(points = {{6, -70}, {4, -70}, {4, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(kir.n, n) annotation(
    Line(points = {{6, -36}, {6, -26}, {-28, -26}, {-28, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(na.p, p) annotation(
    Line(points = {{40, -70}, {38, -70}, {38, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(na.n, n) annotation(
    Line(points = {{40, -36}, {40, -36}, {40, -26}, {-28, -26}, {-28, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(to.p, p) annotation(
    Line(points = {{74, -70}, {72, -70}, {72, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(to.n, n) annotation(
    Line(points = {{74, -36}, {74, -36}, {74, -26}, {-28, -26}, {-28, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
end ANCellBase;

InaMo.Cells.Interfaces.NCellBase

NOTE: C++ and CellML-implementations set cal.v_eq to 6.2e-2 instead of 6.21e-2. This seems more like a typo, so we leave v_eq unchanged.

NOTE: v_eq is not given in Inada 2009 (where it is called E_st). We therefore use the value given in Kurata 2002.

NOTE: Kurata 2002 and C++ have a positive sign for st.v_eq, but CellML has a negative sign (which is also given in C++, but only in AN and NH cell where st.g_max = 0). We therefore use the positive sign.

partial model NCellBase "base model for nodal cells"
  extends CellBase(bg(g_max = 1.2e-9, v_eq = -22.5e-3), redeclare InaMo.Currents.Atrioventricular.LTypeCalciumChannelN cal(g_max = 9e-9, v_eq = 62.1e-3, act.n.start = 1.533e-4, inact_slow.n.start = 0.4441, inact_fast.n.start = 0.6861), kr(g_max = 3.5e-9, v_eq = v_k, act_slow.n.start = 0.1287, act_fast.n.start = 0.6067, inact.n.start = 0.9775), naca(k_NaCa = 2.14e-9), nak(i_max = 143e-12), l2(c = 29e-12));
  InaMo.Currents.Atrioventricular.HyperpolarizationActivatedChannel hcn(g_max = 1e-9, act.n.start = 0.03825) "I_f" annotation(
    Placement(transformation(extent = {{-12, -70}, {22, -36}}, rotation = 180)));
  // v_eq is given in table S7 directly as number
  InaMo.Currents.Atrioventricular.SustainedInwardChannel st(g_max = 0.1e-9, v_eq = 37.4e-3, act.n.start = 0.1933, inact.n.start = 0.4886) "I_st" annotation(
    Placement(transformation(extent = {{22, -70}, {56, -36}}, rotation = 180)));
equation
  connect(hcn.p, p) annotation(
    Line(points = {{6, -70}, {4, -70}, {4, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(hcn.n, n) annotation(
    Line(points = {{6, -36}, {6, -26}, {-28, -26}, {-28, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(st.p, p) annotation(
    Line(points = {{40, -70}, {38, -70}, {38, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(st.n, n) annotation(
    Line(points = {{40, -36}, {40, -36}, {40, -26}, {-28, -26}, {-28, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  annotation(
    Documentation(info = "<html>
  <p>
    NOTE: C++ and CellML-implementations set cal.v_eq to 6.2e-2 instead of
    6.21e-2.
    This seems more like a typo, so we leave v_eq unchanged.
  </p>
  <p>
    NOTE: v_eq is not given in Inada 2009 (where it is called E_st).
    We therefore use the value given in Kurata 2002.
  </p>
  <p>
    NOTE: Kurata 2002 and C++ have a positive sign for st.v_eq, but CellML has a
    negative sign (which is also given in C++, but only in AN and NH cell
    where st.g_max = 0).
    We therefore use the positive sign.
  </p>
</html>"));
end NCellBase;

InaMo.Cells.Interfaces.NHCellBase

partial model NHCellBase "base model for nodal-his cells"
  extends CellBase(bg(g_max = 2e-9, v_eq = -40e-3), cal(g_max = 21e-9, v_eq = 62.1e-3, act.n.start = 5.025e-5, inact_slow.n.start = 0.9831, inact_fast.n.start = 0.9981), kr(g_max = 2e-9, v_eq = v_k, act_slow.n.start = 0.07024, act_fast.n.start = 0.09949, inact.n.start = 0.9853), naca(k_NaCa = 5.92e-9), nak(i_max = 197e-12), l2(c = 40e-12));
  InaMo.Currents.Atrioventricular.InwardRectifier kir(g_max = 15e-9, v_eq = v_k) annotation(
    Placement(transformation(extent = {{-12, -70}, {22, -36}}, rotation = 180)));
  InaMo.Currents.Atrioventricular.SodiumChannel na(act.n.start = 0.01529, inact_slow.n.start = 0.5552, inact_fast.n.start = 0.6438) annotation(
    Placement(transformation(extent = {{22, -70}, {56, -36}}, rotation = 180)));
  InaMo.Currents.Atrioventricular.TransientOutwardChannel to(g_max = 14e-9, v_eq = v_k, act.n.start = 9.581e-3, inact_slow.n.start = 0.1297, inact_fast.n.start = 0.8640) annotation(
    Placement(transformation(extent = {{56, -70}, {90, -36}}, rotation = 180)));
equation
  connect(kir.p, p) annotation(
    Line(points = {{6, -70}, {4, -70}, {4, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(kir.n, n) annotation(
    Line(points = {{6, -36}, {6, -26}, {-28, -26}, {-28, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(na.p, p) annotation(
    Line(points = {{40, -70}, {38, -70}, {38, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(na.n, n) annotation(
    Line(points = {{40, -36}, {40, -36}, {40, -26}, {-28, -26}, {-28, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
  connect(to.p, p) annotation(
    Line(points = {{74, -70}, {72, -70}, {72, -80}, {-88, -80}, {-88, 86}, {-50, 86}, {-50, 100}}, color = {0, 0, 255}));
  connect(to.n, n) annotation(
    Line(points = {{74, -36}, {74, -36}, {74, -26}, {-28, -26}, {-28, -16}, {-52, -16}, {-52, 0}, {-50, 0}}, color = {0, 0, 255}));
end NHCellBase;

Constant intracellular Ca2+ concentration (ConstantCa)

InaMo.Cells.ConstantCa

InaMo.Cells.ConstantCa.ANCellConst

NOTE: Inada et al. state that they also performed experiments with constant intracellular Ca2+ at 0.1 μM (see supplement, page 3), but they do not give any reference plots for this setup.

model ANCellConst "atrio-nodal cell model with constant intracellular Ca2+ concentration"
  extends InaMo.Cells.Interfaces.ANCellBase;
  extends InaMo.Icons.CellConst(cell_type = "AN");
  InaMo.Concentrations.Basic.ConstantConcentration ca_sub(c_const = 1e-4, vol = v_sub) "Ca2+ in subspace available to Ca2+-sensitive currents" annotation(
    Placement(transformation(origin = {16, 0}, extent = {{-17, -17}, {17, 17}})));
equation
  connect(cal.ca, ca_sub.substance) annotation(
    Line(points = {{-34, -36}, {-36, -36}, {-36, -6}, {-10, -6}, {-10, -16}, {16, -16}, {16, -16}}));
  connect(ca_sub.substance, naca.ca) annotation(
    Line(points = {{16, -16}, {-10, -16}, {-10, 38}, {-12, 38}, {-12, 36}}));
  annotation(
    Documentation(info = "<html>
  <p>NOTE: Inada et al. state that they also performed experiments with constant
  intracellular Ca2+ at 0.1 μM (see supplement, page 3), but they do not give
  any reference plots for this setup.</p>
</html>"));
end ANCellConst;
  1. ca_sub.substance.rate + naca.trans.rate + cal.trans.rate 0.0
  2. to.i_ion + na.i_ion + kir.i_ion + l2.i + nak.i + naca.i_ion + kr.i_ion + cal.i_ion + bg.i_ion 0.0
  3. ((((((( na.i_ion to.i_ion ) kir.i_ion ) l2.i ) nak.i ) naca.i_ion ) kr.i_ion ) bg.i_ion ) cal.i_ion 0.0
  4. bg.i_ion bg.g_max ( bg.v_gate bg.v_eq )
  5. to.v_gate bg.v_gate
  6. to.v_gate cal.v_gate
  7. to.v_gate kr.v_gate
  8. to.v_gate naca.v
  9. nak.i nak.i_max michaelisMenten( na_in , nak.k_m_Na ) 3.0 michaelisMenten( k_ex , nak.k_m_K ) 2.0 act.fsteady( nak.v , 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
  10. to.v_gate nak.v
  11. l2.v l2.i / l2.c
  12. l2.v to.v_gate
  13. to.v_gate kir.v_gate
  14. na.i_open ghkFlux( na.v_gate , temp , na_in , na.ion_ex , na.ion_p , na.ion_z )
  15. to.v_gate na.v_gate
  16. to.v_gate v
  17. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n(_act.steady_act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total
    6. _i_open_g_max(_v_gate_v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.0 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauinact_fast.ftau(_v_gate, 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
  18. Within group kir (prefix _ indicates shortened variable name)
    1. _open_ratio_n_pot 3.0 _voltage_inact.n_voltage_act.n
    2. _i_open_g_max(_v_gate_v_eq)
    3. _i_ion_open_ratio_i_open
    4. _g_open_ratio_g_max
    5. _voltage_inact.nact.fsteady(_v_gate, 0.0 , 1.0 ,_v_eq 0.0036 ,( 1.393 _FoRT), 1.0 , 1.0 , 1.0 )
    6. _voltage_act.nact.fsteady(_v_gate, 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
  19. Within group kr (prefix _ indicates shortened variable name)
    1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
    2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
    3. _inact.n(_inact.steady_inact.n)/_inact.tau
    4. _open_ratio_act_total_inact.n
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _g_open_ratio_g_max
    8. _act_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    9. _act_fast.tauact_fast.ftau(_v_gate, 0.0 )
    10. _act_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    11. _act_slow.tauinact_fast.ftau(_v_gate, 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
    12. _inact.steadyinact.fsteady(_v_gate)
    13. _inact.tauinact.ftau(_v_gate, 0.0 )
    14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
  20. Within group na (prefix _ indicates shortened variable name)
    1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _open_ratio_act.n 3.0 _inact_total
    4. _i_ion_open_ratio_i_open
    5. _act.alphafa(_v_gate, -0.0444 , 5829.58 , -78.90791446382072 )
    6. _act.betakr.ftau.falpha(_v_gate, -0.0444 , -78.90791446382072 , 18400.0 )
    7. _inact_fast.steadyinact_fast.fsteady(_v_gate)
    8. _inact_fast.tauact.fsteady(_v_gate, 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
    9. _inact_slow.steadyinact_fast.fsteady(_v_gate)
    10. _inact_slow.tauact.fsteady(_v_gate, 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
    11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
    12. Within group act (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. _tau 1.0 /(_alpha+_beta)
  21. Within group naca (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
    3. _di_cv_di_ce(_q_ci_v_FoRT)
    4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
    5. _do_cv_do_ce_q_co_v_FoRT
    6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
    7. _k_12_di_cv/_di
    8. _f1_2n_i(_di_2n+_di_3n)/_di
    9. _k_21_do_cv/_do
    10. _f1_2n_o(_do_2n+_do_3n)/_do
    11. _k_23_f1_2n_o/_k_32
    12. _k_41 1.0 /_k_32
    13. _k_14_f1_2n_i_k_32
    14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
    15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
    16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
    17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
    18. _d_x1+_x2+_x3+_x4
    19. _e1_x1/_d
    20. _e2_x2/_d
    21. _e3_x3/_d
    22. _e4_x4/_d
    23. _k_32e 0.5 _q_n_v_FoRT
  22. Within group to (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    4. _open_ratio_act.n_inact_total
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _v_gate p.v n.v
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.000596 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauact.fsteady(_v_gate, 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
    15. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n

Functions:

function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function to.act.ftau
  input Real x "input value";
  input Real off = 0.000596 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, -0.03061, 90.0, 1.037 / 0.003188) + kr.ftau.falpha(x, -0.02384, -120.0, 0.396 / 0.003188)) + off;
end to.act.ftau;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function ghkFlux "ghk flux equation for a single ion"
  input Real v(quantity = "ElectricPotential", unit = "V") "membrane potential";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Real ion_p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "permeability of cell membrane to Na+ cations";
  input Integer ion_z "ion valence";
  output Real i(quantity = "CurrentDensity", unit = "A/m2") "current density resulting from ion flux through membrane";
  protected Real g_max(quantity = "Conductance", unit = "S");
  protected Real v_eq(quantity = "ElectricPotential", unit = "V");
  protected Real FoRT(unit = "1/V") = 96485.33289000001 / (8.3144598 * temp);
algorithm
  g_max := ion_p * ion_ex * FoRT * 96485.33289000001 * /*Real*/(ion_z) ^ 2.0;
  v_eq := nernst(ion_in, ion_ex, ion_z, temp);
  if abs(v) < 1e-06 then
    i := g_max / FoRT / /*Real*/(ion_z) * (exp(-v_eq * FoRT * /*Real*/(ion_z)) - 1.0);
  else
    i := g_max * v * (exp((v - v_eq) * FoRT * /*Real*/(ion_z)) - 1.0) / (exp(v * FoRT * /*Real*/(ion_z)) - 1.0);
  end if;
end ghkFlux;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end fa;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function inact_fast.fsteady
  input Real x "input value";
  output Real y "result of applying the HH-style equation steady = alpha/(alpha + beta)";
algorithm
  y := kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) / (kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) + act.fsteady(x, 0.0, 1491.0, -0.0946, 1000.0 / 12.9, 323.3, 1.0, 1.0));
end inact_fast.fsteady;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
nameunitlabelvalue
ca_sub.substance.rate"mol/s"molar flow rate of substance
to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_fast.steadyvalue that n would reach if v_gate was held constant
to.inact_fast.nratio of molecules in open conformation0.8734
to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_slow.steadyvalue that n would reach if v_gate was held constant
to.inact_slow.nratio of molecules in open conformation0.1503
to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.act.steadyvalue that n would reach if v_gate was held constant
to.act.nratio of molecules in open conformation0.008857
to.g"S"ion conductance
to.i_open"A"i if open_ratio = 1
to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
to.i_ion"A"current used for ion flux
to.v_gate"V"voltage used for activation/inactivation gates
na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_slow.steadyvalue that n would reach if v_gate was held constant
na.inact_slow.nratio of molecules in open conformation0.6162
na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_fast.steadyvalue that n would reach if v_gate was held constant
na.inact_fast.nratio of molecules in open conformation0.717
na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.act.steady"1"steady state achieved if current voltage is held constant
na.act.beta"1"rate of transfer from open to closed conformation
na.act.alpha"1"rate of transfer from closed to open conformation
na.act.nratio of molecules in open conformation0.01227
na.i_openi if open_ratio = 1
na.open_ratioratio between 0 (fully closed) and 1 (fully open)
na.i_ion"A"current used for ion flux
na.v_gate"V"voltage used for activation/inactivation gates
kir.voltage_act.nratio of molecules in open conformation
kir.voltage_inact.nratio of molecules in open conformation
kir.g"S"ion conductance
kir.i_open"A"i if open_ratio = 1
kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kir.i_ion"A"current used for ion flux
kir.v_gate"V"voltage used for activation/inactivation gates
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
nak.i"A"Current flowing from pin p to pin n
nak.v"V"Voltage drop of the two pins (= p.v - n.v)
naca.e4"1"ratio of exchanger molecules in state e4
naca.e3"1"ratio of exchanger molecules in state e3
naca.e2"1"ratio of exchanger molecules in state e2
naca.e1"1"ratio of exchanger molecules in state e1
naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
naca.x4"1"relative frequancy of E4 states
naca.x3"1"relative frequency of E3 states
naca.x2"1"relative frequency of E2 states
naca.x1"1"relative frequency of E1 states
naca.k_14"1"rate constant for transition from E1 to E4
naca.k_41"1"rate constant for transition from E4 to E1
naca.k_32"1"rate constant for transition from E3 to E2
naca.k_23"1"rate constant for transition from E2 to E3
naca.k_21"1"rate constant for transition from E2 to E1
naca.k_12"1"rate constant for transition from E1 to E2
naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
naca.do"1"common denominator summing relative frequencies for all E2 substates
naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
naca.di"1"common denominator summing relative frequencies for all E1 substates
naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
naca.i_ion"A"current used for TransmembraneCaFlow
naca.trans.rate"mol/s"rate of change in substance amount
naca.v"V"Voltage drop of the two pins (= p.v - n.v)
kr.act_totaltotal activation due to slow and fast activation terms
kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.inact.steadyvalue that n would reach if v_gate was held constant
kr.inact.nratio of molecules in open conformation0.9866
kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_slow.steadyvalue that n would reach if v_gate was held constant
kr.act_slow.nratio of molecules in open conformation0.0484
kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_fast.steadyvalue that n would reach if v_gate was held constant
kr.act_fast.nratio of molecules in open conformation0.07106999999999999
kr.g"S"ion conductance
kr.i_open"A"i if open_ratio = 1
kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kr.i_ion"A"current used for ion flux
kr.v_gate"V"voltage used for activation/inactivation gates
cal.inact_total
cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.9985000000000001
cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cal.inact_slow.nratio of molecules in open conformation0.9875
cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.act.steadyvalue that n would reach if v_gate was held constant
cal.act.nratio of molecules in open conformation4.069e-05
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
cal.v_gate"V"voltage used for activation/inactivation gates
bg.i_ion"A"current used for ion flux
bg.v_gate"V"voltage used for activation/inactivation gates
n.v"V"Potential at the pin
p.v"V"Potential at the pin
v"V"Voltage drop of the two pins (= p.v - n.v)
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+naca.di_c * na_in / naca.k_cn_i
naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+naca.di_2n * na_in / naca.k_3n_i
naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+naca.do_2n * na_ex / naca.k_3n_o
naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+naca.do_1n * na_ex / naca.k_2n_o
naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+naca.di_1n * na_in / naca.k_2n_i
naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedca_sub.substance.amount / (naca.k_c_i * v_sub)
p.i"A"Current flowing into the pin0.0
n.i"A"Current flowing into the pin0.0
bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
ca_sub.substance.amount"mol"amount of substanceca_sub.c_const * ca_sub.vol
cal.ach_factor1.0
naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+na_in / naca.k_1n_i
naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedca_ex / naca.k_c_o
naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+na_ex / naca.k_1n_o
naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_ex, naca.k_3n_o)
naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_in, naca.k_3n_i)
kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(k_ex, 0.59)
use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
na_in"mol/m3"intracellular sodium concentration8.0
na_ex"mol/m3"extracellular sodium concentration140.0
na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, na_ex, 1, temp)
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
ca_ex"mol/m3"extracellular calcium concentration2.0
temp"K"cell medium temperature288.15
v_cell"m3"total cell volumeInaMo.Cells.ConstantCa.ANCellConst.c_to_v(l2.c, 2.19911e-15, 7.147123e-15)
v_cyto"m3"volume of cytosol0.46 * v_cell - v_sub
v_sub"m3"volume of subspace0.01 * v_cell
v_jsr"m3"volume of junctional SR0.0012 * v_cell
v_nsr"m3"volume of network SR0.0116 * v_cell
v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)
bg.v_eq"V"equilibrium potential-0.0525
bg.g_max"S"maximum conductance1.8e-09
bg.current_name"I_b"
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance1.85e-08
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
kr.v_eq"V"equilibrium potentialv_k
kr.g_max"S"maximum conductance1.5e-09
kr.current_name"I_K,r"
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
naca.current_name"I_NaCa"
naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
naca.FoRThelper variable to simplify equations11604.52214706721 / temp
nak.current_name"I_NaK"
nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)2.46e-11
nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedtrue
kir.v_eq"V"equilibrium potentialv_k
kir.g_max"S"maximum conductance1.25e-08
kir.current_name"I_K1"
kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (temp * 8.3144598)
kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)true
na.ion_ex"mol/m3"extracellular concentration of ionna_ex
na.ion_p"m3/(s.m2)"permeability of ionna_p
na.ion_zvalence of ion1
na.current_name"I_Na"
to.v_eq"V"equilibrium potentialv_k
to.g_max"S"maximum conductance2e-08
to.current_name"I_to"
cell_type"AN"
ca_sub.c_const"mol/m3"fixed concentration0.0001
ca_sub.vol"m3"volume of the compartmentv_sub
na.ion_in"mol/m3"intracellular concentration of ionna_in
bg.g"S"ion conductancebg.g_max

InaMo.Cells.ConstantCa.NCellConst

NOTE: Inada et al. state that they also performed experiments with constant intracellular Ca2+ at 0.1 μM (see supplement, page 3), but they do not give any reference plots for this setup.

model NCellConst "nodal cell model with constant intracellular Ca2+ concentration"
  extends InaMo.Cells.Interfaces.NCellBase;
  extends InaMo.Icons.CellConst(cell_type = "N");
  InaMo.Concentrations.Basic.ConstantConcentration ca_sub(c_const = 1e-4, vol = v_sub) "Ca2+ in subspace available to Ca2+-sensitive currents" annotation(
    Placement(transformation(origin = {16, 0}, extent = {{-17, -17}, {17, 17}})));
equation
  connect(cal.ca, ca_sub.substance) annotation(
    Line(points = {{-34, -36}, {-36, -36}, {-36, -6}, {-10, -6}, {-10, -16}, {16, -16}, {16, -16}}));
  connect(ca_sub.substance, naca.ca) annotation(
    Line(points = {{16, -16}, {-10, -16}, {-10, 38}, {-12, 38}, {-12, 36}}));
  annotation(
    Documentation(info = "<html>
  <p>NOTE: Inada et al. state that they also performed experiments with constant
  intracellular Ca2+ at 0.1 μM (see supplement, page 3), but they do not give
  any reference plots for this setup.</p>
</html>"));
end NCellConst;
  1. ca_sub.substance.rate + naca.trans.rate + cal.trans.rate 0.0
  2. st.i_ion + hcn.i_ion + l2.i + nak.i + naca.i_ion + kr.i_ion + cal.i_ion + bg.i_ion 0.0
  3. (((((( hcn.i_ion st.i_ion ) l2.i ) nak.i ) naca.i_ion ) kr.i_ion ) bg.i_ion ) cal.i_ion 0.0
  4. bg.i_ion bg.g_max ( bg.v_gate bg.v_eq )
  5. st.v_gate bg.v_gate
  6. kr.v_gate cal.v_gate
  7. st.v_gate naca.v
  8. nak.i nak.i_max michaelisMenten( na_in , nak.k_m_Na ) 3.0 michaelisMenten( k_ex , nak.k_m_K ) 2.0 act.fsteady( nak.v , 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
  9. st.v_gate nak.v
  10. l2.v l2.i / l2.c
  11. l2.v st.v_gate
  12. st.v_gate hcn.v_gate
  13. kr.v_gate st.v_gate
  14. st.v_gate v
  15. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n(_act.steady_act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total
    6. _i_open_g_max(_v_gate_v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0182 , 200.0 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.0 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauinact_fast.ftau(_v_gate, 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
  16. Within group hcn (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _i_open_g_max(_v_gate_v_eq)
    3. _i_ion_act.n_i_open
    4. _g_act.n_g_max
    5. _act.steadyact.fsteady(_v_gate_act.shift, 0.0 , 1.0 , -0.08319 , -73.74631268436578 , 1.0 , 1.0 , 1.0 )
    6. _act.tauinact_fast.ftau(_v_gate, 0.25 , 2.25 , -0.07000000000000001 , 0.0158113883008419 )
  17. Within group kr (prefix _ indicates shortened variable name)
    1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
    2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
    3. _inact.n(_inact.steady_inact.n)/_inact.tau
    4. _open_ratio_act_total_inact.n
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _v_gate p.v n.v
    8. _g_open_ratio_g_max
    9. _act_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    10. _act_fast.tauact_fast.ftau(_v_gate, 0.0 )
    11. _act_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    12. _act_slow.tauinact_fast.ftau(_v_gate, 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
    13. _inact.steadyinact.fsteady(_v_gate)
    14. _inact.tauinact.ftau(_v_gate, 0.0 )
    15. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
  18. Within group naca (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
    3. _di_cv_di_ce(_q_ci_v_FoRT)
    4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
    5. _do_cv_do_ce_q_co_v_FoRT
    6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
    7. _k_12_di_cv/_di
    8. _f1_2n_i(_di_2n+_di_3n)/_di
    9. _k_21_do_cv/_do
    10. _f1_2n_o(_do_2n+_do_3n)/_do
    11. _k_23_f1_2n_o/_k_32
    12. _k_41 1.0 /_k_32
    13. _k_14_f1_2n_i_k_32
    14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
    15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
    16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
    17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
    18. _d_x1+_x2+_x3+_x4
    19. _e1_x1/_d
    20. _e2_x2/_d
    21. _e3_x3/_d
    22. _e4_x4/_d
    23. _k_32e 0.5 _q_n_v_FoRT
  19. Within group st (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _open_ratio_act.n_inact.n
    3. _i_open_g_max(_v_gate_v_eq)
    4. _i_ion_open_ratio_i_open
    5. _g_open_ratio_g_max
    6. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0491 , 111.358574610245 , 1.0 , 1.0 , 1.0 )
    7. _act.tau_act.ftau(_v_gate, 0.0 )
    8. _inact.alphainact.falpha(_v_gate, 0.0 )
    9. _inact.betainact.fbeta(_v_gate)
    10. Within group inact (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. _tau 1.0 /(_alpha+_beta)

Functions:

function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0182 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 200.0 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function ftau.fbeta
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 8.0, 0.016) + kr.ftau.falpha(x, 0.0, 1000.0 / 50.0, 0.015)) + off;
end ftau.fbeta;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + falpha.fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function inact.fbeta
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fbeta.fa(x, 0.0) + act.fsteady(x, 0.0, 0.229, 0.0, 1000.0 / 5.0, 1.0, 1.0, 1.0);
end inact.fbeta;
function falpha.fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end falpha.fa;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function st.ftau.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 11.0, 0.00015) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 0.0002)) + off;
end st.ftau.falpha;
function st.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (st.ftau.falpha(x, 0.0) + ftau.fbeta(x, 0.0)) + off;
end st.act.ftau;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := falpha.fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + falpha.fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function fbeta.fa
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 10.0, 95.0 / 150.4) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 50.0 / 150.4)) + off;
end fbeta.fa;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
function inact.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 13.0, 3100.0 / 150.4) + kr.ftau.falpha(x, 0.0, 1000.0 / 70.0, 700.0 / 150.4)) + off;
end inact.falpha;
nameunitlabelvalue
ca_sub.substance.rate"mol/s"molar flow rate of substance
st.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
st.inact.steady"1"steady state achieved if current voltage is held constant
st.inact.beta"1"rate of transfer from open to closed conformation
st.inact.alpha"1"rate of transfer from closed to open conformation
st.inact.nratio of molecules in open conformation0.4886
st.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
st.act.steadyvalue that n would reach if v_gate was held constant
st.act.nratio of molecules in open conformation0.1933
st.g"S"ion conductance
st.i_open"A"i if open_ratio = 1
st.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
st.i_ion"A"current used for ion flux
st.v_gate"V"voltage used for activation/inactivation gates
hcn.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
hcn.act.steadyvalue that n would reach if v_gate was held constant
hcn.act.n"1"ratio of molecules in open conformation0.03825
hcn.g"S"ion conductance
hcn.i_open"A"i if open_ratio = 1
hcn.i_ion"A"current used for ion flux
hcn.v_gate"V"voltage used for activation/inactivation gates
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
nak.i"A"Current flowing from pin p to pin n
nak.v"V"Voltage drop of the two pins (= p.v - n.v)
naca.e4"1"ratio of exchanger molecules in state e4
naca.e3"1"ratio of exchanger molecules in state e3
naca.e2"1"ratio of exchanger molecules in state e2
naca.e1"1"ratio of exchanger molecules in state e1
naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
naca.x4"1"relative frequancy of E4 states
naca.x3"1"relative frequency of E3 states
naca.x2"1"relative frequency of E2 states
naca.x1"1"relative frequency of E1 states
naca.k_14"1"rate constant for transition from E1 to E4
naca.k_41"1"rate constant for transition from E4 to E1
naca.k_32"1"rate constant for transition from E3 to E2
naca.k_23"1"rate constant for transition from E2 to E3
naca.k_21"1"rate constant for transition from E2 to E1
naca.k_12"1"rate constant for transition from E1 to E2
naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
naca.do"1"common denominator summing relative frequencies for all E2 substates
naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
naca.di"1"common denominator summing relative frequencies for all E1 substates
naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
naca.i_ion"A"current used for TransmembraneCaFlow
naca.trans.rate"mol/s"rate of change in substance amount
naca.v"V"Voltage drop of the two pins (= p.v - n.v)
kr.act_totaltotal activation due to slow and fast activation terms
kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.inact.steadyvalue that n would reach if v_gate was held constant
kr.inact.nratio of molecules in open conformation0.9775
kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_slow.steadyvalue that n would reach if v_gate was held constant
kr.act_slow.nratio of molecules in open conformation0.1287
kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_fast.steadyvalue that n would reach if v_gate was held constant
kr.act_fast.nratio of molecules in open conformation0.6067
kr.g"S"ion conductance
kr.i_open"A"i if open_ratio = 1
kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kr.i_ion"A"current used for ion flux
kr.v_gate"V"voltage used for activation/inactivation gates
cal.inact_total
cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.6861
cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cal.inact_slow.nratio of molecules in open conformation0.4441
cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.act.steadyvalue that n would reach if v_gate was held constant
cal.act.nratio of molecules in open conformation0.0001533
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
cal.v_gate"V"voltage used for activation/inactivation gates
bg.i_ion"A"current used for ion flux
bg.v_gate"V"voltage used for activation/inactivation gates
n.v"V"Potential at the pin
p.v"V"Potential at the pin
v"V"Voltage drop of the two pins (= p.v - n.v)
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+naca.di_c * na_in / naca.k_cn_i
naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+naca.di_2n * na_in / naca.k_3n_i
naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+naca.do_2n * na_ex / naca.k_3n_o
naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+naca.do_1n * na_ex / naca.k_2n_o
naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+naca.di_1n * na_in / naca.k_2n_i
naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedca_sub.substance.amount / (naca.k_c_i * v_sub)
p.i"A"Current flowing into the pin0.0
n.i"A"Current flowing into the pin0.0
bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
ca_sub.substance.amount"mol"amount of substanceca_sub.c_const * ca_sub.vol
cal.ach_factor1.0
naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+na_in / naca.k_1n_i
naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedca_ex / naca.k_c_o
naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+na_ex / naca.k_1n_o
naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_ex, naca.k_3n_o)
naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_in, naca.k_3n_i)
use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
na_in"mol/m3"intracellular sodium concentration8.0
na_ex"mol/m3"extracellular sodium concentration140.0
na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, na_ex, 1, temp)
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
ca_ex"mol/m3"extracellular calcium concentration2.0
temp"K"cell medium temperature288.15
v_cell"m3"total cell volumeInaMo.Cells.ConstantCa.NCellConst.c_to_v(l2.c, 2.19911e-15, 7.147123e-15)
v_cyto"m3"volume of cytosol0.46 * v_cell - v_sub
v_sub"m3"volume of subspace0.01 * v_cell
v_jsr"m3"volume of junctional SR0.0012 * v_cell
v_nsr"m3"volume of network SR0.0116 * v_cell
v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)
bg.v_eq"V"equilibrium potential-0.0225
bg.g_max"S"maximum conductance1.2e-09
bg.current_name"I_b"
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance9e-09
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
kr.v_eq"V"equilibrium potentialv_k
kr.g_max"S"maximum conductance3.5e-09
kr.current_name"I_K,r"
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
naca.current_name"I_NaCa"
naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current2.14e-09
naca.FoRThelper variable to simplify equations11604.52214706721 / temp
nak.current_name"I_NaK"
nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)1.43e-10
nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
l2.c"F"membrane capacitance2.9e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedtrue
hcn.v_eq"V"equilibrium potential-0.03
hcn.g_max"S"maximum conductance1e-09
hcn.current_name"I_f"
hcn.act_shift"V"0.0
hcn.act.shift"V"hcn.act_shift
st.v_eq"V"equilibrium potential0.0374
st.g_max"S"maximum conductance1e-10
st.current_name"I_st"
cell_type"N"
ca_sub.c_const"mol/m3"fixed concentration0.0001
ca_sub.vol"m3"volume of the compartmentv_sub
bg.g"S"ion conductancebg.g_max

InaMo.Cells.ConstantCa.NHCellConst

NOTE: Inada et al. state that they also performed experiments with constant intracellular Ca2+ at 0.1 μM (see supplement, page 3), but they do not give any reference plots for this setup.

model NHCellConst "nodal-his cell model with constant intracellular Ca2+ concentration"
  extends InaMo.Cells.Interfaces.NHCellBase;
  extends InaMo.Icons.CellConst(cell_type = "NH");
  InaMo.Concentrations.Basic.ConstantConcentration ca_sub(c_const = 1e-4, vol = v_sub) "Ca2+ in subspace available to Ca2+-sensitive currents" annotation(
    Placement(transformation(origin = {16, 0}, extent = {{-17, -17}, {17, 17}})));
equation
  connect(cal.ca, ca_sub.substance) annotation(
    Line(points = {{-34, -36}, {-36, -36}, {-36, -6}, {-10, -6}, {-10, -16}, {16, -16}, {16, -16}}));
  connect(ca_sub.substance, naca.ca) annotation(
    Line(points = {{16, -16}, {-10, -16}, {-10, 38}, {-12, 38}, {-12, 36}}));
  annotation(
    Documentation(info = "<html>
  <p>NOTE: Inada et al. state that they also performed experiments with constant
  intracellular Ca2+ at 0.1 μM (see supplement, page 3), but they do not give
  any reference plots for this setup.</p>
</html>"));
end NHCellConst;
  1. ca_sub.substance.rate + naca.trans.rate + cal.trans.rate 0.0
  2. to.i_ion + na.i_ion + kir.i_ion + l2.i + nak.i + naca.i_ion + kr.i_ion + cal.i_ion + bg.i_ion 0.0
  3. ((((((( na.i_ion to.i_ion ) kir.i_ion ) l2.i ) nak.i ) naca.i_ion ) kr.i_ion ) bg.i_ion ) cal.i_ion 0.0
  4. bg.i_ion bg.g_max ( bg.v_gate bg.v_eq )
  5. to.v_gate bg.v_gate
  6. to.v_gate cal.v_gate
  7. to.v_gate kr.v_gate
  8. to.v_gate naca.v
  9. nak.i nak.i_max michaelisMenten( na_in , nak.k_m_Na ) 3.0 michaelisMenten( k_ex , nak.k_m_K ) 2.0 act.fsteady( nak.v , 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
  10. to.v_gate nak.v
  11. l2.v l2.i / l2.c
  12. l2.v to.v_gate
  13. to.v_gate kir.v_gate
  14. na.i_open ghkFlux( na.v_gate , temp , na_in , na.ion_ex , na.ion_p , na.ion_z )
  15. to.v_gate na.v_gate
  16. to.v_gate v
  17. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n(_act.steady_act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total
    6. _i_open_g_max(_v_gate_v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.0 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauinact_fast.ftau(_v_gate, 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
  18. Within group kir (prefix _ indicates shortened variable name)
    1. _open_ratio_n_pot 3.0 _voltage_inact.n_voltage_act.n
    2. _i_open_g_max(_v_gate_v_eq)
    3. _i_ion_open_ratio_i_open
    4. _g_open_ratio_g_max
    5. _voltage_inact.nact.fsteady(_v_gate, 0.0 , 1.0 ,_v_eq 0.0036 ,( 1.393 _FoRT), 1.0 , 1.0 , 1.0 )
    6. _voltage_act.nact.fsteady(_v_gate, 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
  19. Within group kr (prefix _ indicates shortened variable name)
    1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
    2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
    3. _inact.n(_inact.steady_inact.n)/_inact.tau
    4. _open_ratio_act_total_inact.n
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _g_open_ratio_g_max
    8. _act_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    9. _act_fast.tauact_fast.ftau(_v_gate, 0.0 )
    10. _act_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    11. _act_slow.tauinact_fast.ftau(_v_gate, 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
    12. _inact.steadyinact.fsteady(_v_gate)
    13. _inact.tauinact.ftau(_v_gate, 0.0 )
    14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
  20. Within group na (prefix _ indicates shortened variable name)
    1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _open_ratio_act.n 3.0 _inact_total
    4. _i_ion_open_ratio_i_open
    5. _act.alphafa(_v_gate, -0.0444 , 5829.58 , -78.90791446382072 )
    6. _act.betakr.ftau.falpha(_v_gate, -0.0444 , -78.90791446382072 , 18400.0 )
    7. _inact_fast.steadyinact_fast.fsteady(_v_gate)
    8. _inact_fast.tauact.fsteady(_v_gate, 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
    9. _inact_slow.steadyinact_fast.fsteady(_v_gate)
    10. _inact_slow.tauact.fsteady(_v_gate, 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
    11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
    12. Within group act (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. _tau 1.0 /(_alpha+_beta)
  21. Within group naca (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
    3. _di_cv_di_ce(_q_ci_v_FoRT)
    4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
    5. _do_cv_do_ce_q_co_v_FoRT
    6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
    7. _k_12_di_cv/_di
    8. _f1_2n_i(_di_2n+_di_3n)/_di
    9. _k_21_do_cv/_do
    10. _f1_2n_o(_do_2n+_do_3n)/_do
    11. _k_23_f1_2n_o/_k_32
    12. _k_41 1.0 /_k_32
    13. _k_14_f1_2n_i_k_32
    14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
    15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
    16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
    17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
    18. _d_x1+_x2+_x3+_x4
    19. _e1_x1/_d
    20. _e2_x2/_d
    21. _e3_x3/_d
    22. _e4_x4/_d
    23. _k_32e 0.5 _q_n_v_FoRT
  22. Within group to (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    4. _open_ratio_act.n_inact_total
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _v_gate p.v n.v
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.000596 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauact.fsteady(_v_gate, 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
    15. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n

Functions:

function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function to.act.ftau
  input Real x "input value";
  input Real off = 0.000596 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, -0.03061, 90.0, 1.037 / 0.003188) + kr.ftau.falpha(x, -0.02384, -120.0, 0.396 / 0.003188)) + off;
end to.act.ftau;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function inact_fast.fsteady
  input Real x "input value";
  output Real y "result of applying the HH-style equation steady = alpha/(alpha + beta)";
algorithm
  y := kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) / (kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) + act.fsteady(x, 0.0, 1491.0, -0.0946, 1000.0 / 12.9, 323.3, 1.0, 1.0));
end inact_fast.fsteady;
function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function ghkFlux "ghk flux equation for a single ion"
  input Real v(quantity = "ElectricPotential", unit = "V") "membrane potential";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Real ion_p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "permeability of cell membrane to Na+ cations";
  input Integer ion_z "ion valence";
  output Real i(quantity = "CurrentDensity", unit = "A/m2") "current density resulting from ion flux through membrane";
  protected Real g_max(quantity = "Conductance", unit = "S");
  protected Real v_eq(quantity = "ElectricPotential", unit = "V");
  protected Real FoRT(unit = "1/V") = 96485.33289000001 / (8.3144598 * temp);
algorithm
  g_max := ion_p * ion_ex * FoRT * 96485.33289000001 * /*Real*/(ion_z) ^ 2.0;
  v_eq := nernst(ion_in, ion_ex, ion_z, temp);
  if abs(v) < 1e-06 then
    i := g_max / FoRT / /*Real*/(ion_z) * (exp(-v_eq * FoRT * /*Real*/(ion_z)) - 1.0);
  else
    i := g_max * v * (exp((v - v_eq) * FoRT * /*Real*/(ion_z)) - 1.0) / (exp(v * FoRT * /*Real*/(ion_z)) - 1.0);
  end if;
end ghkFlux;
function fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end fa;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
nameunitlabelvalue
ca_sub.substance.rate"mol/s"molar flow rate of substance
to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_fast.steadyvalue that n would reach if v_gate was held constant
to.inact_fast.nratio of molecules in open conformation0.864
to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_slow.steadyvalue that n would reach if v_gate was held constant
to.inact_slow.nratio of molecules in open conformation0.1297
to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.act.steadyvalue that n would reach if v_gate was held constant
to.act.nratio of molecules in open conformation0.009580999999999999
to.g"S"ion conductance
to.i_open"A"i if open_ratio = 1
to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
to.i_ion"A"current used for ion flux
to.v_gate"V"voltage used for activation/inactivation gates
na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_slow.steadyvalue that n would reach if v_gate was held constant
na.inact_slow.nratio of molecules in open conformation0.5552
na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_fast.steadyvalue that n would reach if v_gate was held constant
na.inact_fast.nratio of molecules in open conformation0.6438
na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.act.steady"1"steady state achieved if current voltage is held constant
na.act.beta"1"rate of transfer from open to closed conformation
na.act.alpha"1"rate of transfer from closed to open conformation
na.act.nratio of molecules in open conformation0.01529
na.i_openi if open_ratio = 1
na.open_ratioratio between 0 (fully closed) and 1 (fully open)
na.i_ion"A"current used for ion flux
na.v_gate"V"voltage used for activation/inactivation gates
kir.voltage_act.nratio of molecules in open conformation
kir.voltage_inact.nratio of molecules in open conformation
kir.g"S"ion conductance
kir.i_open"A"i if open_ratio = 1
kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kir.i_ion"A"current used for ion flux
kir.v_gate"V"voltage used for activation/inactivation gates
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
nak.i"A"Current flowing from pin p to pin n
nak.v"V"Voltage drop of the two pins (= p.v - n.v)
naca.e4"1"ratio of exchanger molecules in state e4
naca.e3"1"ratio of exchanger molecules in state e3
naca.e2"1"ratio of exchanger molecules in state e2
naca.e1"1"ratio of exchanger molecules in state e1
naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
naca.x4"1"relative frequancy of E4 states
naca.x3"1"relative frequency of E3 states
naca.x2"1"relative frequency of E2 states
naca.x1"1"relative frequency of E1 states
naca.k_14"1"rate constant for transition from E1 to E4
naca.k_41"1"rate constant for transition from E4 to E1
naca.k_32"1"rate constant for transition from E3 to E2
naca.k_23"1"rate constant for transition from E2 to E3
naca.k_21"1"rate constant for transition from E2 to E1
naca.k_12"1"rate constant for transition from E1 to E2
naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
naca.do"1"common denominator summing relative frequencies for all E2 substates
naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
naca.di"1"common denominator summing relative frequencies for all E1 substates
naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
naca.i_ion"A"current used for TransmembraneCaFlow
naca.trans.rate"mol/s"rate of change in substance amount
naca.v"V"Voltage drop of the two pins (= p.v - n.v)
kr.act_totaltotal activation due to slow and fast activation terms
kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.inact.steadyvalue that n would reach if v_gate was held constant
kr.inact.nratio of molecules in open conformation0.9853
kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_slow.steadyvalue that n would reach if v_gate was held constant
kr.act_slow.nratio of molecules in open conformation0.07024
kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_fast.steadyvalue that n would reach if v_gate was held constant
kr.act_fast.nratio of molecules in open conformation0.09949
kr.g"S"ion conductance
kr.i_open"A"i if open_ratio = 1
kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kr.i_ion"A"current used for ion flux
kr.v_gate"V"voltage used for activation/inactivation gates
cal.inact_total
cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.9981
cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cal.inact_slow.nratio of molecules in open conformation0.9831
cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.act.steadyvalue that n would reach if v_gate was held constant
cal.act.nratio of molecules in open conformation5.025e-05
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
cal.v_gate"V"voltage used for activation/inactivation gates
bg.i_ion"A"current used for ion flux
bg.v_gate"V"voltage used for activation/inactivation gates
n.v"V"Potential at the pin
p.v"V"Potential at the pin
v"V"Voltage drop of the two pins (= p.v - n.v)
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+naca.di_c * na_in / naca.k_cn_i
naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+naca.di_2n * na_in / naca.k_3n_i
naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+naca.do_2n * na_ex / naca.k_3n_o
naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+naca.do_1n * na_ex / naca.k_2n_o
naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+naca.di_1n * na_in / naca.k_2n_i
naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occludedca_sub.substance.amount / (naca.k_c_i * v_sub)
p.i"A"Current flowing into the pin0.0
n.i"A"Current flowing into the pin0.0
bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
ca_sub.substance.amount"mol"amount of substanceca_sub.c_const * ca_sub.vol
cal.ach_factor1.0
naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+na_in / naca.k_1n_i
naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedca_ex / naca.k_c_o
naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+na_ex / naca.k_1n_o
naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_ex, naca.k_3n_o)
naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_in, naca.k_3n_i)
kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(k_ex, 0.59)
use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
na_in"mol/m3"intracellular sodium concentration8.0
na_ex"mol/m3"extracellular sodium concentration140.0
na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, na_ex, 1, temp)
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
ca_ex"mol/m3"extracellular calcium concentration2.0
temp"K"cell medium temperature288.15
v_cell"m3"total cell volumeInaMo.Cells.ConstantCa.NHCellConst.c_to_v(l2.c, 2.19911e-15, 7.147123e-15)
v_cyto"m3"volume of cytosol0.46 * v_cell - v_sub
v_sub"m3"volume of subspace0.01 * v_cell
v_jsr"m3"volume of junctional SR0.0012 * v_cell
v_nsr"m3"volume of network SR0.0116 * v_cell
v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)
bg.v_eq"V"equilibrium potential-0.04
bg.g_max"S"maximum conductance2e-09
bg.current_name"I_b"
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance2.1e-08
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
kr.v_eq"V"equilibrium potentialv_k
kr.g_max"S"maximum conductance2e-09
kr.current_name"I_K,r"
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
naca.current_name"I_NaCa"
naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
naca.FoRThelper variable to simplify equations11604.52214706721 / temp
nak.current_name"I_NaK"
nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)1.97e-10
nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedtrue
kir.v_eq"V"equilibrium potentialv_k
kir.g_max"S"maximum conductance1.5e-08
kir.current_name"I_K1"
kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (temp * 8.3144598)
kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)true
na.ion_ex"mol/m3"extracellular concentration of ionna_ex
na.ion_p"m3/(s.m2)"permeability of ionna_p
na.ion_zvalence of ion1
na.current_name"I_Na"
to.v_eq"V"equilibrium potentialv_k
to.g_max"S"maximum conductance1.4e-08
to.current_name"I_to"
cell_type"NH"
ca_sub.c_const"mol/m3"fixed concentration0.0001
ca_sub.vol"m3"volume of the compartmentv_sub
na.ion_in"mol/m3"intracellular concentration of ionna_in
bg.g"S"ion conductancebg.g_max

Variable intracellular Ca2+ concentration (VariableCa)

InaMo.Cells.VariableCa

InaMo.Cells.VariableCa.ANCell

model ANCell "full atrio-nodal cell model by Inada et al. (2009)"
  extends InaMo.Cells.Interfaces.ANCellBase;
  extends InaMo.Icons.CellVar(cell_type = "AN");
  // starting values for CaHandling are from Inada 2009
  InaMo.Concentrations.Atrioventricular.CaHandling ca(cyto.c_start = 0.1206e-3, sub.c_start = 0.06397e-3, jsr.c_start = 0.4273, nsr.c_start = 1.068, tc.f_start = 0.02359, tm.f_a_start = 0.3667, tm.f_b_start = 0.5594, cm_cyto.f_start = 0.04845, cm_sub.f_start = 0.02626, cq.f_start = 0.3379, cm_sl.f_start = 3.936e-5, jsr_sub.p = 1805.6) "intracellular Ca2+ handling by SR and buffers" annotation(
    Placement(transformation(origin = {16, 0}, extent = {{-17, -17}, {17, 17}})));
  // [Ca2+]_rel
  // NOTE: value from C++ code, not given in paper
equation
  connect(ca.ca_sub, naca.ca) annotation(
    Line(points = {{0, 0}, {-10, 0}, {-10, 36}, {-12, 36}, {-12, 36}}));
  connect(cal.ca, ca.ca_sub) annotation(
    Line(points = {{-34, -36}, {-34, -36}, {-34, 0}, {0, 0}, {0, 0}}));
end ANCell;
  1. ca.ca_sub.rate + naca.trans.rate + cal.trans.rate 0.0
  2. to.i_ion + na.i_ion + kir.i_ion + l2.i + nak.i + naca.i_ion + kr.i_ion + cal.i_ion + bg.i_ion 0.0
  3. ((((((( na.i_ion to.i_ion ) kir.i_ion ) l2.i ) nak.i ) naca.i_ion ) kr.i_ion ) bg.i_ion ) cal.i_ion 0.0
  4. bg.i_ion bg.g_max ( bg.v_gate bg.v_eq )
  5. to.v_gate bg.v_gate
  6. to.v_gate cal.v_gate
  7. to.v_gate kr.v_gate
  8. to.v_gate naca.v
  9. nak.i nak.i_max michaelisMenten( na_in , nak.k_m_Na ) 3.0 michaelisMenten( k_ex , nak.k_m_K ) 2.0 act.fsteady( nak.v , 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
  10. to.v_gate nak.v
  11. l2.v l2.i / l2.c
  12. l2.v to.v_gate
  13. to.v_gate kir.v_gate
  14. na.i_open ghkFlux( na.v_gate , temp , na_in , na.ion_ex , na.ion_p , na.ion_z )
  15. to.v_gate na.v_gate
  16. to.v_gate v
  17. naca.di_c ca.sub.substance.amount / naca.k_c_i v_sub
  18. naca.di_cn naca.di_c na_in / naca.k_cn_i
  19. Within group ca (prefix _ indicates shortened variable name)
    1. _cm_cyto.site.rate+_tm.site_a.rate+_tc.site.rate+_cyto_nsr.rate+(_cyto.substance.rate_sub_cyto.rate) 0.0
    2. _nsr_jsr.rate+(_nsr.substance.rate_cyto_nsr.rate) 0.0
    3. _cq.site.rate+_jsr_sub.rate+(_jsr.substance.rate_nsr_jsr.rate) 0.0
    4. _cm_sl.site.rate+_cm_sub.site.rate+_sub_cyto.rate+_sub.substance.rate+(_ca_sub.rate_jsr_sub.rate) 0.0
    5. _sub_cyto.rate_sub_cyto.coeff(_sub.substance.amount/_sub_cyto.vol_src_cyto.substance.amount/_sub_cyto.vol_dst)_sub_cyto.vol_trans
    6. _cyto_nsr.rate_cyto_nsr.pmichaelisMenten(_cyto.substance.amount/_cyto_nsr.vol_src,_cyto_nsr.k)
    7. _nsr_jsr.rate_nsr_jsr.coeff(_nsr.substance.amount/_nsr_jsr.vol_src_jsr.substance.amount/_nsr_jsr.vol_dst)_nsr_jsr.vol_trans
    8. _tc.free.con_tc.free.substance.amount/_tc.free.vol
    9. _cm_cyto.free.con_cm_cyto.free.substance.amount/_cm_cyto.free.vol
    10. _cm_sub.free.con_cm_sub.free.substance.amount/_cm_sub.free.vol
    11. _cq.free.con_cq.free.substance.amount/_cq.free.vol
    12. _cm_sl.free.con_cm_sl.free.substance.amount/_cm_sl.free.vol
    13. Within group cm_cyto (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_cyto.free.substance.amount ca.cm_cyto.site.rate
        2. ca.cm_cyto.site.rate _k ca.cyto.substance.amount ca.cm_cyto.free.substance.amount _kb ca.cm_cyto.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cm_cyto.site.rate
        2. _con_substance.amount/_vol
    14. Within group cm_sl (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_sl.free.substance.amount ca.cm_sl.site.rate
        2. ca.cm_sl.site.rate _k ca.sub.substance.amount ca.cm_sl.free.substance.amount _kb ca.cm_sl.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cm_sl.site.rate
        2. _con_substance.amount/_vol
    15. Within group cm_sub (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_sub.free.substance.amount ca.cm_sub.site.rate
        2. ca.cm_sub.site.rate _k ca.sub.substance.amount ca.cm_sub.free.substance.amount _kb ca.cm_sub.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cm_sub.site.rate
        2. _con_substance.amount/_vol
    16. Within group cq (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cq.free.substance.amount ca.cq.site.rate
        2. ca.cq.site.rate _k ca.jsr.substance.amount ca.cq.free.substance.amount _kb ca.cq.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cq.site.rate
        2. _con_substance.amount/_vol
    17. Within group cyto (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    18. Within group jsr (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    19. Within group jsr_sub (prefix _ indicates shortened variable name)
      1. _coeff_phillLangmuir( ca.sub.substance.amount /_vol_dst,_ka,_n)
      2. _rate_coeff( ca.jsr.substance.amount /_vol_src ca.sub.substance.amount /_vol_dst)_vol_trans
    20. Within group nsr (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    21. Within group sub (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    22. Within group tc (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.tc.free.substance.amount ca.tc.site.rate
        2. ca.tc.site.rate _k ca.cyto.substance.amount ca.tc.free.substance.amount _kb ca.tc.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.tc.site.rate
        2. _con_substance.amount/_vol
    23. Within group tm (prefix _ indicates shortened variable name)
      1. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
      2. _site_a.rate_assoc_a.k ca.cyto.substance.amount _free.substance.amount_assoc_a.kb_occupied_a.substance.amount
      3. _site_b.rate_assoc_b.k ca.mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
      4. Within group free (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      5. Within group occupied_a (prefix _ indicates shortened variable name)
        1. _substance.amount ca.tm.site_a.rate
        2. _con_substance.amount/_vol
      6. Within group occupied_b (prefix _ indicates shortened variable name)
        1. _substance.amount ca.tm.site_b.rate
        2. _con_substance.amount/_vol
  20. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n(_act.steady_act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total
    6. _i_open_g_max(_v_gate_v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.0 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauinact_fast.ftau(_v_gate, 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
  21. Within group kir (prefix _ indicates shortened variable name)
    1. _open_ratio_n_pot 3.0 _voltage_inact.n_voltage_act.n
    2. _i_open_g_max(_v_gate_v_eq)
    3. _i_ion_open_ratio_i_open
    4. _g_open_ratio_g_max
    5. _voltage_inact.nact.fsteady(_v_gate, 0.0 , 1.0 ,_v_eq 0.0036 ,( 1.393 _FoRT), 1.0 , 1.0 , 1.0 )
    6. _voltage_act.nact.fsteady(_v_gate, 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
  22. Within group kr (prefix _ indicates shortened variable name)
    1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
    2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
    3. _inact.n(_inact.steady_inact.n)/_inact.tau
    4. _open_ratio_act_total_inact.n
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _g_open_ratio_g_max
    8. _act_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    9. _act_fast.tauact_fast.ftau(_v_gate, 0.0 )
    10. _act_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    11. _act_slow.tauinact_fast.ftau(_v_gate, 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
    12. _inact.steadyinact.fsteady(_v_gate)
    13. _inact.tauinact.ftau(_v_gate, 0.0 )
    14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
  23. Within group na (prefix _ indicates shortened variable name)
    1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _open_ratio_act.n 3.0 _inact_total
    4. _i_ion_open_ratio_i_open
    5. _act.alphafa(_v_gate, -0.0444 , 5829.58 , -78.90791446382072 )
    6. _act.betakr.ftau.falpha(_v_gate, -0.0444 , -78.90791446382072 , 18400.0 )
    7. _inact_fast.steadyinact_fast.fsteady(_v_gate)
    8. _inact_fast.tauact.fsteady(_v_gate, 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
    9. _inact_slow.steadyinact_fast.fsteady(_v_gate)
    10. _inact_slow.tauact.fsteady(_v_gate, 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
    11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
    12. Within group act (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. _tau 1.0 /(_alpha+_beta)
  24. Within group naca (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
    3. _di_cv_di_ce(_q_ci_v_FoRT)
    4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
    5. _do_cv_do_ce_q_co_v_FoRT
    6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
    7. _k_12_di_cv/_di
    8. _f1_2n_i(_di_2n+_di_3n)/_di
    9. _k_21_do_cv/_do
    10. _f1_2n_o(_do_2n+_do_3n)/_do
    11. _k_23_f1_2n_o/_k_32
    12. _k_41 1.0 /_k_32
    13. _k_14_f1_2n_i_k_32
    14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
    15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
    16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
    17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
    18. _d_x1+_x2+_x3+_x4
    19. _e1_x1/_d
    20. _e2_x2/_d
    21. _e3_x3/_d
    22. _e4_x4/_d
    23. _k_32e 0.5 _q_n_v_FoRT
  25. Within group to (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    4. _open_ratio_act.n_inact_total
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _v_gate p.v n.v
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.000596 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauact.fsteady(_v_gate, 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
    15. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n

Functions:

function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function inact_fast.fsteady
  input Real x "input value";
  output Real y "result of applying the HH-style equation steady = alpha/(alpha + beta)";
algorithm
  y := kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) / (kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) + act.fsteady(x, 0.0, 1491.0, -0.0946, 1000.0 / 12.9, 323.3, 1.0, 1.0));
end inact_fast.fsteady;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function ghkFlux "ghk flux equation for a single ion"
  input Real v(quantity = "ElectricPotential", unit = "V") "membrane potential";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Real ion_p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "permeability of cell membrane to Na+ cations";
  input Integer ion_z "ion valence";
  output Real i(quantity = "CurrentDensity", unit = "A/m2") "current density resulting from ion flux through membrane";
  protected Real g_max(quantity = "Conductance", unit = "S");
  protected Real v_eq(quantity = "ElectricPotential", unit = "V");
  protected Real FoRT(unit = "1/V") = 96485.33289000001 / (8.3144598 * temp);
algorithm
  g_max := ion_p * ion_ex * FoRT * 96485.33289000001 * /*Real*/(ion_z) ^ 2.0;
  v_eq := nernst(ion_in, ion_ex, ion_z, temp);
  if abs(v) < 1e-06 then
    i := g_max / FoRT / /*Real*/(ion_z) * (exp(-v_eq * FoRT * /*Real*/(ion_z)) - 1.0);
  else
    i := g_max * v * (exp((v - v_eq) * FoRT * /*Real*/(ion_z)) - 1.0) / (exp(v * FoRT * /*Real*/(ion_z)) - 1.0);
  end if;
end ghkFlux;
function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end fa;
function to.act.ftau
  input Real x "input value";
  input Real off = 0.000596 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, -0.03061, 90.0, 1.037 / 0.003188) + kr.ftau.falpha(x, -0.02384, -120.0, 0.396 / 0.003188)) + off;
end to.act.ftau;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
nameunitlabelvalue
ca.cm_sl.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_sl.occupied.substance.amount"mol"amount of substance
ca.cm_sl.free.con"mol/m3"concentration of substance in compartment
ca.cm_sl.free.substance.amount"mol"amount of substance
ca.cm_sl.site.rate"mol/s"molar flow rate of substance
ca.cq.occupied.con"mol/m3"concentration of substance in compartment
ca.cq.occupied.substance.amount"mol"amount of substance
ca.cq.free.con"mol/m3"concentration of substance in compartment
ca.cq.free.substance.amount"mol"amount of substance
ca.cq.site.rate"mol/s"molar flow rate of substance
ca.cm_sub.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_sub.occupied.substance.amount"mol"amount of substance
ca.cm_sub.free.con"mol/m3"concentration of substance in compartment
ca.cm_sub.free.substance.amount"mol"amount of substance
ca.cm_sub.site.rate"mol/s"molar flow rate of substance
ca.cm_cyto.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_cyto.occupied.substance.amount"mol"amount of substance
ca.cm_cyto.free.con"mol/m3"concentration of substance in compartment
ca.cm_cyto.free.substance.amount"mol"amount of substance
ca.cm_cyto.site.rate"mol/s"molar flow rate of substance
ca.tm.occupied_b.con"mol/m3"concentration of substance in compartment
ca.tm.occupied_b.substance.amount"mol"amount of substance
ca.tm.occupied_a.con"mol/m3"concentration of substance in compartment
ca.tm.occupied_a.substance.amount"mol"amount of substance
ca.tm.free.con"mol/m3"concentration of substance in compartment
ca.tm.free.substance.rate"mol/s"molar flow rate of substance
ca.tm.free.substance.amount"mol"amount of substance
ca.tm.site_b.rate"mol/s"molar flow rate of substance
ca.tm.site_a.rate"mol/s"molar flow rate of substance
ca.tc.occupied.con"mol/m3"concentration of substance in compartment
ca.tc.occupied.substance.amount"mol"amount of substance
ca.tc.free.con"mol/m3"concentration of substance in compartment
ca.tc.free.substance.amount"mol"amount of substance
ca.tc.site.rate"mol/s"molar flow rate of substance
ca.jsr_sub.coeff"1/s"coefficient of transport
ca.jsr_sub.rate"mol/s"rate of change in substance amount
ca.nsr_jsr.rate"mol/s"rate of change in substance amount
ca.cyto_nsr.rate"mol/s"rate of change in substance amount
ca.sub_cyto.rate"mol/s"rate of change in substance amount
ca.nsr.con"mol/m3"concentration of substance in compartment
ca.nsr.substance.rate"mol/s"molar flow rate of substance
ca.nsr.substance.amount"mol"amount of substance
ca.jsr.con"mol/m3"concentration of substance in compartment
ca.jsr.substance.rate"mol/s"molar flow rate of substance
ca.jsr.substance.amount"mol"amount of substance
ca.cyto.con"mol/m3"concentration of substance in compartment
ca.cyto.substance.rate"mol/s"molar flow rate of substance
ca.cyto.substance.amount"mol"amount of substance
ca.sub.con"mol/m3"concentration of substance in compartment
ca.sub.substance.rate"mol/s"molar flow rate of substance
ca.sub.substance.amount"mol"amount of substance
ca.ca_sub.rate"mol/s"molar flow rate of substance
to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_fast.steadyvalue that n would reach if v_gate was held constant
to.inact_fast.nratio of molecules in open conformation0.8734
to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_slow.steadyvalue that n would reach if v_gate was held constant
to.inact_slow.nratio of molecules in open conformation0.1503
to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.act.steadyvalue that n would reach if v_gate was held constant
to.act.nratio of molecules in open conformation0.008857
to.g"S"ion conductance
to.i_open"A"i if open_ratio = 1
to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
to.i_ion"A"current used for ion flux
to.v_gate"V"voltage used for activation/inactivation gates
na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_slow.steadyvalue that n would reach if v_gate was held constant
na.inact_slow.nratio of molecules in open conformation0.6162
na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_fast.steadyvalue that n would reach if v_gate was held constant
na.inact_fast.nratio of molecules in open conformation0.717
na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.act.steady"1"steady state achieved if current voltage is held constant
na.act.beta"1"rate of transfer from open to closed conformation
na.act.alpha"1"rate of transfer from closed to open conformation
na.act.nratio of molecules in open conformation0.01227
na.i_openi if open_ratio = 1
na.open_ratioratio between 0 (fully closed) and 1 (fully open)
na.i_ion"A"current used for ion flux
na.v_gate"V"voltage used for activation/inactivation gates
kir.voltage_act.nratio of molecules in open conformation
kir.voltage_inact.nratio of molecules in open conformation
kir.g"S"ion conductance
kir.i_open"A"i if open_ratio = 1
kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kir.i_ion"A"current used for ion flux
kir.v_gate"V"voltage used for activation/inactivation gates
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
nak.i"A"Current flowing from pin p to pin n
nak.v"V"Voltage drop of the two pins (= p.v - n.v)
naca.e4"1"ratio of exchanger molecules in state e4
naca.e3"1"ratio of exchanger molecules in state e3
naca.e2"1"ratio of exchanger molecules in state e2
naca.e1"1"ratio of exchanger molecules in state e1
naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
naca.x4"1"relative frequancy of E4 states
naca.x3"1"relative frequency of E3 states
naca.x2"1"relative frequency of E2 states
naca.x1"1"relative frequency of E1 states
naca.k_14"1"rate constant for transition from E1 to E4
naca.k_41"1"rate constant for transition from E4 to E1
naca.k_32"1"rate constant for transition from E3 to E2
naca.k_23"1"rate constant for transition from E2 to E3
naca.k_21"1"rate constant for transition from E2 to E1
naca.k_12"1"rate constant for transition from E1 to E2
naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
naca.do"1"common denominator summing relative frequencies for all E2 substates
naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
naca.di"1"common denominator summing relative frequencies for all E1 substates
naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+
naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occluded
naca.i_ion"A"current used for TransmembraneCaFlow
naca.trans.rate"mol/s"rate of change in substance amount
naca.v"V"Voltage drop of the two pins (= p.v - n.v)
kr.act_totaltotal activation due to slow and fast activation terms
kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.inact.steadyvalue that n would reach if v_gate was held constant
kr.inact.nratio of molecules in open conformation0.9866
kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_slow.steadyvalue that n would reach if v_gate was held constant
kr.act_slow.nratio of molecules in open conformation0.0484
kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_fast.steadyvalue that n would reach if v_gate was held constant
kr.act_fast.nratio of molecules in open conformation0.07106999999999999
kr.g"S"ion conductance
kr.i_open"A"i if open_ratio = 1
kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kr.i_ion"A"current used for ion flux
kr.v_gate"V"voltage used for activation/inactivation gates
cal.inact_total
cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.9985000000000001
cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cal.inact_slow.nratio of molecules in open conformation0.9875
cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.act.steadyvalue that n would reach if v_gate was held constant
cal.act.nratio of molecules in open conformation4.069e-05
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
cal.v_gate"V"voltage used for activation/inactivation gates
bg.i_ion"A"current used for ion flux
bg.v_gate"V"voltage used for activation/inactivation gates
n.v"V"Potential at the pin
p.v"V"Potential at the pin
v"V"Voltage drop of the two pins (= p.v - n.v)
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+naca.di_2n * na_in / naca.k_3n_i
naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+naca.do_2n * na_ex / naca.k_3n_o
naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+naca.do_1n * na_ex / naca.k_2n_o
naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+naca.di_1n * na_in / naca.k_2n_i
p.i"A"Current flowing into the pin0.0
n.i"A"Current flowing into the pin0.0
bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
ca.mg.substance.amount"mol"amount of substanceca.mg.c_const * ca.mg.vol
ca.sub_cyto.coeff"1/s"coefficient of transport1.0 / ca.sub_cyto.tau
ca.nsr_jsr.coeff"1/s"coefficient of transport1.0 / ca.nsr_jsr.tau
cal.ach_factor1.0
naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+na_in / naca.k_1n_i
naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedca_ex / naca.k_c_o
naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+na_ex / naca.k_1n_o
naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_ex, naca.k_3n_o)
naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_in, naca.k_3n_i)
kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(k_ex, 0.59)
use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
na_in"mol/m3"intracellular sodium concentration8.0
na_ex"mol/m3"extracellular sodium concentration140.0
na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, na_ex, 1, temp)
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
ca_ex"mol/m3"extracellular calcium concentration2.0
temp"K"cell medium temperature288.15
v_cell"m3"total cell volumeInaMo.Cells.VariableCa.ANCell.c_to_v(l2.c, 2.19911e-15, 7.147123e-15)
v_cyto"m3"volume of cytosol0.46 * v_cell - v_sub
v_sub"m3"volume of subspace0.01 * v_cell
v_jsr"m3"volume of junctional SR0.0012 * v_cell
v_nsr"m3"volume of network SR0.0116 * v_cell
v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)
bg.v_eq"V"equilibrium potential-0.0525
bg.g_max"S"maximum conductance1.8e-09
bg.current_name"I_b"
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance1.85e-08
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
kr.v_eq"V"equilibrium potentialv_k
kr.g_max"S"maximum conductance1.5e-09
kr.current_name"I_K,r"
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
naca.current_name"I_NaCa"
naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
naca.FoRThelper variable to simplify equations11604.52214706721 / temp
nak.current_name"I_NaK"
nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)2.46e-11
nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedtrue
kir.v_eq"V"equilibrium potentialv_k
kir.g_max"S"maximum conductance1.25e-08
kir.current_name"I_K1"
kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (temp * 8.3144598)
kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)true
na.ion_ex"mol/m3"extracellular concentration of ionna_ex
na.ion_p"m3/(s.m2)"permeability of ionna_p
na.ion_zvalence of ion1
na.current_name"I_Na"
to.v_eq"V"equilibrium potentialv_k
to.g_max"S"maximum conductance2e-08
to.current_name"I_to"
cell_type"AN"
ca.tc_tot"mol/m3"total concentration of troponin-Ca0.031
ca.tmc_tot"mol/m3"total concentration of troponin-Mg binding to Ca2+0.062
ca.cm_tot"mol/m3"total concentration of calmodulin0.045
ca.cq_tot"mol/m3"total concentration of calsequestrin10.0
ca.mg.c_const"mol/m3"fixed concentration2.5
ca.mg.vol"m3"volume of the compartmentv_cyto
ca.sub.vol"m3"volume of the compartmentv_sub
ca.sub.c_start"mol/m3"initial value of concentration6.397e-05
ca.cyto.vol"m3"volume of the compartmentv_cyto
ca.cyto.c_start"mol/m3"initial value of concentration0.0001206
ca.jsr.vol"m3"volume of the compartmentv_jsr
ca.jsr.c_start"mol/m3"initial value of concentration0.4273
ca.nsr.vol"m3"volume of the compartmentv_nsr
ca.nsr.c_start"mol/m3"initial value of concentration1.068
ca.sub_cyto.vol_src"m3"volume of source compartmentca.sub.vol
ca.sub_cyto.vol_dst"m3"volume of destination compartmentca.cyto.vol
ca.sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.sub_cyto.vol_src, ca.sub_cyto.vol_dst)
ca.sub_cyto.tau"s"time constant of diffusion4e-05
ca.cyto_nsr.current_name"SERCA"
ca.cyto_nsr.vol_src"m3"volume of source compartmentca.cyto.vol
ca.cyto_nsr.p"mol/s"maximum flow rate5.0 * v_nsr
ca.cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
ca.nsr_jsr.vol_src"m3"volume of source compartmentca.nsr.vol
ca.nsr_jsr.vol_dst"m3"volume of destination compartmentca.jsr.vol
ca.nsr_jsr.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.nsr_jsr.vol_src, ca.nsr_jsr.vol_dst)
ca.nsr_jsr.tau"s"time constant of diffusion0.06
ca.jsr_sub.vol_src"m3"volume of source compartmentca.jsr.vol
ca.jsr_sub.vol_dst"m3"volume of destination compartmentca.sub.vol
ca.jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.jsr_sub.vol_src, ca.jsr_sub.vol_dst)
ca.jsr_sub.current_name"RyR"
ca.jsr_sub.p"1/s"rate coefficient (inverse of time constant)1805.6
ca.jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
ca.jsr_sub.n"1"Hill coefficient2.0
ca.tc.n_tot"mol"total amount of bufferca.tc_tot * v_cyto
ca.tc.f_start"1"initial value for f0.02359
ca.tc.k"mol-1s-1"association constant88800.0 / v_cyto
ca.tc.kb"s-1"dissociation constant446.0
ca.tc.vol"m3"volume of compartment in which buffer resides1.0
ca.tc.assoc.k"mol-1s-1"association constantca.tc.k
ca.tc.assoc.kb"s-1"dissociation constantca.tc.kb
ca.tc.free.vol"m3"volume of the compartmentca.tc.vol
ca.tc.free.c_start"mol/m3"initial value of concentration(1.0 - ca.tc.f_start) * ca.tc.n_tot / ca.tc.vol
ca.tc.occupied.vol"m3"volume of the compartmentca.tc.vol
ca.tc.occupied.c_start"mol/m3"initial value of concentrationca.tc.f_start * ca.tc.n_tot / ca.tc.vol
ca.tm.n_tot"mol"total amount of bufferca.tmc_tot * v_cyto
ca.tm.f_a_start"1"initial value for f0.3667
ca.tm.f_b_start"1"initial value for f0.5594
ca.tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / v_cyto
ca.tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / v_cyto
ca.tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
ca.tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
ca.tm.vol"m3"volume of compartment in which buffer residesv_cyto
ca.tm.assoc_a.k"mol-1s-1"association constantca.tm.k_a
ca.tm.assoc_a.kb"s-1"dissociation constantca.tm.kb_a
ca.tm.assoc_b.k"mol-1s-1"association constantca.tm.k_b
ca.tm.assoc_b.kb"s-1"dissociation constantca.tm.kb_b
ca.tm.free.vol"m3"volume of the compartmentca.tm.vol
ca.tm.free.c_start"mol/m3"initial value of concentration(1.0 - (ca.tm.f_a_start + ca.tm.f_b_start)) * ca.tm.n_tot / ca.tm.vol
ca.tm.occupied_a.vol"m3"volume of the compartmentca.tm.vol
ca.tm.occupied_a.c_start"mol/m3"initial value of concentrationca.tm.f_a_start * ca.tm.n_tot / ca.tm.vol
ca.tm.occupied_b.vol"m3"volume of the compartmentca.tm.vol
ca.tm.occupied_b.c_start"mol/m3"initial value of concentrationca.tm.f_b_start * ca.tm.n_tot / ca.tm.vol
ca.cm_cyto.n_tot"mol"total amount of bufferca.cm_tot * v_cyto
ca.cm_cyto.f_start"1"initial value for f0.04845
ca.cm_cyto.k"mol-1s-1"association constant227700.0 / v_cyto
ca.cm_cyto.kb"s-1"dissociation constant542.0
ca.cm_cyto.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_cyto.assoc.k"mol-1s-1"association constantca.cm_cyto.k
ca.cm_cyto.assoc.kb"s-1"dissociation constantca.cm_cyto.kb
ca.cm_cyto.free.vol"m3"volume of the compartmentca.cm_cyto.vol
ca.cm_cyto.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_cyto.f_start) * ca.cm_cyto.n_tot / ca.cm_cyto.vol
ca.cm_cyto.occupied.vol"m3"volume of the compartmentca.cm_cyto.vol
ca.cm_cyto.occupied.c_start"mol/m3"initial value of concentrationca.cm_cyto.f_start * ca.cm_cyto.n_tot / ca.cm_cyto.vol
ca.cm_sub.n_tot"mol"total amount of bufferca.cm_tot * v_sub
ca.cm_sub.f_start"1"initial value for f0.02626
ca.cm_sub.k"mol-1s-1"association constantca.cm_cyto.k * v_cyto / v_sub
ca.cm_sub.kb"s-1"dissociation constantca.cm_cyto.kb
ca.cm_sub.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_sub.assoc.k"mol-1s-1"association constantca.cm_sub.k
ca.cm_sub.assoc.kb"s-1"dissociation constantca.cm_sub.kb
ca.cm_sub.free.vol"m3"volume of the compartmentca.cm_sub.vol
ca.cm_sub.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_sub.f_start) * ca.cm_sub.n_tot / ca.cm_sub.vol
ca.cm_sub.occupied.vol"m3"volume of the compartmentca.cm_sub.vol
ca.cm_sub.occupied.c_start"mol/m3"initial value of concentrationca.cm_sub.f_start * ca.cm_sub.n_tot / ca.cm_sub.vol
ca.cq.n_tot"mol"total amount of bufferca.cq_tot * v_jsr
ca.cq.f_start"1"initial value for f0.3379
ca.cq.k"mol-1s-1"association constant534.0 / v_jsr
ca.cq.kb"s-1"dissociation constant445.0
ca.cq.vol"m3"volume of compartment in which buffer resides1.0
ca.cq.assoc.k"mol-1s-1"association constantca.cq.k
ca.cq.assoc.kb"s-1"dissociation constantca.cq.kb
ca.cq.free.vol"m3"volume of the compartmentca.cq.vol
ca.cq.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cq.f_start) * ca.cq.n_tot / ca.cq.vol
ca.cq.occupied.vol"m3"volume of the compartmentca.cq.vol
ca.cq.occupied.c_start"mol/m3"initial value of concentrationca.cq.f_start * ca.cq.n_tot / ca.cq.vol
ca.cm_sl_tot"mol/m3"total concentration of calmodulin in sarcolemma0.02583333333333333
ca.cm_sl.n_tot"mol"total amount of bufferca.cm_sl_tot * v_sub
ca.cm_sl.f_start"1"initial value for f3.936e-05
ca.cm_sl.k"mol-1s-1"association constant115.0 / v_sub
ca.cm_sl.kb"s-1"dissociation constant1000.0
ca.cm_sl.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_sl.assoc.k"mol-1s-1"association constantca.cm_sl.k
ca.cm_sl.assoc.kb"s-1"dissociation constantca.cm_sl.kb
ca.cm_sl.free.vol"m3"volume of the compartmentca.cm_sl.vol
ca.cm_sl.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_sl.f_start) * ca.cm_sl.n_tot / ca.cm_sl.vol
ca.cm_sl.occupied.vol"m3"volume of the compartmentca.cm_sl.vol
ca.cm_sl.occupied.c_start"mol/m3"initial value of concentrationca.cm_sl.f_start * ca.cm_sl.n_tot / ca.cm_sl.vol
na.ion_in"mol/m3"intracellular concentration of ionna_in
bg.g"S"ion conductancebg.g_max

InaMo.Cells.VariableCa.NCell

model NCell "full nodal cell model by Inada et al. (2009)"
  extends InaMo.Cells.Interfaces.NCellBase;
  extends InaMo.Icons.CellVar(cell_type = "N");
  // starting values for CaHandling are from Inada 2009
  InaMo.Concentrations.Atrioventricular.CaHandling ca(cyto.c_start = 0.3623e-3, sub.c_start = 0.2294e-3, jsr.c_start = 0.08227, nsr.c_start = 1.146, tc.f_start = 0.6838, tm.f_a_start = 0.6192, tm.f_b_start = 0.3363, cm_cyto.f_start = 0.1336, cm_sub.f_start = 0.08894, cq.f_start = 0.08736, cm_sl.f_start = 4.764e-5, jsr_sub.p = 1500) "intracellular Ca2+ handling by SR and buffers" annotation(
    Placement(transformation(origin = {16, 0}, extent = {{-17, -17}, {17, 17}})));
  // [Ca2+]_rel
  // NOTE: value from C++ code, not given in paper
equation
  connect(ca.ca_sub, naca.ca) annotation(
    Line(points = {{0, 0}, {-10, 0}, {-10, 36}, {-12, 36}, {-12, 36}}));
  connect(cal.ca, ca.ca_sub) annotation(
    Line(points = {{-34, -36}, {-34, -36}, {-34, 0}, {0, 0}, {0, 0}}));
end NCell;
  1. ca.ca_sub.rate + naca.trans.rate + cal.trans.rate 0.0
  2. st.i_ion + hcn.i_ion + l2.i + nak.i + naca.i_ion + kr.i_ion + cal.i_ion + bg.i_ion 0.0
  3. (((((( hcn.i_ion st.i_ion ) l2.i ) nak.i ) naca.i_ion ) kr.i_ion ) bg.i_ion ) cal.i_ion 0.0
  4. bg.i_ion bg.g_max ( bg.v_gate bg.v_eq )
  5. st.v_gate bg.v_gate
  6. kr.v_gate cal.v_gate
  7. st.v_gate naca.v
  8. nak.i nak.i_max michaelisMenten( na_in , nak.k_m_Na ) 3.0 michaelisMenten( k_ex , nak.k_m_K ) 2.0 act.fsteady( nak.v , 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
  9. st.v_gate nak.v
  10. l2.v l2.i / l2.c
  11. l2.v st.v_gate
  12. st.v_gate hcn.v_gate
  13. kr.v_gate st.v_gate
  14. st.v_gate v
  15. naca.di_c ca.sub.substance.amount / naca.k_c_i v_sub
  16. naca.di_cn naca.di_c na_in / naca.k_cn_i
  17. Within group ca (prefix _ indicates shortened variable name)
    1. _cm_cyto.site.rate+_tm.site_a.rate+_tc.site.rate+_cyto_nsr.rate+(_cyto.substance.rate_sub_cyto.rate) 0.0
    2. _nsr_jsr.rate+(_nsr.substance.rate_cyto_nsr.rate) 0.0
    3. _cq.site.rate+_jsr_sub.rate+(_jsr.substance.rate_nsr_jsr.rate) 0.0
    4. _cm_sl.site.rate+_cm_sub.site.rate+_sub_cyto.rate+_sub.substance.rate+(_ca_sub.rate_jsr_sub.rate) 0.0
    5. _sub_cyto.rate_sub_cyto.coeff(_sub.substance.amount/_sub_cyto.vol_src_cyto.substance.amount/_sub_cyto.vol_dst)_sub_cyto.vol_trans
    6. _cyto_nsr.rate_cyto_nsr.pmichaelisMenten(_cyto.substance.amount/_cyto_nsr.vol_src,_cyto_nsr.k)
    7. _nsr_jsr.rate_nsr_jsr.coeff(_nsr.substance.amount/_nsr_jsr.vol_src_jsr.substance.amount/_nsr_jsr.vol_dst)_nsr_jsr.vol_trans
    8. _tc.free.con_tc.free.substance.amount/_tc.free.vol
    9. _cm_cyto.free.con_cm_cyto.free.substance.amount/_cm_cyto.free.vol
    10. _cm_sub.free.con_cm_sub.free.substance.amount/_cm_sub.free.vol
    11. _cq.free.con_cq.free.substance.amount/_cq.free.vol
    12. _cm_sl.free.con_cm_sl.free.substance.amount/_cm_sl.free.vol
    13. Within group cm_cyto (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_cyto.free.substance.amount ca.cm_cyto.site.rate
        2. ca.cm_cyto.site.rate _k ca.cyto.substance.amount ca.cm_cyto.free.substance.amount _kb ca.cm_cyto.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cm_cyto.site.rate
        2. _con_substance.amount/_vol
    14. Within group cm_sl (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_sl.free.substance.amount ca.cm_sl.site.rate
        2. ca.cm_sl.site.rate _k ca.sub.substance.amount ca.cm_sl.free.substance.amount _kb ca.cm_sl.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cm_sl.site.rate
        2. _con_substance.amount/_vol
    15. Within group cm_sub (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_sub.free.substance.amount ca.cm_sub.site.rate
        2. ca.cm_sub.site.rate _k ca.sub.substance.amount ca.cm_sub.free.substance.amount _kb ca.cm_sub.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cm_sub.site.rate
        2. _con_substance.amount/_vol
    16. Within group cq (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cq.free.substance.amount ca.cq.site.rate
        2. ca.cq.site.rate _k ca.jsr.substance.amount ca.cq.free.substance.amount _kb ca.cq.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cq.site.rate
        2. _con_substance.amount/_vol
    17. Within group cyto (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    18. Within group jsr (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    19. Within group jsr_sub (prefix _ indicates shortened variable name)
      1. _coeff_phillLangmuir( ca.sub.substance.amount /_vol_dst,_ka,_n)
      2. _rate_coeff( ca.jsr.substance.amount /_vol_src ca.sub.substance.amount /_vol_dst)_vol_trans
    20. Within group nsr (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    21. Within group sub (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    22. Within group tc (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.tc.free.substance.amount ca.tc.site.rate
        2. ca.tc.site.rate _k ca.cyto.substance.amount ca.tc.free.substance.amount _kb ca.tc.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.tc.site.rate
        2. _con_substance.amount/_vol
    23. Within group tm (prefix _ indicates shortened variable name)
      1. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
      2. _site_a.rate_assoc_a.k ca.cyto.substance.amount _free.substance.amount_assoc_a.kb_occupied_a.substance.amount
      3. _site_b.rate_assoc_b.k ca.mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
      4. Within group free (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      5. Within group occupied_a (prefix _ indicates shortened variable name)
        1. _substance.amount ca.tm.site_a.rate
        2. _con_substance.amount/_vol
      6. Within group occupied_b (prefix _ indicates shortened variable name)
        1. _substance.amount ca.tm.site_b.rate
        2. _con_substance.amount/_vol
  18. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n(_act.steady_act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total
    6. _i_open_g_max(_v_gate_v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0182 , 200.0 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.0 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauinact_fast.ftau(_v_gate, 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
  19. Within group hcn (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _i_open_g_max(_v_gate_v_eq)
    3. _i_ion_act.n_i_open
    4. _g_act.n_g_max
    5. _act.steadyact.fsteady(_v_gate_act.shift, 0.0 , 1.0 , -0.08319 , -73.74631268436578 , 1.0 , 1.0 , 1.0 )
    6. _act.tauinact_fast.ftau(_v_gate, 0.25 , 2.25 , -0.07000000000000001 , 0.0158113883008419 )
  20. Within group kr (prefix _ indicates shortened variable name)
    1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
    2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
    3. _inact.n(_inact.steady_inact.n)/_inact.tau
    4. _open_ratio_act_total_inact.n
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _v_gate p.v n.v
    8. _g_open_ratio_g_max
    9. _act_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    10. _act_fast.tauact_fast.ftau(_v_gate, 0.0 )
    11. _act_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    12. _act_slow.tauinact_fast.ftau(_v_gate, 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
    13. _inact.steadyinact.fsteady(_v_gate)
    14. _inact.tauinact.ftau(_v_gate, 0.0 )
    15. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
  21. Within group naca (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
    3. _di_cv_di_ce(_q_ci_v_FoRT)
    4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
    5. _do_cv_do_ce_q_co_v_FoRT
    6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
    7. _k_12_di_cv/_di
    8. _f1_2n_i(_di_2n+_di_3n)/_di
    9. _k_21_do_cv/_do
    10. _f1_2n_o(_do_2n+_do_3n)/_do
    11. _k_23_f1_2n_o/_k_32
    12. _k_41 1.0 /_k_32
    13. _k_14_f1_2n_i_k_32
    14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
    15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
    16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
    17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
    18. _d_x1+_x2+_x3+_x4
    19. _e1_x1/_d
    20. _e2_x2/_d
    21. _e3_x3/_d
    22. _e4_x4/_d
    23. _k_32e 0.5 _q_n_v_FoRT
  22. Within group st (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _open_ratio_act.n_inact.n
    3. _i_open_g_max(_v_gate_v_eq)
    4. _i_ion_open_ratio_i_open
    5. _g_open_ratio_g_max
    6. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0491 , 111.358574610245 , 1.0 , 1.0 , 1.0 )
    7. _act.tau_act.ftau(_v_gate, 0.0 )
    8. _inact.alphainact.falpha(_v_gate, 0.0 )
    9. _inact.betainact.fbeta(_v_gate)
    10. Within group inact (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. _tau 1.0 /(_alpha+_beta)

Functions:

function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0182 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 200.0 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := falpha.fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + falpha.fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function st.ftau.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 11.0, 0.00015) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 0.0002)) + off;
end st.ftau.falpha;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function st.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (st.ftau.falpha(x, 0.0) + ftau.fbeta(x, 0.0)) + off;
end st.act.ftau;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function falpha.fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end falpha.fa;
function inact.falpha
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 13.0, 3100.0 / 150.4) + kr.ftau.falpha(x, 0.0, 1000.0 / 70.0, 700.0 / 150.4)) + off;
end inact.falpha;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
function ftau.fbeta
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 1000.0 / 8.0, 0.016) + kr.ftau.falpha(x, 0.0, 1000.0 / 50.0, 0.015)) + off;
end ftau.fbeta;
function fbeta.fa
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, -1000.0 / 10.0, 95.0 / 150.4) + kr.ftau.falpha(x, 0.0, -1000.0 / 700.0, 50.0 / 150.4)) + off;
end fbeta.fa;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + falpha.fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
function inact.fbeta
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fbeta.fa(x, 0.0) + act.fsteady(x, 0.0, 0.229, 0.0, 1000.0 / 5.0, 1.0, 1.0, 1.0);
end inact.fbeta;
nameunitlabelvalue
ca.cm_sl.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_sl.occupied.substance.amount"mol"amount of substance
ca.cm_sl.free.con"mol/m3"concentration of substance in compartment
ca.cm_sl.free.substance.amount"mol"amount of substance
ca.cm_sl.site.rate"mol/s"molar flow rate of substance
ca.cq.occupied.con"mol/m3"concentration of substance in compartment
ca.cq.occupied.substance.amount"mol"amount of substance
ca.cq.free.con"mol/m3"concentration of substance in compartment
ca.cq.free.substance.amount"mol"amount of substance
ca.cq.site.rate"mol/s"molar flow rate of substance
ca.cm_sub.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_sub.occupied.substance.amount"mol"amount of substance
ca.cm_sub.free.con"mol/m3"concentration of substance in compartment
ca.cm_sub.free.substance.amount"mol"amount of substance
ca.cm_sub.site.rate"mol/s"molar flow rate of substance
ca.cm_cyto.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_cyto.occupied.substance.amount"mol"amount of substance
ca.cm_cyto.free.con"mol/m3"concentration of substance in compartment
ca.cm_cyto.free.substance.amount"mol"amount of substance
ca.cm_cyto.site.rate"mol/s"molar flow rate of substance
ca.tm.occupied_b.con"mol/m3"concentration of substance in compartment
ca.tm.occupied_b.substance.amount"mol"amount of substance
ca.tm.occupied_a.con"mol/m3"concentration of substance in compartment
ca.tm.occupied_a.substance.amount"mol"amount of substance
ca.tm.free.con"mol/m3"concentration of substance in compartment
ca.tm.free.substance.rate"mol/s"molar flow rate of substance
ca.tm.free.substance.amount"mol"amount of substance
ca.tm.site_b.rate"mol/s"molar flow rate of substance
ca.tm.site_a.rate"mol/s"molar flow rate of substance
ca.tc.occupied.con"mol/m3"concentration of substance in compartment
ca.tc.occupied.substance.amount"mol"amount of substance
ca.tc.free.con"mol/m3"concentration of substance in compartment
ca.tc.free.substance.amount"mol"amount of substance
ca.tc.site.rate"mol/s"molar flow rate of substance
ca.jsr_sub.coeff"1/s"coefficient of transport
ca.jsr_sub.rate"mol/s"rate of change in substance amount
ca.nsr_jsr.rate"mol/s"rate of change in substance amount
ca.cyto_nsr.rate"mol/s"rate of change in substance amount
ca.sub_cyto.rate"mol/s"rate of change in substance amount
ca.nsr.con"mol/m3"concentration of substance in compartment
ca.nsr.substance.rate"mol/s"molar flow rate of substance
ca.nsr.substance.amount"mol"amount of substance
ca.jsr.con"mol/m3"concentration of substance in compartment
ca.jsr.substance.rate"mol/s"molar flow rate of substance
ca.jsr.substance.amount"mol"amount of substance
ca.cyto.con"mol/m3"concentration of substance in compartment
ca.cyto.substance.rate"mol/s"molar flow rate of substance
ca.cyto.substance.amount"mol"amount of substance
ca.sub.con"mol/m3"concentration of substance in compartment
ca.sub.substance.rate"mol/s"molar flow rate of substance
ca.sub.substance.amount"mol"amount of substance
ca.ca_sub.rate"mol/s"molar flow rate of substance
st.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
st.inact.steady"1"steady state achieved if current voltage is held constant
st.inact.beta"1"rate of transfer from open to closed conformation
st.inact.alpha"1"rate of transfer from closed to open conformation
st.inact.nratio of molecules in open conformation0.4886
st.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
st.act.steadyvalue that n would reach if v_gate was held constant
st.act.nratio of molecules in open conformation0.1933
st.g"S"ion conductance
st.i_open"A"i if open_ratio = 1
st.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
st.i_ion"A"current used for ion flux
st.v_gate"V"voltage used for activation/inactivation gates
hcn.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
hcn.act.steadyvalue that n would reach if v_gate was held constant
hcn.act.n"1"ratio of molecules in open conformation0.03825
hcn.g"S"ion conductance
hcn.i_open"A"i if open_ratio = 1
hcn.i_ion"A"current used for ion flux
hcn.v_gate"V"voltage used for activation/inactivation gates
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
nak.i"A"Current flowing from pin p to pin n
nak.v"V"Voltage drop of the two pins (= p.v - n.v)
naca.e4"1"ratio of exchanger molecules in state e4
naca.e3"1"ratio of exchanger molecules in state e3
naca.e2"1"ratio of exchanger molecules in state e2
naca.e1"1"ratio of exchanger molecules in state e1
naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
naca.x4"1"relative frequancy of E4 states
naca.x3"1"relative frequency of E3 states
naca.x2"1"relative frequency of E2 states
naca.x1"1"relative frequency of E1 states
naca.k_14"1"rate constant for transition from E1 to E4
naca.k_41"1"rate constant for transition from E4 to E1
naca.k_32"1"rate constant for transition from E3 to E2
naca.k_23"1"rate constant for transition from E2 to E3
naca.k_21"1"rate constant for transition from E2 to E1
naca.k_12"1"rate constant for transition from E1 to E2
naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
naca.do"1"common denominator summing relative frequencies for all E2 substates
naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
naca.di"1"common denominator summing relative frequencies for all E1 substates
naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+
naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occluded
naca.i_ion"A"current used for TransmembraneCaFlow
naca.trans.rate"mol/s"rate of change in substance amount
naca.v"V"Voltage drop of the two pins (= p.v - n.v)
kr.act_totaltotal activation due to slow and fast activation terms
kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.inact.steadyvalue that n would reach if v_gate was held constant
kr.inact.nratio of molecules in open conformation0.9775
kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_slow.steadyvalue that n would reach if v_gate was held constant
kr.act_slow.nratio of molecules in open conformation0.1287
kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_fast.steadyvalue that n would reach if v_gate was held constant
kr.act_fast.nratio of molecules in open conformation0.6067
kr.g"S"ion conductance
kr.i_open"A"i if open_ratio = 1
kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kr.i_ion"A"current used for ion flux
kr.v_gate"V"voltage used for activation/inactivation gates
cal.inact_total
cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.6861
cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cal.inact_slow.nratio of molecules in open conformation0.4441
cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.act.steadyvalue that n would reach if v_gate was held constant
cal.act.nratio of molecules in open conformation0.0001533
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
cal.v_gate"V"voltage used for activation/inactivation gates
bg.i_ion"A"current used for ion flux
bg.v_gate"V"voltage used for activation/inactivation gates
n.v"V"Potential at the pin
p.v"V"Potential at the pin
v"V"Voltage drop of the two pins (= p.v - n.v)
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+naca.di_2n * na_in / naca.k_3n_i
naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+naca.do_2n * na_ex / naca.k_3n_o
naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+naca.do_1n * na_ex / naca.k_2n_o
naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+naca.di_1n * na_in / naca.k_2n_i
p.i"A"Current flowing into the pin0.0
n.i"A"Current flowing into the pin0.0
bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
ca.mg.substance.amount"mol"amount of substanceca.mg.c_const * ca.mg.vol
ca.sub_cyto.coeff"1/s"coefficient of transport1.0 / ca.sub_cyto.tau
ca.nsr_jsr.coeff"1/s"coefficient of transport1.0 / ca.nsr_jsr.tau
cal.ach_factor1.0
naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+na_in / naca.k_1n_i
naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedca_ex / naca.k_c_o
naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+na_ex / naca.k_1n_o
naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_ex, naca.k_3n_o)
naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_in, naca.k_3n_i)
use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
na_in"mol/m3"intracellular sodium concentration8.0
na_ex"mol/m3"extracellular sodium concentration140.0
na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, na_ex, 1, temp)
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
ca_ex"mol/m3"extracellular calcium concentration2.0
temp"K"cell medium temperature288.15
v_cell"m3"total cell volumeInaMo.Cells.VariableCa.NCell.c_to_v(l2.c, 2.19911e-15, 7.147123e-15)
v_cyto"m3"volume of cytosol0.46 * v_cell - v_sub
v_sub"m3"volume of subspace0.01 * v_cell
v_jsr"m3"volume of junctional SR0.0012 * v_cell
v_nsr"m3"volume of network SR0.0116 * v_cell
v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)
bg.v_eq"V"equilibrium potential-0.0225
bg.g_max"S"maximum conductance1.2e-09
bg.current_name"I_b"
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance9e-09
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
kr.v_eq"V"equilibrium potentialv_k
kr.g_max"S"maximum conductance3.5e-09
kr.current_name"I_K,r"
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
naca.current_name"I_NaCa"
naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current2.14e-09
naca.FoRThelper variable to simplify equations11604.52214706721 / temp
nak.current_name"I_NaK"
nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)1.43e-10
nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
l2.c"F"membrane capacitance2.9e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedtrue
hcn.v_eq"V"equilibrium potential-0.03
hcn.g_max"S"maximum conductance1e-09
hcn.current_name"I_f"
hcn.act_shift"V"0.0
hcn.act.shift"V"hcn.act_shift
st.v_eq"V"equilibrium potential0.0374
st.g_max"S"maximum conductance1e-10
st.current_name"I_st"
cell_type"N"
ca.tc_tot"mol/m3"total concentration of troponin-Ca0.031
ca.tmc_tot"mol/m3"total concentration of troponin-Mg binding to Ca2+0.062
ca.cm_tot"mol/m3"total concentration of calmodulin0.045
ca.cq_tot"mol/m3"total concentration of calsequestrin10.0
ca.mg.c_const"mol/m3"fixed concentration2.5
ca.mg.vol"m3"volume of the compartmentv_cyto
ca.sub.vol"m3"volume of the compartmentv_sub
ca.sub.c_start"mol/m3"initial value of concentration0.0002294
ca.cyto.vol"m3"volume of the compartmentv_cyto
ca.cyto.c_start"mol/m3"initial value of concentration0.0003623
ca.jsr.vol"m3"volume of the compartmentv_jsr
ca.jsr.c_start"mol/m3"initial value of concentration0.08227
ca.nsr.vol"m3"volume of the compartmentv_nsr
ca.nsr.c_start"mol/m3"initial value of concentration1.146
ca.sub_cyto.vol_src"m3"volume of source compartmentca.sub.vol
ca.sub_cyto.vol_dst"m3"volume of destination compartmentca.cyto.vol
ca.sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.sub_cyto.vol_src, ca.sub_cyto.vol_dst)
ca.sub_cyto.tau"s"time constant of diffusion4e-05
ca.cyto_nsr.current_name"SERCA"
ca.cyto_nsr.vol_src"m3"volume of source compartmentca.cyto.vol
ca.cyto_nsr.p"mol/s"maximum flow rate5.0 * v_nsr
ca.cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
ca.nsr_jsr.vol_src"m3"volume of source compartmentca.nsr.vol
ca.nsr_jsr.vol_dst"m3"volume of destination compartmentca.jsr.vol
ca.nsr_jsr.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.nsr_jsr.vol_src, ca.nsr_jsr.vol_dst)
ca.nsr_jsr.tau"s"time constant of diffusion0.06
ca.jsr_sub.vol_src"m3"volume of source compartmentca.jsr.vol
ca.jsr_sub.vol_dst"m3"volume of destination compartmentca.sub.vol
ca.jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.jsr_sub.vol_src, ca.jsr_sub.vol_dst)
ca.jsr_sub.current_name"RyR"
ca.jsr_sub.p"1/s"rate coefficient (inverse of time constant)1500.0
ca.jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
ca.jsr_sub.n"1"Hill coefficient2.0
ca.tc.n_tot"mol"total amount of bufferca.tc_tot * v_cyto
ca.tc.f_start"1"initial value for f0.6838
ca.tc.k"mol-1s-1"association constant88800.0 / v_cyto
ca.tc.kb"s-1"dissociation constant446.0
ca.tc.vol"m3"volume of compartment in which buffer resides1.0
ca.tc.assoc.k"mol-1s-1"association constantca.tc.k
ca.tc.assoc.kb"s-1"dissociation constantca.tc.kb
ca.tc.free.vol"m3"volume of the compartmentca.tc.vol
ca.tc.free.c_start"mol/m3"initial value of concentration(1.0 - ca.tc.f_start) * ca.tc.n_tot / ca.tc.vol
ca.tc.occupied.vol"m3"volume of the compartmentca.tc.vol
ca.tc.occupied.c_start"mol/m3"initial value of concentrationca.tc.f_start * ca.tc.n_tot / ca.tc.vol
ca.tm.n_tot"mol"total amount of bufferca.tmc_tot * v_cyto
ca.tm.f_a_start"1"initial value for f0.6192
ca.tm.f_b_start"1"initial value for f0.3363
ca.tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / v_cyto
ca.tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / v_cyto
ca.tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
ca.tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
ca.tm.vol"m3"volume of compartment in which buffer residesv_cyto
ca.tm.assoc_a.k"mol-1s-1"association constantca.tm.k_a
ca.tm.assoc_a.kb"s-1"dissociation constantca.tm.kb_a
ca.tm.assoc_b.k"mol-1s-1"association constantca.tm.k_b
ca.tm.assoc_b.kb"s-1"dissociation constantca.tm.kb_b
ca.tm.free.vol"m3"volume of the compartmentca.tm.vol
ca.tm.free.c_start"mol/m3"initial value of concentration(1.0 - (ca.tm.f_a_start + ca.tm.f_b_start)) * ca.tm.n_tot / ca.tm.vol
ca.tm.occupied_a.vol"m3"volume of the compartmentca.tm.vol
ca.tm.occupied_a.c_start"mol/m3"initial value of concentrationca.tm.f_a_start * ca.tm.n_tot / ca.tm.vol
ca.tm.occupied_b.vol"m3"volume of the compartmentca.tm.vol
ca.tm.occupied_b.c_start"mol/m3"initial value of concentrationca.tm.f_b_start * ca.tm.n_tot / ca.tm.vol
ca.cm_cyto.n_tot"mol"total amount of bufferca.cm_tot * v_cyto
ca.cm_cyto.f_start"1"initial value for f0.1336
ca.cm_cyto.k"mol-1s-1"association constant227700.0 / v_cyto
ca.cm_cyto.kb"s-1"dissociation constant542.0
ca.cm_cyto.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_cyto.assoc.k"mol-1s-1"association constantca.cm_cyto.k
ca.cm_cyto.assoc.kb"s-1"dissociation constantca.cm_cyto.kb
ca.cm_cyto.free.vol"m3"volume of the compartmentca.cm_cyto.vol
ca.cm_cyto.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_cyto.f_start) * ca.cm_cyto.n_tot / ca.cm_cyto.vol
ca.cm_cyto.occupied.vol"m3"volume of the compartmentca.cm_cyto.vol
ca.cm_cyto.occupied.c_start"mol/m3"initial value of concentrationca.cm_cyto.f_start * ca.cm_cyto.n_tot / ca.cm_cyto.vol
ca.cm_sub.n_tot"mol"total amount of bufferca.cm_tot * v_sub
ca.cm_sub.f_start"1"initial value for f0.08894000000000001
ca.cm_sub.k"mol-1s-1"association constantca.cm_cyto.k * v_cyto / v_sub
ca.cm_sub.kb"s-1"dissociation constantca.cm_cyto.kb
ca.cm_sub.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_sub.assoc.k"mol-1s-1"association constantca.cm_sub.k
ca.cm_sub.assoc.kb"s-1"dissociation constantca.cm_sub.kb
ca.cm_sub.free.vol"m3"volume of the compartmentca.cm_sub.vol
ca.cm_sub.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_sub.f_start) * ca.cm_sub.n_tot / ca.cm_sub.vol
ca.cm_sub.occupied.vol"m3"volume of the compartmentca.cm_sub.vol
ca.cm_sub.occupied.c_start"mol/m3"initial value of concentrationca.cm_sub.f_start * ca.cm_sub.n_tot / ca.cm_sub.vol
ca.cq.n_tot"mol"total amount of bufferca.cq_tot * v_jsr
ca.cq.f_start"1"initial value for f0.08735999999999999
ca.cq.k"mol-1s-1"association constant534.0 / v_jsr
ca.cq.kb"s-1"dissociation constant445.0
ca.cq.vol"m3"volume of compartment in which buffer resides1.0
ca.cq.assoc.k"mol-1s-1"association constantca.cq.k
ca.cq.assoc.kb"s-1"dissociation constantca.cq.kb
ca.cq.free.vol"m3"volume of the compartmentca.cq.vol
ca.cq.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cq.f_start) * ca.cq.n_tot / ca.cq.vol
ca.cq.occupied.vol"m3"volume of the compartmentca.cq.vol
ca.cq.occupied.c_start"mol/m3"initial value of concentrationca.cq.f_start * ca.cq.n_tot / ca.cq.vol
ca.cm_sl_tot"mol/m3"total concentration of calmodulin in sarcolemma0.02583333333333333
ca.cm_sl.n_tot"mol"total amount of bufferca.cm_sl_tot * v_sub
ca.cm_sl.f_start"1"initial value for f4.764e-05
ca.cm_sl.k"mol-1s-1"association constant115.0 / v_sub
ca.cm_sl.kb"s-1"dissociation constant1000.0
ca.cm_sl.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_sl.assoc.k"mol-1s-1"association constantca.cm_sl.k
ca.cm_sl.assoc.kb"s-1"dissociation constantca.cm_sl.kb
ca.cm_sl.free.vol"m3"volume of the compartmentca.cm_sl.vol
ca.cm_sl.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_sl.f_start) * ca.cm_sl.n_tot / ca.cm_sl.vol
ca.cm_sl.occupied.vol"m3"volume of the compartmentca.cm_sl.vol
ca.cm_sl.occupied.c_start"mol/m3"initial value of concentrationca.cm_sl.f_start * ca.cm_sl.n_tot / ca.cm_sl.vol
bg.g"S"ion conductancebg.g_max

InaMo.Cells.VariableCa.NHCell

model NHCell "full nodal-his cell model by Inada et al. (2009)"
  extends InaMo.Cells.Interfaces.NHCellBase;
  extends InaMo.Icons.CellVar(cell_type = "NH");
  // starting values for CaHandling are from Inada 2009
  InaMo.Concentrations.Atrioventricular.CaHandling ca(cyto.c_start = 0.1386e-3, sub.c_start = 0.07314e-3, jsr.c_start = 0.4438, nsr.c_start = 1.187, tc.f_start = 0.02703, tm.f_a_start = 0.4020, tm.f_b_start = 0.5282, cm_cyto.f_start = 0.05530, cm_sub.f_start = 0.02992, cq.f_start = 0.3463, cm_sl.f_start = 4.843e-5, jsr_sub.p = 1805.6) "intracellular Ca2+ handling by SR and buffers" annotation(
    Placement(transformation(origin = {16, 0}, extent = {{-17, -17}, {17, 17}})));
  // [Ca2+]_rel
  // NOTE: value from C++ code, not given in paper
equation
  connect(ca.ca_sub, naca.ca) annotation(
    Line(points = {{0, 0}, {-10, 0}, {-10, 36}, {-12, 36}, {-12, 36}}));
  connect(cal.ca, ca.ca_sub) annotation(
    Line(points = {{-34, -36}, {-34, -36}, {-34, 0}, {0, 0}, {0, 0}}));
end NHCell;
  1. ca.ca_sub.rate + naca.trans.rate + cal.trans.rate 0.0
  2. to.i_ion + na.i_ion + kir.i_ion + l2.i + nak.i + naca.i_ion + kr.i_ion + cal.i_ion + bg.i_ion 0.0
  3. ((((((( na.i_ion to.i_ion ) kir.i_ion ) l2.i ) nak.i ) naca.i_ion ) kr.i_ion ) bg.i_ion ) cal.i_ion 0.0
  4. bg.i_ion bg.g_max ( bg.v_gate bg.v_eq )
  5. to.v_gate bg.v_gate
  6. to.v_gate cal.v_gate
  7. to.v_gate kr.v_gate
  8. to.v_gate naca.v
  9. nak.i nak.i_max michaelisMenten( na_in , nak.k_m_Na ) 3.0 michaelisMenten( k_ex , nak.k_m_K ) 2.0 act.fsteady( nak.v , 0.0 , 1.6 , -0.06 , 25.0 , 1.0 , 1.5 , 1.0 )
  10. to.v_gate nak.v
  11. l2.v l2.i / l2.c
  12. l2.v to.v_gate
  13. to.v_gate kir.v_gate
  14. na.i_open ghkFlux( na.v_gate , temp , na_in , na.ion_ex , na.ion_p , na.ion_z )
  15. to.v_gate na.v_gate
  16. to.v_gate v
  17. naca.di_c ca.sub.substance.amount / naca.k_c_i v_sub
  18. naca.di_cn naca.di_c na_in / naca.k_cn_i
  19. Within group ca (prefix _ indicates shortened variable name)
    1. _cm_cyto.site.rate+_tm.site_a.rate+_tc.site.rate+_cyto_nsr.rate+(_cyto.substance.rate_sub_cyto.rate) 0.0
    2. _nsr_jsr.rate+(_nsr.substance.rate_cyto_nsr.rate) 0.0
    3. _cq.site.rate+_jsr_sub.rate+(_jsr.substance.rate_nsr_jsr.rate) 0.0
    4. _cm_sl.site.rate+_cm_sub.site.rate+_sub_cyto.rate+_sub.substance.rate+(_ca_sub.rate_jsr_sub.rate) 0.0
    5. _sub_cyto.rate_sub_cyto.coeff(_sub.substance.amount/_sub_cyto.vol_src_cyto.substance.amount/_sub_cyto.vol_dst)_sub_cyto.vol_trans
    6. _cyto_nsr.rate_cyto_nsr.pmichaelisMenten(_cyto.substance.amount/_cyto_nsr.vol_src,_cyto_nsr.k)
    7. _nsr_jsr.rate_nsr_jsr.coeff(_nsr.substance.amount/_nsr_jsr.vol_src_jsr.substance.amount/_nsr_jsr.vol_dst)_nsr_jsr.vol_trans
    8. _tc.free.con_tc.free.substance.amount/_tc.free.vol
    9. _cm_cyto.free.con_cm_cyto.free.substance.amount/_cm_cyto.free.vol
    10. _cm_sub.free.con_cm_sub.free.substance.amount/_cm_sub.free.vol
    11. _cq.free.con_cq.free.substance.amount/_cq.free.vol
    12. _cm_sl.free.con_cm_sl.free.substance.amount/_cm_sl.free.vol
    13. Within group cm_cyto (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_cyto.free.substance.amount ca.cm_cyto.site.rate
        2. ca.cm_cyto.site.rate _k ca.cyto.substance.amount ca.cm_cyto.free.substance.amount _kb ca.cm_cyto.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cm_cyto.site.rate
        2. _con_substance.amount/_vol
    14. Within group cm_sl (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_sl.free.substance.amount ca.cm_sl.site.rate
        2. ca.cm_sl.site.rate _k ca.sub.substance.amount ca.cm_sl.free.substance.amount _kb ca.cm_sl.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cm_sl.site.rate
        2. _con_substance.amount/_vol
    15. Within group cm_sub (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cm_sub.free.substance.amount ca.cm_sub.site.rate
        2. ca.cm_sub.site.rate _k ca.sub.substance.amount ca.cm_sub.free.substance.amount _kb ca.cm_sub.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cm_sub.site.rate
        2. _con_substance.amount/_vol
    16. Within group cq (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.cq.free.substance.amount ca.cq.site.rate
        2. ca.cq.site.rate _k ca.jsr.substance.amount ca.cq.free.substance.amount _kb ca.cq.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.cq.site.rate
        2. _con_substance.amount/_vol
    17. Within group cyto (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    18. Within group jsr (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    19. Within group jsr_sub (prefix _ indicates shortened variable name)
      1. _coeff_phillLangmuir( ca.sub.substance.amount /_vol_dst,_ka,_n)
      2. _rate_coeff( ca.jsr.substance.amount /_vol_src ca.sub.substance.amount /_vol_dst)_vol_trans
    20. Within group nsr (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    21. Within group sub (prefix _ indicates shortened variable name)
      1. _substance.amount_substance.rate
      2. _con_substance.amount/_vol
    22. Within group tc (prefix _ indicates shortened variable name)
      1. Within group assoc (prefix _ indicates shortened variable name)
        1. ca.tc.free.substance.amount ca.tc.site.rate
        2. ca.tc.site.rate _k ca.cyto.substance.amount ca.tc.free.substance.amount _kb ca.tc.occupied.substance.amount
      2. Within group occupied (prefix _ indicates shortened variable name)
        1. _substance.amount ca.tc.site.rate
        2. _con_substance.amount/_vol
    23. Within group tm (prefix _ indicates shortened variable name)
      1. _free.substance.rate+_site_b.rate+_site_a.rate 0.0
      2. _site_a.rate_assoc_a.k ca.cyto.substance.amount _free.substance.amount_assoc_a.kb_occupied_a.substance.amount
      3. _site_b.rate_assoc_b.k ca.mg.substance.amount _free.substance.amount_assoc_b.kb_occupied_b.substance.amount
      4. Within group free (prefix _ indicates shortened variable name)
        1. _substance.amount_substance.rate
        2. _con_substance.amount/_vol
      5. Within group occupied_a (prefix _ indicates shortened variable name)
        1. _substance.amount ca.tm.site_a.rate
        2. _con_substance.amount/_vol
      6. Within group occupied_b (prefix _ indicates shortened variable name)
        1. _substance.amount ca.tm.site_b.rate
        2. _con_substance.amount/_vol
  20. Within group cal (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _act.n(_act.steady_act.n)/_act.tau
    3. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    4. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    5. _open_ratio_act.n_inact_total
    6. _i_open_g_max(_v_gate_v_eq)
    7. _i_ion_open_ratio_i_open
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0032 , 151.285930408472 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.0 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.06 , 1.14171 , -0.04 , 0.008307827634225447 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.029 , -158.4786053882726 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauinact_fast.ftau(_v_gate, 0.01 , 0.1639 , -0.04 , 0.009635092111651035 )
    15. _inact_total 0.675 _inact_fast.n+ 0.325 _inact_slow.n
  21. Within group kir (prefix _ indicates shortened variable name)
    1. _open_ratio_n_pot 3.0 _voltage_inact.n_voltage_act.n
    2. _i_open_g_max(_v_gate_v_eq)
    3. _i_ion_open_ratio_i_open
    4. _g_open_ratio_g_max
    5. _voltage_inact.nact.fsteady(_v_gate, 0.0 , 1.0 ,_v_eq 0.0036 ,( 1.393 _FoRT), 1.0 , 1.0 , 1.0 )
    6. _voltage_act.nact.fsteady(_v_gate, 0.5 , 1.0 , -0.03 , 200.0 , 1.0 , 1.0 , 1.0 )
  22. Within group kr (prefix _ indicates shortened variable name)
    1. _act_fast.n(_act_fast.steady_act_fast.n)/_act_fast.tau
    2. _act_slow.n(_act_slow.steady_act_slow.n)/_act_slow.tau
    3. _inact.n(_inact.steady_inact.n)/_inact.tau
    4. _open_ratio_act_total_inact.n
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _g_open_ratio_g_max
    8. _act_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    9. _act_fast.tauact_fast.ftau(_v_gate, 0.0 )
    10. _act_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.01022 , 117.6470588235294 , 1.0 , 1.0 , 1.0 )
    11. _act_slow.tauinact_fast.ftau(_v_gate, 0.33581 , 1.24254 , -0.01 , 0.02222667316536598 )
    12. _inact.steadyinact.fsteady(_v_gate)
    13. _inact.tauinact.ftau(_v_gate, 0.0 )
    14. _act_total 0.9 _act_fast.n+ 0.1 _act_slow.n
  23. Within group na (prefix _ indicates shortened variable name)
    1. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _open_ratio_act.n 3.0 _inact_total
    4. _i_ion_open_ratio_i_open
    5. _act.alphafa(_v_gate, -0.0444 , 5829.58 , -78.90791446382072 )
    6. _act.betakr.ftau.falpha(_v_gate, -0.0444 , -78.90791446382072 , 18400.0 )
    7. _inact_fast.steadyinact_fast.fsteady(_v_gate)
    8. _inact_fast.tauact.fsteady(_v_gate, 0.00035 , 0.03035 , -0.04 , -166.6666666666667 , 1.0 , 1.0 , 1.0 )
    9. _inact_slow.steadyinact_fast.fsteady(_v_gate)
    10. _inact_slow.tauact.fsteady(_v_gate, 0.00295 , 0.12295 , -0.06 , -500.0 , 1.0 , 1.0 , 1.0 )
    11. _inact_total 0.635 _inact_fast.n+ 0.365 _inact_slow.n
    12. Within group act (prefix _ indicates shortened variable name)
      1. _n_alpha( 1.0 _n)_beta_n
      2. _steady_alpha/(_alpha+_beta)
      3. _tau 1.0 /(_alpha+_beta)
  24. Within group naca (prefix _ indicates shortened variable name)
    1. _trans.rate 1.03642695739058e-05 _trans.n_i_ion/(_trans.z)
    2. _i_ion_k_NaCa(_k_21_e2_k_12_e1)
    3. _di_cv_di_ce(_q_ci_v_FoRT)
    4. _di 1.0 +_di_c+_di_cv+_di_cn+_di_1n+_di_2n+_di_3n
    5. _do_cv_do_ce_q_co_v_FoRT
    6. _do 1.0 +_do_c+_do_cv+_do_1n+_do_2n+_do_3n
    7. _k_12_di_cv/_di
    8. _f1_2n_i(_di_2n+_di_3n)/_di
    9. _k_21_do_cv/_do
    10. _f1_2n_o(_do_2n+_do_3n)/_do
    11. _k_23_f1_2n_o/_k_32
    12. _k_41 1.0 /_k_32
    13. _k_14_f1_2n_i_k_32
    14. _x1_f1_3n_o_k_41(_k_23+_k_21)+_k_21_k_32(_f1_3n_i+_k_41)
    15. _x2_f1_3n_i_k_32(_k_14+_k_12)+_k_41_k_12(_f1_3n_o+_k_32)
    16. _x3_f1_3n_i_k_14(_k_23+_k_21)+_k_12_k_23(_f1_3n_i+_k_41)
    17. _x4_f1_3n_o_k_23(_k_14+_k_12)+_k_21_k_14(_f1_3n_o+_k_32)
    18. _d_x1+_x2+_x3+_x4
    19. _e1_x1/_d
    20. _e2_x2/_d
    21. _e3_x3/_d
    22. _e4_x4/_d
    23. _k_32e 0.5 _q_n_v_FoRT
  25. Within group to (prefix _ indicates shortened variable name)
    1. _act.n(_act.steady_act.n)/_act.tau
    2. _inact_slow.n(_inact_slow.steady_inact_slow.n)/_inact_slow.tau
    3. _inact_fast.n(_inact_fast.steady_inact_fast.n)/_inact_fast.tau
    4. _open_ratio_act.n_inact_total
    5. _i_open_g_max(_v_gate_v_eq)
    6. _i_ion_open_ratio_i_open
    7. _v_gate p.v n.v
    8. _g_open_ratio_g_max
    9. _act.steadyact.fsteady(_v_gate, 0.0 , 1.0 , 0.00744 , 60.97560975609757 , 1.0 , 1.0 , 1.0 )
    10. _act.tau_act.ftau(_v_gate, 0.000596 )
    11. _inact_slow.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    12. _inact_slow.tauinact_fast.ftau(_v_gate, 0.1 , 4.1 , -0.065 , 0.0158113883008419 )
    13. _inact_fast.steadyact.fsteady(_v_gate, 0.0 , 1.0 , -0.0338 , -163.3986928104575 , 1.0 , 1.0 , 1.0 )
    14. _inact_fast.tauact.fsteady(_v_gate, 0.01266 , 4.73982 , -0.1545 , -41.73622704507513 , 1.0 , 1.0 , 1.0 )
    15. _inact_total 0.55 _inact_slow.n+ 0.45 _inact_fast.n

Functions:

function act.fsteady
  input Real x "input value";
  input Real y_min = 0.0 "lower asymptote (fitting parameter)";
  input Real y_max = 1.0 "upper asmyptote when d_off=1 and nu=1 (fititng parameter)";
  input Real x0 = -0.0032 "x-value of sigmoid midpoint when d_off=1 and nu=1 (fitting parameter)";
  input Real sx = 151.285930408472 "scaling factor for x axis (i.e. steepness, fitting parameter)";
  input Real se = 1.0 "scaling factor for exponential part (fitting parameter)";
  input Real d_off = 1.0 "offset in denominator (affects upper asymptote, fitting parameter)";
  input Real nu = 1.0 "reciprocal of exponent of denominator (affects upper asymptote, fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  y := y_min + (y_max - y_min) / (se * exp(-x_adj) + d_off) ^ (1.0 / nu);
end act.fsteady;
function inact.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 9.42, 603.6) + kr.ftau.falpha(x, 0.0, -18.3, 92.01000000000001)) + off;
end inact.ftau;
function c_to_v "function used to determine cell volume based on membrane capacitance"
  input Real c_m(quantity = "Capacitance", unit = "F", min = 0.0) "membrane capacitance";
  input Real v_low(quantity = "Volume", unit = "m3") = 2.19911e-15 "low estimate for cell volume (obtained when c_m = c_low)";
  input Real v_high(quantity = "Volume", unit = "m3") = 7.147123e-15 "high estimate for cell volume (obtained when c_m = c_low + c_span)";
  output Real v_cell(quantity = "Volume", unit = "m3") "resulting total cell volume";
  protected Real c_low(quantity = "Capacitance", unit = "F", min = 0.0) = 2e-11 "low value for c_m (where v_low is returned)";
  protected Real c_span(quantity = "Capacitance", unit = "F", min = 0.0) = 4.5e-11 "span that must be added to c_m to reach an output of v_high";
algorithm
  v_cell := (c_m - c_low) / c_span * (v_high - v_low) + v_low;
end c_to_v;
function cal.ftau.falpha
  input Real x "input value";
  output Real y "output value";
algorithm
  y := fa(x, -0.035, 26.12 * 2.5, -1000.0 / 2.5) + fa(x, 0.0, 78.11 / 0.208, -208.0);
end cal.ftau.falpha;
function inact_fast.fsteady
  input Real x "input value";
  output Real y "result of applying the HH-style equation steady = alpha/(alpha + beta)";
algorithm
  y := kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) / (kr.ftau.falpha(x, -0.0669, -1000.0 / 5.57, 44.9) + act.fsteady(x, 0.0, 1491.0, -0.0946, 1000.0 / 12.9, 323.3, 1.0, 1.0));
end inact_fast.fsteady;
function kr.ftau.falpha
  input Real x "input value";
  input Real x0 = 0.0 "x-value where y = 1 (fitting parameter)";
  input Real sx = 39.8 "scaling factor for x axis (fitting parameter)";
  input Real sy = 17.0 "scaling factor for y axis (fitting parameter)";
  output Real y "result";
algorithm
  y := sy * exp(sx * (x - x0));
end kr.ftau.falpha;
function michaelisMenten "equation for enzymatic reactions following Michaelis-Menten kinetics"
  input Real s(quantity = "Concentration", unit = "mol/m3") "substrate concentration";
  input Real k(quantity = "Concentration", unit = "mol/m3") "concentration producing half-maximum reaction rate (michaelis constant)";
  output Real rate(unit = "1") "reaction rate";
algorithm
  rate := s / (s + k);
end michaelisMenten;
function inact_fast.ftau
  input Real x "input value";
  input Real y_min = 0.01 "minimum value achieved at edges (fitting parameter)";
  input Real y_max = 0.1639 "maximum value achieved at peak (fititng parameter)";
  input Real x0 = -0.04 "x-value of bell curve midpoint (fitting parameter)";
  input Real sigma = 0.009635092111651035 "standard deviation determining the width of the bell curve (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and standard deviation";
algorithm
  x_adj := (x - x0) / sigma;
  y := y_min + (y_max - y_min) * exp(-0.5 * x_adj ^ 2.0);
end inact_fast.ftau;
function cal.act.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (cal.ftau.falpha(x) + fa(x, 0.005, 10.52 / 0.4, 400.0)) + off;
end cal.act.ftau;
function ghkFlux "ghk flux equation for a single ion"
  input Real v(quantity = "ElectricPotential", unit = "V") "membrane potential";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Real ion_p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "permeability of cell membrane to Na+ cations";
  input Integer ion_z "ion valence";
  output Real i(quantity = "CurrentDensity", unit = "A/m2") "current density resulting from ion flux through membrane";
  protected Real g_max(quantity = "Conductance", unit = "S");
  protected Real v_eq(quantity = "ElectricPotential", unit = "V");
  protected Real FoRT(unit = "1/V") = 96485.33289000001 / (8.3144598 * temp);
algorithm
  g_max := ion_p * ion_ex * FoRT * 96485.33289000001 * /*Real*/(ion_z) ^ 2.0;
  v_eq := nernst(ion_in, ion_ex, ion_z, temp);
  if abs(v) < 1e-06 then
    i := g_max / FoRT / /*Real*/(ion_z) * (exp(-v_eq * FoRT * /*Real*/(ion_z)) - 1.0);
  else
    i := g_max * v * (exp((v - v_eq) * FoRT * /*Real*/(ion_z)) - 1.0) / (exp(v * FoRT * /*Real*/(ion_z)) - 1.0);
  end if;
end ghkFlux;
function act_fast.ftau
  input Real x "input value";
  input Real off = 0.0 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, 0.0, 39.8, 17.0) + kr.ftau.falpha(x, 0.0, -51.0, 0.211)) + off;
end act_fast.ftau;
function fa
  input Real x "input value";
  input Real x0 = -0.035 "offset for x (fitting parameter)";
  input Real sy = 65.3 "scaling factor for y (fitting parameter)";
  input Real sx = -400.0 "scaling factor for x (fitting parameter)";
  output Real y "result";
  protected Real x_adj "adjusted x with offset and scaling factor";
algorithm
  x_adj := sx * (x - x0);
  if abs(x - x0) < 1e-06 then
    y := sy;
  else
    y := sy * x_adj / (exp(x_adj) - 1.0);
  end if;
end fa;
function nernst "Nernst equation to find the equlibrium potential for a single ion"
  input Real ion_in(quantity = "Concentration", unit = "mol/m3") "intracellular ion concentration";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real v_eq(quantity = "ElectricPotential", unit = "V") "equlibirium potential";
algorithm
  v_eq := 8.3144598 * temp / /*Real*/(ion_z) / 96485.33289000001 * log(ion_ex / ion_in);
end nernst;
function to.act.ftau
  input Real x "input value";
  input Real off = 0.000596 "offset added to result to increase minimum (fitting parameter)";
  output Real y "result of applying the HH-style equation tau = 1/(alpha + beta)";
algorithm
  y := 1.0 / (kr.ftau.falpha(x, -0.03061, 90.0, 1.037 / 0.003188) + kr.ftau.falpha(x, -0.02384, -120.0, 0.396 / 0.003188)) + off;
end to.act.ftau;
function hillLangmuir "Hill-Langmuir equation measuring the occupancy of a molecule by a ligand"
  input Real c(quantity = "Concentration", unit = "mol/m3") "ligand concentration";
  input Real ka(quantity = "Concentration", unit = "mol/m3") "concentration producing half occupation";
  input Real n(unit = "1") "Hill coefficient";
  output Real rate(unit = "1") "occupancy of molecule by ligand";
algorithm
  rate := c ^ n / (c ^ n + ka ^ n);
end hillLangmuir;
function inact.fsteady
  input Real x "input value";
  output Real y "output value";
algorithm
  y := act.fsteady(x, 0.0, 1.0, -0.0049, -1000.0 / 15.14, 1.0, 1.0, 1.0) * inact_fast.ftau(x, 1.0, (-0.3) + 1.0, 0.0, sqrt(500.0 / 2.0) / 1000.0);
end inact.fsteady;
function p_from_g "calculate membrane permeability for ion from membrane conductance"
  input Real g(quantity = "Conductance", unit = "S") "membrane conductance for given ion";
  input Real ion_ex(quantity = "Concentration", unit = "mol/m3") "extracellular ion concentration";
  input Integer ion_z "valence of ion";
  input Real temp(quantity = "ThermodynamicTemperature", unit = "K", displayUnit = "degC", min = 0.0, start = 288.15, nominal = 300.0) "cell medium temperature";
  output Real p(quantity = "Permeability (fluid mechanics)", unit = "m3/(s.m2)") "membrane permeability for given ion";
  protected Real unit_area(quantity = "Area", unit = "m2") = 1.0 "unit area of 1 m², used to get correct units";
algorithm
  p := g / ion_ex * 8.3144598 * temp / (96485.33289000001 * /*Real*/(ion_z)) ^ 2.0 / unit_area;
end p_from_g;
nameunitlabelvalue
ca.cm_sl.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_sl.occupied.substance.amount"mol"amount of substance
ca.cm_sl.free.con"mol/m3"concentration of substance in compartment
ca.cm_sl.free.substance.amount"mol"amount of substance
ca.cm_sl.site.rate"mol/s"molar flow rate of substance
ca.cq.occupied.con"mol/m3"concentration of substance in compartment
ca.cq.occupied.substance.amount"mol"amount of substance
ca.cq.free.con"mol/m3"concentration of substance in compartment
ca.cq.free.substance.amount"mol"amount of substance
ca.cq.site.rate"mol/s"molar flow rate of substance
ca.cm_sub.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_sub.occupied.substance.amount"mol"amount of substance
ca.cm_sub.free.con"mol/m3"concentration of substance in compartment
ca.cm_sub.free.substance.amount"mol"amount of substance
ca.cm_sub.site.rate"mol/s"molar flow rate of substance
ca.cm_cyto.occupied.con"mol/m3"concentration of substance in compartment
ca.cm_cyto.occupied.substance.amount"mol"amount of substance
ca.cm_cyto.free.con"mol/m3"concentration of substance in compartment
ca.cm_cyto.free.substance.amount"mol"amount of substance
ca.cm_cyto.site.rate"mol/s"molar flow rate of substance
ca.tm.occupied_b.con"mol/m3"concentration of substance in compartment
ca.tm.occupied_b.substance.amount"mol"amount of substance
ca.tm.occupied_a.con"mol/m3"concentration of substance in compartment
ca.tm.occupied_a.substance.amount"mol"amount of substance
ca.tm.free.con"mol/m3"concentration of substance in compartment
ca.tm.free.substance.rate"mol/s"molar flow rate of substance
ca.tm.free.substance.amount"mol"amount of substance
ca.tm.site_b.rate"mol/s"molar flow rate of substance
ca.tm.site_a.rate"mol/s"molar flow rate of substance
ca.tc.occupied.con"mol/m3"concentration of substance in compartment
ca.tc.occupied.substance.amount"mol"amount of substance
ca.tc.free.con"mol/m3"concentration of substance in compartment
ca.tc.free.substance.amount"mol"amount of substance
ca.tc.site.rate"mol/s"molar flow rate of substance
ca.jsr_sub.coeff"1/s"coefficient of transport
ca.jsr_sub.rate"mol/s"rate of change in substance amount
ca.nsr_jsr.rate"mol/s"rate of change in substance amount
ca.cyto_nsr.rate"mol/s"rate of change in substance amount
ca.sub_cyto.rate"mol/s"rate of change in substance amount
ca.nsr.con"mol/m3"concentration of substance in compartment
ca.nsr.substance.rate"mol/s"molar flow rate of substance
ca.nsr.substance.amount"mol"amount of substance
ca.jsr.con"mol/m3"concentration of substance in compartment
ca.jsr.substance.rate"mol/s"molar flow rate of substance
ca.jsr.substance.amount"mol"amount of substance
ca.cyto.con"mol/m3"concentration of substance in compartment
ca.cyto.substance.rate"mol/s"molar flow rate of substance
ca.cyto.substance.amount"mol"amount of substance
ca.sub.con"mol/m3"concentration of substance in compartment
ca.sub.substance.rate"mol/s"molar flow rate of substance
ca.sub.substance.amount"mol"amount of substance
ca.ca_sub.rate"mol/s"molar flow rate of substance
to.inact_totaltotal inactivation resulting from fast and slow inactivation gates
to.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_fast.steadyvalue that n would reach if v_gate was held constant
to.inact_fast.nratio of molecules in open conformation0.864
to.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.inact_slow.steadyvalue that n would reach if v_gate was held constant
to.inact_slow.nratio of molecules in open conformation0.1297
to.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
to.act.steadyvalue that n would reach if v_gate was held constant
to.act.nratio of molecules in open conformation0.009580999999999999
to.g"S"ion conductance
to.i_open"A"i if open_ratio = 1
to.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
to.i_ion"A"current used for ion flux
to.v_gate"V"voltage used for activation/inactivation gates
na.inact_totaltotal inactivation resulting from fast and slow inactivation terms
na.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_slow.steadyvalue that n would reach if v_gate was held constant
na.inact_slow.nratio of molecules in open conformation0.5552
na.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.inact_fast.steadyvalue that n would reach if v_gate was held constant
na.inact_fast.nratio of molecules in open conformation0.6438
na.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
na.act.steady"1"steady state achieved if current voltage is held constant
na.act.beta"1"rate of transfer from open to closed conformation
na.act.alpha"1"rate of transfer from closed to open conformation
na.act.nratio of molecules in open conformation0.01529
na.i_openi if open_ratio = 1
na.open_ratioratio between 0 (fully closed) and 1 (fully open)
na.i_ion"A"current used for ion flux
na.v_gate"V"voltage used for activation/inactivation gates
kir.voltage_act.nratio of molecules in open conformation
kir.voltage_inact.nratio of molecules in open conformation
kir.g"S"ion conductance
kir.i_open"A"i if open_ratio = 1
kir.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kir.i_ion"A"current used for ion flux
kir.v_gate"V"voltage used for activation/inactivation gates
l2.i"A"Current flowing from pin p to pin n
l2.v"V"Voltage drop of the two pins (= p.v - n.v)
nak.i"A"Current flowing from pin p to pin n
nak.v"V"Voltage drop of the two pins (= p.v - n.v)
naca.e4"1"ratio of exchanger molecules in state e4
naca.e3"1"ratio of exchanger molecules in state e3
naca.e2"1"ratio of exchanger molecules in state e2
naca.e1"1"ratio of exchanger molecules in state e1
naca.d"1"common denominator to turn relative frequencies into actual ratios between 0 and 1
naca.x4"1"relative frequancy of E4 states
naca.x3"1"relative frequency of E3 states
naca.x2"1"relative frequency of E2 states
naca.x1"1"relative frequency of E1 states
naca.k_14"1"rate constant for transition from E1 to E4
naca.k_41"1"rate constant for transition from E4 to E1
naca.k_32"1"rate constant for transition from E3 to E2
naca.k_23"1"rate constant for transition from E2 to E3
naca.k_21"1"rate constant for transition from E2 to E1
naca.k_12"1"rate constant for transition from E1 to E2
naca.f1_2n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+
naca.f1_2n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+
naca.do"1"common denominator summing relative frequencies for all E2 substates
naca.do_cv"1"relative frequency of E2 states that are occupied by Ca2+ and occluded
naca.di"1"common denominator summing relative frequencies for all E1 substates
naca.di_cn"1"relative frequency of E1 states whose first two binding sites are occupied by Ca2+ and whose last binding site is occupied by Na+
naca.di_cv"1"relative frequency of E1 states that are occupied by Ca2+ and occluded
naca.di_c"1"relative frequency of E1 states that are occupied by Ca2+ and not occluded
naca.i_ion"A"current used for TransmembraneCaFlow
naca.trans.rate"mol/s"rate of change in substance amount
naca.v"V"Voltage drop of the two pins (= p.v - n.v)
kr.act_totaltotal activation due to slow and fast activation terms
kr.inact.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.inact.steadyvalue that n would reach if v_gate was held constant
kr.inact.nratio of molecules in open conformation0.9853
kr.act_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_slow.steadyvalue that n would reach if v_gate was held constant
kr.act_slow.nratio of molecules in open conformation0.07024
kr.act_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
kr.act_fast.steadyvalue that n would reach if v_gate was held constant
kr.act_fast.nratio of molecules in open conformation0.09949
kr.g"S"ion conductance
kr.i_open"A"i if open_ratio = 1
kr.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
kr.i_ion"A"current used for ion flux
kr.v_gate"V"voltage used for activation/inactivation gates
cal.inact_total
cal.inact_fast.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_fast.steadyvalue that n would reach if v_gate was held constant
cal.inact_fast.nratio of molecules in open conformation0.9981
cal.inact_slow.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.inact_slow.steadyvalue that n would reach if v_gate was held constant
cal.inact_slow.nratio of molecules in open conformation0.9831
cal.act.tau"s"time constant for obtaining steady state (i.e. time until difference between n and steady has reduced by a factor of 1/e)
cal.act.steadyvalue that n would reach if v_gate was held constant
cal.act.nratio of molecules in open conformation5.025e-05
cal.trans.rate"mol/s"rate of change in substance amount
cal.g"S"ion conductance
cal.i_open"A"i if open_ratio = 1
cal.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)
cal.i_ion"A"current used for ion flux
cal.v_gate"V"voltage used for activation/inactivation gates
bg.i_ion"A"current used for ion flux
bg.v_gate"V"voltage used for activation/inactivation gates
n.v"V"Potential at the pin
p.v"V"Potential at the pin
v"V"Voltage drop of the two pins (= p.v - n.v)
cal.con.substance.amount"mol"amount of substancecal.con.c_const * cal.con.vol
naca.con.substance.amount"mol"amount of substancenaca.con.c_const * naca.con.vol
naca.di_3n"1"relative frequency of E1 states where exactly three Na+ sites are occupied by Na+naca.di_2n * na_in / naca.k_3n_i
naca.do_3n"1"relative frequency of E2 states where exactly three Na+ sites are occupied by Na+naca.do_2n * na_ex / naca.k_3n_o
naca.do_2n"1"relative frequency of E2 states where exactly the first two Na+ sites are occupied by Na+naca.do_1n * na_ex / naca.k_2n_o
naca.di_2n"1"relative frequency of E1 states where exactly the first two Na+ sites are occupied by Na+naca.di_1n * na_in / naca.k_2n_i
p.i"A"Current flowing into the pin0.0
n.i"A"Current flowing into the pin0.0
bg.open_ratio"1"ratio between 0 (fully closed) and 1 (fully open)1.0
ca.mg.substance.amount"mol"amount of substanceca.mg.c_const * ca.mg.vol
ca.sub_cyto.coeff"1/s"coefficient of transport1.0 / ca.sub_cyto.tau
ca.nsr_jsr.coeff"1/s"coefficient of transport1.0 / ca.nsr_jsr.tau
cal.ach_factor1.0
naca.di_1n"1"relative frequency of E1 states where only the first Na+ site is occupied by Na+na_in / naca.k_1n_i
naca.do_c"1"relative frequency of E2 states that are occupied by Ca2+ and not occludedca_ex / naca.k_c_o
naca.do_1n"1"relative frequency of E2 states where only the first Na+ site is occupied by Na+na_ex / naca.k_1n_o
naca.f1_3n_o"1"fraction of E2 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_ex, naca.k_3n_o)
naca.f1_3n_i"1"fraction of E1 states whose first two Na+ sites are occupied by Na+InaMo.Functions.Biochemical.michaelisMenten(na_in, naca.k_3n_i)
kir.n_pot"1"[K+]_ex-dependent gating variableInaMo.Functions.Biochemical.michaelisMenten(k_ex, 0.59)
use_achshould acetylcholine sensitive potassium channel be included in the modelfalse
ach"mol/m3"concentration of acetylcholine available for I_ACh0.0
na_in"mol/m3"intracellular sodium concentration8.0
na_ex"mol/m3"extracellular sodium concentration140.0
na_p"m3/(s.m2)"permeability of cell membrane to sodium ionsInaMo.Functions.Biochemical.p_from_g(2.53e-07, na_ex, 1, temp)
k_in"mol/m3"intracellular potassium concentration140.0
k_ex"mol/m3"extracellular potassium concentration5.4
ca_ex"mol/m3"extracellular calcium concentration2.0
temp"K"cell medium temperature288.15
v_cell"m3"total cell volumeInaMo.Cells.VariableCa.NHCell.c_to_v(l2.c, 2.19911e-15, 7.147123e-15)
v_cyto"m3"volume of cytosol0.46 * v_cell - v_sub
v_sub"m3"volume of subspace0.01 * v_cell
v_jsr"m3"volume of junctional SR0.0012 * v_cell
v_nsr"m3"volume of network SR0.0116 * v_cell
v_k"V"equilibrium potential for potassium currentsInaMo.Functions.Biochemical.nernst(k_in, k_ex, 1, temp)
bg.v_eq"V"equilibrium potential-0.04
bg.g_max"S"maximum conductance2e-09
bg.current_name"I_b"
cal.v_eq"V"equilibrium potential0.0621
cal.g_max"S"maximum conductance2.1e-08
cal.trans.n"1"stoichiometric ratio of ion transportcal.n_ca
cal.trans.zvalence of ion2
cal.con.c_const"mol/m3"fixed concentrationca_ex
cal.con.vol"m3"volume of the compartment1.0
cal.n_ca"1"stoichiometric ratio of transport1.0
cal.current_name"I_Ca,L"
cal.k_ach"1"ratio of maximum channel inhibition by acetylcholine0.0
kr.v_eq"V"equilibrium potentialv_k
kr.g_max"S"maximum conductance2e-09
kr.current_name"I_K,r"
naca.trans.n"1"stoichiometric ratio of ion transportnaca.n_ca
naca.trans.zvalence of ion2
naca.con.c_const"mol/m3"fixed concentrationca_ex
naca.con.vol"m3"volume of the compartment1.0
naca.n_ca"1"stoichiometric ratio of transport-2.0
naca.current_name"I_NaCa"
naca.k_c_i"mol/m3"dissociation constant for channel with Ca++ bound on inside0.0207
naca.k_cn_i"mol/m3"dissociation constant for channel with Ca++ and one Na+ bound on inside26.44
naca.k_1n_i"mol/m3"dissociation constant for channel with one Na+ bound on inside395.3
naca.k_2n_i"mol/m3"dissociation constant for channel with two Na+ bound on inside2.289
naca.k_3n_i"mol/m3"dissociation constant for channel with three Na+ bound on inside26.44
naca.k_c_o"mol/m3"dissociation constant for channel with Ca++ bound on outside3.663
naca.k_1n_o"mol/m3"dissociation constant for channel with one Na+ bound on outside1628.0
naca.k_2n_o"mol/m3"dissociation constant for channel with two Na+ bound on outside561.4
naca.k_3n_o"mol/m3"dissociation constant for channel with three Na+ bound on outside4.663
naca.q_cifractional charge movement during intracellular Ca++ occlusion reaction0.1369
naca.q_cofractional charge movement during extracellular Ca++ occlusion reaction0.0
naca.q_nfractional charge movement during Na+ occlusion reactions0.4315
naca.k_NaCa"A"scaling factor for Na+/Ca++ exchanger current5.92e-09
naca.FoRThelper variable to simplify equations11604.52214706721 / temp
nak.current_name"I_NaK"
nak.i_max"A"maximum current (actual maximum is 1.6 * i_max)1.97e-10
nak.k_m_Na"mol/m3"Michaelis constant for Na+ binding5.64
nak.k_m_K"mol/m3"Michaelis constant for K+ binding0.621
l2.c"F"membrane capacitance4e-11
l2.v_init"V"initial potential (from short initial stimulation)-0.09
l2.use_initdetermines whether initial value for v is usedtrue
kir.v_eq"V"equilibrium potentialv_k
kir.g_max"S"maximum conductance1.5e-08
kir.current_name"I_K1"
kir.FoRThelper variable to simplyfiy equations96485.33289000001 / (temp * 8.3144598)
kir.use_vactuse voltage-dependent activation gate? (only Inada 2009)true
na.ion_ex"mol/m3"extracellular concentration of ionna_ex
na.ion_p"m3/(s.m2)"permeability of ionna_p
na.ion_zvalence of ion1
na.current_name"I_Na"
to.v_eq"V"equilibrium potentialv_k
to.g_max"S"maximum conductance1.4e-08
to.current_name"I_to"
cell_type"NH"
ca.tc_tot"mol/m3"total concentration of troponin-Ca0.031
ca.tmc_tot"mol/m3"total concentration of troponin-Mg binding to Ca2+0.062
ca.cm_tot"mol/m3"total concentration of calmodulin0.045
ca.cq_tot"mol/m3"total concentration of calsequestrin10.0
ca.mg.c_const"mol/m3"fixed concentration2.5
ca.mg.vol"m3"volume of the compartmentv_cyto
ca.sub.vol"m3"volume of the compartmentv_sub
ca.sub.c_start"mol/m3"initial value of concentration7.313999999999999e-05
ca.cyto.vol"m3"volume of the compartmentv_cyto
ca.cyto.c_start"mol/m3"initial value of concentration0.0001386
ca.jsr.vol"m3"volume of the compartmentv_jsr
ca.jsr.c_start"mol/m3"initial value of concentration0.4438
ca.nsr.vol"m3"volume of the compartmentv_nsr
ca.nsr.c_start"mol/m3"initial value of concentration1.187
ca.sub_cyto.vol_src"m3"volume of source compartmentca.sub.vol
ca.sub_cyto.vol_dst"m3"volume of destination compartmentca.cyto.vol
ca.sub_cyto.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.sub_cyto.vol_src, ca.sub_cyto.vol_dst)
ca.sub_cyto.tau"s"time constant of diffusion4e-05
ca.cyto_nsr.current_name"SERCA"
ca.cyto_nsr.vol_src"m3"volume of source compartmentca.cyto.vol
ca.cyto_nsr.p"mol/s"maximum flow rate5.0 * v_nsr
ca.cyto_nsr.k"mol/m3"Michaelis constant0.0005999999999999999
ca.nsr_jsr.vol_src"m3"volume of source compartmentca.nsr.vol
ca.nsr_jsr.vol_dst"m3"volume of destination compartmentca.jsr.vol
ca.nsr_jsr.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.nsr_jsr.vol_src, ca.nsr_jsr.vol_dst)
ca.nsr_jsr.tau"s"time constant of diffusion0.06
ca.jsr_sub.vol_src"m3"volume of source compartmentca.jsr.vol
ca.jsr_sub.vol_dst"m3"volume of destination compartmentca.sub.vol
ca.jsr_sub.vol_trans"m3"volume of substance that is transferred between compartments over 1/coeff secondsmin(ca.jsr_sub.vol_src, ca.jsr_sub.vol_dst)
ca.jsr_sub.current_name"RyR"
ca.jsr_sub.p"1/s"rate coefficient (inverse of time constant)1805.6
ca.jsr_sub.ka"mol/m3"concentration producing half occupation0.0012
ca.jsr_sub.n"1"Hill coefficient2.0
ca.tc.n_tot"mol"total amount of bufferca.tc_tot * v_cyto
ca.tc.f_start"1"initial value for f0.02703
ca.tc.k"mol-1s-1"association constant88800.0 / v_cyto
ca.tc.kb"s-1"dissociation constant446.0
ca.tc.vol"m3"volume of compartment in which buffer resides1.0
ca.tc.assoc.k"mol-1s-1"association constantca.tc.k
ca.tc.assoc.kb"s-1"dissociation constantca.tc.kb
ca.tc.free.vol"m3"volume of the compartmentca.tc.vol
ca.tc.free.c_start"mol/m3"initial value of concentration(1.0 - ca.tc.f_start) * ca.tc.n_tot / ca.tc.vol
ca.tc.occupied.vol"m3"volume of the compartmentca.tc.vol
ca.tc.occupied.c_start"mol/m3"initial value of concentrationca.tc.f_start * ca.tc.n_tot / ca.tc.vol
ca.tm.n_tot"mol"total amount of bufferca.tmc_tot * v_cyto
ca.tm.f_a_start"1"initial value for f0.402
ca.tm.f_b_start"1"initial value for f0.5282
ca.tm.k_a"mol-1s-1"association constant for binding to ligand A227700.0 / v_cyto
ca.tm.k_b"mol-1s-1"association constant for binding to ligand B2277.0 / v_cyto
ca.tm.kb_a"s-1"dissociation constant for binding to ligand A7.51
ca.tm.kb_b"s-1"dissociation constant for binding to ligand B751.0
ca.tm.vol"m3"volume of compartment in which buffer residesv_cyto
ca.tm.assoc_a.k"mol-1s-1"association constantca.tm.k_a
ca.tm.assoc_a.kb"s-1"dissociation constantca.tm.kb_a
ca.tm.assoc_b.k"mol-1s-1"association constantca.tm.k_b
ca.tm.assoc_b.kb"s-1"dissociation constantca.tm.kb_b
ca.tm.free.vol"m3"volume of the compartmentca.tm.vol
ca.tm.free.c_start"mol/m3"initial value of concentration(1.0 - (ca.tm.f_a_start + ca.tm.f_b_start)) * ca.tm.n_tot / ca.tm.vol
ca.tm.occupied_a.vol"m3"volume of the compartmentca.tm.vol
ca.tm.occupied_a.c_start"mol/m3"initial value of concentrationca.tm.f_a_start * ca.tm.n_tot / ca.tm.vol
ca.tm.occupied_b.vol"m3"volume of the compartmentca.tm.vol
ca.tm.occupied_b.c_start"mol/m3"initial value of concentrationca.tm.f_b_start * ca.tm.n_tot / ca.tm.vol
ca.cm_cyto.n_tot"mol"total amount of bufferca.cm_tot * v_cyto
ca.cm_cyto.f_start"1"initial value for f0.0553
ca.cm_cyto.k"mol-1s-1"association constant227700.0 / v_cyto
ca.cm_cyto.kb"s-1"dissociation constant542.0
ca.cm_cyto.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_cyto.assoc.k"mol-1s-1"association constantca.cm_cyto.k
ca.cm_cyto.assoc.kb"s-1"dissociation constantca.cm_cyto.kb
ca.cm_cyto.free.vol"m3"volume of the compartmentca.cm_cyto.vol
ca.cm_cyto.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_cyto.f_start) * ca.cm_cyto.n_tot / ca.cm_cyto.vol
ca.cm_cyto.occupied.vol"m3"volume of the compartmentca.cm_cyto.vol
ca.cm_cyto.occupied.c_start"mol/m3"initial value of concentrationca.cm_cyto.f_start * ca.cm_cyto.n_tot / ca.cm_cyto.vol
ca.cm_sub.n_tot"mol"total amount of bufferca.cm_tot * v_sub
ca.cm_sub.f_start"1"initial value for f0.02992
ca.cm_sub.k"mol-1s-1"association constantca.cm_cyto.k * v_cyto / v_sub
ca.cm_sub.kb"s-1"dissociation constantca.cm_cyto.kb
ca.cm_sub.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_sub.assoc.k"mol-1s-1"association constantca.cm_sub.k
ca.cm_sub.assoc.kb"s-1"dissociation constantca.cm_sub.kb
ca.cm_sub.free.vol"m3"volume of the compartmentca.cm_sub.vol
ca.cm_sub.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_sub.f_start) * ca.cm_sub.n_tot / ca.cm_sub.vol
ca.cm_sub.occupied.vol"m3"volume of the compartmentca.cm_sub.vol
ca.cm_sub.occupied.c_start"mol/m3"initial value of concentrationca.cm_sub.f_start * ca.cm_sub.n_tot / ca.cm_sub.vol
ca.cq.n_tot"mol"total amount of bufferca.cq_tot * v_jsr
ca.cq.f_start"1"initial value for f0.3463
ca.cq.k"mol-1s-1"association constant534.0 / v_jsr
ca.cq.kb"s-1"dissociation constant445.0
ca.cq.vol"m3"volume of compartment in which buffer resides1.0
ca.cq.assoc.k"mol-1s-1"association constantca.cq.k
ca.cq.assoc.kb"s-1"dissociation constantca.cq.kb
ca.cq.free.vol"m3"volume of the compartmentca.cq.vol
ca.cq.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cq.f_start) * ca.cq.n_tot / ca.cq.vol
ca.cq.occupied.vol"m3"volume of the compartmentca.cq.vol
ca.cq.occupied.c_start"mol/m3"initial value of concentrationca.cq.f_start * ca.cq.n_tot / ca.cq.vol
ca.cm_sl_tot"mol/m3"total concentration of calmodulin in sarcolemma0.02583333333333333
ca.cm_sl.n_tot"mol"total amount of bufferca.cm_sl_tot * v_sub
ca.cm_sl.f_start"1"initial value for f4.843e-05
ca.cm_sl.k"mol-1s-1"association constant115.0 / v_sub
ca.cm_sl.kb"s-1"dissociation constant1000.0
ca.cm_sl.vol"m3"volume of compartment in which buffer resides1.0
ca.cm_sl.assoc.k"mol-1s-1"association constantca.cm_sl.k
ca.cm_sl.assoc.kb"s-1"dissociation constantca.cm_sl.kb
ca.cm_sl.free.vol"m3"volume of the compartmentca.cm_sl.vol
ca.cm_sl.free.c_start"mol/m3"initial value of concentration(1.0 - ca.cm_sl.f_start) * ca.cm_sl.n_tot / ca.cm_sl.vol
ca.cm_sl.occupied.vol"m3"volume of the compartmentca.cm_sl.vol
ca.cm_sl.occupied.c_start"mol/m3"initial value of concentrationca.cm_sl.f_start * ca.cm_sl.n_tot / ca.cm_sl.vol
na.ion_in"mol/m3"intracellular concentration of ionna_in
bg.g"S"ion conductancebg.g_max