/* * A dynamic model of the cardiac ventricular action potential. * I. Simulations of ionic currents and concentration changes * * Model Status * * This CellML model has been written to be compatible with CMISS. * Alone it cannot be run and a new version will have to be created. * * Model Structure * * ABSTRACT: A mathematical model of the cardiac ventricular action * potential is presented. In our previous work, the membrane Na+ * current and K+ currents were formulated. The present article * focuses on processes that regulate intracellular Ca2+ and depend * on its concentration. The model presented here for the mammalian * ventricular action potential is based mostly on the guinea pig * ventricular cell. However, it provides the framework for modeling * other types of ventricular cells with appropriate modifications * made to account for species differences. The following processes * are formulated: Ca2+ current through the L-type channel (ICa), * the Na(+)-Ca2+ exchanger, Ca2+ release and uptake by the sarcoplasmic * reticulum (SR), buffering of Ca2+ in the SR and in the myoplasm, * a Ca2+ pump in the sarcolemma, the Na(+)-K+ pump, and a nonspecific * Ca(2+)-activated membrane current. Activation of ICa is an order * of magnitude faster than in previous models. Inactivation of * ICa depends on both the membrane voltage and [Ca2+]i. SR is * divided into two subcompartments, a network SR (NSR) and a junctional * SR (JSR). Functionally, Ca2+ enters the NSR and translocates * to the JSR following a monoexponential function. Release of * Ca2+ occurs at JSR and can be triggered by two different mechanisms, * Ca(2+)-induced Ca2+ release and spontaneous release. The model * provides the basis for the study of arrhythmogenic activity * of the single myocyte including afterdepolarizations and triggered * activity. It can simulate cellular responses under different * degrees of Ca2+ overload. Such simulations are presented in * our accompanying article in this issue of Circulation Research. * * The original paper reference is cited below: * * A dynamic model of the cardiac ventricular action potential. * I. Simulations of ionic currents and concentration changes, * Ching-hsing Luo and Yoram Rudy, 1994, Circulation Research, * 74, 1071-1097. PubMed ID: 7514509 * * cell diagram of the LR-II model showing ionic currents, pumps * and exchangers within the sarcolemma and the sarcoplasmic reticulum * * [[Image file: luo_1994.png]] * * A schematic diagram describing the ionic currents, pumps and * exchangers that are captured in the LR-II model. The intracellular * compartment is the sarcoplasmic reticulum (SR), which is divided * into the two subcompartments, the network SR (NSR) and the junctional * SR (JSR). Ca2+ buffers are present in both the cytoplasm and * the JSR. */ import nsrunit; // Warning: unit conversion turned off due to unit errors in 6 equation(s) unit conversion off; unit ms=.001 second^1; unit per_ms=1E3 second^(-1); unit per_mm=1E3 meter^(-1); unit mV=.001 kilogram^1*meter^2*second^(-3)*ampere^(-1); unit mV_per_ms=1 kilogram^1*meter^2*second^(-4)*ampere^(-1); unit per_mV=1E3 kilogram^(-1)*meter^(-2)*second^3*ampere^1; unit per_mV_ms=1E6 kilogram^(-1)*meter^(-2)*second^2*ampere^1; unit mS_per_mm2=1E3 kilogram^(-1)*meter^(-4)*second^3*ampere^2; unit uF_per_mm2=1 kilogram^(-1)*meter^(-4)*second^4*ampere^2; unit uA_per_mm2=1 meter^(-2)*ampere^1; unit mM=1 meter^(-3)*mole^1; unit gas_constant_units=.001 kilogram^1*meter^2*second^(-2)*kelvin^(-1)*mole^(-1); unit faradays_constant_units=1 second^1*ampere^1*mole^(-1); unit mm_per_ms=1 meter^1*second^(-1); unit mm2=1E-6 meter^2; unit mM_per_ms=1E3 meter^(-3)*second^(-1)*mole^1; math main { realDomain time ms; time.min=0; extern time.max; extern time.delta; real V(time) mV; when(time=time.min) V=-84.624; real R gas_constant_units; R=8.3145e3; real T kelvin; T=310.0; real F faradays_constant_units; F=96845.0; real dV_dt(time) mV_per_ms; real Cm uF_per_mm2; Cm=0.01; real I_st(time) uA_per_mm2; real i_Na(time) uA_per_mm2; real i_Ca_L(time) uA_per_mm2; real i_K(time) uA_per_mm2; real i_NaCa(time) uA_per_mm2; real i_K1(time) uA_per_mm2; real i_Kp(time) uA_per_mm2; real i_p_Ca(time) uA_per_mm2; real i_Na_b(time) uA_per_mm2; real i_Ca_b(time) uA_per_mm2; real i_NaK(time) uA_per_mm2; real i_ns_Ca(time) uA_per_mm2; real stimPeriod dimensionless; stimPeriod=1e3; real stimDuration dimensionless; stimDuration=0.5; real stimCurrent dimensionless; stimCurrent=0.5; real E_Na(time) mV; real g_Na mS_per_mm2; g_Na=0.16; real Nai(time) mM; when(time=time.min) Nai=10.0; real Nao mM; Nao=140.0; real m(time) dimensionless; when(time=time.min) m=0.0; real h(time) dimensionless; when(time=time.min) h=1.0; real j(time) dimensionless; when(time=time.min) j=1.0; real alpha_m(time) per_ms; real beta_m(time) per_ms; real alpha_h(time) per_ms; real beta_h(time) per_ms; real alpha_j(time) per_ms; real beta_j(time) per_ms; real i_CaCa(time) uA_per_mm2; real i_CaK(time) uA_per_mm2; real i_CaNa(time) uA_per_mm2; real gamma_Nai dimensionless; gamma_Nai=0.75; real gamma_Nao dimensionless; gamma_Nao=0.75; real gamma_Ki dimensionless; gamma_Ki=0.75; real gamma_Ko dimensionless; gamma_Ko=0.75; real I_CaCa(time) uA_per_mm2; real I_CaK(time) uA_per_mm2; real I_CaNa(time) uA_per_mm2; real P_Ca mm_per_ms; P_Ca=5.4e-6; real P_Na mm_per_ms; P_Na=6.75e-9; real P_K mm_per_ms; P_K=1.93e-9; real gamma_Cai dimensionless; gamma_Cai=1.0; real gamma_Cao dimensionless; gamma_Cao=0.34; real Cai(time) mM; when(time=time.min) Cai=0.12e-3; real Cao mM; Cao=1.8; real Ko mM; Ko=5.4; real Ki(time) mM; when(time=time.min) Ki=145.0; real d(time) dimensionless; when(time=time.min) d=0.0; real f(time) dimensionless; when(time=time.min) f=1.0; real f_Ca(time) dimensionless; real alpha_d(time) per_ms; real beta_d(time) per_ms; real d_infinity(time) dimensionless; real tau_d(time) ms; real alpha_f(time) per_ms; real beta_f(time) per_ms; real f_infinity(time) dimensionless; real tau_f(time) ms; real Km_Ca mM; Km_Ca=0.6e-3; real g_K_max mS_per_mm2; g_K_max=2.82e-3; real g_K mS_per_mm2; real E_K(time) mV; real PR_NaK dimensionless; PR_NaK=0.01833; real X(time) dimensionless; when(time=time.min) X=0.0; real Xi(time) dimensionless; real alpha_X(time) per_ms; real beta_X(time) per_ms; real E_K1(time) mV; real g_K1_max mS_per_mm2; g_K1_max=7.5e-3; real g_K1 mS_per_mm2; real K1_infinity(time) dimensionless; real alpha_K1(time) per_ms; real beta_K1(time) per_ms; real E_Kp(time) mV; real g_Kp mS_per_mm2; g_Kp=1.83e-4; real Kp(time) dimensionless; real K_mpCa mM; K_mpCa=0.5e-3; real I_pCa uA_per_mm2; I_pCa=1.15e-2; real g_Nab mS_per_mm2; g_Nab=1.41e-5; real E_NaN(time) mV; real g_Cab mS_per_mm2; g_Cab=3.016e-5; real E_CaN(time) mV; real I_NaK uA_per_mm2; I_NaK=1.5e-2; real f_NaK(time) dimensionless; real K_mNai mM; K_mNai=10.0; real K_mKo mM; K_mKo=1.5; real sigma dimensionless; real i_ns_Na(time) uA_per_mm2; real i_ns_K(time) uA_per_mm2; real P_ns_Ca mm_per_ms; P_ns_Ca=1.75e-9; real I_ns_Na(time) uA_per_mm2; real I_ns_K(time) uA_per_mm2; real K_m_ns_Ca mM; K_m_ns_Ca=1.2e-3; real Vns(time) mV; real EnsCa(time) mV; real K_NaCa uA_per_mm2; K_NaCa=20.0; real K_mNa mM; K_mNa=87.5; real K_mCa mM; K_mCa=1.38; real K_sat dimensionless; K_sat=0.1; real eta dimensionless; eta=0.35; real i_rel(time) mM_per_ms; real i_up(time) mM_per_ms; real i_leak(time) mM_per_ms; real i_tr(time) mM_per_ms; real G_rel per_ms; real G_rel_peak per_ms; real G_rel_max per_ms; G_rel_max=60.0; real tau_on ms; tau_on=2.0; real tau_off ms; tau_off=2.0; real t_CICR ms; t_CICR=0.0; real tau_tr ms; tau_tr=180.0; real K_mrel mM; K_mrel=0.8e-3; real K_mup mM; K_mup=0.92e-3; real K_leak per_ms; real I_up mM_per_ms; I_up=0.005; real Ca_NSR_max mM; Ca_NSR_max=15.0; real delta_Ca_i2 mM; delta_Ca_i2=0.0; real delta_Ca_ith mM; delta_Ca_ith=0.18e-3; real Ca_JSR(time) mM; when(time=time.min) Ca_JSR=1.8; real Ca_NSR(time) mM; when(time=time.min) Ca_NSR=1.8; real Am per_mm; Am=200; real V_myo dimensionless; V_myo=0.68; real V_JSR dimensionless; V_JSR=0.0048; real V_NSR dimensionless; V_NSR=0.0552; // // dV_dt=((I_st-(i_Na+i_Ca_L+i_K+i_K1+i_Kp+i_NaCa+i_p_Ca+i_Na_b+i_Ca_b+i_NaK+i_ns_Ca))/Cm); I_st=(if ((rem(time,stimPeriod)) i_Na=(g_Na*m^3*h*j*(V-E_Na)); E_Na=(R*T/F*ln(Nao/Nai)); // alpha_m=((.32 per_mV_ms)*(V+(47.13 mV))/(1-exp(((-0.1 per_mV))*(V+(47.13 mV))))); beta_m=((.08 per_ms)*exp((-1)*V/(11 mV))); m:time=(alpha_m*(1-m)-beta_m*m); // alpha_h=(if (V<((-40 mV))) (.135 per_ms)*exp(((80 mV)+V)/((-6.8 mV))) else (0 per_ms)); beta_h=(if (V<((-40 mV))) (3.56 per_ms)*exp((.079 mV)*V)+(3.1E5 per_ms)*exp((.35 per_mV)*V) else 1/((.13 ms)*(1+exp((V+(10.66 mV))/((-11.1 mV)))))); h:time=(alpha_h*(1-h)-beta_h*h); // alpha_j=(if (V<((-40 mV))) (((-127140 per_mV_ms))*exp((.2444 per_mV)*V)-(3.474E-5 per_mV_ms)*exp(((-0.04391 per_mV))*V))*((V+(37.78 mV))/(1+exp((.311 per_mV)*(V+(79.23 mV))))) else (0 per_ms)); beta_j=(if (V<((-40 mV))) (.1212 per_ms)*exp(((-0.01052 per_mV))*V)/(1+exp(((-0.1378 per_mV))*(V+(40.14 mV)))) else (.3 per_ms)*exp(((-2.535E-7 per_mV))*V)/(1+exp(((-0.1 per_mV))*(V+(32 mV))))); j:time=(alpha_j*(1-j)-beta_j*j); // i_CaCa=(d*f*f_Ca*I_CaCa); i_CaNa=(d*f*f_Ca*I_CaNa); i_CaK=(d*f*f_Ca*I_CaK); I_CaCa=(P_Ca*2^2*(V*F^2/(R*T))*((gamma_Cai*Cai*exp(2*V*F/(R*T))-gamma_Cao*Cao)/(exp(2*V*F/(R*T))-1))); I_CaNa=(P_Na*1^2*(V*F^2/(R*T))*((gamma_Nai*Nai*exp(1*V*F/(R*T))-gamma_Nao*Nao)/(exp(1*V*F/(R*T))-1))); I_CaK=(P_K*1^2*(V*F^2/(R*T))*((gamma_Ki*Ki*exp(1*V*F/(R*T))-gamma_Ko*Ko)/(exp(1*V*F/(R*T))-1))); i_Ca_L=(i_CaCa+i_CaK+i_CaNa); // alpha_d=(d_infinity/tau_d); d_infinity=(1/(1+exp((-1)*((V+(10 mV))/(6.24 mV))))); tau_d=(d_infinity*((1-exp((-1)*((V+(10 mV))/(6.24 mV))))/((.035 per_mV_ms)*(V+(10 mV))))); beta_d=((1-d_infinity)/tau_d); d:time=(alpha_d*(1-d)-beta_d*d); // alpha_f=(f_infinity/tau_f); f_infinity=(1/(1+exp((V+(35.06 mV))/(8.6 mV)))+.6/(1+exp(((50 mV)-V)/(20 mV)))); tau_f=((1 ms)/(.0197*exp((-1)*((.0337 per_mV)*(V+(10 mV)))^2)+.02)); beta_f=((1-f_infinity)/tau_f); f:time=(alpha_f*(1-f)-beta_f*f); // f_Ca=(1/(1+(Cai/Km_Ca)^2)); // g_K=(g_K_max*sqrt(Ko/(5.4 mM))); E_K=(R*T/F*ln((Ko+PR_NaK*Nao)/(Ki+PR_NaK*Nai))); i_K=(g_K*X^2*Xi*(V-E_K)); // alpha_X=((7.19E-5 per_mV_ms)*(V+(30 mV))/(1-exp((-0.148)*(V+(30 mV))))); beta_X=((1.31E-4 per_mV_ms)*(V+(30 mV))/((-1)+exp(.0687*(V+(30 mV))))); X:time=(alpha_X*(1-X)-beta_X*X); // Xi=(1/(1+exp((V-(56.26 mV))/(32.1 mV)))); // g_K1=(g_K1_max*sqrt(Ko/(5.4 mM))); E_K1=(R*T/F*ln(Ko/Ki)); i_K1=(g_K1*K1_infinity*(V-E_K1)); // alpha_K1=((1.02 per_ms)/(1+exp((.2385 per_mV)*(V-E_K1-(59.215 mV))))); beta_K1=(((.49124 per_ms)*exp(.08032*(V+(5.476 mV)-E_K1))+exp(.06175*(V-(E_K1+(594.31 mV)))))/(1+exp(((-0.5143 per_mV))*(V-E_K1+(4.753 mV))))); K1_infinity=(alpha_K1/(alpha_K1+beta_K1)); // E_Kp=E_K1; Kp=(1/(1+exp(((7.488 mV)-V)/(5.98 mV)))); i_Kp=(g_Kp*Kp*(V-E_Kp)); // i_p_Ca=(I_pCa*(Cai/(K_mpCa+Cai))); // E_NaN=E_Na; i_Na_b=(g_Nab*(V-E_NaN)); // E_CaN=(R*T/(2*F)*ln(Cao/Cai)); i_Ca_b=(g_Cab*(V-E_CaN)); // f_NaK=(1/(1+.1245*exp((-0.1)*(V*F/(R*T)))+.0365*sigma*exp((-1)*(V*F/(R*T))))); sigma=(1/7*(exp(Nao/67.3)-1)); i_NaK=(I_NaK*f_NaK*(1/(1+(K_mNai/Nai)^1.5))*(Ko/(Ko+K_mKo))); // EnsCa=(R*T/F*ln((Ko+Nao)/(Ki+Nai))); Vns=(V-EnsCa); i_ns_Na=(I_ns_Na*(1/(1+(K_m_ns_Ca/Cai)^3))); i_ns_K=(I_ns_K*(1/(1+(K_m_ns_Ca/Cai)^3))); i_ns_Ca=(i_ns_Na+i_ns_K); I_ns_Na=(P_ns_Ca*1^2*(Vns*F^2/(R*T))*((gamma_Nai*Nai*exp(1*Vns*F/(R*T))-gamma_Nao*Nao)/(exp(1*Vns*F/(R*T))-1))); I_ns_K=(P_ns_Ca*1^2*(Vns*F^2/(R*T))*((gamma_Ki*Ki*exp(1*Vns*F/(R*T))-gamma_Ko*Ko)/(exp(1*Vns*F/(R*T))-1))); // i_NaCa=(K_NaCa*(1/(K_mNa^3+Nao^3))*(1/(K_mCa+Cao))*(1/(1+K_sat*exp((eta-1)*V*(F/(R*T)))))*(exp(eta*V*(F/(R*T)))*Nai^3*Cao-exp((eta-1)*V*(F/(R*T)))*Nao^3*Cai)); // i_rel=(G_rel*(Ca_JSR-Cai)); G_rel=(G_rel_peak*((delta_Ca_i2-delta_Ca_ith)/(K_mrel+delta_Ca_i2-delta_Ca_ith))*(1-exp((-1)*(t_CICR/tau_on)))*exp((-1)*(t_CICR/tau_off))); G_rel_peak=(if (delta_Ca_i2 Nai:time=((-1)*(i_Na+i_CaNa+i_Na_b+i_ns_Na+i_NaCa*3+i_NaK*3)*(Am/(V_myo*F))); Cai:time=((-1)*(i_CaCa+i_p_Ca+i_Ca_b-i_NaCa)*(Am/(2*V_myo*F))+i_rel*(V_JSR/V_myo)+(i_leak-i_up)*(V_NSR/V_myo)); Ki:time=((-1)*(i_CaK+i_K+i_K1+i_Kp+i_ns_K+(-1)*(i_NaK*2))*(Am/(V_myo*F))); Ca_JSR:time=((-1)*(i_rel-i_tr*(V_NSR/V_JSR))); Ca_NSR:time=((-1)*(i_leak+i_tr-i_up)); }