svMultiPhysics
Loading...
Searching...
No Matches
CepModTtp.h
1// SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
2// SPDX-License-Identifier: BSD-3-Clause
3
4#ifndef CEP_MOD_TTP_H
5#define CEP_MOD_TTP_H
6
7#include "Array.h"
8#include "Vector.h"
9#include <array>
10
11#include <optional>
12#include <functional>
13
14template <class T>
15T& make_ref(T&& x) { return x; }
16
17/// @brief This module defines data structures for ten Tusscher-Panfilov
18/// epicardial cellular activation model for cardiac electrophysiology
19///
20/// The classes defined here duplicate the data structures in the Fortran TPPMOD module defined
21/// in CEPMOD_TTP.f and PARAMS_TPP.f files.
23{
24 public:
25 CepModTtp();
26 ~CepModTtp();
27
28
29//--------------------------------------------------------------------
30//
31// Constants for TenTusscher-Panfilov Ventricular Myocyte Model.
32//
33//--------------------------------------------------------------------
34
35// Default model parameters
36 /// Gas constant [J/mol/K]
37 double Rc = 8314.472;
38
39 /// Temperature [K]
40 double Tc = 310.0;
41
42 /// Faraday constant [C/mmol]
43 double Fc = 96485.3415;
44
45 /// Cell capacitance per unit surface area [uF/cm^{2}]
46 double Cm = 0.185;
47
48 /// Surface to volume ratio [um^{-1}]
49 double sV = 0.2;
50
51 /// Cellular resistivity [\f$\Omega\f$-cm]
52 double rho = 162.0;
53
54 /// Cytoplasmic volume [um^{3}]
55 double V_c = 16.404E-3;
56
57 /// Sacroplasmic reticulum volume [um^{3}]
58 double V_sr = 1.094E-3;
59
60 /// Subspace volume [um^{3}]
61 double V_ss = 5.468E-5;
62
63 /// Extracellular K concentration [mM]
64 double K_o = 5.4;
65
66 /// Extracellular Na concentration [mM]
67 double Na_o = 140.0;
68
69 /// Extracellular Ca concentration [mM]
70 double Ca_o = 2.0;
71
72 /// Maximal I_Na conductance [nS/pF]
73 double G_Na = 14.838;
74
75 /// Maximal I_K1 conductance [nS/pF]
76 double G_K1 = 5.405;
77
78 /// Maximal epicardial I_to conductance [nS/pF]
79 Vector<double> G_to = {0.294, 0.073, 0.294};
80
81 /// Maximal I_Kr conductance [nS/pF]
82 double G_Kr = 0.153;
83
84// G_Kr for spiral wave breakup
85// double G_Kr = 0.172; // units: nS/pF
86
87 /// Maximal epicardial I_Ks conductance [nS/pF]
88 Vector<double> G_Ks = {0.392, 0.392, 0.098};
89
90// G_Ks for spiral wave breakup (epi)
91// double G_Ks(3) = (/0.441, 0.392_RKIND, 0.098_RKIND/)
92
93 /// Relative I_Ks permeability to Na [-]
94 double p_KNa = 3.E-2;
95
96 /// Maximal I_CaL conductance [cm^{3}/uF/ms]
97 double G_CaL = 3.98E-5;
98
99 /// Maximal I_NaCa [pA/pF]
100 double K_NaCa = 1000.;
101
102 /// Voltage dependent parameter of I_NaCa [-]
103 double gamma = 0.35;
104
105 /// Ca_i half-saturation constant for I_NaCa [mM]
106 double K_mCa = 1.38;
107
108 /// Na_i half-saturation constant for I_NaCa [mM]
109 double K_mNai = 87.5;
110
111 /// Saturation factor for I_NaCa [-]
112 double K_sat = 0.1;
113
114 /// Factor enhancing outward nature of I_NaCa [-]
115 double alpha = 2.5;
116
117 /// Maximal I_NaK [pA/pF]
118 double p_NaK = 2.724;
119
120 /// K_o half-saturation constant of I_NaK [mM]
121 double K_mK = 1.;
122
123 /// Na_i half-saturation constant of I_NaK [mM]
124 double K_mNa = 40.;
125
126 /// Maximal I_pK conductance [nS/pF]
127 double G_pK = 1.46E-2;
128
129// G_pK for spiral wave breakup
130// double G_pK = 2.19E-3; // units: nS/pF
131
132 /// Maximal I_pCa conductance [pA/pF]
133 double G_pCa = 0.1238;
134
135// G_pCa for spiral wave breakup
136// double G_pCa = 0.8666; // units: pA/pF
137
138 /// Half-saturation constant of I_pCa [mM]
139 double K_pCa = 5.E-4;
140
141 /// Maximal I_bNa conductance [nS/pF]
142 double G_bNa = 2.9E-4;
143
144 /// Maximal I_bCa conductance [nS/pF]
145 double G_bCa = 5.92E-4;
146
147 /// Maximal I_up conductance [mM/ms]
148 double Vmax_up = 6.375E-3;
149
150 /// Half-saturation constant of I_up [mM]
151 double K_up = 2.5E-4;
152
153 /// Maximal I_rel conductance [mM/ms]
154 double V_rel = 0.102;
155
156 /// R to O and RI to I, I_rel transition rate [mM^{-2}/ms]
157 double k1p = 0.15;
158
159 /// O to I and R to RI, I_rel transition rate [mM^{-1}/ms]
160 double k2p = 4.5E-2;
161
162 /// O to R and I to RI, I_rel transition rate [ms^{-1}]
163 double k3 = 6.E-2;
164
165 /// I to O and Ri to I, I_rel transition rate [ms^{-1}]
166 double k4 = 5.E-3;
167
168 /// Ca_sr half-saturation constant of k_casr [mM]
169 double EC = 1.5;
170
171 /// Maximum value of k_casr [-]
172 double max_sr = 2.5;
173
174 /// Minimum value of k_casr [-]
175 double min_sr = 1.;
176
177 /// Maximal I_leak conductance [mM/ms]
178 double V_leak = 3.6E-4;
179
180 /// Maximal I_xfer conductance [mM/ms]
181 double V_xfer = 3.8E-3;
182
183 /// Total cytoplasmic buffer concentration [mM]
184 double Buf_c = 0.2;
185
186 /// Ca_i half-saturation constant for cytplasmic buffer [mM]
187 double K_bufc = 1.E-3;
188
189 /// Total sacroplasmic buffer concentration [mM]
190 double Buf_sr = 10.;
191
192 /// Ca_sr half-saturation constant for subspace buffer [mM]
193 double K_bufsr = 0.3;
194
195 /// Total subspace buffer concentration [mM]
196 double Buf_ss = 0.4;
197
198 /// Ca_ss half-saturation constant for subspace buffer [mM]
199 double K_bufss = 2.5E-4;
200
201 /// Resting potential [mV]
202 double Vrest = -85.23;
203
204// Electromechanics coupling parameters: active stress model
205 /// Resting Ca concentration [mM]
206 double Ca_rest = 5.E-5;
207
208 /// Critical Ca concentration [mM]
209 double Ca_crit = 8.E-4;
210
211 /// Saturation of concentration [MPa/mM]
212 double eta_T = 12.5;
213
214 /// Minimum activation [ms^{-1}]
215 double eps_0 = 0.1;
216
217 /// Maximum activation [ms^{-1}]
218 double eps_i = 1. ;
219
220 /// Transition rate [mM^{-1}]
221 double xi_T = 4.E3;
222
223// Electromechanics coupling parameters: active strain model
224//
225
226 /// Active force of sacromere [-mM^{-2}]
227 double alFa = -4.E6;
228
229 /// Resting Ca concentration [mM]
230 double c_Ca0 = 2.155E-4;
231
232 /// Viscous-type constant [ms-mM^{-2}]
233 double mu_Ca = 5.E6;
234
235// Force-length relationship parameters
236 /// Initial length of sacromeres [um]
237 double SL0 = 1.95;
238
239 /// Min. length of sacromeres [um]
240 double SLmin = 1.7;
241
242 /// Max. length of sacromeres [um]
243 double SLmax = 2.6;
244
245 /// Fourier coefficients
246 double f0 = -4333.618335582119;
247 double fc1 = 2570.395355352195;
248 double fs1 = -2051.827278991976;
249 double fc2 = 1329.53611689133;
250 double fs2 = 302.216784558222;
251 double fc3 = 104.943770305116;
252 double fs3 = 218.375174229422;
253
254//-----------------------------------------------------------------------
255// Scaling factors
256 /// Voltage scaling
257 double Vscale = 1.;
258
259 /// Time scaling
260 double Tscale = 1.;
261
262 /// Voltage offset parameter
263 double Voffset = 0.;
264
265//-----------------------------------------------------------------------
266// Variables
267 /// Reverse potentials for Na, K, Ca
268 double E_Na;
269 double E_K;
270 double E_Ca;
271 double E_Ks;
272// Cellular transmembrane currents
273 /// Fast sodium current
274 double I_Na;
275
276 /// inward rectifier outward current
277 double I_K1;
278
279 /// transient outward current
280 double I_to;
281
282 /// rapid delayed rectifier current
283 double I_Kr;
284
285 /// slow delayed rectifier current
286 double I_Ks;
287
288 /// L-type Ca current
289 double I_CaL;
290
291 /// Na-Ca exchanger current
292 double I_NaCa;
293
294 /// Na-K pump current
295 double I_NaK;
296
297 /// plateau Ca current
298 double I_pCa;
299
300 /// plateau K current
301 double I_pK;
302
303 /// background Ca current
304 double I_bCa;
305
306 /// background Na current
307 double I_bNa;
308
309 /// sacroplasmic reticulum Ca leak current
310 double I_leak;
311
312 /// sacroplasmic reticulum Ca pump current
313 double I_up;
314
315 /// Ca induced Ca release current
316 double I_rel;
317
318 /// diffusive Ca current
319 double I_xfer;
320//-----------------------------------------------------------------------
321// State variables
322 double V;
323 double K_i;
324 double Na_i;
325 double Ca_i;
326 double Ca_ss;
327 double Ca_sr;
328 double R_bar;
329
330// Gating variables (runtime, steady state)
331 double xr1, xr1i;
332 double xr2, xr2i;
333 double xs, xsi;
334 double m, mi;
335 double h, hi;
336 double j, ji;
337 double d, di;
338 double f, fi;
339 double f2, f2i;
340 double fcass, fcassi;
341 double s, si;
342 double r, ri;
343
344// Other variables
345 double k1;
346 double k2;
347 double k_casr;
348 double O;
349
350// Jacobian variables
351 double E_Na_Nai, E_K_Ki, E_Ca_Cai, E_Ks_Ki, E_Ks_Nai;
352 double I_Na_V, I_Na_Nai;
353 double I_to_V, I_to_Ki;
354 double I_K1_V, I_K1_Ki;
355 double I_Kr_V, I_Kr_Ki;
356 double I_Ks_V, I_Ks_Ki, I_Ks_Nai;
357 double I_CaL_V, I_CaL_Cass;
358 double I_NaCa_V, I_NaCa_Nai, I_NaCa_Cai;
359 double I_NaK_V, I_NaK_Nai;
360 double I_pCa_Cai;
361 double I_pK_V, I_pK_Ki;
362 double I_bCa_V, I_bCa_Cai;
363 double I_bNa_V, I_bNa_Nai;
364 double I_leak_Cai, I_leak_Casr;
365 double I_up_Cai;
366 double I_rel_Cass, I_rel_Casr, I_rel_Rbar;
367 double I_xfer_Cai, I_xfer_Cass;
368 double k_casr_sr, k1_casr, O_Casr, O_Cass, O_Rbar;
369
370 void actv_strn(const double c_Ca, const double I4f, const double dt, double& gf);
371 void actv_strs(const double c_Ca, const double dt, double& Tact, double& epsX);
372
373 void getf(const int i, const int nX, const int nG, const Vector<double>& X, const Vector<double>& Xg,
374 Vector<double>& dX, const double I_stim, const double K_sac, Vector<double>& RPAR);
375
376 void getj(const int i, const int nX, const int nG, const Vector<double>& X, const Vector<double>& Xg,
377 Array<double>& JAC, const double Ksac);
378
379 void init(const int imyo, const int nX, const int nG, Vector<double>& X, Vector<double>& Xg);
380
381 void init(const int imyo, const int nX, const int nG, Vector<double>& X, Vector<double>& Xg,
383
384 void integ_cn2(const int imyo, const int nX, const int nG, Vector<double>& X, Vector<double>& Xg,
385 const double Ts, const double dt, const double Istim, const double Ksac,
386 Vector<int>& IPAR, Vector<double>& RPAR);
387
388 void integ_fe(const int imyo, const int nX, const int nG, Vector<double>& X, Vector<double>& Xg,
389 const double Ts, const double dt, const double Istim, const double Ksac, Vector<double>& RPAR);
390
391 void integ_rk(const int imyo, const int nX, const int nG, Vector<double>& X, Vector<double>& Xg,
392 const double Ts, const double dt, const double Istim, const double Ksac, Vector<double>& RPAR);
393
394 void update_g(const int i, const double dt, const int n, const int nG, const Vector<double>& X,
395 Vector<double>& Xg);
396
397};
398
399#endif
400
This module defines data structures for ten Tusscher-Panfilov epicardial cellular activation model fo...
Definition CepModTtp.h:23
double I_NaK
Na-K pump current.
Definition CepModTtp.h:295
double K_o
Extracellular K concentration [mM].
Definition CepModTtp.h:64
double mu_Ca
Viscous-type constant [ms-mM^{-2}].
Definition CepModTtp.h:233
double SL0
Initial length of sacromeres [um].
Definition CepModTtp.h:237
double Cm
Cell capacitance per unit surface area [uF/cm^{2}].
Definition CepModTtp.h:46
double K_bufsr
Ca_sr half-saturation constant for subspace buffer [mM].
Definition CepModTtp.h:193
double alpha
Factor enhancing outward nature of I_NaCa [-].
Definition CepModTtp.h:115
double eps_i
Maximum activation [ms^{-1}].
Definition CepModTtp.h:218
double V_rel
Maximal I_rel conductance [mM/ms].
Definition CepModTtp.h:154
void getf(const int i, const int nX, const int nG, const Vector< double > &X, const Vector< double > &Xg, Vector< double > &dX, const double I_stim, const double K_sac, Vector< double > &RPAR)
Compute currents and time derivatives of state variables.
Definition CepModTtp.cpp:49
double SLmax
Max. length of sacromeres [um].
Definition CepModTtp.h:243
double k1p
R to O and RI to I, I_rel transition rate [mM^{-2}/ms].
Definition CepModTtp.h:157
double I_up
sacroplasmic reticulum Ca pump current
Definition CepModTtp.h:313
double K_mCa
Ca_i half-saturation constant for I_NaCa [mM].
Definition CepModTtp.h:106
double I_bNa
background Na current
Definition CepModTtp.h:307
double K_NaCa
Maximal I_NaCa [pA/pF].
Definition CepModTtp.h:100
double K_bufc
Ca_i half-saturation constant for cytplasmic buffer [mM].
Definition CepModTtp.h:187
double c_Ca0
Resting Ca concentration [mM].
Definition CepModTtp.h:230
double I_bCa
background Ca current
Definition CepModTtp.h:304
double max_sr
Maximum value of k_casr [-].
Definition CepModTtp.h:172
double Tscale
Time scaling.
Definition CepModTtp.h:260
double I_to
transient outward current
Definition CepModTtp.h:280
double eta_T
Saturation of concentration [MPa/mM].
Definition CepModTtp.h:212
double alFa
Active force of sacromere [-mM^{-2}].
Definition CepModTtp.h:227
double sV
Surface to volume ratio [um^{-1}].
Definition CepModTtp.h:49
double V_leak
Maximal I_leak conductance [mM/ms].
Definition CepModTtp.h:178
double V_xfer
Maximal I_xfer conductance [mM/ms].
Definition CepModTtp.h:181
double Voffset
Voltage offset parameter.
Definition CepModTtp.h:263
double K_mK
K_o half-saturation constant of I_NaK [mM].
Definition CepModTtp.h:121
void integ_cn2(const int imyo, const int nX, const int nG, Vector< double > &X, Vector< double > &Xg, const double Ts, const double dt, const double Istim, const double Ksac, Vector< int > &IPAR, Vector< double > &RPAR)
Time integration performed using Crank-Nicholson method.
Definition CepModTtp.cpp:547
double rho
Cellular resistivity [ -cm].
Definition CepModTtp.h:52
double I_rel
Ca induced Ca release current.
Definition CepModTtp.h:316
double G_pCa
Maximal I_pCa conductance [pA/pF].
Definition CepModTtp.h:133
double V_sr
Sacroplasmic reticulum volume [um^{3}].
Definition CepModTtp.h:58
double G_pK
Maximal I_pK conductance [nS/pF].
Definition CepModTtp.h:127
double G_Na
Maximal I_Na conductance [nS/pF].
Definition CepModTtp.h:73
double G_bCa
Maximal I_bCa conductance [nS/pF].
Definition CepModTtp.h:145
Vector< double > G_to
Maximal epicardial I_to conductance [nS/pF].
Definition CepModTtp.h:79
double xi_T
Transition rate [mM^{-1}].
Definition CepModTtp.h:221
double K_mNai
Na_i half-saturation constant for I_NaCa [mM].
Definition CepModTtp.h:109
double Buf_sr
Total sacroplasmic buffer concentration [mM].
Definition CepModTtp.h:190
double Vscale
Voltage scaling.
Definition CepModTtp.h:257
double k3
O to R and I to RI, I_rel transition rate [ms^{-1}].
Definition CepModTtp.h:163
double I_Kr
rapid delayed rectifier current
Definition CepModTtp.h:283
double I_NaCa
Na-Ca exchanger current.
Definition CepModTtp.h:292
double p_NaK
Maximal I_NaK [pA/pF].
Definition CepModTtp.h:118
double I_Na
Fast sodium current.
Definition CepModTtp.h:274
double K_mNa
Na_i half-saturation constant of I_NaK [mM].
Definition CepModTtp.h:124
double SLmin
Min. length of sacromeres [um].
Definition CepModTtp.h:240
double V_ss
Subspace volume [um^{3}].
Definition CepModTtp.h:61
double I_K1
inward rectifier outward current
Definition CepModTtp.h:277
double p_KNa
Relative I_Ks permeability to Na [-].
Definition CepModTtp.h:94
double Rc
Gas constant [J/mol/K].
Definition CepModTtp.h:37
double min_sr
Minimum value of k_casr [-].
Definition CepModTtp.h:175
double I_xfer
diffusive Ca current
Definition CepModTtp.h:319
double G_bNa
Maximal I_bNa conductance [nS/pF].
Definition CepModTtp.h:142
double Buf_ss
Total subspace buffer concentration [mM].
Definition CepModTtp.h:196
double K_up
Half-saturation constant of I_up [mM].
Definition CepModTtp.h:151
double Tc
Temperature [K].
Definition CepModTtp.h:40
double Buf_c
Total cytoplasmic buffer concentration [mM].
Definition CepModTtp.h:184
double Na_o
Extracellular Na concentration [mM].
Definition CepModTtp.h:67
double I_pK
plateau K current
Definition CepModTtp.h:301
double f0
Fourier coefficients.
Definition CepModTtp.h:246
double Vrest
Resting potential [mV].
Definition CepModTtp.h:202
double Ca_crit
Critical Ca concentration [mM].
Definition CepModTtp.h:209
double E_Na
Reverse potentials for Na, K, Ca.
Definition CepModTtp.h:268
void update_g(const int i, const double dt, const int n, const int nG, const Vector< double > &X, Vector< double > &Xg)
Update all the gating variables.
Definition CepModTtp.cpp:663
double G_Kr
Maximal I_Kr conductance [nS/pF].
Definition CepModTtp.h:82
double Ca_rest
Resting Ca concentration [mM].
Definition CepModTtp.h:206
double Fc
Faraday constant [C/mmol].
Definition CepModTtp.h:43
double k4
I to O and Ri to I, I_rel transition rate [ms^{-1}].
Definition CepModTtp.h:166
double eps_0
Minimum activation [ms^{-1}].
Definition CepModTtp.h:215
double V_c
Cytoplasmic volume [um^{3}].
Definition CepModTtp.h:55
double k2p
O to I and R to RI, I_rel transition rate [mM^{-1}/ms].
Definition CepModTtp.h:160
double I_Ks
slow delayed rectifier current
Definition CepModTtp.h:286
double I_CaL
L-type Ca current.
Definition CepModTtp.h:289
double G_CaL
Maximal I_CaL conductance [cm^{3}/uF/ms].
Definition CepModTtp.h:97
double K_sat
Saturation factor for I_NaCa [-].
Definition CepModTtp.h:112
double K_pCa
Half-saturation constant of I_pCa [mM].
Definition CepModTtp.h:139
double gamma
Voltage dependent parameter of I_NaCa [-].
Definition CepModTtp.h:103
Vector< double > G_Ks
Maximal epicardial I_Ks conductance [nS/pF].
Definition CepModTtp.h:88
double EC
Ca_sr half-saturation constant of k_casr [mM].
Definition CepModTtp.h:169
double Ca_o
Extracellular Ca concentration [mM].
Definition CepModTtp.h:70
void actv_strn(const double c_Ca, const double I4f, const double dt, double &gf)
Compute macroscopic fiber strain based on sacromere force-length relationship and calcium concentrati...
Definition CepModTtp.cpp:18
double I_pCa
plateau Ca current
Definition CepModTtp.h:298
double K_bufss
Ca_ss half-saturation constant for subspace buffer [mM].
Definition CepModTtp.h:199
double G_K1
Maximal I_K1 conductance [nS/pF].
Definition CepModTtp.h:76
double Vmax_up
Maximal I_up conductance [mM/ms].
Definition CepModTtp.h:148
double I_leak
sacroplasmic reticulum Ca leak current
Definition CepModTtp.h:310
The Vector template class is used for storing int and double data.
Definition Vector.h:23