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