/* * Model Status * * This CellML model is known to run in both COR and OpenCell to * recreate the results of the original model. The units have been * checked and they are consistent. * * Model Structure * * The applicability and usefulness of the new model have been * proved by addressing the study of the Brugada syndrome, an important * hereditary genetic disease able to cause sudden cardiac death * in human patients even without identifiable structural abnormalities. * Despite not incorporating independent descriptions for each * of the known currents measured through the cell membrane, the * model is however capable to correctly reproduce both the healthy * and pathological conditions of the epicardial tissue layer, * the latter being characterized by the presence of a much deeper * notch in the cardiac action potential as a result of a loss * of functionality of sodium channels which leaves unopposed the * transient outward potassium current. * * Despite being able of reproducing a great amount of available * experimental data, one important limitation of the proposed * minimal model is that it lacks of a complete description of * intracellular calcium dynamics. Hence, the model cannot be used * to study particular conditions of importance in the generation * and development of arrhythmias, such as calcium overload, spontaneous * calcium release or calcium-induced alternans. This limitation * could be overcome however by coupling our simplified model of * the cardiac transmembrane potential to a reduced model of the * intracellular calcium cycling of the ventricular myocyte, such * as the one suggested by Shiferaw et al. (2003), therefore yielding * the first implementation of a second-generation simplified ionic * model of the cardiac myocyte. * * This model was taken from the PhD thesis of Alfonso Bueno: * * Mathematical modeling and spectral simulation of genetic diseases * in the human heart, Alfonso Bueno, Department of Mathematics, * University of Castilla-La Mancha, Ciudad Real, May 2007. */ import nsrunit; unit conversion on; unit ms=.001 second^1; unit per_ms=1E3 second^(-1); unit mV=.001 kilogram^1*meter^2*second^(-3)*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_cm2=10 kilogram^(-1)*meter^(-4)*second^3*ampere^2; unit uF_per_cm2=.01 kilogram^(-1)*meter^(-4)*second^4*ampere^2; unit uA_per_cm2=.01 meter^(-2)*ampere^1; unit concentration_units=1 meter^(-3)*mole^1; math main { realDomain time ms; time.min=0; extern time.max; extern time.delta; real epi dimensionless; epi=1; real endo dimensionless; endo=0; real mcell dimensionless; mcell=0; real u(time) dimensionless; when(time=time.min) u=0; real Vm(time) mV; real V_0 mV; V_0=-83; real V_fi mV; V_fi=2.7; real J_fi(time) per_ms; real J_so(time) per_ms; real J_si(time) per_ms; real J_stim(time) per_ms; real m(time) dimensionless; real u_m dimensionless; u_m=0.3; real p(time) dimensionless; real u_p dimensionless; u_p=0.13; real q(time) dimensionless; real u_q dimensionless; real r(time) dimensionless; real u_r dimensionless; real tau_fi ms; real u_u dimensionless; real v(time) dimensionless; when(time=time.min) v=1; real v_inf(time) dimensionless; real tau_v_minus(time) ms; real tau_v1_minus ms; real tau_v2_minus ms; real tau_v_plus ms; tau_v_plus=1.45; real tau_o(time) ms; real tau_o1 ms; real tau_o2 ms; real tau_so(time) ms; real tau_so1 ms; real tau_so2 ms; real k_so dimensionless; real u_so dimensionless; real tau_si ms; real w(time) dimensionless; when(time=time.min) w=1; real s(time) dimensionless; when(time=time.min) s=0; real w_inf(time) dimensionless; real tau_winf ms; real wstar_inf dimensionless; real tau_w_minus(time) ms; real tau_w1_minus ms; real tau_w2_minus ms; real k_w_minus dimensionless; real u_w_minus dimensionless; real tau_w_plus ms; real tau_s(time) ms; real tau_s1 ms; tau_s1=2.7342; real tau_s2 ms; real k_s dimensionless; k_s=2.0994; real u_s dimensionless; u_s=0.9087; // // J_stim=(if ((time>=(100 ms)) and (time<=(101 ms))) (-1)*(1 per_ms) else (0 per_ms)); u:time=((-1)*(J_fi+J_so+J_si+J_stim)); Vm=(V_0+u*(V_fi-V_0)); // m=(if (u p=(if (u u_q=(if (epi=1) .006 else if (endo=1) .024 else .1); q=(if (u u_r=(if (epi=1) .006 else if (endo=1) .006 else .005); r=(if (u u_u=(if (epi=1) 1.55 else if (endo=1) 1.56 else 1.61); tau_fi=(if (epi=1) (.11 ms) else if (endo=1) (.104 ms) else (.078 ms)); J_fi=((-1)*m*v*(u-u_m)*(u_u-u)/tau_fi); // tau_v2_minus=(if (epi=1) (1150 ms) else if (endo=1) (10 ms) else (1.45 ms)); tau_v1_minus=(if (epi=1) (60 ms) else if (endo=1) (75 ms) else (80 ms)); v_inf=(if (u tau_o1=(if (epi=1) (400 ms) else if (endo=1) (470 ms) else (410 ms)); tau_o2=(if (epi=1) (6 ms) else if (endo=1) (6 ms) else (7 ms)); tau_so1=(if (epi=1) (30.02 ms) else if (endo=1) (40 ms) else (91 ms)); tau_so2=(if (epi=1) (.996 ms) else if (endo=1) (1.2 ms) else (.8 ms)); k_so=(if (epi=1) 2.046 else if (endo=1) 2 else 2.1); u_so=(if (epi=1) .65 else if (endo=1) .65 else .6); tau_o=((1-r)*tau_o1+r*tau_o2); tau_so=(tau_so1+(tau_so2-tau_so1)*(1+tanh(k_so*(u-u_so)))/2); J_so=(u*(1-p)/tau_o+p/tau_so); // tau_si=(if (epi=1) (1.8875 ms) else if (endo=1) (2.9013 ms) else (3.3849 ms)); J_si=((-1)*p*w*s/tau_si); // tau_winf=(if (epi=1) (.07 ms) else if (endo=1) (.0273 ms) else (.01 ms)); wstar_inf=(if (epi=1) .94 else if (endo=1) .78 else .5); tau_w1_minus=(if (epi=1) (60 ms) else if (endo=1) (6 ms) else (70 ms)); tau_w2_minus=(if (epi=1) (15 ms) else if (endo=1) (140 ms) else (8 ms)); k_w_minus=(if (epi=1) 65 else if (endo=1) 200 else 200); u_w_minus=(if (epi=1) .03 else if (endo=1) .016 else .016); tau_w_plus=(if (epi=1) (200 ms) else if (endo=1) (280 ms) else (280 ms)); w_inf=((1-r)*(1-u*(1 ms)/tau_winf)+r*wstar_inf); tau_w_minus=(tau_w1_minus+(tau_w2_minus-tau_w1_minus)*(1+tanh(k_w_minus*(u-u_w_minus)))/2); w:time=((1-r)*(w_inf-w)/tau_w_minus-r*w/tau_w_plus); // tau_s2=(if (epi=1) (16 ms) else if (endo=1) (2 ms) else (4 ms)); tau_s=((1-p)*tau_s1+p*tau_s2); s:time=(((1+tanh(k_s*(u-u_s)))/2-s)/tau_s); }