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