Chaste Commit::baa90ac2819b962188b7562f2326be23c47859a7
NobleVargheseKohlNoble1998WithSac.cpp
1/*
2
3Copyright (c) 2005-2024, University of Oxford.
4All rights reserved.
5
6University of Oxford means the Chancellor, Masters and Scholars of the
7University of Oxford, having an administrative office at Wellington
8Square, Oxford OX1 2JD, UK.
9
10This file is part of Chaste.
11
12Redistribution and use in source and binary forms, with or without
13modification, are permitted provided that the following conditions are met:
14 * Redistributions of source code must retain the above copyright notice,
15 this list of conditions and the following disclaimer.
16 * Redistributions in binary form must reproduce the above copyright notice,
17 this list of conditions and the following disclaimer in the documentation
18 and/or other materials provided with the distribution.
19 * Neither the name of the University of Oxford nor the names of its
20 contributors may be used to endorse or promote products derived from this
21 software without specific prior written permission.
22
23THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
27LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
29GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
32OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
34*/
35
36#include "NobleVargheseKohlNoble1998WithSac.hpp"
37#include "HeartConfig.hpp"
38
40 boost::shared_ptr<AbstractIvpOdeSolver> pSolver,
41 boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus)
42 : AbstractCardiacCell(pSolver, 22, 0, pIntracellularStimulus)
43{
44 mStretch = 1.0;
45
47
48 Init();
49
50}
51
55
56double CML_noble_varghese_kohl_noble_1998_basic_with_sac::GetIIonic(const std::vector<double>* pStateVariables)
57{
58 if (!pStateVariables) pStateVariables = &rGetStateVariables();
59 const std::vector<double>& rY = *pStateVariables;
60 double var_membrane__V = rY[0];
61 // Units: millivolt; Initial value: -92.849333
62 double var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = rY[1];
63 // Units: dimensionless; Initial value: 1.03e-5
64 double var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = rY[2];
65 // Units: dimensionless; Initial value: 2e-7
66 double var_slow_delayed_rectifier_potassium_current_xs_gate__xs = rY[3];
67 // Units: dimensionless; Initial value: 0.001302
68 double var_fast_sodium_current_m_gate__m = rY[4];
69 // Units: dimensionless; Initial value: 0.0016203
70 double var_fast_sodium_current_h_gate__h = rY[5];
71 // Units: dimensionless; Initial value: 0.9944036
72 double var_L_type_Ca_channel_d_gate__d = rY[6];
73 // Units: dimensionless; Initial value: 0
74 double var_L_type_Ca_channel_f_gate__f = rY[7];
75 // Units: dimensionless; Initial value: 1
76 double var_L_type_Ca_channel_f2_gate__f2 = rY[8];
77 // Units: dimensionless; Initial value: 0.9349197
78 double var_L_type_Ca_channel_f2ds_gate__f2ds = rY[9];
79 // Units: dimensionless; Initial value: 0.9651958
80 double var_transient_outward_current_s_gate__s = rY[10];
81 // Units: dimensionless; Initial value: 0.9948645
82 double var_transient_outward_current_r_gate__r = rY[11];
83 // Units: dimensionless; Initial value: 0
84 double var_intracellular_sodium_concentration__Na_i = rY[14];
85 // Units: millimolar; Initial value: 7.3321223
86 double var_intracellular_potassium_concentration__K_i = rY[15];
87 // Units: millimolar; Initial value: 136.5644281
88 double var_intracellular_calcium_concentration__Ca_i = rY[16];
89 // Units: millimolar; Initial value: 1.4e-5
90 double var_intracellular_calcium_concentration__Ca_ds = rY[17];
91 // Units: millimolar; Initial value: 1.88e-5
92
93 const double var_membrane__R = 8314.472;
94 const double var_membrane__T = 310.0;
95 const double var_membrane__F = 96485.3415;
96 double var_reversal_potentials__K_i = var_intracellular_potassium_concentration__K_i;
97 double var_reversal_potentials__R = var_membrane__R;
98 double var_reversal_potentials__T = var_membrane__T;
99 double var_reversal_potentials__F = var_membrane__F;
100 const double var_extracellular_potassium_concentration__K_o = 4.0;
101 double var_reversal_potentials__K_o = var_extracellular_potassium_concentration__K_o;
102 double var_reversal_potentials__E_K = ((var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log(var_reversal_potentials__K_o / var_reversal_potentials__K_i);
103 double var_time_independent_potassium_current__E_K = var_reversal_potentials__E_K;
104 double var_time_independent_potassium_current__K_o = var_extracellular_potassium_concentration__K_o;
105 double var_time_independent_potassium_current__R = var_membrane__R;
106 double var_time_independent_potassium_current__V = var_membrane__V;
107 double var_time_independent_potassium_current__T = var_membrane__T;
108 const double var_time_independent_potassium_current__K_mk1 = 10.0;
109 const double var_time_independent_potassium_current__g_K1 = 0.5;
110 double var_time_independent_potassium_current__F = var_membrane__F;
111 double var_time_independent_potassium_current__i_K1 = (((var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current__K_o) / (var_time_independent_potassium_current__K_o + var_time_independent_potassium_current__K_mk1)) * (var_time_independent_potassium_current__V - var_time_independent_potassium_current__E_K)) / (1.0 + exp((((var_time_independent_potassium_current__V - var_time_independent_potassium_current__E_K) - 10.0) * var_time_independent_potassium_current__F * 1.25) / (var_time_independent_potassium_current__R * var_time_independent_potassium_current__T)));
112 double var_membrane__i_K1 = var_time_independent_potassium_current__i_K1;
113 double var_transient_outward_current__s = var_transient_outward_current_s_gate__s;
114 double var_transient_outward_current__r = var_transient_outward_current_r_gate__r;
115 const double var_transient_outward_current__g_to = 0.005;
116 double var_transient_outward_current__V = var_membrane__V;
117 double var_transient_outward_current__E_K = var_reversal_potentials__E_K;
118 const double var_transient_outward_current__g_tos = 0.0;
119 double var_transient_outward_current__i_to = var_transient_outward_current__g_to * (var_transient_outward_current__g_tos + (var_transient_outward_current__s * (1.0 - var_transient_outward_current__g_tos))) * var_transient_outward_current__r * (var_transient_outward_current__V - var_transient_outward_current__E_K);
120 double var_membrane__i_to = var_transient_outward_current__i_to;
121 const double var_rapid_delayed_rectifier_potassium_current__g_Kr2 = 0.0013;
122 const double var_rapid_delayed_rectifier_potassium_current__g_Kr1 = 0.0021;
123 double var_rapid_delayed_rectifier_potassium_current__xr1 = var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1;
124 double var_rapid_delayed_rectifier_potassium_current__xr2 = var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2;
125 double var_rapid_delayed_rectifier_potassium_current__V = var_membrane__V;
126 double var_rapid_delayed_rectifier_potassium_current__E_K = var_reversal_potentials__E_K;
127 double var_rapid_delayed_rectifier_potassium_current__i_Kr = ((((var_rapid_delayed_rectifier_potassium_current__g_Kr1 * var_rapid_delayed_rectifier_potassium_current__xr1) + (var_rapid_delayed_rectifier_potassium_current__g_Kr2 * var_rapid_delayed_rectifier_potassium_current__xr2)) * 1.0) / (1.0 + exp((var_rapid_delayed_rectifier_potassium_current__V + 9.0) / 22.4))) * (var_rapid_delayed_rectifier_potassium_current__V - var_rapid_delayed_rectifier_potassium_current__E_K);
128 double var_membrane__i_Kr = var_rapid_delayed_rectifier_potassium_current__i_Kr;
129 double var_slow_delayed_rectifier_potassium_current__xs = var_slow_delayed_rectifier_potassium_current_xs_gate__xs;
130 const double var_extracellular_sodium_concentration__Na_o = 140.0;
131 double var_reversal_potentials__Na_o = var_extracellular_sodium_concentration__Na_o;
132 double var_reversal_potentials__Na_i = var_intracellular_sodium_concentration__Na_i;
133 const double var_reversal_potentials__P_kna = 0.03;
134 double var_reversal_potentials__E_Ks = ((var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log((var_reversal_potentials__K_o + (var_reversal_potentials__P_kna * var_reversal_potentials__Na_o)) / (var_reversal_potentials__K_i + (var_reversal_potentials__P_kna * var_reversal_potentials__Na_i)));
135 double var_slow_delayed_rectifier_potassium_current__E_Ks = var_reversal_potentials__E_Ks;
136 const double var_slow_delayed_rectifier_potassium_current__g_Ks = 0.0026;
137 double var_slow_delayed_rectifier_potassium_current__V = var_membrane__V;
138 double var_slow_delayed_rectifier_potassium_current__i_Ks = var_slow_delayed_rectifier_potassium_current__g_Ks * pow(var_slow_delayed_rectifier_potassium_current__xs, 2.0) * (var_slow_delayed_rectifier_potassium_current__V - var_slow_delayed_rectifier_potassium_current__E_Ks);
139 double var_membrane__i_Ks = var_slow_delayed_rectifier_potassium_current__i_Ks;
140 double var_L_type_Ca_channel__d = var_L_type_Ca_channel_d_gate__d;
141 const double var_L_type_Ca_channel__FrICa = 1.0;
142 double var_L_type_Ca_channel__f = var_L_type_Ca_channel_f_gate__f;
143 double var_L_type_Ca_channel__K_o = var_extracellular_potassium_concentration__K_o;
144 double var_L_type_Ca_channel__K_i = var_intracellular_potassium_concentration__K_i;
145 double var_L_type_Ca_channel__F = var_membrane__F;
146 const double var_L_type_Ca_channel__P_Ca_L = 0.1;
147 double var_L_type_Ca_channel__T = var_membrane__T;
148 const double var_L_type_Ca_channel__P_CaK = 0.002;
149 double var_L_type_Ca_channel__V = var_membrane__V;
150 double var_L_type_Ca_channel__f2 = var_L_type_Ca_channel_f2_gate__f2;
151 double var_L_type_Ca_channel__R = var_membrane__R;
152 double var_L_type_Ca_channel__i_Ca_L_K_cyt = ((((1.0 - var_L_type_Ca_channel__FrICa) * var_L_type_Ca_channel__P_CaK * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2 * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__K_i * exp((50.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__K_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
153 double var_membrane__i_Ca_L_K_cyt = var_L_type_Ca_channel__i_Ca_L_K_cyt;
154 double var_L_type_Ca_channel__f2ds = var_L_type_Ca_channel_f2ds_gate__f2ds;
155 double var_L_type_Ca_channel__i_Ca_L_K_ds = (((var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaK * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2ds * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__K_i * exp((50.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__K_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
156 double var_membrane__i_Ca_L_K_ds = var_L_type_Ca_channel__i_Ca_L_K_ds;
157 const double var_sodium_potassium_pump__i_NaK_max = 0.7;
158 double var_sodium_potassium_pump__Na_i = var_intracellular_sodium_concentration__Na_i;
159 double var_sodium_potassium_pump__K_o = var_extracellular_potassium_concentration__K_o;
160 const double var_sodium_potassium_pump__K_mNa = 40.0;
161 const double var_sodium_potassium_pump__K_mK = 1.0;
162 double var_sodium_potassium_pump__i_NaK = (((var_sodium_potassium_pump__i_NaK_max * var_sodium_potassium_pump__K_o) / (var_sodium_potassium_pump__K_mK + var_sodium_potassium_pump__K_o)) * var_sodium_potassium_pump__Na_i) / (var_sodium_potassium_pump__K_mNa + var_sodium_potassium_pump__Na_i);
163 double var_membrane__i_NaK = var_sodium_potassium_pump__i_NaK;
164 const double var_fast_sodium_current__g_Na = 2.5;
165 double var_fast_sodium_current__h = var_fast_sodium_current_h_gate__h;
166 double var_fast_sodium_current__V = var_membrane__V;
167 double var_reversal_potentials__E_mh = ((var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log((var_reversal_potentials__Na_o + (0.12 * var_reversal_potentials__K_o)) / (var_reversal_potentials__Na_i + (0.12 * var_reversal_potentials__K_i)));
168 double var_fast_sodium_current__E_mh = var_reversal_potentials__E_mh;
169 double var_fast_sodium_current__m = var_fast_sodium_current_m_gate__m;
170 double var_fast_sodium_current__i_Na = var_fast_sodium_current__g_Na * pow(var_fast_sodium_current__m, 3.0) * var_fast_sodium_current__h * (var_fast_sodium_current__V - var_fast_sodium_current__E_mh);
171 double var_membrane__i_Na = var_fast_sodium_current__i_Na;
172 double var_sodium_background_current__V = var_membrane__V;
173 double var_reversal_potentials__E_Na = ((var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log(var_reversal_potentials__Na_o / var_reversal_potentials__Na_i);
174 double var_sodium_background_current__E_Na = var_reversal_potentials__E_Na;
175 const double var_sodium_background_current__g_bna = 0.0006;
176 double var_sodium_background_current__i_b_Na = var_sodium_background_current__g_bna * (var_sodium_background_current__V - var_sodium_background_current__E_Na);
177 double var_membrane__i_b_Na = var_sodium_background_current__i_b_Na;
178 const double var_persistent_sodium_current__g_pna = 0.004;
179 double var_persistent_sodium_current__V = var_membrane__V;
180 double var_persistent_sodium_current__E_Na = var_reversal_potentials__E_Na;
181 double var_persistent_sodium_current__i_p_Na = ((var_persistent_sodium_current__g_pna * 1.0) / (1.0 + exp((-(var_persistent_sodium_current__V + 52.0)) / 8.0))) * (var_persistent_sodium_current__V - var_persistent_sodium_current__E_Na);
182 double var_membrane__i_p_Na = var_persistent_sodium_current__i_p_Na;
183 const double var_L_type_Ca_channel__P_CaNa = 0.01;
184 double var_L_type_Ca_channel__Na_o = var_extracellular_sodium_concentration__Na_o;
185 double var_L_type_Ca_channel__Na_i = var_intracellular_sodium_concentration__Na_i;
186 double var_L_type_Ca_channel__i_Ca_L_Na_cyt = ((((1.0 - var_L_type_Ca_channel__FrICa) * var_L_type_Ca_channel__P_CaNa * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2 * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__Na_i * exp((50.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__Na_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
187 double var_membrane__i_Ca_L_Na_cyt = var_L_type_Ca_channel__i_Ca_L_Na_cyt;
188 double var_L_type_Ca_channel__i_Ca_L_Na_ds = (((var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaNa * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2ds * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__Na_i * exp((50.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__Na_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
189 double var_membrane__i_Ca_L_Na_ds = var_L_type_Ca_channel__i_Ca_L_Na_ds;
190 double var_sodium_calcium_exchanger__Na_i = var_intracellular_sodium_concentration__Na_i;
191 const double var_sodium_calcium_exchanger__n_NaCa = 3.0;
192 const double var_sodium_calcium_exchanger__gamma = 0.5;
193 double var_sodium_calcium_exchanger__F = var_membrane__F;
194 double var_sodium_calcium_exchanger__Na_o = var_extracellular_sodium_concentration__Na_o;
195 const double var_sodium_calcium_exchanger__FRiNaCa = 0.001;
196 double var_sodium_calcium_exchanger__R = var_membrane__R;
197 double var_sodium_calcium_exchanger__Ca_i = var_intracellular_calcium_concentration__Ca_i;
198 double var_sodium_calcium_exchanger__T = var_membrane__T;
199 double var_sodium_calcium_exchanger__V = var_membrane__V;
200 const double var_sodium_calcium_exchanger__d_NaCa = 0.0;
201 const double var_extracellular_calcium_concentration__Ca_o = 2.0;
202 double var_sodium_calcium_exchanger__Ca_o = var_extracellular_calcium_concentration__Ca_o;
203 const double var_sodium_calcium_exchanger__k_NaCa = 0.0005;
204 double var_sodium_calcium_exchanger__i_NaCa_cyt = ((1.0 - var_sodium_calcium_exchanger__FRiNaCa) * var_sodium_calcium_exchanger__k_NaCa * ((exp((var_sodium_calcium_exchanger__gamma * (var_sodium_calcium_exchanger__n_NaCa - 2.0) * var_sodium_calcium_exchanger__V * var_sodium_calcium_exchanger__F) / (var_sodium_calcium_exchanger__R * var_sodium_calcium_exchanger__T)) * pow(var_sodium_calcium_exchanger__Na_i, var_sodium_calcium_exchanger__n_NaCa) * var_sodium_calcium_exchanger__Ca_o) - (exp(((var_sodium_calcium_exchanger__gamma - 1.0) * (var_sodium_calcium_exchanger__n_NaCa - 2.0) * var_sodium_calcium_exchanger__V * var_sodium_calcium_exchanger__F) / (var_sodium_calcium_exchanger__R * var_sodium_calcium_exchanger__T)) * pow(var_sodium_calcium_exchanger__Na_o, var_sodium_calcium_exchanger__n_NaCa) * var_sodium_calcium_exchanger__Ca_i))) / ((1.0 + (var_sodium_calcium_exchanger__d_NaCa * ((var_sodium_calcium_exchanger__Ca_i * pow(var_sodium_calcium_exchanger__Na_o, var_sodium_calcium_exchanger__n_NaCa)) + (var_sodium_calcium_exchanger__Ca_o * pow(var_sodium_calcium_exchanger__Na_i, var_sodium_calcium_exchanger__n_NaCa))))) * (1.0 + (var_sodium_calcium_exchanger__Ca_i / 0.0069)));
205 double var_membrane__i_NaCa_cyt = var_sodium_calcium_exchanger__i_NaCa_cyt;
206 double var_sodium_calcium_exchanger__Ca_ds = var_intracellular_calcium_concentration__Ca_ds;
207 double var_sodium_calcium_exchanger__i_NaCa_ds = (var_sodium_calcium_exchanger__FRiNaCa * var_sodium_calcium_exchanger__k_NaCa * ((exp((var_sodium_calcium_exchanger__gamma * (var_sodium_calcium_exchanger__n_NaCa - 2.0) * var_sodium_calcium_exchanger__V * var_sodium_calcium_exchanger__F) / (var_sodium_calcium_exchanger__R * var_sodium_calcium_exchanger__T)) * pow(var_sodium_calcium_exchanger__Na_i, var_sodium_calcium_exchanger__n_NaCa) * var_sodium_calcium_exchanger__Ca_o) - (exp(((var_sodium_calcium_exchanger__gamma - 1.0) * (var_sodium_calcium_exchanger__n_NaCa - 2.0) * var_sodium_calcium_exchanger__V * var_sodium_calcium_exchanger__F) / (var_sodium_calcium_exchanger__R * var_sodium_calcium_exchanger__T)) * pow(var_sodium_calcium_exchanger__Na_o, var_sodium_calcium_exchanger__n_NaCa) * var_sodium_calcium_exchanger__Ca_ds))) / ((1.0 + (var_sodium_calcium_exchanger__d_NaCa * ((var_sodium_calcium_exchanger__Ca_ds * pow(var_sodium_calcium_exchanger__Na_o, var_sodium_calcium_exchanger__n_NaCa)) + (var_sodium_calcium_exchanger__Ca_o * pow(var_sodium_calcium_exchanger__Na_i, var_sodium_calcium_exchanger__n_NaCa))))) * (1.0 + (var_sodium_calcium_exchanger__Ca_ds / 0.0069)));
208 double var_membrane__i_NaCa_ds = var_sodium_calcium_exchanger__i_NaCa_ds;
209 double var_L_type_Ca_channel__Ca_i = var_intracellular_calcium_concentration__Ca_i;
210 double var_L_type_Ca_channel__Ca_o = var_extracellular_calcium_concentration__Ca_o;
211 double var_L_type_Ca_channel__i_Ca_L_Ca_cyt = ((((1.0 - var_L_type_Ca_channel__FrICa) * 4.0 * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2 * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F * 2.0) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__Ca_i * exp((100.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__Ca_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F * 2.0) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
212 double var_membrane__i_Ca_L_Ca_cyt = var_L_type_Ca_channel__i_Ca_L_Ca_cyt;
213 double var_L_type_Ca_channel__i_Ca_L_Ca_ds = (((var_L_type_Ca_channel__FrICa * 4.0 * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2ds * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F * 2.0) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__Ca_i * exp((100.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__Ca_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F * 2.0) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
214 double var_membrane__i_Ca_L_Ca_ds = var_L_type_Ca_channel__i_Ca_L_Ca_ds;
215 double var_reversal_potentials__Ca_o = var_extracellular_calcium_concentration__Ca_o;
216 double var_reversal_potentials__Ca_i = var_intracellular_calcium_concentration__Ca_i;
217 double var_reversal_potentials__E_Ca = ((0.5 * var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log(var_reversal_potentials__Ca_o / var_reversal_potentials__Ca_i);
218 double var_calcium_background_current__E_Ca = var_reversal_potentials__E_Ca;
219 const double var_calcium_background_current__g_bca = 0.00025;
220 double var_calcium_background_current__V = var_membrane__V;
221 double var_calcium_background_current__i_b_Ca = var_calcium_background_current__g_bca * (var_calcium_background_current__V - var_calcium_background_current__E_Ca);
222 double var_membrane__i_b_Ca = var_calcium_background_current__i_b_Ca;
223
225 // new part of the model - addition of a Stretch-activated channel
227 const double g_sac = 0.035; // uS
228 const double E_sac = -10; // mV
229 double f = (mStretch > 1.0) ? (mStretch-1.0)/0.15 : 0.0; // f = 0 if stretch < 1, scales linearly to f=1 at 15% stretch
230 double sac_ionic_current = g_sac * f * (var_membrane__V - E_sac); // if g is uS, this is nA
231
232 /*
233 * The return value has to be scaled to match the units required by the mono/bidomain equations.
234 * The cell model ionic current is in nano Amps, we require micro Amps/cm^2.
235 * The estimate of the cell area is obtained by observing that Cm in the cell model and Cm in the bidomain equation are conceptually the same thing.
236 * The Cm in the bidomain equation is expressed in capacitance units per area.
237 * An estimate of the cell area is then the ratio of the two values of Cm.
238 *
239 */
240 double value_in_nA = var_membrane__i_K1+var_membrane__i_to+var_membrane__i_Kr+var_membrane__i_Ks+var_membrane__i_Ca_L_K_cyt+var_membrane__i_Ca_L_K_ds+var_membrane__i_NaK+var_membrane__i_Na+var_membrane__i_b_Na+var_membrane__i_p_Na+var_membrane__i_Ca_L_Na_cyt+var_membrane__i_Ca_L_Na_ds+var_membrane__i_NaCa_cyt+var_membrane__i_NaCa_ds+var_membrane__i_Ca_L_Ca_cyt+var_membrane__i_Ca_L_Ca_ds+var_membrane__i_b_Ca;
241
242// std::cout << value_in_nA << " " << sac_ionic_current << "\n";
243 value_in_nA += sac_ionic_current;
244
245 double value_in_microA = 0.001*value_in_nA;
246 double estimated_cell_surface_in_cm_square = 9.5e-05 / HeartConfig::Instance()->GetCapacitance();
247 double value_in_microA_per_cm_square = value_in_microA/estimated_cell_surface_in_cm_square;
248 return value_in_microA_per_cm_square;
249}
250
252 double var_environment__time,
253 const std::vector<double> &rY,
254 std::vector<double> &rDY)
255{
256 // Inputs:
257 // Time units: second
258 var_environment__time *= 0.001;
259 double var_membrane__V = rY[0];
260 // Units: millivolt; Initial value: -92.849333
261 double var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = rY[1];
262 // Units: dimensionless; Initial value: 1.03e-5
263 double var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = rY[2];
264 // Units: dimensionless; Initial value: 2e-7
265 double var_slow_delayed_rectifier_potassium_current_xs_gate__xs = rY[3];
266 // Units: dimensionless; Initial value: 0.001302
267 double var_fast_sodium_current_m_gate__m = rY[4];
268 // Units: dimensionless; Initial value: 0.0016203
269 double var_fast_sodium_current_h_gate__h = rY[5];
270 // Units: dimensionless; Initial value: 0.9944036
271 double var_L_type_Ca_channel_d_gate__d = rY[6];
272 // Units: dimensionless; Initial value: 0
273 double var_L_type_Ca_channel_f_gate__f = rY[7];
274 // Units: dimensionless; Initial value: 1
275 double var_L_type_Ca_channel_f2_gate__f2 = rY[8];
276 // Units: dimensionless; Initial value: 0.9349197
277 double var_L_type_Ca_channel_f2ds_gate__f2ds = rY[9];
278 // Units: dimensionless; Initial value: 0.9651958
279 double var_transient_outward_current_s_gate__s = rY[10];
280 // Units: dimensionless; Initial value: 0.9948645
281 double var_transient_outward_current_r_gate__r = rY[11];
282 // Units: dimensionless; Initial value: 0
283 double var_calcium_release__ActFrac = rY[12];
284 // Units: dimensionless; Initial value: 0.0042614
285 double var_calcium_release__ProdFrac = rY[13];
286 // Units: dimensionless; Initial value: 0.4068154
287 double var_intracellular_sodium_concentration__Na_i = rY[14];
288 // Units: millimolar; Initial value: 7.3321223
289 double var_intracellular_potassium_concentration__K_i = rY[15];
290 // Units: millimolar; Initial value: 136.5644281
291 double var_intracellular_calcium_concentration__Ca_i = rY[16];
292 // Units: millimolar; Initial value: 1.4e-5
293 double var_intracellular_calcium_concentration__Ca_ds = rY[17];
294 // Units: millimolar; Initial value: 1.88e-5
295 double var_intracellular_calcium_concentration__Ca_up = rY[18];
296 // Units: millimolar; Initial value: 0.4531889
297 double var_intracellular_calcium_concentration__Ca_rel = rY[19];
298 // Units: millimolar; Initial value: 0.4481927
299 double var_intracellular_calcium_concentration__Ca_Calmod = rY[20];
300 // Units: millimolar; Initial value: 0.0005555
301 double var_intracellular_calcium_concentration__Ca_Trop = rY[21];
302 // Units: millimolar; Initial value: 0.0003542
303
304
305 // Mathematics
306 const double var_membrane__R = 8314.472;
307 const double var_membrane__T = 310.0;
308 const double var_membrane__F = 96485.3415;
309 const double var_membrane__Cm = 9.5e-05;
310 double var_reversal_potentials__K_i = var_intracellular_potassium_concentration__K_i;
311 double var_reversal_potentials__R = var_membrane__R;
312 double var_reversal_potentials__T = var_membrane__T;
313 double var_reversal_potentials__F = var_membrane__F;
314 const double var_extracellular_potassium_concentration__K_o = 4.0;
315 double var_reversal_potentials__K_o = var_extracellular_potassium_concentration__K_o;
316 double var_reversal_potentials__E_K = ((var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log(var_reversal_potentials__K_o / var_reversal_potentials__K_i);
317 double var_time_independent_potassium_current__E_K = var_reversal_potentials__E_K;
318 double var_time_independent_potassium_current__K_o = var_extracellular_potassium_concentration__K_o;
319 double var_time_independent_potassium_current__R = var_membrane__R;
320 double var_time_independent_potassium_current__V = var_membrane__V;
321 double var_time_independent_potassium_current__T = var_membrane__T;
322 const double var_time_independent_potassium_current__K_mk1 = 10.0;
323 const double var_time_independent_potassium_current__g_K1 = 0.5;
324 double var_time_independent_potassium_current__F = var_membrane__F;
325 double var_time_independent_potassium_current__i_K1 = (((var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current__K_o) / (var_time_independent_potassium_current__K_o + var_time_independent_potassium_current__K_mk1)) * (var_time_independent_potassium_current__V - var_time_independent_potassium_current__E_K)) / (1.0 + exp((((var_time_independent_potassium_current__V - var_time_independent_potassium_current__E_K) - 10.0) * var_time_independent_potassium_current__F * 1.25) / (var_time_independent_potassium_current__R * var_time_independent_potassium_current__T)));
326 double var_membrane__i_K1 = var_time_independent_potassium_current__i_K1;
327 double var_transient_outward_current__s = var_transient_outward_current_s_gate__s;
328 double var_transient_outward_current__r = var_transient_outward_current_r_gate__r;
329 const double var_transient_outward_current__g_to = 0.005;
330 double var_transient_outward_current__V = var_membrane__V;
331 double var_transient_outward_current__E_K = var_reversal_potentials__E_K;
332 const double var_transient_outward_current__g_tos = 0.0;
333 double var_transient_outward_current__i_to = var_transient_outward_current__g_to * (var_transient_outward_current__g_tos + (var_transient_outward_current__s * (1.0 - var_transient_outward_current__g_tos))) * var_transient_outward_current__r * (var_transient_outward_current__V - var_transient_outward_current__E_K);
334 double var_membrane__i_to = var_transient_outward_current__i_to;
335 const double var_rapid_delayed_rectifier_potassium_current__g_Kr2 = 0.0013;
336 const double var_rapid_delayed_rectifier_potassium_current__g_Kr1 = 0.0021;
337 double var_rapid_delayed_rectifier_potassium_current__xr1 = var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1;
338 double var_rapid_delayed_rectifier_potassium_current__xr2 = var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2;
339 double var_rapid_delayed_rectifier_potassium_current__V = var_membrane__V;
340 double var_rapid_delayed_rectifier_potassium_current__E_K = var_reversal_potentials__E_K;
341 double var_rapid_delayed_rectifier_potassium_current__i_Kr = ((((var_rapid_delayed_rectifier_potassium_current__g_Kr1 * var_rapid_delayed_rectifier_potassium_current__xr1) + (var_rapid_delayed_rectifier_potassium_current__g_Kr2 * var_rapid_delayed_rectifier_potassium_current__xr2)) * 1.0) / (1.0 + exp((var_rapid_delayed_rectifier_potassium_current__V + 9.0) / 22.4))) * (var_rapid_delayed_rectifier_potassium_current__V - var_rapid_delayed_rectifier_potassium_current__E_K);
342 double var_membrane__i_Kr = var_rapid_delayed_rectifier_potassium_current__i_Kr;
343 double var_slow_delayed_rectifier_potassium_current__xs = var_slow_delayed_rectifier_potassium_current_xs_gate__xs;
344 const double var_extracellular_sodium_concentration__Na_o = 140.0;
345 double var_reversal_potentials__Na_o = var_extracellular_sodium_concentration__Na_o;
346 double var_reversal_potentials__Na_i = var_intracellular_sodium_concentration__Na_i;
347 const double var_reversal_potentials__P_kna = 0.03;
348 double var_reversal_potentials__E_Ks = ((var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log((var_reversal_potentials__K_o + (var_reversal_potentials__P_kna * var_reversal_potentials__Na_o)) / (var_reversal_potentials__K_i + (var_reversal_potentials__P_kna * var_reversal_potentials__Na_i)));
349 double var_slow_delayed_rectifier_potassium_current__E_Ks = var_reversal_potentials__E_Ks;
350 const double var_slow_delayed_rectifier_potassium_current__g_Ks = 0.0026;
351 double var_slow_delayed_rectifier_potassium_current__V = var_membrane__V;
352 double var_slow_delayed_rectifier_potassium_current__i_Ks = var_slow_delayed_rectifier_potassium_current__g_Ks * pow(var_slow_delayed_rectifier_potassium_current__xs, 2.0) * (var_slow_delayed_rectifier_potassium_current__V - var_slow_delayed_rectifier_potassium_current__E_Ks);
353 double var_membrane__i_Ks = var_slow_delayed_rectifier_potassium_current__i_Ks;
354 double var_L_type_Ca_channel__d = var_L_type_Ca_channel_d_gate__d;
355 const double var_L_type_Ca_channel__FrICa = 1.0;
356 double var_L_type_Ca_channel__f = var_L_type_Ca_channel_f_gate__f;
357 double var_L_type_Ca_channel__K_o = var_extracellular_potassium_concentration__K_o;
358 double var_L_type_Ca_channel__K_i = var_intracellular_potassium_concentration__K_i;
359 double var_L_type_Ca_channel__F = var_membrane__F;
360 const double var_L_type_Ca_channel__P_Ca_L = 0.1;
361 double var_L_type_Ca_channel__T = var_membrane__T;
362 const double var_L_type_Ca_channel__P_CaK = 0.002;
363 double var_L_type_Ca_channel__V = var_membrane__V;
364 double var_L_type_Ca_channel__f2 = var_L_type_Ca_channel_f2_gate__f2;
365 double var_L_type_Ca_channel__R = var_membrane__R;
366 double var_L_type_Ca_channel__i_Ca_L_K_cyt = ((((1.0 - var_L_type_Ca_channel__FrICa) * var_L_type_Ca_channel__P_CaK * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2 * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__K_i * exp((50.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__K_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
367 double var_membrane__i_Ca_L_K_cyt = var_L_type_Ca_channel__i_Ca_L_K_cyt;
368 double var_L_type_Ca_channel__f2ds = var_L_type_Ca_channel_f2ds_gate__f2ds;
369 double var_L_type_Ca_channel__i_Ca_L_K_ds = (((var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaK * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2ds * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__K_i * exp((50.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__K_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
370 double var_membrane__i_Ca_L_K_ds = var_L_type_Ca_channel__i_Ca_L_K_ds;
371 const double var_sodium_potassium_pump__i_NaK_max = 0.7;
372 double var_sodium_potassium_pump__Na_i = var_intracellular_sodium_concentration__Na_i;
373 double var_sodium_potassium_pump__K_o = var_extracellular_potassium_concentration__K_o;
374 const double var_sodium_potassium_pump__K_mNa = 40.0;
375 const double var_sodium_potassium_pump__K_mK = 1.0;
376 double var_sodium_potassium_pump__i_NaK = (((var_sodium_potassium_pump__i_NaK_max * var_sodium_potassium_pump__K_o) / (var_sodium_potassium_pump__K_mK + var_sodium_potassium_pump__K_o)) * var_sodium_potassium_pump__Na_i) / (var_sodium_potassium_pump__K_mNa + var_sodium_potassium_pump__Na_i);
377 double var_membrane__i_NaK = var_sodium_potassium_pump__i_NaK;
378 const double var_fast_sodium_current__g_Na = 2.5;
379 double var_fast_sodium_current__h = var_fast_sodium_current_h_gate__h;
380 double var_fast_sodium_current__V = var_membrane__V;
381 double var_reversal_potentials__E_mh = ((var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log((var_reversal_potentials__Na_o + (0.12 * var_reversal_potentials__K_o)) / (var_reversal_potentials__Na_i + (0.12 * var_reversal_potentials__K_i)));
382 double var_fast_sodium_current__E_mh = var_reversal_potentials__E_mh;
383 double var_fast_sodium_current__m = var_fast_sodium_current_m_gate__m;
384 double var_fast_sodium_current__i_Na = var_fast_sodium_current__g_Na * pow(var_fast_sodium_current__m, 3.0) * var_fast_sodium_current__h * (var_fast_sodium_current__V - var_fast_sodium_current__E_mh);
385 double var_membrane__i_Na = var_fast_sodium_current__i_Na;
386 double var_sodium_background_current__V = var_membrane__V;
387 double var_reversal_potentials__E_Na = ((var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log(var_reversal_potentials__Na_o / var_reversal_potentials__Na_i);
388 double var_sodium_background_current__E_Na = var_reversal_potentials__E_Na;
389 const double var_sodium_background_current__g_bna = 0.0006;
390 double var_sodium_background_current__i_b_Na = var_sodium_background_current__g_bna * (var_sodium_background_current__V - var_sodium_background_current__E_Na);
391 double var_membrane__i_b_Na = var_sodium_background_current__i_b_Na;
392 const double var_persistent_sodium_current__g_pna = 0.004;
393 double var_persistent_sodium_current__V = var_membrane__V;
394 double var_persistent_sodium_current__E_Na = var_reversal_potentials__E_Na;
395 double var_persistent_sodium_current__i_p_Na = ((var_persistent_sodium_current__g_pna * 1.0) / (1.0 + exp((-(var_persistent_sodium_current__V + 52.0)) / 8.0))) * (var_persistent_sodium_current__V - var_persistent_sodium_current__E_Na);
396 double var_membrane__i_p_Na = var_persistent_sodium_current__i_p_Na;
397 const double var_L_type_Ca_channel__P_CaNa = 0.01;
398 double var_L_type_Ca_channel__Na_o = var_extracellular_sodium_concentration__Na_o;
399 double var_L_type_Ca_channel__Na_i = var_intracellular_sodium_concentration__Na_i;
400 double var_L_type_Ca_channel__i_Ca_L_Na_cyt = ((((1.0 - var_L_type_Ca_channel__FrICa) * var_L_type_Ca_channel__P_CaNa * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2 * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__Na_i * exp((50.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__Na_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
401 double var_membrane__i_Ca_L_Na_cyt = var_L_type_Ca_channel__i_Ca_L_Na_cyt;
402 double var_L_type_Ca_channel__i_Ca_L_Na_ds = (((var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaNa * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2ds * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__Na_i * exp((50.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__Na_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
403 double var_membrane__i_Ca_L_Na_ds = var_L_type_Ca_channel__i_Ca_L_Na_ds;
404 double var_sodium_calcium_exchanger__Na_i = var_intracellular_sodium_concentration__Na_i;
405 const double var_sodium_calcium_exchanger__n_NaCa = 3.0;
406 const double var_sodium_calcium_exchanger__gamma = 0.5;
407 double var_sodium_calcium_exchanger__F = var_membrane__F;
408 double var_sodium_calcium_exchanger__Na_o = var_extracellular_sodium_concentration__Na_o;
409 const double var_sodium_calcium_exchanger__FRiNaCa = 0.001;
410 double var_sodium_calcium_exchanger__R = var_membrane__R;
411 double var_sodium_calcium_exchanger__Ca_i = var_intracellular_calcium_concentration__Ca_i;
412 double var_sodium_calcium_exchanger__T = var_membrane__T;
413 double var_sodium_calcium_exchanger__V = var_membrane__V;
414 const double var_sodium_calcium_exchanger__d_NaCa = 0.0;
415 const double var_extracellular_calcium_concentration__Ca_o = 2.0;
416 double var_sodium_calcium_exchanger__Ca_o = var_extracellular_calcium_concentration__Ca_o;
417 const double var_sodium_calcium_exchanger__k_NaCa = 0.0005;
418 double var_sodium_calcium_exchanger__i_NaCa_cyt = ((1.0 - var_sodium_calcium_exchanger__FRiNaCa) * var_sodium_calcium_exchanger__k_NaCa * ((exp((var_sodium_calcium_exchanger__gamma * (var_sodium_calcium_exchanger__n_NaCa - 2.0) * var_sodium_calcium_exchanger__V * var_sodium_calcium_exchanger__F) / (var_sodium_calcium_exchanger__R * var_sodium_calcium_exchanger__T)) * pow(var_sodium_calcium_exchanger__Na_i, var_sodium_calcium_exchanger__n_NaCa) * var_sodium_calcium_exchanger__Ca_o) - (exp(((var_sodium_calcium_exchanger__gamma - 1.0) * (var_sodium_calcium_exchanger__n_NaCa - 2.0) * var_sodium_calcium_exchanger__V * var_sodium_calcium_exchanger__F) / (var_sodium_calcium_exchanger__R * var_sodium_calcium_exchanger__T)) * pow(var_sodium_calcium_exchanger__Na_o, var_sodium_calcium_exchanger__n_NaCa) * var_sodium_calcium_exchanger__Ca_i))) / ((1.0 + (var_sodium_calcium_exchanger__d_NaCa * ((var_sodium_calcium_exchanger__Ca_i * pow(var_sodium_calcium_exchanger__Na_o, var_sodium_calcium_exchanger__n_NaCa)) + (var_sodium_calcium_exchanger__Ca_o * pow(var_sodium_calcium_exchanger__Na_i, var_sodium_calcium_exchanger__n_NaCa))))) * (1.0 + (var_sodium_calcium_exchanger__Ca_i / 0.0069)));
419 double var_membrane__i_NaCa_cyt = var_sodium_calcium_exchanger__i_NaCa_cyt;
420 double var_sodium_calcium_exchanger__Ca_ds = var_intracellular_calcium_concentration__Ca_ds;
421 double var_sodium_calcium_exchanger__i_NaCa_ds = (var_sodium_calcium_exchanger__FRiNaCa * var_sodium_calcium_exchanger__k_NaCa * ((exp((var_sodium_calcium_exchanger__gamma * (var_sodium_calcium_exchanger__n_NaCa - 2.0) * var_sodium_calcium_exchanger__V * var_sodium_calcium_exchanger__F) / (var_sodium_calcium_exchanger__R * var_sodium_calcium_exchanger__T)) * pow(var_sodium_calcium_exchanger__Na_i, var_sodium_calcium_exchanger__n_NaCa) * var_sodium_calcium_exchanger__Ca_o) - (exp(((var_sodium_calcium_exchanger__gamma - 1.0) * (var_sodium_calcium_exchanger__n_NaCa - 2.0) * var_sodium_calcium_exchanger__V * var_sodium_calcium_exchanger__F) / (var_sodium_calcium_exchanger__R * var_sodium_calcium_exchanger__T)) * pow(var_sodium_calcium_exchanger__Na_o, var_sodium_calcium_exchanger__n_NaCa) * var_sodium_calcium_exchanger__Ca_ds))) / ((1.0 + (var_sodium_calcium_exchanger__d_NaCa * ((var_sodium_calcium_exchanger__Ca_ds * pow(var_sodium_calcium_exchanger__Na_o, var_sodium_calcium_exchanger__n_NaCa)) + (var_sodium_calcium_exchanger__Ca_o * pow(var_sodium_calcium_exchanger__Na_i, var_sodium_calcium_exchanger__n_NaCa))))) * (1.0 + (var_sodium_calcium_exchanger__Ca_ds / 0.0069)));
422 double var_membrane__i_NaCa_ds = var_sodium_calcium_exchanger__i_NaCa_ds;
423 double var_L_type_Ca_channel__Ca_i = var_intracellular_calcium_concentration__Ca_i;
424 double var_L_type_Ca_channel__Ca_o = var_extracellular_calcium_concentration__Ca_o;
425 double var_L_type_Ca_channel__i_Ca_L_Ca_cyt = ((((1.0 - var_L_type_Ca_channel__FrICa) * 4.0 * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2 * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F * 2.0) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__Ca_i * exp((100.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__Ca_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F * 2.0) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
426 double var_membrane__i_Ca_L_Ca_cyt = var_L_type_Ca_channel__i_Ca_L_Ca_cyt;
427 double var_L_type_Ca_channel__i_Ca_L_Ca_ds = (((var_L_type_Ca_channel__FrICa * 4.0 * var_L_type_Ca_channel__P_Ca_L * var_L_type_Ca_channel__d * var_L_type_Ca_channel__f * var_L_type_Ca_channel__f2ds * (var_L_type_Ca_channel__V - 50.0) * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)) / (1.0 - exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F * 2.0) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T)))) * ((var_L_type_Ca_channel__Ca_i * exp((100.0 * var_L_type_Ca_channel__F) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))) - (var_L_type_Ca_channel__Ca_o * exp(((-(var_L_type_Ca_channel__V - 50.0)) * var_L_type_Ca_channel__F * 2.0) / (var_L_type_Ca_channel__R * var_L_type_Ca_channel__T))));
428 double var_membrane__i_Ca_L_Ca_ds = var_L_type_Ca_channel__i_Ca_L_Ca_ds;
429 double var_reversal_potentials__Ca_o = var_extracellular_calcium_concentration__Ca_o;
430 double var_reversal_potentials__Ca_i = var_intracellular_calcium_concentration__Ca_i;
431 double var_reversal_potentials__E_Ca = ((0.5 * var_reversal_potentials__R * var_reversal_potentials__T) / var_reversal_potentials__F) * log(var_reversal_potentials__Ca_o / var_reversal_potentials__Ca_i);
432 double var_calcium_background_current__E_Ca = var_reversal_potentials__E_Ca;
433 const double var_calcium_background_current__g_bca = 0.00025;
434 double var_calcium_background_current__V = var_membrane__V;
435 double var_calcium_background_current__i_b_Ca = var_calcium_background_current__g_bca * (var_calcium_background_current__V - var_calcium_background_current__E_Ca);
436 double var_membrane__i_b_Ca = var_calcium_background_current__i_b_Ca;
437 double var_membrane__i_Stim = GetStimulus((1.0/0.001)*var_environment__time);
438 double var_rapid_delayed_rectifier_potassium_current_xr1_gate__V = var_rapid_delayed_rectifier_potassium_current__V;
439 double var_rapid_delayed_rectifier_potassium_current_xr1_gate__alpha_xr1 = 50.0 / (1.0 + exp((-(var_rapid_delayed_rectifier_potassium_current_xr1_gate__V - 5.0)) / 9.0));
440 double var_rapid_delayed_rectifier_potassium_current_xr1_gate__beta_xr1 = 0.05 * exp((-(var_rapid_delayed_rectifier_potassium_current_xr1_gate__V - 20.0)) / 15.0);
441 double var_rapid_delayed_rectifier_potassium_current_xr2_gate__V = var_rapid_delayed_rectifier_potassium_current__V;
442 double var_rapid_delayed_rectifier_potassium_current_xr2_gate__alpha_xr2 = 50.0 / (1.0 + exp((-(var_rapid_delayed_rectifier_potassium_current_xr2_gate__V - 5.0)) / 9.0));
443 double var_rapid_delayed_rectifier_potassium_current_xr2_gate__beta_xr2 = 0.4 * exp(-pow((var_rapid_delayed_rectifier_potassium_current_xr2_gate__V + 30.0) / 30.0, 3.0));
444 double var_slow_delayed_rectifier_potassium_current_xs_gate__V = var_slow_delayed_rectifier_potassium_current__V;
445 double var_slow_delayed_rectifier_potassium_current_xs_gate__alpha_xs = 14.0 / (1.0 + exp((-(var_slow_delayed_rectifier_potassium_current_xs_gate__V - 40.0)) / 9.0));
446 double var_slow_delayed_rectifier_potassium_current_xs_gate__beta_xs = 1.0 * exp((-var_slow_delayed_rectifier_potassium_current_xs_gate__V) / 45.0);
447 double var_fast_sodium_current_m_gate__V = var_fast_sodium_current__V;
448 double var_fast_sodium_current_m_gate__E0_m = var_fast_sodium_current_m_gate__V + 41.0;
449 const double var_fast_sodium_current_m_gate__delta_m = 1e-05;
450 double var_fast_sodium_current_m_gate__alpha_m = (fabs(var_fast_sodium_current_m_gate__E0_m) < var_fast_sodium_current_m_gate__delta_m) ? 2000.0 : ((200.0 * var_fast_sodium_current_m_gate__E0_m) / (1.0 - exp((-0.1) * var_fast_sodium_current_m_gate__E0_m)));
451 double var_fast_sodium_current_m_gate__beta_m = 8000.0 * exp((-0.056) * (var_fast_sodium_current_m_gate__V + 66.0));
452 double var_fast_sodium_current_h_gate__V = var_fast_sodium_current__V;
453 const double var_fast_sodium_current_h_gate__shift_h = 0.0;
454 double var_fast_sodium_current_h_gate__alpha_h = 20.0 * exp((-0.125) * ((var_fast_sodium_current_h_gate__V + 75.0) - var_fast_sodium_current_h_gate__shift_h));
455 double var_fast_sodium_current_h_gate__beta_h = 2000.0 / (1.0 + (320.0 * exp((-0.1) * ((var_fast_sodium_current_h_gate__V + 75.0) - var_fast_sodium_current_h_gate__shift_h))));
456 double var_L_type_Ca_channel__Ca_ds = var_intracellular_calcium_concentration__Ca_ds;
457 const double var_L_type_Ca_channel__Km_f2 = 100000.0;
458 const double var_L_type_Ca_channel__Km_f2ds = 0.001;
459 const double var_L_type_Ca_channel__R_decay = 20.0;
460 double var_L_type_Ca_channel_d_gate__V = var_L_type_Ca_channel__V;
461 double var_L_type_Ca_channel_d_gate__E0_d = (var_L_type_Ca_channel_d_gate__V + 24.0) - 5.0;
462 double var_L_type_Ca_channel_d_gate__alpha_d = (fabs(var_L_type_Ca_channel_d_gate__E0_d) < 0.0001) ? 120.0 : ((30.0 * var_L_type_Ca_channel_d_gate__E0_d) / (1.0 - exp((-var_L_type_Ca_channel_d_gate__E0_d) / 4.0)));
463 double var_L_type_Ca_channel_d_gate__beta_d = (fabs(var_L_type_Ca_channel_d_gate__E0_d) < 0.0001) ? 120.0 : ((12.0 * var_L_type_Ca_channel_d_gate__E0_d) / (exp(var_L_type_Ca_channel_d_gate__E0_d / 10.0) - 1.0));
464 const double var_L_type_Ca_channel_d_gate__speed_d = 3.0;
465 double var_L_type_Ca_channel_f_gate__V = var_L_type_Ca_channel__V;
466 double var_L_type_Ca_channel_f_gate__E0_f = var_L_type_Ca_channel_f_gate__V + 34.0;
467 const double var_L_type_Ca_channel_f_gate__delta_f = 0.0001;
468 double var_L_type_Ca_channel_f_gate__alpha_f = (fabs(var_L_type_Ca_channel_f_gate__E0_f) < var_L_type_Ca_channel_f_gate__delta_f) ? 25.0 : ((6.25 * var_L_type_Ca_channel_f_gate__E0_f) / (exp(var_L_type_Ca_channel_f_gate__E0_f / 4.0) - 1.0));
469 double var_L_type_Ca_channel_f_gate__beta_f = 12.0 / (1.0 + exp(((-1.0) * (var_L_type_Ca_channel_f_gate__V + 34.0)) / 4.0));
470 const double var_L_type_Ca_channel_f_gate__speed_f = 0.3;
471 double var_L_type_Ca_channel_f2_gate__Km_f2 = var_L_type_Ca_channel__Km_f2;
472 double var_L_type_Ca_channel_f2_gate__Ca_i = var_L_type_Ca_channel__Ca_i;
473 double var_L_type_Ca_channel_f2ds_gate__Km_f2ds = var_L_type_Ca_channel__Km_f2ds;
474 double var_L_type_Ca_channel_f2ds_gate__R_decay = var_L_type_Ca_channel__R_decay;
475 double var_L_type_Ca_channel_f2ds_gate__Ca_ds = var_L_type_Ca_channel__Ca_ds;
476 double var_transient_outward_current_s_gate__V = var_transient_outward_current__V;
477 double var_transient_outward_current_s_gate__alpha_s = 0.033 * exp((-var_transient_outward_current_s_gate__V) / 17.0);
478 double var_transient_outward_current_s_gate__beta_s = 33.0 / (1.0 + exp((-0.125) * (var_transient_outward_current_s_gate__V + 10.0)));
479 double var_transient_outward_current_r_gate__V = var_transient_outward_current__V;
480 double var_sarcoplasmic_reticulum_calcium_pump__Ca_i = var_intracellular_calcium_concentration__Ca_i;
481 double var_sarcoplasmic_reticulum_calcium_pump__Ca_up = var_intracellular_calcium_concentration__Ca_up;
482 const double var_sarcoplasmic_reticulum_calcium_pump__alpha_up = 0.4;
483 const double var_sarcoplasmic_reticulum_calcium_pump__beta_up = 0.03;
484 const double var_sarcoplasmic_reticulum_calcium_pump__K_srca = 0.5;
485 const double var_sarcoplasmic_reticulum_calcium_pump__K_xcs = 0.4;
486 const double var_sarcoplasmic_reticulum_calcium_pump__K_cyca = 0.0003;
487 double var_sarcoplasmic_reticulum_calcium_pump__K_1 = (var_sarcoplasmic_reticulum_calcium_pump__K_cyca * var_sarcoplasmic_reticulum_calcium_pump__K_xcs) / var_sarcoplasmic_reticulum_calcium_pump__K_srca;
488 double var_sarcoplasmic_reticulum_calcium_pump__K_2 = var_sarcoplasmic_reticulum_calcium_pump__Ca_i + (var_sarcoplasmic_reticulum_calcium_pump__Ca_up * var_sarcoplasmic_reticulum_calcium_pump__K_1) + (var_sarcoplasmic_reticulum_calcium_pump__K_cyca * var_sarcoplasmic_reticulum_calcium_pump__K_xcs) + var_sarcoplasmic_reticulum_calcium_pump__K_cyca;
489 double var_sarcoplasmic_reticulum_calcium_pump__i_up = ((var_sarcoplasmic_reticulum_calcium_pump__Ca_i / var_sarcoplasmic_reticulum_calcium_pump__K_2) * var_sarcoplasmic_reticulum_calcium_pump__alpha_up) - (((var_sarcoplasmic_reticulum_calcium_pump__Ca_up * var_sarcoplasmic_reticulum_calcium_pump__K_1) / var_sarcoplasmic_reticulum_calcium_pump__K_2) * var_sarcoplasmic_reticulum_calcium_pump__beta_up);
490 double var_calcium_translocation__Ca_rel = var_intracellular_calcium_concentration__Ca_rel;
491 double var_calcium_translocation__Ca_up = var_intracellular_calcium_concentration__Ca_up;
492 double var_calcium_translocation__i_trans = 50.0 * (var_calcium_translocation__Ca_up - var_calcium_translocation__Ca_rel);
493 const double var_calcium_release__K_m_rel = 250.0;
494 const double var_calcium_release__K_leak_rate = 0.05;
495 double var_calcium_release__Ca_rel = var_intracellular_calcium_concentration__Ca_rel;
496 double var_calcium_release__i_rel = ((pow(var_calcium_release__ActFrac / (var_calcium_release__ActFrac + 0.25), 2.0) * var_calcium_release__K_m_rel) + var_calcium_release__K_leak_rate) * var_calcium_release__Ca_rel;
497 double var_calcium_release__V = var_membrane__V;
498 double var_calcium_release__VoltDep = exp(0.08 * (var_calcium_release__V - 40.0));
499 const double var_calcium_release__K_m_Ca_cyt = 0.0005;
500 double var_calcium_release__Ca_i = var_intracellular_calcium_concentration__Ca_i;
501 double var_calcium_release__CaiReg = var_calcium_release__Ca_i / (var_calcium_release__Ca_i + var_calcium_release__K_m_Ca_cyt);
502 double var_calcium_release__Ca_ds = var_intracellular_calcium_concentration__Ca_ds;
503 const double var_calcium_release__K_m_Ca_ds = 0.01;
504 double var_calcium_release__CadsReg = var_calcium_release__Ca_ds / (var_calcium_release__Ca_ds + var_calcium_release__K_m_Ca_ds);
505 double var_calcium_release__RegBindSite = var_calcium_release__CaiReg + ((1.0 - var_calcium_release__CaiReg) * var_calcium_release__CadsReg);
506 double var_calcium_release__ActRate = (0.0 * var_calcium_release__VoltDep) + (500.0 * pow(var_calcium_release__RegBindSite, 2.0));
507 double var_calcium_release__InactRate = 60.0 + (500.0 * pow(var_calcium_release__RegBindSite, 2.0));
508 double var_calcium_release__PrecFrac = (1.0 - var_calcium_release__ActFrac) - var_calcium_release__ProdFrac;
509 double var_calcium_release__SpeedRel = (var_calcium_release__V < (-50.0)) ? 5.0 : 1.0;
510 const double var_intracellular_calcium_concentration__V_up_ratio = 0.01;
511 const double var_intracellular_calcium_concentration__V_rel_ratio = 0.1;
512 const double var_intracellular_calcium_concentration__V_e_ratio = 0.4;
513 double var_intracellular_calcium_concentration__V_i_ratio = ((1.0 - var_intracellular_calcium_concentration__V_e_ratio) - var_intracellular_calcium_concentration__V_up_ratio) - var_intracellular_calcium_concentration__V_rel_ratio;
514 const double var_intracellular_calcium_concentration__radius = 0.012;
515 const double var_intracellular_calcium_concentration__length = 0.074;
516 double var_intracellular_calcium_concentration__V_Cell = 3.141592654 * pow(var_intracellular_calcium_concentration__radius, 2.0) * var_intracellular_calcium_concentration__length;
517 double var_intracellular_calcium_concentration__V_i = var_intracellular_calcium_concentration__V_Cell * var_intracellular_calcium_concentration__V_i_ratio;
518 double var_intracellular_sodium_concentration__V_i = var_intracellular_calcium_concentration__V_i;
519 double var_intracellular_sodium_concentration__F = var_membrane__F;
520 double var_intracellular_sodium_concentration__i_Na = var_fast_sodium_current__i_Na;
521 double var_intracellular_sodium_concentration__i_b_Na = var_sodium_background_current__i_b_Na;
522 double var_intracellular_sodium_concentration__i_p_Na = var_persistent_sodium_current__i_p_Na;
523 double var_intracellular_sodium_concentration__i_Ca_L_Na_cyt = var_L_type_Ca_channel__i_Ca_L_Na_cyt;
524 double var_intracellular_sodium_concentration__i_Ca_L_Na_ds = var_L_type_Ca_channel__i_Ca_L_Na_ds;
525 double var_intracellular_sodium_concentration__i_NaK = var_sodium_potassium_pump__i_NaK;
526 double var_intracellular_sodium_concentration__i_NaCa_cyt = var_sodium_calcium_exchanger__i_NaCa_cyt;
527 double var_intracellular_potassium_concentration__V_i = var_intracellular_calcium_concentration__V_i;
528 double var_intracellular_potassium_concentration__i_K1 = var_time_independent_potassium_current__i_K1;
529 double var_intracellular_potassium_concentration__i_Kr = var_rapid_delayed_rectifier_potassium_current__i_Kr;
530 double var_intracellular_potassium_concentration__i_Ks = var_slow_delayed_rectifier_potassium_current__i_Ks;
531 double var_intracellular_potassium_concentration__i_Ca_L_K_cyt = var_L_type_Ca_channel__i_Ca_L_K_cyt;
532 double var_intracellular_potassium_concentration__i_Ca_L_K_ds = var_L_type_Ca_channel__i_Ca_L_K_ds;
533 double var_intracellular_potassium_concentration__i_to = var_transient_outward_current__i_to;
534 double var_intracellular_potassium_concentration__i_NaK = var_sodium_potassium_pump__i_NaK;
535 double var_intracellular_potassium_concentration__F = var_membrane__F;
536 const double var_intracellular_calcium_concentration__Calmod = 0.02;
537 const double var_intracellular_calcium_concentration__Trop = 0.05;
538 const double var_intracellular_calcium_concentration__alpha_Calmod = 100000.0;
539 const double var_intracellular_calcium_concentration__beta_Calmod = 50.0;
540 const double var_intracellular_calcium_concentration__alpha_Trop = 100000.0;
541 const double var_intracellular_calcium_concentration__beta_Trop = 200.0;
542 const double var_intracellular_calcium_concentration__V_ds_ratio = 0.1;
543 const double var_intracellular_calcium_concentration__Kdecay = 10.0;
544 double var_intracellular_calcium_concentration__i_up = var_sarcoplasmic_reticulum_calcium_pump__i_up;
545 double var_intracellular_calcium_concentration__i_trans = var_calcium_translocation__i_trans;
546 double var_intracellular_calcium_concentration__i_rel = var_calcium_release__i_rel;
547 double var_intracellular_calcium_concentration__i_NaCa_cyt = var_sodium_calcium_exchanger__i_NaCa_cyt;
548 double var_intracellular_calcium_concentration__i_NaCa_ds = var_sodium_calcium_exchanger__i_NaCa_ds;
549 double var_intracellular_calcium_concentration__i_Ca_L_Ca_cyt = var_L_type_Ca_channel__i_Ca_L_Ca_cyt;
550 double var_intracellular_calcium_concentration__i_Ca_L_Ca_ds = var_L_type_Ca_channel__i_Ca_L_Ca_ds;
551 double var_intracellular_calcium_concentration__i_b_Ca = var_calcium_background_current__i_b_Ca;
552 double var_intracellular_calcium_concentration__F = var_membrane__F;
553
555 // new part of the model
557 const double g_sac = 0.035; // uS
558 const double E_sac = -10; // mV
559 double f = (mStretch > 0) ? (mStretch-1.0)/0.15 : 0.0; // f = 0 if stretch < 1, scales linearly to f=1 at 15% stretch
560 double sac_ionic_current = g_sac * f * (var_membrane__V - E_sac); // if g is uS, this is nA
561
562 double d_dt_membrane__V;
564 {
565 d_dt_membrane__V = 0.0;
566 }
567 else
568 {
569 d_dt_membrane__V = ((-1.0) / var_membrane__Cm) * (sac_ionic_current + var_membrane__i_Stim + var_membrane__i_K1 + var_membrane__i_to + var_membrane__i_Kr + var_membrane__i_Ks + var_membrane__i_NaK + var_membrane__i_Na + var_membrane__i_b_Na + var_membrane__i_p_Na + var_membrane__i_Ca_L_Na_cyt + var_membrane__i_Ca_L_Na_ds + var_membrane__i_NaCa_cyt + var_membrane__i_NaCa_ds + var_membrane__i_Ca_L_Ca_cyt + var_membrane__i_Ca_L_Ca_ds + var_membrane__i_Ca_L_K_cyt + var_membrane__i_Ca_L_K_ds + var_membrane__i_b_Ca);
570 }
571 double d_dt_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = (var_rapid_delayed_rectifier_potassium_current_xr1_gate__alpha_xr1 * (1.0 - var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1)) - (var_rapid_delayed_rectifier_potassium_current_xr1_gate__beta_xr1 * var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1);
572 double d_dt_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = (var_rapid_delayed_rectifier_potassium_current_xr2_gate__alpha_xr2 * (1.0 - var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2)) - (var_rapid_delayed_rectifier_potassium_current_xr2_gate__beta_xr2 * var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2);
573 double d_dt_slow_delayed_rectifier_potassium_current_xs_gate__xs = (var_slow_delayed_rectifier_potassium_current_xs_gate__alpha_xs * (1.0 - var_slow_delayed_rectifier_potassium_current_xs_gate__xs)) - (var_slow_delayed_rectifier_potassium_current_xs_gate__beta_xs * var_slow_delayed_rectifier_potassium_current_xs_gate__xs);
574 double d_dt_fast_sodium_current_m_gate__m = (var_fast_sodium_current_m_gate__alpha_m * (1.0 - var_fast_sodium_current_m_gate__m)) - (var_fast_sodium_current_m_gate__beta_m * var_fast_sodium_current_m_gate__m);
575 double d_dt_fast_sodium_current_h_gate__h = (var_fast_sodium_current_h_gate__alpha_h * (1.0 - var_fast_sodium_current_h_gate__h)) - (var_fast_sodium_current_h_gate__beta_h * var_fast_sodium_current_h_gate__h);
576 double d_dt_L_type_Ca_channel_d_gate__d = var_L_type_Ca_channel_d_gate__speed_d * ((var_L_type_Ca_channel_d_gate__alpha_d * (1.0 - var_L_type_Ca_channel_d_gate__d)) - (var_L_type_Ca_channel_d_gate__beta_d * var_L_type_Ca_channel_d_gate__d));
577 double d_dt_L_type_Ca_channel_f_gate__f = var_L_type_Ca_channel_f_gate__speed_f * ((var_L_type_Ca_channel_f_gate__alpha_f * (1.0 - var_L_type_Ca_channel_f_gate__f)) - (var_L_type_Ca_channel_f_gate__beta_f * var_L_type_Ca_channel_f_gate__f));
578 double d_dt_L_type_Ca_channel_f2_gate__f2 = 1.0 - (1.0 * ((var_L_type_Ca_channel_f2_gate__Ca_i / (var_L_type_Ca_channel_f2_gate__Km_f2 + var_L_type_Ca_channel_f2_gate__Ca_i)) + var_L_type_Ca_channel_f2_gate__f2));
579 double d_dt_L_type_Ca_channel_f2ds_gate__f2ds = var_L_type_Ca_channel_f2ds_gate__R_decay * (1.0 - ((var_L_type_Ca_channel_f2ds_gate__Ca_ds / (var_L_type_Ca_channel_f2ds_gate__Km_f2ds + var_L_type_Ca_channel_f2ds_gate__Ca_ds)) + var_L_type_Ca_channel_f2ds_gate__f2ds));
580 double d_dt_transient_outward_current_s_gate__s = (var_transient_outward_current_s_gate__alpha_s * (1.0 - var_transient_outward_current_s_gate__s)) - (var_transient_outward_current_s_gate__beta_s * var_transient_outward_current_s_gate__s);
581 double d_dt_transient_outward_current_r_gate__r = 333.0 * ((1.0 / (1.0 + exp((-(var_transient_outward_current_r_gate__V + 4.0)) / 5.0))) - var_transient_outward_current_r_gate__r);
582 double d_dt_calcium_release__ActFrac = (var_calcium_release__PrecFrac * var_calcium_release__SpeedRel * var_calcium_release__ActRate) - (var_calcium_release__ActFrac * var_calcium_release__SpeedRel * var_calcium_release__InactRate);
583 double d_dt_calcium_release__ProdFrac = (var_calcium_release__ActFrac * var_calcium_release__SpeedRel * var_calcium_release__InactRate) - (var_calcium_release__SpeedRel * 1.0 * var_calcium_release__ProdFrac);
584 double d_dt_intracellular_sodium_concentration__Na_i = ((-1.0) / (1.0 * var_intracellular_sodium_concentration__V_i * var_intracellular_sodium_concentration__F)) * (var_intracellular_sodium_concentration__i_Na + var_intracellular_sodium_concentration__i_p_Na + var_intracellular_sodium_concentration__i_b_Na + (3.0 * var_intracellular_sodium_concentration__i_NaK) + (3.0 * var_intracellular_sodium_concentration__i_NaCa_cyt) + var_intracellular_sodium_concentration__i_Ca_L_Na_cyt + var_intracellular_sodium_concentration__i_Ca_L_Na_ds);
585 double d_dt_intracellular_potassium_concentration__K_i = ((-1.0) / (1.0 * var_intracellular_potassium_concentration__V_i * var_intracellular_potassium_concentration__F)) * ((var_intracellular_potassium_concentration__i_K1 + var_intracellular_potassium_concentration__i_Kr + var_intracellular_potassium_concentration__i_Ks + var_intracellular_potassium_concentration__i_Ca_L_K_cyt + var_intracellular_potassium_concentration__i_Ca_L_K_ds + var_intracellular_potassium_concentration__i_to) - (2.0 * var_intracellular_potassium_concentration__i_NaK));
586 double d_dt_intracellular_calcium_concentration__Ca_Trop = (var_intracellular_calcium_concentration__alpha_Trop * var_intracellular_calcium_concentration__Ca_i * (var_intracellular_calcium_concentration__Trop - var_intracellular_calcium_concentration__Ca_Trop)) - (var_intracellular_calcium_concentration__beta_Trop * var_intracellular_calcium_concentration__Ca_Trop);
587 double d_dt_intracellular_calcium_concentration__Ca_Calmod = (var_intracellular_calcium_concentration__alpha_Calmod * var_intracellular_calcium_concentration__Ca_i * (var_intracellular_calcium_concentration__Calmod - var_intracellular_calcium_concentration__Ca_Calmod)) - (var_intracellular_calcium_concentration__beta_Calmod * var_intracellular_calcium_concentration__Ca_Calmod);
588 double d_dt_intracellular_calcium_concentration__Ca_i = ((((((-1.0) / (2.0 * 1.0 * var_intracellular_calcium_concentration__V_i * var_intracellular_calcium_concentration__F)) * (((var_intracellular_calcium_concentration__i_Ca_L_Ca_cyt + var_intracellular_calcium_concentration__i_b_Ca) - (2.0 * var_intracellular_calcium_concentration__i_NaCa_cyt)) - (2.0 * var_intracellular_calcium_concentration__i_NaCa_ds))) + (var_intracellular_calcium_concentration__Ca_ds * var_intracellular_calcium_concentration__V_ds_ratio * var_intracellular_calcium_concentration__Kdecay) + ((var_intracellular_calcium_concentration__i_rel * var_intracellular_calcium_concentration__V_rel_ratio) / var_intracellular_calcium_concentration__V_i_ratio)) - d_dt_intracellular_calcium_concentration__Ca_Calmod) - d_dt_intracellular_calcium_concentration__Ca_Trop) - var_intracellular_calcium_concentration__i_up;
589 double d_dt_intracellular_calcium_concentration__Ca_ds = (((-1.0) * var_intracellular_calcium_concentration__i_Ca_L_Ca_ds) / (2.0 * 1.0 * var_intracellular_calcium_concentration__V_ds_ratio * var_intracellular_calcium_concentration__V_i * var_intracellular_calcium_concentration__F)) - (var_intracellular_calcium_concentration__Ca_ds * var_intracellular_calcium_concentration__Kdecay);
590 double d_dt_intracellular_calcium_concentration__Ca_up = ((var_intracellular_calcium_concentration__V_i_ratio / var_intracellular_calcium_concentration__V_up_ratio) * var_intracellular_calcium_concentration__i_up) - var_intracellular_calcium_concentration__i_trans;
591 double d_dt_intracellular_calcium_concentration__Ca_rel = ((var_intracellular_calcium_concentration__V_up_ratio / var_intracellular_calcium_concentration__V_rel_ratio) * var_intracellular_calcium_concentration__i_trans) - var_intracellular_calcium_concentration__i_rel;
592
593 rDY[0] = 0.001*d_dt_membrane__V;
594 rDY[1] = 0.001*d_dt_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1;
595 rDY[2] = 0.001*d_dt_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2;
596 rDY[3] = 0.001*d_dt_slow_delayed_rectifier_potassium_current_xs_gate__xs;
597 rDY[4] = 0.001*d_dt_fast_sodium_current_m_gate__m;
598 rDY[5] = 0.001*d_dt_fast_sodium_current_h_gate__h;
599 rDY[6] = 0.001*d_dt_L_type_Ca_channel_d_gate__d;
600 rDY[7] = 0.001*d_dt_L_type_Ca_channel_f_gate__f;
601 rDY[8] = 0.001*d_dt_L_type_Ca_channel_f2_gate__f2;
602 rDY[9] = 0.001*d_dt_L_type_Ca_channel_f2ds_gate__f2ds;
603 rDY[10] = 0.001*d_dt_transient_outward_current_s_gate__s;
604 rDY[11] = 0.001*d_dt_transient_outward_current_r_gate__r;
605 rDY[12] = 0.001*d_dt_calcium_release__ActFrac;
606 rDY[13] = 0.001*d_dt_calcium_release__ProdFrac;
607 rDY[14] = 0.001*d_dt_intracellular_sodium_concentration__Na_i;
608 rDY[15] = 0.001*d_dt_intracellular_potassium_concentration__K_i;
609 rDY[16] = 0.001*d_dt_intracellular_calcium_concentration__Ca_i;
610 rDY[17] = 0.001*d_dt_intracellular_calcium_concentration__Ca_ds;
611 rDY[18] = 0.001*d_dt_intracellular_calcium_concentration__Ca_up;
612 rDY[19] = 0.001*d_dt_intracellular_calcium_concentration__Ca_rel;
613 rDY[20] = 0.001*d_dt_intracellular_calcium_concentration__Ca_Calmod;
614 rDY[21] = 0.001*d_dt_intracellular_calcium_concentration__Ca_Trop;
615}
616
617
618template<>
620{
621 // Time units: second
622 //
623 this->mVariableNames.push_back("V");
624 this->mVariableUnits.push_back("millivolt");
625 this->mInitialConditions.push_back(-92.849333);
626
627 this->mVariableNames.push_back("xr1");
628 this->mVariableUnits.push_back("dimensionless");
629 this->mInitialConditions.push_back(1.03e-5);
630
631 this->mVariableNames.push_back("xr2");
632 this->mVariableUnits.push_back("dimensionless");
633 this->mInitialConditions.push_back(2e-7);
634
635 this->mVariableNames.push_back("xs");
636 this->mVariableUnits.push_back("dimensionless");
637 this->mInitialConditions.push_back(0.001302);
638
639 this->mVariableNames.push_back("m");
640 this->mVariableUnits.push_back("dimensionless");
641 this->mInitialConditions.push_back(0.0016203);
642
643 this->mVariableNames.push_back("h");
644 this->mVariableUnits.push_back("dimensionless");
645 this->mInitialConditions.push_back(0.9944036);
646
647 this->mVariableNames.push_back("d");
648 this->mVariableUnits.push_back("dimensionless");
649 this->mInitialConditions.push_back(0);
650
651 this->mVariableNames.push_back("f");
652 this->mVariableUnits.push_back("dimensionless");
653 this->mInitialConditions.push_back(1);
654
655 this->mVariableNames.push_back("f2");
656 this->mVariableUnits.push_back("dimensionless");
657 this->mInitialConditions.push_back(0.9349197);
658
659 this->mVariableNames.push_back("f2ds");
660 this->mVariableUnits.push_back("dimensionless");
661 this->mInitialConditions.push_back(0.9651958);
662
663 this->mVariableNames.push_back("s");
664 this->mVariableUnits.push_back("dimensionless");
665 this->mInitialConditions.push_back(0.9948645);
666
667 this->mVariableNames.push_back("r");
668 this->mVariableUnits.push_back("dimensionless");
669 this->mInitialConditions.push_back(0);
670
671 this->mVariableNames.push_back("ActFrac");
672 this->mVariableUnits.push_back("dimensionless");
673 this->mInitialConditions.push_back(0.0042614);
674
675 this->mVariableNames.push_back("ProdFrac");
676 this->mVariableUnits.push_back("dimensionless");
677 this->mInitialConditions.push_back(0.4068154);
678
679 this->mVariableNames.push_back("Na_i");
680 this->mVariableUnits.push_back("millimolar");
681 this->mInitialConditions.push_back(7.3321223);
682
683 this->mVariableNames.push_back("K_i");
684 this->mVariableUnits.push_back("millimolar");
685 this->mInitialConditions.push_back(136.5644281);
686
687 this->mVariableNames.push_back("Ca_i");
688 this->mVariableUnits.push_back("millimolar");
689 this->mInitialConditions.push_back(1.4e-5);
690
691 this->mVariableNames.push_back("Ca_ds");
692 this->mVariableUnits.push_back("millimolar");
693 this->mInitialConditions.push_back(1.88e-5);
694
695 this->mVariableNames.push_back("Ca_up");
696 this->mVariableUnits.push_back("millimolar");
697 this->mInitialConditions.push_back(0.4531889);
698
699 this->mVariableNames.push_back("Ca_rel");
700 this->mVariableUnits.push_back("millimolar");
701 this->mInitialConditions.push_back(0.4481927);
702
703 this->mVariableNames.push_back("Ca_Calmod");
704 this->mVariableUnits.push_back("millimolar");
705 this->mInitialConditions.push_back(0.0005555);
706
707 this->mVariableNames.push_back("Ca_Trop");
708 this->mVariableUnits.push_back("millimolar");
709 this->mInitialConditions.push_back(0.0003542);
710
711 this->mInitialised = true;
712}
713
714// Serialization for Boost>=1.36
#define CHASTE_CLASS_EXPORT(T)
boost::shared_ptr< AbstractOdeSystemInformation > mpSystemInfo
CML_noble_varghese_kohl_noble_1998_basic_with_sac(boost::shared_ptr< AbstractIvpOdeSolver > pSolver, boost::shared_ptr< AbstractStimulusFunction > pIntracellularStimulus)
double GetIIonic(const std::vector< double > *pStateVariables=NULL)
void EvaluateYDerivatives(double var_environment__time, const std::vector< double > &rY, std::vector< double > &rDY)
double GetCapacitance() const
static HeartConfig * Instance()
static boost::shared_ptr< OdeSystemInformation< ODE_SYSTEM > > Instance()