00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
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
00053 static const double L_type_Ca_current_g_CaL = 0.0000398;
00054 static const double calcium_background_current_g_bca = 0.000592;
00055 static const double calcium_dynamics_Buf_c = 0.2;
00056 static const double calcium_dynamics_Buf_sr = 10.0;
00057 static const double calcium_dynamics_Buf_ss = 0.4;
00058 static const double calcium_dynamics_Ca_o = 2.0;
00059 static const double calcium_dynamics_EC = 1.5;
00060 static const double calcium_dynamics_K_buf_c = 0.001;
00061 static const double calcium_dynamics_K_buf_sr = 0.3;
00062 static const double calcium_dynamics_K_buf_ss = 0.00025;
00063 static const double calcium_dynamics_K_up = 0.00025;
00064 static const double calcium_dynamics_V_leak = 0.00036;
00065 static const double calcium_dynamics_V_rel = 0.102;
00066 static const double calcium_dynamics_V_sr = 0.001094;
00067 static const double calcium_dynamics_V_ss = 0.00005468;
00068 static const double calcium_dynamics_V_xfer = 0.0038;
00069 static const double calcium_dynamics_Vmax_up = 0.006375;
00070 static const double calcium_dynamics_k1_prime = 0.15;
00071 static const double calcium_dynamics_k2_prime = 0.045;
00072 static const double calcium_dynamics_k3 = 0.06;
00073 static const double calcium_dynamics_k4 = 0.005;
00074 static const double calcium_dynamics_max_sr = 2.5;
00075 static const double calcium_dynamics_min_sr = 1.0;
00076 static const double calcium_pump_current_K_pCa = 0.0005;
00077 static const double calcium_pump_current_g_pCa = 0.1238;
00078 static const double fast_sodium_current_g_Na = 14.838;
00079 static const double inward_rectifier_potassium_current_g_K1 = 5.405;
00080 static const double membrane_Cm = 0.185;
00081 static const double membrane_F = 96485.3415;
00082 static const double membrane_R = 8314.472;
00083 static const double membrane_T = 310.0;
00084 static const double membrane_V_c = 0.016404;
00085 static const double potassium_dynamics_K_o = 5.4;
00086 static const double potassium_pump_current_g_pK = 0.0146;
00087 static const double rapid_time_dependent_potassium_current_g_Kr = 0.153;
00088 static const double reversal_potentials_P_kna = 0.03;
00089 static const double slow_time_dependent_potassium_current_g_Ks = 0.392;
00090 static const double sodium_background_current_g_bna = 0.00029;
00091 static const double sodium_calcium_exchanger_current_K_NaCa = 1000.0;
00092 static const double sodium_calcium_exchanger_current_K_sat = 0.1;
00093 static const double sodium_calcium_exchanger_current_Km_Ca = 1.38;
00094 static const double sodium_calcium_exchanger_current_Km_Nai = 87.5;
00095 static const double sodium_calcium_exchanger_current_alpha = 2.5;
00096 static const double sodium_calcium_exchanger_current_gamma = 0.35;
00097 static const double sodium_dynamics_Na_o = 140.0;
00098 static const double sodium_potassium_pump_current_K_mNa = 40.0;
00099 static const double sodium_potassium_pump_current_K_mk = 1.0;
00100 static const double sodium_potassium_pump_current_P_NaK = 2.724;
00101 static const double transient_outward_current_g_to = 0.294;
00102
00104
00106 double L_type_Ca_current_d_gate_alpha_d;
00107 double L_type_Ca_current_d_gate_beta_d;
00108 double L_type_Ca_current_d_gate_d_inf;
00109 double L_type_Ca_current_d_gate_gamma_d;
00110 double L_type_Ca_current_d_gate_tau_d;
00111 double L_type_Ca_current_f2_gate_f2_inf;
00112 double L_type_Ca_current_f2_gate_tau_f2;
00113 double L_type_Ca_current_fCass_gate_fCass_inf;
00114 double L_type_Ca_current_fCass_gate_tau_fCass;
00115 double L_type_Ca_current_f_gate_f_inf;
00116 double L_type_Ca_current_f_gate_tau_f;
00117 double L_type_Ca_current_i_CaL;
00118 double calcium_background_current_i_b_Ca;
00119 double calcium_dynamics_Ca_i_bufc;
00120 double calcium_dynamics_Ca_sr_bufsr;
00121 double calcium_dynamics_Ca_ss_bufss;
00122 double calcium_dynamics_O;
00123 double calcium_dynamics_i_leak;
00124 double calcium_dynamics_i_rel;
00125 double calcium_dynamics_i_up;
00126 double calcium_dynamics_i_xfer;
00127 double calcium_dynamics_k1;
00128 double calcium_dynamics_k2;
00129 double calcium_dynamics_kcasr;
00130 double calcium_pump_current_i_p_Ca;
00131 double fast_sodium_current_h_gate_alpha_h;
00132 double fast_sodium_current_h_gate_beta_h;
00133 double fast_sodium_current_h_gate_h_inf;
00134 double fast_sodium_current_h_gate_tau_h;
00135 double fast_sodium_current_i_Na;
00136 double fast_sodium_current_j_gate_alpha_j;
00137 double fast_sodium_current_j_gate_beta_j;
00138 double fast_sodium_current_j_gate_j_inf;
00139 double fast_sodium_current_j_gate_tau_j;
00140 double fast_sodium_current_m_gate_alpha_m;
00141 double fast_sodium_current_m_gate_beta_m;
00142 double fast_sodium_current_m_gate_m_inf;
00143 double fast_sodium_current_m_gate_tau_m;
00144 double inward_rectifier_potassium_current_alpha_K1;
00145 double inward_rectifier_potassium_current_beta_K1;
00146 double inward_rectifier_potassium_current_i_K1;
00147 double inward_rectifier_potassium_current_xK1_inf;
00148 double potassium_pump_current_i_p_K;
00149 double rapid_time_dependent_potassium_current_Xr1_gate_alpha_xr1;
00150 double rapid_time_dependent_potassium_current_Xr1_gate_beta_xr1;
00151 double rapid_time_dependent_potassium_current_Xr1_gate_tau_xr1;
00152 double rapid_time_dependent_potassium_current_Xr1_gate_xr1_inf;
00153 double rapid_time_dependent_potassium_current_Xr2_gate_alpha_xr2;
00154 double rapid_time_dependent_potassium_current_Xr2_gate_beta_xr2;
00155 double rapid_time_dependent_potassium_current_Xr2_gate_tau_xr2;
00156 double rapid_time_dependent_potassium_current_Xr2_gate_xr2_inf;
00157 double rapid_time_dependent_potassium_current_i_Kr;
00158 double reversal_potentials_E_Ca;
00159 double reversal_potentials_E_K;
00160 double reversal_potentials_E_Ks;
00161 double reversal_potentials_E_Na;
00162 double slow_time_dependent_potassium_current_Xs_gate_alpha_xs;
00163 double slow_time_dependent_potassium_current_Xs_gate_beta_xs;
00164 double slow_time_dependent_potassium_current_Xs_gate_tau_xs;
00165 double slow_time_dependent_potassium_current_Xs_gate_xs_inf;
00166 double slow_time_dependent_potassium_current_i_Ks;
00167 double sodium_background_current_i_b_Na;
00168 double sodium_calcium_exchanger_current_i_NaCa;
00169 double sodium_potassium_pump_current_i_NaK;
00170 double transient_outward_current_i_to;
00171 double transient_outward_current_r_gate_r_inf;
00172 double transient_outward_current_r_gate_tau_r;
00173 double transient_outward_current_s_gate_s_inf;
00174 double transient_outward_current_s_gate_tau_s;
00175
00176
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_