TenTusscher2006OdeSystem.hpp

00001 /*
00002 
00003 Copyright (C) University of Oxford, 2005-2009
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 #ifndef _TENTUSSCHER2006ODESYSTEM_HPP_
00030 #define _TENTUSSCHER2006ODESYSTEM_HPP_
00031 
00032 #include "AbstractCardiacCell.hpp"
00033 #include "AbstractStimulusFunction.hpp"
00034 #include <vector>
00035 
00039 class TenTusscher2006OdeSystem : public AbstractCardiacCell
00040 {
00041 private:
00042 
00044     double mScaleFactorGks;
00046     double mScaleFactorIto;
00048     double mScaleFactorGkr;
00049     
00051     //Constants for the TenTusscher2006 model, values for epicardial cell.
00053    static const double L_type_Ca_current_g_CaL = 0.0000398;   // nanoS_per_picoF
00054    static const double calcium_background_current_g_bca = 0.000592;   // nanoS_per_picoF
00055    static const double calcium_dynamics_Buf_c = 0.2;   // millimolar
00056    static const double calcium_dynamics_Buf_sr = 10.0;   // millimolar
00057    static const double calcium_dynamics_Buf_ss = 0.4;   // millimolar
00058    static const double calcium_dynamics_Ca_o = 2.0;   // millimolar
00059    static const double calcium_dynamics_EC = 1.5;   // millimolar
00060    static const double calcium_dynamics_K_buf_c = 0.001;   // millimolar
00061    static const double calcium_dynamics_K_buf_sr = 0.3;   // millimolar
00062    static const double calcium_dynamics_K_buf_ss = 0.00025;   // millimolar
00063    static const double calcium_dynamics_K_up = 0.00025;   // millimolar
00064    static const double calcium_dynamics_V_leak = 0.00036;   // millimolar_per_millisecond
00065    static const double calcium_dynamics_V_rel = 0.102;   // millimolar_per_millisecond
00066    static const double calcium_dynamics_V_sr = 0.001094;   // micrometre3
00067    static const double calcium_dynamics_V_ss = 0.00005468;   // micrometre3
00068    static const double calcium_dynamics_V_xfer = 0.0038;   // millimolar_per_millisecond
00069    static const double calcium_dynamics_Vmax_up = 0.006375;   // millimolar_per_millisecond
00070    static const double calcium_dynamics_k1_prime = 0.15;   // per_millimolar2_per_millisecond
00071    static const double calcium_dynamics_k2_prime = 0.045;   // per_millimolar_per_millisecond
00072    static const double calcium_dynamics_k3 = 0.06;   // per_millisecond
00073    static const double calcium_dynamics_k4 = 0.005;   // per_millisecond
00074    static const double calcium_dynamics_max_sr = 2.5;   // dimensionless
00075    static const double calcium_dynamics_min_sr = 1.0;   // dimensionless
00076    static const double calcium_pump_current_K_pCa = 0.0005;   // millimolar
00077    static const double calcium_pump_current_g_pCa = 0.1238;   // nanoS_per_picoF
00078    static const double fast_sodium_current_g_Na = 14.838;   // nanoS_per_picoF
00079    static const double inward_rectifier_potassium_current_g_K1 = 5.405;   // nanoS_per_picoF
00080    static const double membrane_Cm = 0.185;   // microF_per_cm2
00081    static const double membrane_F = 96485.3415;   // coulomb_per_millimole
00082    static const double membrane_R = 8314.472;   // joule_per_mole_kelvin
00083    static const double membrane_T = 310.0;   // kelvin
00084    static const double membrane_V_c = 0.016404;   // micrometre3
00085    static const double potassium_dynamics_K_o = 5.4;   // millimolar
00086    static const double potassium_pump_current_g_pK = 0.0146;   // nanoS_per_picoF
00087    static const double rapid_time_dependent_potassium_current_g_Kr = 0.153;   // nanoS_per_picoF
00088    static const double reversal_potentials_P_kna = 0.03;   // nanoA_per_millimolar
00089    static const double slow_time_dependent_potassium_current_g_Ks = 0.392;   // nanoS_per_picoF
00090    static const double sodium_background_current_g_bna = 0.00029;   // nanoS_per_picoF
00091    static const double sodium_calcium_exchanger_current_K_NaCa = 1000.0;   // picoA_per_picoF
00092    static const double sodium_calcium_exchanger_current_K_sat = 0.1;   // dimensionless
00093    static const double sodium_calcium_exchanger_current_Km_Ca = 1.38;   // millimolar
00094    static const double sodium_calcium_exchanger_current_Km_Nai = 87.5;   // millimolar
00095    static const double sodium_calcium_exchanger_current_alpha = 2.5;   // dimensionless
00096    static const double sodium_calcium_exchanger_current_gamma = 0.35;   // dimensionless
00097    static const double sodium_dynamics_Na_o = 140.0;   // millimolar
00098    static const double sodium_potassium_pump_current_K_mNa = 40.0;   // millimolar
00099    static const double sodium_potassium_pump_current_K_mk = 1.0;   // millimolar
00100    static const double sodium_potassium_pump_current_P_NaK = 2.724;   // picoA_per_picoF
00101    static const double transient_outward_current_g_to = 0.294;   // nanoS_per_picoF
00102 
00104    //variables that need to be computed
00106       double L_type_Ca_current_d_gate_alpha_d;   // per_millisecond
00107       double L_type_Ca_current_d_gate_beta_d;   // per_millisecond
00108       double L_type_Ca_current_d_gate_d_inf;   // dimensionless
00109       double L_type_Ca_current_d_gate_gamma_d;   // per_millisecond
00110       double L_type_Ca_current_d_gate_tau_d;   // millisecond
00111       double L_type_Ca_current_f2_gate_f2_inf;   // dimensionless
00112       double L_type_Ca_current_f2_gate_tau_f2;   // millisecond
00113       double L_type_Ca_current_fCass_gate_fCass_inf;   // dimensionless
00114       double L_type_Ca_current_fCass_gate_tau_fCass;   // millisecond
00115       double L_type_Ca_current_f_gate_f_inf;   // dimensionless
00116       double L_type_Ca_current_f_gate_tau_f;   // millisecond
00117       double L_type_Ca_current_i_CaL;   // picoA_per_picoF
00118       double calcium_background_current_i_b_Ca;   // picoA_per_picoF
00119       double calcium_dynamics_Ca_i_bufc;   // millimolar
00120       double calcium_dynamics_Ca_sr_bufsr;   // millimolar
00121       double calcium_dynamics_Ca_ss_bufss;   // millimolar
00122       double calcium_dynamics_O;   // dimensionless
00123       double calcium_dynamics_i_leak;   // millimolar_per_millisecond
00124       double calcium_dynamics_i_rel;   // millimolar_per_millisecond
00125       double calcium_dynamics_i_up;   // millimolar_per_millisecond
00126       double calcium_dynamics_i_xfer;   // millimolar_per_millisecond
00127       double calcium_dynamics_k1;   // per_millimolar2_per_millisecond
00128       double calcium_dynamics_k2;   // per_millimolar_per_millisecond
00129       double calcium_dynamics_kcasr;   // dimensionless
00130       double calcium_pump_current_i_p_Ca;   // picoA_per_picoF
00131       double fast_sodium_current_h_gate_alpha_h;   // per_millisecond
00132       double fast_sodium_current_h_gate_beta_h;   // per_millisecond
00133       double fast_sodium_current_h_gate_h_inf;   // dimensionless
00134       double fast_sodium_current_h_gate_tau_h;   // millisecond
00135       double fast_sodium_current_i_Na;   // picoA_per_picoF
00136       double fast_sodium_current_j_gate_alpha_j;   // per_millisecond
00137       double fast_sodium_current_j_gate_beta_j;   // per_millisecond
00138       double fast_sodium_current_j_gate_j_inf;   // dimensionless
00139       double fast_sodium_current_j_gate_tau_j;   // millisecond
00140       double fast_sodium_current_m_gate_alpha_m;   // per_millisecond
00141       double fast_sodium_current_m_gate_beta_m;   // per_millisecond
00142       double fast_sodium_current_m_gate_m_inf;   // dimensionless
00143       double fast_sodium_current_m_gate_tau_m;   // millisecond
00144       double inward_rectifier_potassium_current_alpha_K1;   // dimensionless
00145       double inward_rectifier_potassium_current_beta_K1;   // dimensionless
00146       double inward_rectifier_potassium_current_i_K1;   // picoA_per_picoF
00147       double inward_rectifier_potassium_current_xK1_inf;   // dimensionless
00148       double potassium_pump_current_i_p_K;   // picoA_per_picoF
00149       double rapid_time_dependent_potassium_current_Xr1_gate_alpha_xr1;   // per_millisecond
00150       double rapid_time_dependent_potassium_current_Xr1_gate_beta_xr1;   // per_millisecond
00151       double rapid_time_dependent_potassium_current_Xr1_gate_tau_xr1;   // millisecond
00152       double rapid_time_dependent_potassium_current_Xr1_gate_xr1_inf;   // dimensionless
00153       double rapid_time_dependent_potassium_current_Xr2_gate_alpha_xr2;   // per_millisecond
00154       double rapid_time_dependent_potassium_current_Xr2_gate_beta_xr2;   // per_millisecond
00155       double rapid_time_dependent_potassium_current_Xr2_gate_tau_xr2;   // millisecond
00156       double rapid_time_dependent_potassium_current_Xr2_gate_xr2_inf;   // dimensionless
00157       double rapid_time_dependent_potassium_current_i_Kr;   // picoA_per_picoF
00158       double reversal_potentials_E_Ca;   // millivolt
00159       double reversal_potentials_E_K;   // millivolt
00160       double reversal_potentials_E_Ks;   // millivolt
00161       double reversal_potentials_E_Na;   // millivolt
00162       double slow_time_dependent_potassium_current_Xs_gate_alpha_xs;   // per_millisecond
00163       double slow_time_dependent_potassium_current_Xs_gate_beta_xs;   // per_millisecond
00164       double slow_time_dependent_potassium_current_Xs_gate_tau_xs;   // millisecond
00165       double slow_time_dependent_potassium_current_Xs_gate_xs_inf;   // dimensionless
00166       double slow_time_dependent_potassium_current_i_Ks;   // picoA_per_picoF
00167       double sodium_background_current_i_b_Na;   // picoA_per_picoF
00168       double sodium_calcium_exchanger_current_i_NaCa;   // picoA_per_picoF
00169       double sodium_potassium_pump_current_i_NaK;   // picoA_per_picoF
00170       double transient_outward_current_i_to;   // picoA_per_picoF
00171       double transient_outward_current_r_gate_r_inf;   // dimensionless
00172       double transient_outward_current_r_gate_tau_r;   // millisecond
00173       double transient_outward_current_s_gate_s_inf;   // dimensionless
00174       double transient_outward_current_s_gate_tau_s;   // dimensionless
00175 
00176     // This private method will check that gates are within 0 and 1 and concentrations are positive
00177     void VerifyStateVariables();
00178 
00179 public:
00183     TenTusscher2006OdeSystem(AbstractIvpOdeSolver *pSolver,
00184                                AbstractStimulusFunction *pIntracellularStimulus);
00185 
00189     ~TenTusscher2006OdeSystem();
00190 
00194     void EvaluateYDerivatives(double time, const std::vector<double> &rY, std::vector<double> &rDY);
00195     
00199     void SetScaleFactorGks(double sfgks);
00200     
00204     void SetScaleFactorIto(double sfito);
00205     
00209     void SetScaleFactorGkr(double sfgkr);
00210     
00214     double GetIIonic();
00215 
00216 };
00217 
00218 #endif // _TENTUSSCHER2006_HPP_

Generated on Wed Mar 18 12:51:51 2009 for Chaste by  doxygen 1.5.5