NobleVargheseKohlNoble1998WithSac.cpp

00001 /*
00002 
00003 Copyright (C) University of Oxford, 2005-2011
00004 
00005 University of Oxford means the Chancellor, Masters and Scholars of the
00006 University of Oxford, having an administrative office at Wellington
00007 Square, Oxford OX1 2JD, UK.
00008 
00009 This file is part of Chaste.
00010 
00011 Chaste is free software: you can redistribute it and/or modify it
00012 under the terms of the GNU Lesser General Public License as published
00013 by the Free Software Foundation, either version 2.1 of the License, or
00014 (at your option) any later version.
00015 
00016 Chaste is distributed in the hope that it will be useful, but WITHOUT
00017 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
00019 License for more details. The offer of Chaste under the terms of the
00020 License is subject to the License being interpreted in accordance with
00021 English Law and subject to any action against the University of Oxford
00022 being under the jurisdiction of the English Courts.
00023 
00024 You should have received a copy of the GNU Lesser General Public License
00025 along with Chaste. If not, see <http://www.gnu.org/licenses/>.
00026 
00027 */
00028 
00029 #include "NobleVargheseKohlNoble1998WithSac.hpp"
00030 #include "HeartConfig.hpp"
00031 
00032 CML_noble_varghese_kohl_noble_1998_basic_with_sac::CML_noble_varghese_kohl_noble_1998_basic_with_sac(
00033         boost::shared_ptr<AbstractIvpOdeSolver> pSolver,
00034         boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus)
00035     : AbstractCardiacCell(pSolver, 22, 0, pIntracellularStimulus)
00036 {
00037     mStretch = 1.0;
00038 
00039     mpSystemInfo = OdeSystemInformation<CML_noble_varghese_kohl_noble_1998_basic_with_sac>::Instance();
00040 
00041     Init();
00042 
00043 }
00044 
00045 CML_noble_varghese_kohl_noble_1998_basic_with_sac::~CML_noble_varghese_kohl_noble_1998_basic_with_sac(void)
00046 {
00047 }
00048 
00049 double CML_noble_varghese_kohl_noble_1998_basic_with_sac::GetIIonic(const std::vector<double>* pStateVariables)
00050 {
00051     if (!pStateVariables) pStateVariables = &rGetStateVariables();
00052     const std::vector<double>& rY = *pStateVariables;
00053     double var_membrane__V = rY[0];
00054     // Units: millivolt; Initial value: -92.849333
00055     double var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = rY[1];
00056     // Units: dimensionless; Initial value: 1.03e-5
00057     double var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = rY[2];
00058     // Units: dimensionless; Initial value: 2e-7
00059     double var_slow_delayed_rectifier_potassium_current_xs_gate__xs = rY[3];
00060     // Units: dimensionless; Initial value: 0.001302
00061     double var_fast_sodium_current_m_gate__m = rY[4];
00062     // Units: dimensionless; Initial value: 0.0016203
00063     double var_fast_sodium_current_h_gate__h = rY[5];
00064     // Units: dimensionless; Initial value: 0.9944036
00065     double var_L_type_Ca_channel_d_gate__d = rY[6];
00066     // Units: dimensionless; Initial value: 0
00067     double var_L_type_Ca_channel_f_gate__f = rY[7];
00068     // Units: dimensionless; Initial value: 1
00069     double var_L_type_Ca_channel_f2_gate__f2 = rY[8];
00070     // Units: dimensionless; Initial value: 0.9349197
00071     double var_L_type_Ca_channel_f2ds_gate__f2ds = rY[9];
00072     // Units: dimensionless; Initial value: 0.9651958
00073     double var_transient_outward_current_s_gate__s = rY[10];
00074     // Units: dimensionless; Initial value: 0.9948645
00075     double var_transient_outward_current_r_gate__r = rY[11];
00076     // Units: dimensionless; Initial value: 0
00077     double var_intracellular_sodium_concentration__Na_i = rY[14];
00078     // Units: millimolar; Initial value: 7.3321223
00079     double var_intracellular_potassium_concentration__K_i = rY[15];
00080     // Units: millimolar; Initial value: 136.5644281
00081     double var_intracellular_calcium_concentration__Ca_i = rY[16];
00082     // Units: millimolar; Initial value: 1.4e-5
00083     double var_intracellular_calcium_concentration__Ca_ds = rY[17];
00084     // Units: millimolar; Initial value: 1.88e-5
00085 
00086     const double var_membrane__R = 8314.472;
00087     const double var_membrane__T = 310.0;
00088     const double var_membrane__F = 96485.3415;
00089     double var_reversal_potentials__K_i = var_intracellular_potassium_concentration__K_i;
00090     double var_reversal_potentials__R = var_membrane__R;
00091     double var_reversal_potentials__T = var_membrane__T;
00092     double var_reversal_potentials__F = var_membrane__F;
00093     const double var_extracellular_potassium_concentration__K_o = 4.0;
00094     double var_reversal_potentials__K_o = var_extracellular_potassium_concentration__K_o;
00095     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);
00096     double var_time_independent_potassium_current__E_K = var_reversal_potentials__E_K;
00097     double var_time_independent_potassium_current__K_o = var_extracellular_potassium_concentration__K_o;
00098     double var_time_independent_potassium_current__R = var_membrane__R;
00099     double var_time_independent_potassium_current__V = var_membrane__V;
00100     double var_time_independent_potassium_current__T = var_membrane__T;
00101     const double var_time_independent_potassium_current__K_mk1 = 10.0;
00102     const double var_time_independent_potassium_current__g_K1 = 0.5;
00103     double var_time_independent_potassium_current__F = var_membrane__F;
00104     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)));
00105     double var_membrane__i_K1 = var_time_independent_potassium_current__i_K1;
00106     double var_transient_outward_current__s = var_transient_outward_current_s_gate__s;
00107     double var_transient_outward_current__r = var_transient_outward_current_r_gate__r;
00108     const double var_transient_outward_current__g_to = 0.005;
00109     double var_transient_outward_current__V = var_membrane__V;
00110     double var_transient_outward_current__E_K = var_reversal_potentials__E_K;
00111     const double var_transient_outward_current__g_tos = 0.0;
00112     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);
00113     double var_membrane__i_to = var_transient_outward_current__i_to;
00114     const double var_rapid_delayed_rectifier_potassium_current__g_Kr2 = 0.0013;
00115     const double var_rapid_delayed_rectifier_potassium_current__g_Kr1 = 0.0021;
00116     double var_rapid_delayed_rectifier_potassium_current__xr1 = var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1;
00117     double var_rapid_delayed_rectifier_potassium_current__xr2 = var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2;
00118     double var_rapid_delayed_rectifier_potassium_current__V = var_membrane__V;
00119     double var_rapid_delayed_rectifier_potassium_current__E_K = var_reversal_potentials__E_K;
00120     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);
00121     double var_membrane__i_Kr = var_rapid_delayed_rectifier_potassium_current__i_Kr;
00122     double var_slow_delayed_rectifier_potassium_current__xs = var_slow_delayed_rectifier_potassium_current_xs_gate__xs;
00123     const double var_extracellular_sodium_concentration__Na_o = 140.0;
00124     double var_reversal_potentials__Na_o = var_extracellular_sodium_concentration__Na_o;
00125     double var_reversal_potentials__Na_i = var_intracellular_sodium_concentration__Na_i;
00126     const double var_reversal_potentials__P_kna = 0.03;
00127     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)));
00128     double var_slow_delayed_rectifier_potassium_current__E_Ks = var_reversal_potentials__E_Ks;
00129     const double var_slow_delayed_rectifier_potassium_current__g_Ks = 0.0026;
00130     double var_slow_delayed_rectifier_potassium_current__V = var_membrane__V;
00131     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);
00132     double var_membrane__i_Ks = var_slow_delayed_rectifier_potassium_current__i_Ks;
00133     double var_L_type_Ca_channel__d = var_L_type_Ca_channel_d_gate__d;
00134     const double var_L_type_Ca_channel__FrICa = 1.0;
00135     double var_L_type_Ca_channel__f = var_L_type_Ca_channel_f_gate__f;
00136     double var_L_type_Ca_channel__K_o = var_extracellular_potassium_concentration__K_o;
00137     double var_L_type_Ca_channel__K_i = var_intracellular_potassium_concentration__K_i;
00138     double var_L_type_Ca_channel__F = var_membrane__F;
00139     const double var_L_type_Ca_channel__P_Ca_L = 0.1;
00140     double var_L_type_Ca_channel__T = var_membrane__T;
00141     const double var_L_type_Ca_channel__P_CaK = 0.002;
00142     double var_L_type_Ca_channel__V = var_membrane__V;
00143     double var_L_type_Ca_channel__f2 = var_L_type_Ca_channel_f2_gate__f2;
00144     double var_L_type_Ca_channel__R = var_membrane__R;
00145     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))));
00146     double var_membrane__i_Ca_L_K_cyt = var_L_type_Ca_channel__i_Ca_L_K_cyt;
00147     double var_L_type_Ca_channel__f2ds = var_L_type_Ca_channel_f2ds_gate__f2ds;
00148     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))));
00149     double var_membrane__i_Ca_L_K_ds = var_L_type_Ca_channel__i_Ca_L_K_ds;
00150     const double var_sodium_potassium_pump__i_NaK_max = 0.7;
00151     double var_sodium_potassium_pump__Na_i = var_intracellular_sodium_concentration__Na_i;
00152     double var_sodium_potassium_pump__K_o = var_extracellular_potassium_concentration__K_o;
00153     const double var_sodium_potassium_pump__K_mNa = 40.0;
00154     const double var_sodium_potassium_pump__K_mK = 1.0;
00155     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);
00156     double var_membrane__i_NaK = var_sodium_potassium_pump__i_NaK;
00157     const double var_fast_sodium_current__g_Na = 2.5;
00158     double var_fast_sodium_current__h = var_fast_sodium_current_h_gate__h;
00159     double var_fast_sodium_current__V = var_membrane__V;
00160     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)));
00161     double var_fast_sodium_current__E_mh = var_reversal_potentials__E_mh;
00162     double var_fast_sodium_current__m = var_fast_sodium_current_m_gate__m;
00163     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);
00164     double var_membrane__i_Na = var_fast_sodium_current__i_Na;
00165     double var_sodium_background_current__V = var_membrane__V;
00166     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);
00167     double var_sodium_background_current__E_Na = var_reversal_potentials__E_Na;
00168     const double var_sodium_background_current__g_bna = 0.0006;
00169     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);
00170     double var_membrane__i_b_Na = var_sodium_background_current__i_b_Na;
00171     const double var_persistent_sodium_current__g_pna = 0.004;
00172     double var_persistent_sodium_current__V = var_membrane__V;
00173     double var_persistent_sodium_current__E_Na = var_reversal_potentials__E_Na;
00174     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);
00175     double var_membrane__i_p_Na = var_persistent_sodium_current__i_p_Na;
00176     const double var_L_type_Ca_channel__P_CaNa = 0.01;
00177     double var_L_type_Ca_channel__Na_o = var_extracellular_sodium_concentration__Na_o;
00178     double var_L_type_Ca_channel__Na_i = var_intracellular_sodium_concentration__Na_i;
00179     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))));
00180     double var_membrane__i_Ca_L_Na_cyt = var_L_type_Ca_channel__i_Ca_L_Na_cyt;
00181     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))));
00182     double var_membrane__i_Ca_L_Na_ds = var_L_type_Ca_channel__i_Ca_L_Na_ds;
00183     double var_sodium_calcium_exchanger__Na_i = var_intracellular_sodium_concentration__Na_i;
00184     const double var_sodium_calcium_exchanger__n_NaCa = 3.0;
00185     const double var_sodium_calcium_exchanger__gamma = 0.5;
00186     double var_sodium_calcium_exchanger__F = var_membrane__F;
00187     double var_sodium_calcium_exchanger__Na_o = var_extracellular_sodium_concentration__Na_o;
00188     const double var_sodium_calcium_exchanger__FRiNaCa = 0.001;
00189     double var_sodium_calcium_exchanger__R = var_membrane__R;
00190     double var_sodium_calcium_exchanger__Ca_i = var_intracellular_calcium_concentration__Ca_i;
00191     double var_sodium_calcium_exchanger__T = var_membrane__T;
00192     double var_sodium_calcium_exchanger__V = var_membrane__V;
00193     const double var_sodium_calcium_exchanger__d_NaCa = 0.0;
00194     const double var_extracellular_calcium_concentration__Ca_o = 2.0;
00195     double var_sodium_calcium_exchanger__Ca_o = var_extracellular_calcium_concentration__Ca_o;
00196     const double var_sodium_calcium_exchanger__k_NaCa = 0.0005;
00197     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)));
00198     double var_membrane__i_NaCa_cyt = var_sodium_calcium_exchanger__i_NaCa_cyt;
00199     double var_sodium_calcium_exchanger__Ca_ds = var_intracellular_calcium_concentration__Ca_ds;
00200     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)));
00201     double var_membrane__i_NaCa_ds = var_sodium_calcium_exchanger__i_NaCa_ds;
00202     double var_L_type_Ca_channel__Ca_i = var_intracellular_calcium_concentration__Ca_i;
00203     double var_L_type_Ca_channel__Ca_o = var_extracellular_calcium_concentration__Ca_o;
00204     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))));
00205     double var_membrane__i_Ca_L_Ca_cyt = var_L_type_Ca_channel__i_Ca_L_Ca_cyt;
00206     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))));
00207     double var_membrane__i_Ca_L_Ca_ds = var_L_type_Ca_channel__i_Ca_L_Ca_ds;
00208     double var_reversal_potentials__Ca_o = var_extracellular_calcium_concentration__Ca_o;
00209     double var_reversal_potentials__Ca_i = var_intracellular_calcium_concentration__Ca_i;
00210     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);
00211     double var_calcium_background_current__E_Ca = var_reversal_potentials__E_Ca;
00212     const double var_calcium_background_current__g_bca = 0.00025;
00213     double var_calcium_background_current__V = var_membrane__V;
00214     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);
00215     double var_membrane__i_b_Ca = var_calcium_background_current__i_b_Ca;
00216 
00218     // new part of the model - addition of a Stretch-activated channel
00220     const double g_sac = 0.035; // uS
00221     const double E_sac = -10; // mV
00222     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
00223     double sac_ionic_current = g_sac * f * (var_membrane__V - E_sac); // if g is uS, this is nA
00224 
00225     /*
00226      * The return value has to be scaled to match the units required by the mono/bidomain equations.
00227      * The cell model ionic current is in nano Amps, we require micro Amps/cm^2.
00228      * 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.
00229      * The Cm in the bidomain equation is expressed in capacitance units per area.
00230      * An estimate of the cell area is then the ratio of the two values of Cm.
00231      *
00232      */
00233     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;
00234 
00235 //    std::cout << value_in_nA << " " << sac_ionic_current << "\n";
00236     value_in_nA += sac_ionic_current;
00237 
00238     double value_in_microA = 0.001*value_in_nA;
00239     double estimated_cell_surface_in_cm_square = 9.5e-05 / HeartConfig::Instance()->GetCapacitance();
00240     double value_in_microA_per_cm_square = value_in_microA/estimated_cell_surface_in_cm_square;
00241     return value_in_microA_per_cm_square;
00242 }
00243 
00244 void CML_noble_varghese_kohl_noble_1998_basic_with_sac::EvaluateYDerivatives (
00245         double var_environment__time,
00246         const std::vector<double> &rY,
00247         std::vector<double> &rDY)
00248 {
00249     // Inputs:
00250     // Time units: second
00251     var_environment__time *= 0.001;
00252     double var_membrane__V = rY[0];
00253     // Units: millivolt; Initial value: -92.849333
00254     double var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = rY[1];
00255     // Units: dimensionless; Initial value: 1.03e-5
00256     double var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = rY[2];
00257     // Units: dimensionless; Initial value: 2e-7
00258     double var_slow_delayed_rectifier_potassium_current_xs_gate__xs = rY[3];
00259     // Units: dimensionless; Initial value: 0.001302
00260     double var_fast_sodium_current_m_gate__m = rY[4];
00261     // Units: dimensionless; Initial value: 0.0016203
00262     double var_fast_sodium_current_h_gate__h = rY[5];
00263     // Units: dimensionless; Initial value: 0.9944036
00264     double var_L_type_Ca_channel_d_gate__d = rY[6];
00265     // Units: dimensionless; Initial value: 0
00266     double var_L_type_Ca_channel_f_gate__f = rY[7];
00267     // Units: dimensionless; Initial value: 1
00268     double var_L_type_Ca_channel_f2_gate__f2 = rY[8];
00269     // Units: dimensionless; Initial value: 0.9349197
00270     double var_L_type_Ca_channel_f2ds_gate__f2ds = rY[9];
00271     // Units: dimensionless; Initial value: 0.9651958
00272     double var_transient_outward_current_s_gate__s = rY[10];
00273     // Units: dimensionless; Initial value: 0.9948645
00274     double var_transient_outward_current_r_gate__r = rY[11];
00275     // Units: dimensionless; Initial value: 0
00276     double var_calcium_release__ActFrac = rY[12];
00277     // Units: dimensionless; Initial value: 0.0042614
00278     double var_calcium_release__ProdFrac = rY[13];
00279     // Units: dimensionless; Initial value: 0.4068154
00280     double var_intracellular_sodium_concentration__Na_i = rY[14];
00281     // Units: millimolar; Initial value: 7.3321223
00282     double var_intracellular_potassium_concentration__K_i = rY[15];
00283     // Units: millimolar; Initial value: 136.5644281
00284     double var_intracellular_calcium_concentration__Ca_i = rY[16];
00285     // Units: millimolar; Initial value: 1.4e-5
00286     double var_intracellular_calcium_concentration__Ca_ds = rY[17];
00287     // Units: millimolar; Initial value: 1.88e-5
00288     double var_intracellular_calcium_concentration__Ca_up = rY[18];
00289     // Units: millimolar; Initial value: 0.4531889
00290     double var_intracellular_calcium_concentration__Ca_rel = rY[19];
00291     // Units: millimolar; Initial value: 0.4481927
00292     double var_intracellular_calcium_concentration__Ca_Calmod = rY[20];
00293     // Units: millimolar; Initial value: 0.0005555
00294     double var_intracellular_calcium_concentration__Ca_Trop = rY[21];
00295     // Units: millimolar; Initial value: 0.0003542
00296 
00297 
00298     // Mathematics
00299     const double var_membrane__R = 8314.472;
00300     const double var_membrane__T = 310.0;
00301     const double var_membrane__F = 96485.3415;
00302     const double var_membrane__Cm = 9.5e-05;
00303     double var_reversal_potentials__K_i = var_intracellular_potassium_concentration__K_i;
00304     double var_reversal_potentials__R = var_membrane__R;
00305     double var_reversal_potentials__T = var_membrane__T;
00306     double var_reversal_potentials__F = var_membrane__F;
00307     const double var_extracellular_potassium_concentration__K_o = 4.0;
00308     double var_reversal_potentials__K_o = var_extracellular_potassium_concentration__K_o;
00309     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);
00310     double var_time_independent_potassium_current__E_K = var_reversal_potentials__E_K;
00311     double var_time_independent_potassium_current__K_o = var_extracellular_potassium_concentration__K_o;
00312     double var_time_independent_potassium_current__R = var_membrane__R;
00313     double var_time_independent_potassium_current__V = var_membrane__V;
00314     double var_time_independent_potassium_current__T = var_membrane__T;
00315     const double var_time_independent_potassium_current__K_mk1 = 10.0;
00316     const double var_time_independent_potassium_current__g_K1 = 0.5;
00317     double var_time_independent_potassium_current__F = var_membrane__F;
00318     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)));
00319     double var_membrane__i_K1 = var_time_independent_potassium_current__i_K1;
00320     double var_transient_outward_current__s = var_transient_outward_current_s_gate__s;
00321     double var_transient_outward_current__r = var_transient_outward_current_r_gate__r;
00322     const double var_transient_outward_current__g_to = 0.005;
00323     double var_transient_outward_current__V = var_membrane__V;
00324     double var_transient_outward_current__E_K = var_reversal_potentials__E_K;
00325     const double var_transient_outward_current__g_tos = 0.0;
00326     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);
00327     double var_membrane__i_to = var_transient_outward_current__i_to;
00328     const double var_rapid_delayed_rectifier_potassium_current__g_Kr2 = 0.0013;
00329     const double var_rapid_delayed_rectifier_potassium_current__g_Kr1 = 0.0021;
00330     double var_rapid_delayed_rectifier_potassium_current__xr1 = var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1;
00331     double var_rapid_delayed_rectifier_potassium_current__xr2 = var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2;
00332     double var_rapid_delayed_rectifier_potassium_current__V = var_membrane__V;
00333     double var_rapid_delayed_rectifier_potassium_current__E_K = var_reversal_potentials__E_K;
00334     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);
00335     double var_membrane__i_Kr = var_rapid_delayed_rectifier_potassium_current__i_Kr;
00336     double var_slow_delayed_rectifier_potassium_current__xs = var_slow_delayed_rectifier_potassium_current_xs_gate__xs;
00337     const double var_extracellular_sodium_concentration__Na_o = 140.0;
00338     double var_reversal_potentials__Na_o = var_extracellular_sodium_concentration__Na_o;
00339     double var_reversal_potentials__Na_i = var_intracellular_sodium_concentration__Na_i;
00340     const double var_reversal_potentials__P_kna = 0.03;
00341     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)));
00342     double var_slow_delayed_rectifier_potassium_current__E_Ks = var_reversal_potentials__E_Ks;
00343     const double var_slow_delayed_rectifier_potassium_current__g_Ks = 0.0026;
00344     double var_slow_delayed_rectifier_potassium_current__V = var_membrane__V;
00345     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);
00346     double var_membrane__i_Ks = var_slow_delayed_rectifier_potassium_current__i_Ks;
00347     double var_L_type_Ca_channel__d = var_L_type_Ca_channel_d_gate__d;
00348     const double var_L_type_Ca_channel__FrICa = 1.0;
00349     double var_L_type_Ca_channel__f = var_L_type_Ca_channel_f_gate__f;
00350     double var_L_type_Ca_channel__K_o = var_extracellular_potassium_concentration__K_o;
00351     double var_L_type_Ca_channel__K_i = var_intracellular_potassium_concentration__K_i;
00352     double var_L_type_Ca_channel__F = var_membrane__F;
00353     const double var_L_type_Ca_channel__P_Ca_L = 0.1;
00354     double var_L_type_Ca_channel__T = var_membrane__T;
00355     const double var_L_type_Ca_channel__P_CaK = 0.002;
00356     double var_L_type_Ca_channel__V = var_membrane__V;
00357     double var_L_type_Ca_channel__f2 = var_L_type_Ca_channel_f2_gate__f2;
00358     double var_L_type_Ca_channel__R = var_membrane__R;
00359     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))));
00360     double var_membrane__i_Ca_L_K_cyt = var_L_type_Ca_channel__i_Ca_L_K_cyt;
00361     double var_L_type_Ca_channel__f2ds = var_L_type_Ca_channel_f2ds_gate__f2ds;
00362     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))));
00363     double var_membrane__i_Ca_L_K_ds = var_L_type_Ca_channel__i_Ca_L_K_ds;
00364     const double var_sodium_potassium_pump__i_NaK_max = 0.7;
00365     double var_sodium_potassium_pump__Na_i = var_intracellular_sodium_concentration__Na_i;
00366     double var_sodium_potassium_pump__K_o = var_extracellular_potassium_concentration__K_o;
00367     const double var_sodium_potassium_pump__K_mNa = 40.0;
00368     const double var_sodium_potassium_pump__K_mK = 1.0;
00369     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);
00370     double var_membrane__i_NaK = var_sodium_potassium_pump__i_NaK;
00371     const double var_fast_sodium_current__g_Na = 2.5;
00372     double var_fast_sodium_current__h = var_fast_sodium_current_h_gate__h;
00373     double var_fast_sodium_current__V = var_membrane__V;
00374     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)));
00375     double var_fast_sodium_current__E_mh = var_reversal_potentials__E_mh;
00376     double var_fast_sodium_current__m = var_fast_sodium_current_m_gate__m;
00377     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);
00378     double var_membrane__i_Na = var_fast_sodium_current__i_Na;
00379     double var_sodium_background_current__V = var_membrane__V;
00380     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);
00381     double var_sodium_background_current__E_Na = var_reversal_potentials__E_Na;
00382     const double var_sodium_background_current__g_bna = 0.0006;
00383     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);
00384     double var_membrane__i_b_Na = var_sodium_background_current__i_b_Na;
00385     const double var_persistent_sodium_current__g_pna = 0.004;
00386     double var_persistent_sodium_current__V = var_membrane__V;
00387     double var_persistent_sodium_current__E_Na = var_reversal_potentials__E_Na;
00388     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);
00389     double var_membrane__i_p_Na = var_persistent_sodium_current__i_p_Na;
00390     const double var_L_type_Ca_channel__P_CaNa = 0.01;
00391     double var_L_type_Ca_channel__Na_o = var_extracellular_sodium_concentration__Na_o;
00392     double var_L_type_Ca_channel__Na_i = var_intracellular_sodium_concentration__Na_i;
00393     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))));
00394     double var_membrane__i_Ca_L_Na_cyt = var_L_type_Ca_channel__i_Ca_L_Na_cyt;
00395     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))));
00396     double var_membrane__i_Ca_L_Na_ds = var_L_type_Ca_channel__i_Ca_L_Na_ds;
00397     double var_sodium_calcium_exchanger__Na_i = var_intracellular_sodium_concentration__Na_i;
00398     const double var_sodium_calcium_exchanger__n_NaCa = 3.0;
00399     const double var_sodium_calcium_exchanger__gamma = 0.5;
00400     double var_sodium_calcium_exchanger__F = var_membrane__F;
00401     double var_sodium_calcium_exchanger__Na_o = var_extracellular_sodium_concentration__Na_o;
00402     const double var_sodium_calcium_exchanger__FRiNaCa = 0.001;
00403     double var_sodium_calcium_exchanger__R = var_membrane__R;
00404     double var_sodium_calcium_exchanger__Ca_i = var_intracellular_calcium_concentration__Ca_i;
00405     double var_sodium_calcium_exchanger__T = var_membrane__T;
00406     double var_sodium_calcium_exchanger__V = var_membrane__V;
00407     const double var_sodium_calcium_exchanger__d_NaCa = 0.0;
00408     const double var_extracellular_calcium_concentration__Ca_o = 2.0;
00409     double var_sodium_calcium_exchanger__Ca_o = var_extracellular_calcium_concentration__Ca_o;
00410     const double var_sodium_calcium_exchanger__k_NaCa = 0.0005;
00411     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)));
00412     double var_membrane__i_NaCa_cyt = var_sodium_calcium_exchanger__i_NaCa_cyt;
00413     double var_sodium_calcium_exchanger__Ca_ds = var_intracellular_calcium_concentration__Ca_ds;
00414     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)));
00415     double var_membrane__i_NaCa_ds = var_sodium_calcium_exchanger__i_NaCa_ds;
00416     double var_L_type_Ca_channel__Ca_i = var_intracellular_calcium_concentration__Ca_i;
00417     double var_L_type_Ca_channel__Ca_o = var_extracellular_calcium_concentration__Ca_o;
00418     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))));
00419     double var_membrane__i_Ca_L_Ca_cyt = var_L_type_Ca_channel__i_Ca_L_Ca_cyt;
00420     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))));
00421     double var_membrane__i_Ca_L_Ca_ds = var_L_type_Ca_channel__i_Ca_L_Ca_ds;
00422     double var_reversal_potentials__Ca_o = var_extracellular_calcium_concentration__Ca_o;
00423     double var_reversal_potentials__Ca_i = var_intracellular_calcium_concentration__Ca_i;
00424     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);
00425     double var_calcium_background_current__E_Ca = var_reversal_potentials__E_Ca;
00426     const double var_calcium_background_current__g_bca = 0.00025;
00427     double var_calcium_background_current__V = var_membrane__V;
00428     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);
00429     double var_membrane__i_b_Ca = var_calcium_background_current__i_b_Ca;
00430     double var_membrane__i_Stim = GetStimulus((1.0/0.001)*var_environment__time);
00431     double var_rapid_delayed_rectifier_potassium_current_xr1_gate__V = var_rapid_delayed_rectifier_potassium_current__V;
00432     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));
00433     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);
00434     double var_rapid_delayed_rectifier_potassium_current_xr2_gate__V = var_rapid_delayed_rectifier_potassium_current__V;
00435     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));
00436     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));
00437     double var_slow_delayed_rectifier_potassium_current_xs_gate__V = var_slow_delayed_rectifier_potassium_current__V;
00438     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));
00439     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);
00440     double var_fast_sodium_current_m_gate__V = var_fast_sodium_current__V;
00441     double var_fast_sodium_current_m_gate__E0_m = var_fast_sodium_current_m_gate__V + 41.0;
00442     const double var_fast_sodium_current_m_gate__delta_m = 1e-05;
00443     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)));
00444     double var_fast_sodium_current_m_gate__beta_m = 8000.0 * exp((-0.056) * (var_fast_sodium_current_m_gate__V + 66.0));
00445     double var_fast_sodium_current_h_gate__V = var_fast_sodium_current__V;
00446     const double var_fast_sodium_current_h_gate__shift_h = 0.0;
00447     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));
00448     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))));
00449     double var_L_type_Ca_channel__Ca_ds = var_intracellular_calcium_concentration__Ca_ds;
00450     const double var_L_type_Ca_channel__Km_f2 = 100000.0;
00451     const double var_L_type_Ca_channel__Km_f2ds = 0.001;
00452     const double var_L_type_Ca_channel__R_decay = 20.0;
00453     double var_L_type_Ca_channel_d_gate__V = var_L_type_Ca_channel__V;
00454     double var_L_type_Ca_channel_d_gate__E0_d = (var_L_type_Ca_channel_d_gate__V + 24.0) - 5.0;
00455     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)));
00456     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));
00457     const double var_L_type_Ca_channel_d_gate__speed_d = 3.0;
00458     double var_L_type_Ca_channel_f_gate__V = var_L_type_Ca_channel__V;
00459     double var_L_type_Ca_channel_f_gate__E0_f = var_L_type_Ca_channel_f_gate__V + 34.0;
00460     const double var_L_type_Ca_channel_f_gate__delta_f = 0.0001;
00461     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));
00462     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));
00463     const double var_L_type_Ca_channel_f_gate__speed_f = 0.3;
00464     double var_L_type_Ca_channel_f2_gate__Km_f2 = var_L_type_Ca_channel__Km_f2;
00465     double var_L_type_Ca_channel_f2_gate__Ca_i = var_L_type_Ca_channel__Ca_i;
00466     double var_L_type_Ca_channel_f2ds_gate__Km_f2ds = var_L_type_Ca_channel__Km_f2ds;
00467     double var_L_type_Ca_channel_f2ds_gate__R_decay = var_L_type_Ca_channel__R_decay;
00468     double var_L_type_Ca_channel_f2ds_gate__Ca_ds = var_L_type_Ca_channel__Ca_ds;
00469     double var_transient_outward_current_s_gate__V = var_transient_outward_current__V;
00470     double var_transient_outward_current_s_gate__alpha_s = 0.033 * exp((-var_transient_outward_current_s_gate__V) / 17.0);
00471     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)));
00472     double var_transient_outward_current_r_gate__V = var_transient_outward_current__V;
00473     double var_sarcoplasmic_reticulum_calcium_pump__Ca_i = var_intracellular_calcium_concentration__Ca_i;
00474     double var_sarcoplasmic_reticulum_calcium_pump__Ca_up = var_intracellular_calcium_concentration__Ca_up;
00475     const double var_sarcoplasmic_reticulum_calcium_pump__alpha_up = 0.4;
00476     const double var_sarcoplasmic_reticulum_calcium_pump__beta_up = 0.03;
00477     const double var_sarcoplasmic_reticulum_calcium_pump__K_srca = 0.5;
00478     const double var_sarcoplasmic_reticulum_calcium_pump__K_xcs = 0.4;
00479     const double var_sarcoplasmic_reticulum_calcium_pump__K_cyca = 0.0003;
00480     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;
00481     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;
00482     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);
00483     double var_calcium_translocation__Ca_rel = var_intracellular_calcium_concentration__Ca_rel;
00484     double var_calcium_translocation__Ca_up = var_intracellular_calcium_concentration__Ca_up;
00485     double var_calcium_translocation__i_trans = 50.0 * (var_calcium_translocation__Ca_up - var_calcium_translocation__Ca_rel);
00486     const double var_calcium_release__K_m_rel = 250.0;
00487     const double var_calcium_release__K_leak_rate = 0.05;
00488     double var_calcium_release__Ca_rel = var_intracellular_calcium_concentration__Ca_rel;
00489     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;
00490     double var_calcium_release__V = var_membrane__V;
00491     double var_calcium_release__VoltDep = exp(0.08 * (var_calcium_release__V - 40.0));
00492     const double var_calcium_release__K_m_Ca_cyt = 0.0005;
00493     double var_calcium_release__Ca_i = var_intracellular_calcium_concentration__Ca_i;
00494     double var_calcium_release__CaiReg = var_calcium_release__Ca_i / (var_calcium_release__Ca_i + var_calcium_release__K_m_Ca_cyt);
00495     double var_calcium_release__Ca_ds = var_intracellular_calcium_concentration__Ca_ds;
00496     const double var_calcium_release__K_m_Ca_ds = 0.01;
00497     double var_calcium_release__CadsReg = var_calcium_release__Ca_ds / (var_calcium_release__Ca_ds + var_calcium_release__K_m_Ca_ds);
00498     double var_calcium_release__RegBindSite = var_calcium_release__CaiReg + ((1.0 - var_calcium_release__CaiReg) * var_calcium_release__CadsReg);
00499     double var_calcium_release__ActRate = (0.0 * var_calcium_release__VoltDep) + (500.0 * pow(var_calcium_release__RegBindSite, 2.0));
00500     double var_calcium_release__InactRate = 60.0 + (500.0 * pow(var_calcium_release__RegBindSite, 2.0));
00501     double var_calcium_release__PrecFrac = (1.0 - var_calcium_release__ActFrac) - var_calcium_release__ProdFrac;
00502     double var_calcium_release__SpeedRel = (var_calcium_release__V < (-50.0)) ? 5.0 : 1.0;
00503     const double var_intracellular_calcium_concentration__V_up_ratio = 0.01;
00504     const double var_intracellular_calcium_concentration__V_rel_ratio = 0.1;
00505     const double var_intracellular_calcium_concentration__V_e_ratio = 0.4;
00506     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;
00507     const double var_intracellular_calcium_concentration__radius = 0.012;
00508     const double var_intracellular_calcium_concentration__length = 0.074;
00509     double var_intracellular_calcium_concentration__V_Cell = 3.141592654 * pow(var_intracellular_calcium_concentration__radius, 2.0) * var_intracellular_calcium_concentration__length;
00510     double var_intracellular_calcium_concentration__V_i = var_intracellular_calcium_concentration__V_Cell * var_intracellular_calcium_concentration__V_i_ratio;
00511     double var_intracellular_sodium_concentration__V_i = var_intracellular_calcium_concentration__V_i;
00512     double var_intracellular_sodium_concentration__F = var_membrane__F;
00513     double var_intracellular_sodium_concentration__i_Na = var_fast_sodium_current__i_Na;
00514     double var_intracellular_sodium_concentration__i_b_Na = var_sodium_background_current__i_b_Na;
00515     double var_intracellular_sodium_concentration__i_p_Na = var_persistent_sodium_current__i_p_Na;
00516     double var_intracellular_sodium_concentration__i_Ca_L_Na_cyt = var_L_type_Ca_channel__i_Ca_L_Na_cyt;
00517     double var_intracellular_sodium_concentration__i_Ca_L_Na_ds = var_L_type_Ca_channel__i_Ca_L_Na_ds;
00518     double var_intracellular_sodium_concentration__i_NaK = var_sodium_potassium_pump__i_NaK;
00519     double var_intracellular_sodium_concentration__i_NaCa_cyt = var_sodium_calcium_exchanger__i_NaCa_cyt;
00520     double var_intracellular_potassium_concentration__V_i = var_intracellular_calcium_concentration__V_i;
00521     double var_intracellular_potassium_concentration__i_K1 = var_time_independent_potassium_current__i_K1;
00522     double var_intracellular_potassium_concentration__i_Kr = var_rapid_delayed_rectifier_potassium_current__i_Kr;
00523     double var_intracellular_potassium_concentration__i_Ks = var_slow_delayed_rectifier_potassium_current__i_Ks;
00524     double var_intracellular_potassium_concentration__i_Ca_L_K_cyt = var_L_type_Ca_channel__i_Ca_L_K_cyt;
00525     double var_intracellular_potassium_concentration__i_Ca_L_K_ds = var_L_type_Ca_channel__i_Ca_L_K_ds;
00526     double var_intracellular_potassium_concentration__i_to = var_transient_outward_current__i_to;
00527     double var_intracellular_potassium_concentration__i_NaK = var_sodium_potassium_pump__i_NaK;
00528     double var_intracellular_potassium_concentration__F = var_membrane__F;
00529     const double var_intracellular_calcium_concentration__Calmod = 0.02;
00530     const double var_intracellular_calcium_concentration__Trop = 0.05;
00531     const double var_intracellular_calcium_concentration__alpha_Calmod = 100000.0;
00532     const double var_intracellular_calcium_concentration__beta_Calmod = 50.0;
00533     const double var_intracellular_calcium_concentration__alpha_Trop = 100000.0;
00534     const double var_intracellular_calcium_concentration__beta_Trop = 200.0;
00535     const double var_intracellular_calcium_concentration__V_ds_ratio = 0.1;
00536     const double var_intracellular_calcium_concentration__Kdecay = 10.0;
00537     double var_intracellular_calcium_concentration__i_up = var_sarcoplasmic_reticulum_calcium_pump__i_up;
00538     double var_intracellular_calcium_concentration__i_trans = var_calcium_translocation__i_trans;
00539     double var_intracellular_calcium_concentration__i_rel = var_calcium_release__i_rel;
00540     double var_intracellular_calcium_concentration__i_NaCa_cyt = var_sodium_calcium_exchanger__i_NaCa_cyt;
00541     double var_intracellular_calcium_concentration__i_NaCa_ds = var_sodium_calcium_exchanger__i_NaCa_ds;
00542     double var_intracellular_calcium_concentration__i_Ca_L_Ca_cyt = var_L_type_Ca_channel__i_Ca_L_Ca_cyt;
00543     double var_intracellular_calcium_concentration__i_Ca_L_Ca_ds = var_L_type_Ca_channel__i_Ca_L_Ca_ds;
00544     double var_intracellular_calcium_concentration__i_b_Ca = var_calcium_background_current__i_b_Ca;
00545     double var_intracellular_calcium_concentration__F = var_membrane__F;
00546 
00548     // new part of the model
00550     const double g_sac = 0.035; // uS
00551     const double E_sac = -10; // mV
00552     double f = (mStretch > 0) ? (mStretch-1.0)/0.15 : 0.0; // f = 0 if stretch < 1, scales linearly to f=1 at 15% stretch
00553     double sac_ionic_current = g_sac * f * (var_membrane__V - E_sac); // if g is uS, this is nA
00554 
00555     double d_dt_membrane__V;
00556     if (mSetVoltageDerivativeToZero)
00557     {
00558         d_dt_membrane__V = 0.0;
00559     }
00560     else
00561     {
00562         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);
00563     }
00564     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);
00565     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);
00566     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);
00567     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);
00568     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);
00569     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));
00570     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));
00571     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));
00572     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));
00573     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);
00574     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);
00575     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);
00576     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);
00577     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);
00578     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));
00579     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);
00580     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);
00581     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;
00582     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);
00583     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;
00584     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;
00585 
00586     rDY[0] = 0.001*d_dt_membrane__V;
00587     rDY[1] = 0.001*d_dt_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1;
00588     rDY[2] = 0.001*d_dt_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2;
00589     rDY[3] = 0.001*d_dt_slow_delayed_rectifier_potassium_current_xs_gate__xs;
00590     rDY[4] = 0.001*d_dt_fast_sodium_current_m_gate__m;
00591     rDY[5] = 0.001*d_dt_fast_sodium_current_h_gate__h;
00592     rDY[6] = 0.001*d_dt_L_type_Ca_channel_d_gate__d;
00593     rDY[7] = 0.001*d_dt_L_type_Ca_channel_f_gate__f;
00594     rDY[8] = 0.001*d_dt_L_type_Ca_channel_f2_gate__f2;
00595     rDY[9] = 0.001*d_dt_L_type_Ca_channel_f2ds_gate__f2ds;
00596     rDY[10] = 0.001*d_dt_transient_outward_current_s_gate__s;
00597     rDY[11] = 0.001*d_dt_transient_outward_current_r_gate__r;
00598     rDY[12] = 0.001*d_dt_calcium_release__ActFrac;
00599     rDY[13] = 0.001*d_dt_calcium_release__ProdFrac;
00600     rDY[14] = 0.001*d_dt_intracellular_sodium_concentration__Na_i;
00601     rDY[15] = 0.001*d_dt_intracellular_potassium_concentration__K_i;
00602     rDY[16] = 0.001*d_dt_intracellular_calcium_concentration__Ca_i;
00603     rDY[17] = 0.001*d_dt_intracellular_calcium_concentration__Ca_ds;
00604     rDY[18] = 0.001*d_dt_intracellular_calcium_concentration__Ca_up;
00605     rDY[19] = 0.001*d_dt_intracellular_calcium_concentration__Ca_rel;
00606     rDY[20] = 0.001*d_dt_intracellular_calcium_concentration__Ca_Calmod;
00607     rDY[21] = 0.001*d_dt_intracellular_calcium_concentration__Ca_Trop;
00608 }
00609 
00610 
00611 template<>
00612 void OdeSystemInformation<CML_noble_varghese_kohl_noble_1998_basic_with_sac>::Initialise(void)
00613 {
00614     // Time units: second
00615     //
00616     this->mVariableNames.push_back("V");
00617     this->mVariableUnits.push_back("millivolt");
00618     this->mInitialConditions.push_back(-92.849333);
00619 
00620     this->mVariableNames.push_back("xr1");
00621     this->mVariableUnits.push_back("dimensionless");
00622     this->mInitialConditions.push_back(1.03e-5);
00623 
00624     this->mVariableNames.push_back("xr2");
00625     this->mVariableUnits.push_back("dimensionless");
00626     this->mInitialConditions.push_back(2e-7);
00627 
00628     this->mVariableNames.push_back("xs");
00629     this->mVariableUnits.push_back("dimensionless");
00630     this->mInitialConditions.push_back(0.001302);
00631 
00632     this->mVariableNames.push_back("m");
00633     this->mVariableUnits.push_back("dimensionless");
00634     this->mInitialConditions.push_back(0.0016203);
00635 
00636     this->mVariableNames.push_back("h");
00637     this->mVariableUnits.push_back("dimensionless");
00638     this->mInitialConditions.push_back(0.9944036);
00639 
00640     this->mVariableNames.push_back("d");
00641     this->mVariableUnits.push_back("dimensionless");
00642     this->mInitialConditions.push_back(0);
00643 
00644     this->mVariableNames.push_back("f");
00645     this->mVariableUnits.push_back("dimensionless");
00646     this->mInitialConditions.push_back(1);
00647 
00648     this->mVariableNames.push_back("f2");
00649     this->mVariableUnits.push_back("dimensionless");
00650     this->mInitialConditions.push_back(0.9349197);
00651 
00652     this->mVariableNames.push_back("f2ds");
00653     this->mVariableUnits.push_back("dimensionless");
00654     this->mInitialConditions.push_back(0.9651958);
00655 
00656     this->mVariableNames.push_back("s");
00657     this->mVariableUnits.push_back("dimensionless");
00658     this->mInitialConditions.push_back(0.9948645);
00659 
00660     this->mVariableNames.push_back("r");
00661     this->mVariableUnits.push_back("dimensionless");
00662     this->mInitialConditions.push_back(0);
00663 
00664     this->mVariableNames.push_back("ActFrac");
00665     this->mVariableUnits.push_back("dimensionless");
00666     this->mInitialConditions.push_back(0.0042614);
00667 
00668     this->mVariableNames.push_back("ProdFrac");
00669     this->mVariableUnits.push_back("dimensionless");
00670     this->mInitialConditions.push_back(0.4068154);
00671 
00672     this->mVariableNames.push_back("Na_i");
00673     this->mVariableUnits.push_back("millimolar");
00674     this->mInitialConditions.push_back(7.3321223);
00675 
00676     this->mVariableNames.push_back("K_i");
00677     this->mVariableUnits.push_back("millimolar");
00678     this->mInitialConditions.push_back(136.5644281);
00679 
00680     this->mVariableNames.push_back("Ca_i");
00681     this->mVariableUnits.push_back("millimolar");
00682     this->mInitialConditions.push_back(1.4e-5);
00683 
00684     this->mVariableNames.push_back("Ca_ds");
00685     this->mVariableUnits.push_back("millimolar");
00686     this->mInitialConditions.push_back(1.88e-5);
00687 
00688     this->mVariableNames.push_back("Ca_up");
00689     this->mVariableUnits.push_back("millimolar");
00690     this->mInitialConditions.push_back(0.4531889);
00691 
00692     this->mVariableNames.push_back("Ca_rel");
00693     this->mVariableUnits.push_back("millimolar");
00694     this->mInitialConditions.push_back(0.4481927);
00695 
00696     this->mVariableNames.push_back("Ca_Calmod");
00697     this->mVariableUnits.push_back("millimolar");
00698     this->mInitialConditions.push_back(0.0005555);
00699 
00700     this->mVariableNames.push_back("Ca_Trop");
00701     this->mVariableUnits.push_back("millimolar");
00702     this->mInitialConditions.push_back(0.0003542);
00703 
00704     this->mInitialised = true;
00705 }
00706 
00707 // Serialization for Boost>=1.36
00708 #include "SerializationExportWrapperForCpp.hpp"
00709 CHASTE_CLASS_EXPORT(CML_noble_varghese_kohl_noble_1998_basic_with_sac)
Generated on Thu Dec 22 13:00:06 2011 for Chaste by  doxygen 1.6.3