148 boost::ignore_unused(time);
150 for (
size_t i = 0; i <
m_nq; ++i)
154 NekDouble var_chaste_interface__membrane__V = inarray[0][i];
157 var_chaste_interface__rapid_time_dependent_potassium_current_Xr1_gate__Xr1 =
161 var_chaste_interface__rapid_time_dependent_potassium_current_Xr2_gate__Xr2 =
165 var_chaste_interface__slow_time_dependent_potassium_current_Xs_gate__Xs =
168 NekDouble var_chaste_interface__fast_sodium_current_m_gate__m =
171 NekDouble var_chaste_interface__fast_sodium_current_h_gate__h =
174 NekDouble var_chaste_interface__fast_sodium_current_j_gate__j =
177 NekDouble var_chaste_interface__L_type_Ca_current_d_gate__d =
180 NekDouble var_chaste_interface__L_type_Ca_current_f_gate__f =
183 NekDouble var_chaste_interface__L_type_Ca_current_f2_gate__f2 =
186 NekDouble var_chaste_interface__L_type_Ca_current_fCass_gate__fCass =
189 NekDouble var_chaste_interface__transient_outward_current_s_gate__s =
192 NekDouble var_chaste_interface__transient_outward_current_r_gate__r =
195 NekDouble var_chaste_interface__calcium_dynamics__Ca_i = inarray[13][i];
197 NekDouble var_chaste_interface__calcium_dynamics__Ca_SR =
200 NekDouble var_chaste_interface__calcium_dynamics__Ca_ss =
203 NekDouble var_chaste_interface__calcium_dynamics__R_prime =
206 NekDouble var_chaste_interface__sodium_dynamics__Na_i = inarray[17][i];
208 NekDouble var_chaste_interface__potassium_dynamics__K_i =
213 NekDouble d_dt_chaste_interface__membrane__V;
214 const NekDouble var_membrane__R = 8314.472;
216 const NekDouble var_membrane__F = 96485.3415;
217 const NekDouble var_membrane__Cm = 0.185;
218 const NekDouble var_membrane__V_c = 0.016404;
219 const NekDouble var_inward_rectifier_potassium_current__V =
220 var_chaste_interface__membrane__V;
221 const NekDouble var_reversal_potentials__K_i =
222 var_chaste_interface__potassium_dynamics__K_i;
223 const NekDouble var_reversal_potentials__R =
225 const NekDouble var_reversal_potentials__T = var_membrane__T;
226 const NekDouble var_reversal_potentials__F =
229 const NekDouble var_reversal_potentials__K_o =
230 var_potassium_dynamics__K_o;
231 const NekDouble var_reversal_potentials__E_K =
232 ((var_reversal_potentials__R * var_reversal_potentials__T) /
233 var_reversal_potentials__F) *
234 log(var_reversal_potentials__K_o /
235 var_reversal_potentials__K_i);
236 const NekDouble var_inward_rectifier_potassium_current__E_K =
237 var_reversal_potentials__E_K;
238 const NekDouble var_inward_rectifier_potassium_current__beta_K1 =
240 exp(0.0002 * ((var_inward_rectifier_potassium_current__V -
241 var_inward_rectifier_potassium_current__E_K) +
243 exp(0.1 * ((var_inward_rectifier_potassium_current__V -
244 var_inward_rectifier_potassium_current__E_K) -
248 (var_inward_rectifier_potassium_current__V -
249 var_inward_rectifier_potassium_current__E_K)));
250 const NekDouble var_inward_rectifier_potassium_current__alpha_K1 =
252 (1.0 + exp(0.06 * ((var_inward_rectifier_potassium_current__V -
253 var_inward_rectifier_potassium_current__E_K) -
255 const NekDouble var_inward_rectifier_potassium_current__xK1_inf =
256 var_inward_rectifier_potassium_current__alpha_K1 /
257 (var_inward_rectifier_potassium_current__alpha_K1 +
258 var_inward_rectifier_potassium_current__beta_K1);
259 const NekDouble var_inward_rectifier_potassium_current__K_o =
260 var_potassium_dynamics__K_o;
261 const NekDouble var_inward_rectifier_potassium_current__g_K1 =
263 const NekDouble var_inward_rectifier_potassium_current__i_K1 =
264 var_inward_rectifier_potassium_current__g_K1 *
265 var_inward_rectifier_potassium_current__xK1_inf *
266 sqrt(var_inward_rectifier_potassium_current__K_o / 5.4) *
267 (var_inward_rectifier_potassium_current__V -
268 var_inward_rectifier_potassium_current__E_K);
269 const NekDouble var_transient_outward_current__s =
270 var_chaste_interface__transient_outward_current_s_gate__s;
271 const NekDouble var_transient_outward_current__r =
272 var_chaste_interface__transient_outward_current_r_gate__r;
273 const NekDouble var_transient_outward_current__g_to =
275 const NekDouble var_transient_outward_current__V =
276 var_chaste_interface__membrane__V;
277 const NekDouble var_transient_outward_current__E_K =
278 var_reversal_potentials__E_K;
279 const NekDouble var_transient_outward_current__i_to =
280 var_transient_outward_current__g_to *
281 var_transient_outward_current__r *
282 var_transient_outward_current__s *
283 (var_transient_outward_current__V -
284 var_transient_outward_current__E_K);
285 const NekDouble var_rapid_time_dependent_potassium_current__Xr1 =
286 var_chaste_interface__rapid_time_dependent_potassium_current_Xr1_gate__Xr1;
287 const NekDouble var_rapid_time_dependent_potassium_current__Xr2 =
288 var_chaste_interface__rapid_time_dependent_potassium_current_Xr2_gate__Xr2;
289 const NekDouble var_rapid_time_dependent_potassium_current__V =
290 var_chaste_interface__membrane__V;
291 const NekDouble var_rapid_time_dependent_potassium_current__K_o =
292 var_potassium_dynamics__K_o;
293 const NekDouble var_rapid_time_dependent_potassium_current__E_K =
294 var_reversal_potentials__E_K;
295 const NekDouble var_rapid_time_dependent_potassium_current__g_Kr =
297 const NekDouble var_rapid_time_dependent_potassium_current__i_Kr =
298 var_rapid_time_dependent_potassium_current__g_Kr *
299 sqrt(var_rapid_time_dependent_potassium_current__K_o / 5.4) *
300 var_rapid_time_dependent_potassium_current__Xr1 *
301 var_rapid_time_dependent_potassium_current__Xr2 *
302 (var_rapid_time_dependent_potassium_current__V -
303 var_rapid_time_dependent_potassium_current__E_K);
304 const NekDouble var_slow_time_dependent_potassium_current__g_Ks =
306 const NekDouble var_sodium_dynamics__Na_o = 140.0;
307 const NekDouble var_reversal_potentials__Na_o =
308 var_sodium_dynamics__Na_o;
309 const NekDouble var_reversal_potentials__Na_i =
310 var_chaste_interface__sodium_dynamics__Na_i;
311 const NekDouble var_reversal_potentials__P_kna = 0.03;
312 const NekDouble var_reversal_potentials__E_Ks =
313 ((var_reversal_potentials__R * var_reversal_potentials__T) /
314 var_reversal_potentials__F) *
315 log((var_reversal_potentials__K_o +
316 (var_reversal_potentials__P_kna *
317 var_reversal_potentials__Na_o)) /
318 (var_reversal_potentials__K_i +
319 (var_reversal_potentials__P_kna *
320 var_reversal_potentials__Na_i)));
321 const NekDouble var_slow_time_dependent_potassium_current__E_Ks =
322 var_reversal_potentials__E_Ks;
323 const NekDouble var_slow_time_dependent_potassium_current__V =
324 var_chaste_interface__membrane__V;
325 const NekDouble var_slow_time_dependent_potassium_current__Xs =
326 var_chaste_interface__slow_time_dependent_potassium_current_Xs_gate__Xs;
327 const NekDouble var_slow_time_dependent_potassium_current__i_Ks =
328 var_slow_time_dependent_potassium_current__g_Ks *
329 pow(var_slow_time_dependent_potassium_current__Xs, 2.0) *
330 (var_slow_time_dependent_potassium_current__V -
331 var_slow_time_dependent_potassium_current__E_Ks);
332 const NekDouble var_L_type_Ca_current__Ca_ss =
333 var_chaste_interface__calcium_dynamics__Ca_ss;
334 const NekDouble var_L_type_Ca_current__g_CaL =
336 const NekDouble var_L_type_Ca_current__f =
337 var_chaste_interface__L_type_Ca_current_f_gate__f;
338 const NekDouble var_L_type_Ca_current__d =
339 var_chaste_interface__L_type_Ca_current_d_gate__d;
340 const NekDouble var_L_type_Ca_current__F =
342 const NekDouble var_L_type_Ca_current__f2 =
343 var_chaste_interface__L_type_Ca_current_f2_gate__f2;
344 const NekDouble var_L_type_Ca_current__fCass =
345 var_chaste_interface__L_type_Ca_current_fCass_gate__fCass;
346 const NekDouble var_L_type_Ca_current__V =
347 var_chaste_interface__membrane__V;
348 const NekDouble var_L_type_Ca_current__T = var_membrane__T;
349 const NekDouble var_calcium_dynamics__Ca_o = 2.0;
350 const NekDouble var_L_type_Ca_current__Ca_o =
351 var_calcium_dynamics__Ca_o;
352 const NekDouble var_L_type_Ca_current__R =
354 const NekDouble var_L_type_Ca_current__i_CaL =
355 (((var_L_type_Ca_current__g_CaL * var_L_type_Ca_current__d *
356 var_L_type_Ca_current__f * var_L_type_Ca_current__f2 *
357 var_L_type_Ca_current__fCass * 4.0 *
358 (var_L_type_Ca_current__V - 15.0) *
359 pow(var_L_type_Ca_current__F, 2.0)) /
360 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) *
361 ((0.25 * var_L_type_Ca_current__Ca_ss *
362 exp((2.0 * (var_L_type_Ca_current__V - 15.0) *
363 var_L_type_Ca_current__F) /
364 (var_L_type_Ca_current__R * var_L_type_Ca_current__T))) -
365 var_L_type_Ca_current__Ca_o)) /
366 (exp((2.0 * (var_L_type_Ca_current__V - 15.0) *
367 var_L_type_Ca_current__F) /
368 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) -
370 const NekDouble var_sodium_potassium_pump_current__Na_i =
371 var_chaste_interface__sodium_dynamics__Na_i;
372 const NekDouble var_sodium_potassium_pump_current__R =
374 const NekDouble var_sodium_potassium_pump_current__T =
376 const NekDouble var_sodium_potassium_pump_current__V =
377 var_chaste_interface__membrane__V;
378 const NekDouble var_sodium_potassium_pump_current__K_mk =
380 const NekDouble var_sodium_potassium_pump_current__P_NaK =
382 const NekDouble var_sodium_potassium_pump_current__K_mNa =
384 const NekDouble var_sodium_potassium_pump_current__F =
386 const NekDouble var_sodium_potassium_pump_current__K_o =
387 var_potassium_dynamics__K_o;
388 const NekDouble var_sodium_potassium_pump_current__i_NaK =
389 ((((var_sodium_potassium_pump_current__P_NaK *
390 var_sodium_potassium_pump_current__K_o) /
391 (var_sodium_potassium_pump_current__K_o +
392 var_sodium_potassium_pump_current__K_mk)) *
393 var_sodium_potassium_pump_current__Na_i) /
394 (var_sodium_potassium_pump_current__Na_i +
395 var_sodium_potassium_pump_current__K_mNa)) /
397 (0.1245 * exp(((-0.1) * var_sodium_potassium_pump_current__V *
398 var_sodium_potassium_pump_current__F) /
399 (var_sodium_potassium_pump_current__R *
400 var_sodium_potassium_pump_current__T))) +
402 exp(((-var_sodium_potassium_pump_current__V) *
403 var_sodium_potassium_pump_current__F) /
404 (var_sodium_potassium_pump_current__R *
405 var_sodium_potassium_pump_current__T))));
406 const NekDouble var_fast_sodium_current__j =
407 var_chaste_interface__fast_sodium_current_j_gate__j;
408 const NekDouble var_fast_sodium_current__h =
409 var_chaste_interface__fast_sodium_current_h_gate__h;
410 const NekDouble var_fast_sodium_current__g_Na =
412 const NekDouble var_fast_sodium_current__m =
413 var_chaste_interface__fast_sodium_current_m_gate__m;
414 const NekDouble var_fast_sodium_current__V =
415 var_chaste_interface__membrane__V;
416 const NekDouble var_reversal_potentials__E_Na =
417 ((var_reversal_potentials__R * var_reversal_potentials__T) /
418 var_reversal_potentials__F) *
419 log(var_reversal_potentials__Na_o /
420 var_reversal_potentials__Na_i);
421 const NekDouble var_fast_sodium_current__E_Na =
422 var_reversal_potentials__E_Na;
423 const NekDouble var_fast_sodium_current__i_Na =
424 var_fast_sodium_current__g_Na *
425 pow(var_fast_sodium_current__m, 3.0) * var_fast_sodium_current__h *
426 var_fast_sodium_current__j *
427 (var_fast_sodium_current__V -
428 var_fast_sodium_current__E_Na);
429 const NekDouble var_sodium_background_current__V =
430 var_chaste_interface__membrane__V;
431 const NekDouble var_sodium_background_current__E_Na =
432 var_reversal_potentials__E_Na;
433 const NekDouble var_sodium_background_current__g_bna =
435 const NekDouble var_sodium_background_current__i_b_Na =
436 var_sodium_background_current__g_bna *
437 (var_sodium_background_current__V -
438 var_sodium_background_current__E_Na);
439 const NekDouble var_sodium_calcium_exchanger_current__alpha =
441 const NekDouble var_sodium_calcium_exchanger_current__gamma =
443 const NekDouble var_sodium_calcium_exchanger_current__K_sat =
445 const NekDouble var_sodium_calcium_exchanger_current__Km_Ca =
447 const NekDouble var_sodium_calcium_exchanger_current__K_NaCa =
449 const NekDouble var_sodium_calcium_exchanger_current__F =
451 const NekDouble var_sodium_calcium_exchanger_current__Ca_i =
452 var_chaste_interface__calcium_dynamics__Ca_i;
453 const NekDouble var_sodium_calcium_exchanger_current__Ca_o =
454 var_calcium_dynamics__Ca_o;
455 const NekDouble var_sodium_calcium_exchanger_current__V =
456 var_chaste_interface__membrane__V;
457 const NekDouble var_sodium_calcium_exchanger_current__R =
459 const NekDouble var_sodium_calcium_exchanger_current__Km_Nai =
461 const NekDouble var_sodium_calcium_exchanger_current__Na_o =
462 var_sodium_dynamics__Na_o;
463 const NekDouble var_sodium_calcium_exchanger_current__Na_i =
464 var_chaste_interface__sodium_dynamics__Na_i;
465 const NekDouble var_sodium_calcium_exchanger_current__T =
467 const NekDouble var_sodium_calcium_exchanger_current__i_NaCa =
468 (var_sodium_calcium_exchanger_current__K_NaCa *
469 ((exp((var_sodium_calcium_exchanger_current__gamma *
470 var_sodium_calcium_exchanger_current__V *
471 var_sodium_calcium_exchanger_current__F) /
472 (var_sodium_calcium_exchanger_current__R *
473 var_sodium_calcium_exchanger_current__T)) *
474 pow(var_sodium_calcium_exchanger_current__Na_i, 3.0) *
475 var_sodium_calcium_exchanger_current__Ca_o) -
476 (exp(((var_sodium_calcium_exchanger_current__gamma - 1.0) *
477 var_sodium_calcium_exchanger_current__V *
478 var_sodium_calcium_exchanger_current__F) /
479 (var_sodium_calcium_exchanger_current__R *
480 var_sodium_calcium_exchanger_current__T)) *
481 pow(var_sodium_calcium_exchanger_current__Na_o, 3.0) *
482 var_sodium_calcium_exchanger_current__Ca_i *
483 var_sodium_calcium_exchanger_current__alpha))) /
484 ((pow(var_sodium_calcium_exchanger_current__Km_Nai, 3.0) +
485 pow(var_sodium_calcium_exchanger_current__Na_o, 3.0)) *
486 (var_sodium_calcium_exchanger_current__Km_Ca +
487 var_sodium_calcium_exchanger_current__Ca_o) *
489 (var_sodium_calcium_exchanger_current__K_sat *
490 exp(((var_sodium_calcium_exchanger_current__gamma - 1.0) *
491 var_sodium_calcium_exchanger_current__V *
492 var_sodium_calcium_exchanger_current__F) /
493 (var_sodium_calcium_exchanger_current__R *
494 var_sodium_calcium_exchanger_current__T)))));
495 const NekDouble var_reversal_potentials__Ca_o =
496 var_calcium_dynamics__Ca_o;
497 const NekDouble var_reversal_potentials__Ca_i =
498 var_chaste_interface__calcium_dynamics__Ca_i;
499 const NekDouble var_reversal_potentials__E_Ca =
500 ((0.5 * var_reversal_potentials__R * var_reversal_potentials__T) /
501 var_reversal_potentials__F) *
502 log(var_reversal_potentials__Ca_o /
503 var_reversal_potentials__Ca_i);
504 const NekDouble var_calcium_background_current__E_Ca =
505 var_reversal_potentials__E_Ca;
506 const NekDouble var_calcium_background_current__g_bca =
508 const NekDouble var_calcium_background_current__V =
509 var_chaste_interface__membrane__V;
510 const NekDouble var_calcium_background_current__i_b_Ca =
511 var_calcium_background_current__g_bca *
512 (var_calcium_background_current__V -
513 var_calcium_background_current__E_Ca);
514 const NekDouble var_potassium_pump_current__g_pK =
516 const NekDouble var_potassium_pump_current__V =
517 var_chaste_interface__membrane__V;
518 const NekDouble var_potassium_pump_current__E_K =
519 var_reversal_potentials__E_K;
520 const NekDouble var_potassium_pump_current__i_p_K =
521 (var_potassium_pump_current__g_pK *
522 (var_potassium_pump_current__V -
523 var_potassium_pump_current__E_K)) /
524 (1.0 + exp((25.0 - var_potassium_pump_current__V) /
526 const NekDouble var_calcium_pump_current__K_pCa = 0.0005;
527 const NekDouble var_calcium_pump_current__Ca_i =
528 var_chaste_interface__calcium_dynamics__Ca_i;
529 const NekDouble var_calcium_pump_current__g_pCa =
531 const NekDouble var_calcium_pump_current__i_p_Ca =
532 (var_calcium_pump_current__g_pCa * var_calcium_pump_current__Ca_i) /
533 (var_calcium_pump_current__Ca_i +
534 var_calcium_pump_current__K_pCa);
535 const NekDouble var_chaste_interface__membrane__i_Stim = 0.0;
536 const NekDouble var_rapid_time_dependent_potassium_current_Xr1_gate__V =
537 var_rapid_time_dependent_potassium_current__V;
539 var_rapid_time_dependent_potassium_current_Xr1_gate__alpha_xr1 =
543 var_rapid_time_dependent_potassium_current_Xr1_gate__V) /
546 var_rapid_time_dependent_potassium_current_Xr1_gate__beta_xr1 =
549 exp((var_rapid_time_dependent_potassium_current_Xr1_gate__V +
553 var_rapid_time_dependent_potassium_current_Xr1_gate__tau_xr1 =
555 var_rapid_time_dependent_potassium_current_Xr1_gate__alpha_xr1 *
556 var_rapid_time_dependent_potassium_current_Xr1_gate__beta_xr1;
558 var_rapid_time_dependent_potassium_current_Xr1_gate__xr1_inf =
562 var_rapid_time_dependent_potassium_current_Xr1_gate__V) /
564 const NekDouble var_rapid_time_dependent_potassium_current_Xr2_gate__V =
565 var_rapid_time_dependent_potassium_current__V;
567 var_rapid_time_dependent_potassium_current_Xr2_gate__alpha_xr2 =
571 var_rapid_time_dependent_potassium_current_Xr2_gate__V) /
574 var_rapid_time_dependent_potassium_current_Xr2_gate__beta_xr2 =
577 exp((var_rapid_time_dependent_potassium_current_Xr2_gate__V -
581 var_rapid_time_dependent_potassium_current_Xr2_gate__tau_xr2 =
583 var_rapid_time_dependent_potassium_current_Xr2_gate__alpha_xr2 *
584 var_rapid_time_dependent_potassium_current_Xr2_gate__beta_xr2;
586 var_rapid_time_dependent_potassium_current_Xr2_gate__xr2_inf =
589 exp((var_rapid_time_dependent_potassium_current_Xr2_gate__V +
592 const NekDouble var_slow_time_dependent_potassium_current_Xs_gate__V =
593 var_slow_time_dependent_potassium_current__V;
595 var_slow_time_dependent_potassium_current_Xs_gate__beta_xs =
598 exp((var_slow_time_dependent_potassium_current_Xs_gate__V -
602 var_slow_time_dependent_potassium_current_Xs_gate__alpha_xs =
607 var_slow_time_dependent_potassium_current_Xs_gate__V) /
610 var_slow_time_dependent_potassium_current_Xs_gate__tau_xs =
612 var_slow_time_dependent_potassium_current_Xs_gate__alpha_xs *
613 var_slow_time_dependent_potassium_current_Xs_gate__beta_xs) +
616 var_slow_time_dependent_potassium_current_Xs_gate__xs_inf =
620 var_slow_time_dependent_potassium_current_Xs_gate__V) /
622 const NekDouble var_fast_sodium_current_m_gate__V =
623 var_fast_sodium_current__V;
624 const NekDouble var_fast_sodium_current_m_gate__alpha_m =
625 1.0 / (1.0 + exp(((-60.0) - var_fast_sodium_current_m_gate__V) /
627 const NekDouble var_fast_sodium_current_m_gate__beta_m =
629 (1.0 + exp((var_fast_sodium_current_m_gate__V + 35.0) / 5.0))) +
630 (0.1 / (1.0 + exp((var_fast_sodium_current_m_gate__V - 50.0) /
632 const NekDouble var_fast_sodium_current_m_gate__tau_m =
633 1.0 * var_fast_sodium_current_m_gate__alpha_m *
634 var_fast_sodium_current_m_gate__beta_m;
635 const NekDouble var_fast_sodium_current_m_gate__m_inf =
636 1.0 / pow(1.0 + exp(((-56.86) - var_fast_sodium_current_m_gate__V) /
639 const NekDouble var_fast_sodium_current_h_gate__V =
640 var_fast_sodium_current__V;
641 const NekDouble var_fast_sodium_current_h_gate__h_inf =
643 pow(1.0 + exp((var_fast_sodium_current_h_gate__V + 71.55) / 7.43),
645 const NekDouble var_fast_sodium_current_h_gate__beta_h =
646 (var_fast_sodium_current_h_gate__V < (-40.0))
647 ? ((2.7 * exp(0.079 * var_fast_sodium_current_h_gate__V)) +
648 (310000.0 * exp(0.3485 * var_fast_sodium_current_h_gate__V)))
651 (1.0 + exp((var_fast_sodium_current_h_gate__V + 10.66) /
653 const NekDouble var_fast_sodium_current_h_gate__alpha_h =
654 (var_fast_sodium_current_h_gate__V < (-40.0))
656 exp((-(var_fast_sodium_current_h_gate__V + 80.0)) / 6.8))
658 const NekDouble var_fast_sodium_current_h_gate__tau_h =
659 1.0 / (var_fast_sodium_current_h_gate__alpha_h +
660 var_fast_sodium_current_h_gate__beta_h);
661 const NekDouble var_fast_sodium_current_j_gate__V =
662 var_fast_sodium_current__V;
663 const NekDouble var_fast_sodium_current_j_gate__j_inf =
665 pow(1.0 + exp((var_fast_sodium_current_j_gate__V + 71.55) / 7.43),
667 const NekDouble var_fast_sodium_current_j_gate__alpha_j =
668 (var_fast_sodium_current_j_gate__V < (-40.0))
670 exp(0.2444 * var_fast_sodium_current_j_gate__V)) -
672 exp((-0.04391) * var_fast_sodium_current_j_gate__V))) *
673 (var_fast_sodium_current_j_gate__V + 37.78)) /
676 exp(0.311 * (var_fast_sodium_current_j_gate__V + 79.23))))
678 const NekDouble var_fast_sodium_current_j_gate__beta_j =
679 (var_fast_sodium_current_j_gate__V < (-40.0))
681 exp((-0.01052) * var_fast_sodium_current_j_gate__V)) /
682 (1.0 + exp((-0.1378) *
683 (var_fast_sodium_current_j_gate__V + 40.14))))
684 : ((0.6 * exp(0.057 * var_fast_sodium_current_j_gate__V)) /
685 (1.0 + exp((-0.1) * (var_fast_sodium_current_j_gate__V +
687 const NekDouble var_fast_sodium_current_j_gate__tau_j =
688 1.0 / (var_fast_sodium_current_j_gate__alpha_j +
689 var_fast_sodium_current_j_gate__beta_j);
690 const NekDouble var_L_type_Ca_current_d_gate__V =
691 var_L_type_Ca_current__V;
692 const NekDouble var_L_type_Ca_current_d_gate__alpha_d =
694 (1.0 + exp(((-35.0) - var_L_type_Ca_current_d_gate__V) / 13.0))) +
696 const NekDouble var_L_type_Ca_current_d_gate__gamma_d =
697 1.0 / (1.0 + exp((50.0 - var_L_type_Ca_current_d_gate__V) /
699 const NekDouble var_L_type_Ca_current_d_gate__beta_d =
700 1.4 / (1.0 + exp((var_L_type_Ca_current_d_gate__V + 5.0) /
702 const NekDouble var_L_type_Ca_current_d_gate__tau_d =
703 (1.0 * var_L_type_Ca_current_d_gate__alpha_d *
704 var_L_type_Ca_current_d_gate__beta_d) +
705 var_L_type_Ca_current_d_gate__gamma_d;
706 const NekDouble var_L_type_Ca_current_d_gate__d_inf =
707 1.0 / (1.0 + exp(((-8.0) - var_L_type_Ca_current_d_gate__V) /
709 const NekDouble var_L_type_Ca_current_f_gate__V =
710 var_L_type_Ca_current__V;
711 const NekDouble var_L_type_Ca_current_f_gate__tau_f =
713 exp((-pow(var_L_type_Ca_current_f_gate__V + 27.0, 2.0)) / 225.0)) +
715 (1.0 + exp((13.0 - var_L_type_Ca_current_f_gate__V) / 10.0))) +
717 (1.0 + exp((var_L_type_Ca_current_f_gate__V + 30.0) / 10.0))) +
719 const NekDouble var_L_type_Ca_current_f_gate__f_inf =
720 1.0 / (1.0 + exp((var_L_type_Ca_current_f_gate__V + 20.0) /
722 const NekDouble var_L_type_Ca_current_f2_gate__V =
723 var_L_type_Ca_current__V;
724 const NekDouble var_L_type_Ca_current_f2_gate__f2_inf =
726 (1.0 + exp((var_L_type_Ca_current_f2_gate__V + 35.0) / 7.0))) +
728 const NekDouble var_L_type_Ca_current_f2_gate__tau_f2 =
729 (562.0 * exp((-pow(var_L_type_Ca_current_f2_gate__V + 27.0, 2.0)) /
732 (1.0 + exp((25.0 - var_L_type_Ca_current_f2_gate__V) / 10.0))) +
733 (80.0 / (1.0 + exp((var_L_type_Ca_current_f2_gate__V + 30.0) /
735 const NekDouble var_L_type_Ca_current_fCass_gate__Ca_ss =
736 var_L_type_Ca_current__Ca_ss;
737 const NekDouble var_L_type_Ca_current_fCass_gate__tau_fCass =
739 (1.0 + pow(var_L_type_Ca_current_fCass_gate__Ca_ss / 0.05, 2.0))) +
741 const NekDouble var_L_type_Ca_current_fCass_gate__fCass_inf =
743 (1.0 + pow(var_L_type_Ca_current_fCass_gate__Ca_ss / 0.05, 2.0))) +
745 const NekDouble var_transient_outward_current_s_gate__V =
746 var_transient_outward_current__V;
747 const NekDouble var_transient_outward_current_s_gate__s_inf =
748 1.0 / (1.0 + exp((var_transient_outward_current_s_gate__V +
751 const NekDouble var_transient_outward_current_s_gate__tau_s =
753 exp((-pow(var_transient_outward_current_s_gate__V +
s_tau_f2,
759 (1.0 + exp((var_transient_outward_current_s_gate__V - 20.0) /
762 const NekDouble var_transient_outward_current_r_gate__V =
763 var_transient_outward_current__V;
764 const NekDouble var_transient_outward_current_r_gate__r_inf =
765 1.0 / (1.0 + exp((20.0 - var_transient_outward_current_r_gate__V) /
767 const NekDouble var_transient_outward_current_r_gate__tau_r =
769 exp((-pow(var_transient_outward_current_r_gate__V + 40.0, 2.0)) /
772 const NekDouble var_calcium_dynamics__Ca_i =
773 var_chaste_interface__calcium_dynamics__Ca_i;
774 const NekDouble var_calcium_dynamics__Ca_SR =
775 var_chaste_interface__calcium_dynamics__Ca_SR;
776 const NekDouble var_calcium_dynamics__Ca_ss =
777 var_chaste_interface__calcium_dynamics__Ca_ss;
778 const NekDouble var_calcium_dynamics__V_rel = 0.102;
779 const NekDouble var_calcium_dynamics__R_prime =
780 var_chaste_interface__calcium_dynamics__R_prime;
781 const NekDouble var_calcium_dynamics__k1_prime =
783 const NekDouble var_calcium_dynamics__max_sr = 2.5;
784 const NekDouble var_calcium_dynamics__EC = 1.5;
785 const NekDouble var_calcium_dynamics__min_sr = 1.0;
786 const NekDouble var_calcium_dynamics__kcasr =
787 var_calcium_dynamics__max_sr -
788 ((var_calcium_dynamics__max_sr - var_calcium_dynamics__min_sr) /
789 (1.0 + pow(var_calcium_dynamics__EC / var_calcium_dynamics__Ca_SR,
791 const NekDouble var_calcium_dynamics__k1 =
792 var_calcium_dynamics__k1_prime /
793 var_calcium_dynamics__kcasr;
794 const NekDouble var_calcium_dynamics__k3 = 0.06;
795 const NekDouble var_calcium_dynamics__O =
796 (var_calcium_dynamics__k1 * pow(var_calcium_dynamics__Ca_ss, 2.0) *
797 var_calcium_dynamics__R_prime) /
798 (var_calcium_dynamics__k3 +
799 (var_calcium_dynamics__k1 *
800 pow(var_calcium_dynamics__Ca_ss, 2.0)));
801 const NekDouble var_calcium_dynamics__i_rel =
802 var_calcium_dynamics__V_rel * var_calcium_dynamics__O *
803 (var_calcium_dynamics__Ca_SR -
804 var_calcium_dynamics__Ca_ss);
805 const NekDouble var_calcium_dynamics__Vmax_up =
807 const NekDouble var_calcium_dynamics__K_up = 0.00025;
808 const NekDouble var_calcium_dynamics__i_up =
809 var_calcium_dynamics__Vmax_up /
810 (1.0 + (pow(var_calcium_dynamics__K_up, 2.0) /
811 pow(var_calcium_dynamics__Ca_i,
813 const NekDouble var_calcium_dynamics__V_leak =
815 const NekDouble var_calcium_dynamics__i_leak =
816 var_calcium_dynamics__V_leak *
817 (var_calcium_dynamics__Ca_SR -
818 var_calcium_dynamics__Ca_i);
819 const NekDouble var_calcium_dynamics__V_xfer =
821 const NekDouble var_calcium_dynamics__i_xfer =
822 var_calcium_dynamics__V_xfer *
823 (var_calcium_dynamics__Ca_ss -
824 var_calcium_dynamics__Ca_i);
825 const NekDouble var_calcium_dynamics__k2_prime =
827 const NekDouble var_calcium_dynamics__k2 =
828 var_calcium_dynamics__k2_prime *
829 var_calcium_dynamics__kcasr;
830 const NekDouble var_calcium_dynamics__k4 = 0.005;
831 const NekDouble var_calcium_dynamics__Buf_c = 0.2;
832 const NekDouble var_calcium_dynamics__K_buf_c = 0.001;
833 const NekDouble var_calcium_dynamics__Ca_i_bufc =
836 ((var_calcium_dynamics__Buf_c * var_calcium_dynamics__K_buf_c) /
837 pow(var_calcium_dynamics__Ca_i + var_calcium_dynamics__K_buf_c,
839 const NekDouble var_calcium_dynamics__K_buf_sr = 0.3;
840 const NekDouble var_calcium_dynamics__Buf_sr = 10.0;
841 const NekDouble var_calcium_dynamics__Ca_sr_bufsr =
844 ((var_calcium_dynamics__Buf_sr * var_calcium_dynamics__K_buf_sr) /
845 pow(var_calcium_dynamics__Ca_SR + var_calcium_dynamics__K_buf_sr,
847 const NekDouble var_calcium_dynamics__Buf_ss = 0.4;
848 const NekDouble var_calcium_dynamics__K_buf_ss = 0.00025;
849 const NekDouble var_calcium_dynamics__Ca_ss_bufss =
852 ((var_calcium_dynamics__Buf_ss * var_calcium_dynamics__K_buf_ss) /
853 pow(var_calcium_dynamics__Ca_ss + var_calcium_dynamics__K_buf_ss,
855 const NekDouble var_calcium_dynamics__V_sr = 0.001094;
856 const NekDouble var_calcium_dynamics__V_ss = 5.468e-05;
857 const NekDouble var_calcium_dynamics__V_c =
859 const NekDouble var_calcium_dynamics__F =
861 const NekDouble var_calcium_dynamics__Cm = var_membrane__Cm;
862 const NekDouble var_calcium_dynamics__i_CaL =
863 var_L_type_Ca_current__i_CaL;
864 const NekDouble var_calcium_dynamics__i_NaCa =
865 var_sodium_calcium_exchanger_current__i_NaCa;
866 const NekDouble var_calcium_dynamics__i_p_Ca =
867 var_calcium_pump_current__i_p_Ca;
868 const NekDouble var_calcium_dynamics__i_b_Ca =
869 var_calcium_background_current__i_b_Ca;
870 const NekDouble var_calcium_dynamics__d_Ca_i_d_environment__time =
871 var_calcium_dynamics__Ca_i_bufc *
872 (((((var_calcium_dynamics__i_leak - var_calcium_dynamics__i_up) *
873 var_calcium_dynamics__V_sr) /
874 var_calcium_dynamics__V_c) +
875 var_calcium_dynamics__i_xfer) -
877 ((var_calcium_dynamics__i_b_Ca + var_calcium_dynamics__i_p_Ca) -
878 (2.0 * var_calcium_dynamics__i_NaCa)) *
879 var_calcium_dynamics__Cm) /
880 (2.0 * 1.0 * var_calcium_dynamics__V_c *
881 var_calcium_dynamics__F)));
883 const NekDouble var_calcium_dynamics__d_Ca_SR_d_environment__time =
884 var_calcium_dynamics__Ca_sr_bufsr *
885 (var_calcium_dynamics__i_up -
886 (var_calcium_dynamics__i_rel +
887 var_calcium_dynamics__i_leak));
889 const NekDouble var_calcium_dynamics__d_Ca_ss_d_environment__time =
890 var_calcium_dynamics__Ca_ss_bufss *
891 (((((-1.0) * var_calcium_dynamics__i_CaL *
892 var_calcium_dynamics__Cm) /
893 (2.0 * 1.0 * var_calcium_dynamics__V_ss *
894 var_calcium_dynamics__F)) +
895 ((var_calcium_dynamics__i_rel * var_calcium_dynamics__V_sr) /
896 var_calcium_dynamics__V_ss)) -
897 ((var_calcium_dynamics__i_xfer * var_calcium_dynamics__V_c) /
898 var_calcium_dynamics__V_ss));
900 const NekDouble var_calcium_dynamics__d_R_prime_d_environment__time =
901 ((-var_calcium_dynamics__k2) * var_calcium_dynamics__Ca_ss *
902 var_calcium_dynamics__R_prime) +
903 (var_calcium_dynamics__k4 *
904 (1.0 - var_calcium_dynamics__R_prime));
907 const NekDouble var_sodium_dynamics__Cm = var_membrane__Cm;
908 const NekDouble var_sodium_dynamics__V_c =
910 const NekDouble var_sodium_dynamics__i_Na =
911 var_fast_sodium_current__i_Na;
912 const NekDouble var_sodium_dynamics__i_NaCa =
913 var_sodium_calcium_exchanger_current__i_NaCa;
914 const NekDouble var_sodium_dynamics__i_NaK =
915 var_sodium_potassium_pump_current__i_NaK;
916 const NekDouble var_sodium_dynamics__i_b_Na =
917 var_sodium_background_current__i_b_Na;
918 const NekDouble var_sodium_dynamics__d_Na_i_d_environment__time =
920 (var_sodium_dynamics__i_Na + var_sodium_dynamics__i_b_Na +
921 (3.0 * var_sodium_dynamics__i_NaK) +
922 (3.0 * var_sodium_dynamics__i_NaCa))) /
923 (1.0 * var_sodium_dynamics__V_c * var_sodium_dynamics__F)) *
924 var_sodium_dynamics__Cm;
925 const NekDouble var_potassium_dynamics__F =
927 const NekDouble var_potassium_dynamics__Cm = var_membrane__Cm;
928 const NekDouble var_potassium_dynamics__V_c =
930 const NekDouble var_potassium_dynamics__i_K1 =
931 var_inward_rectifier_potassium_current__i_K1;
932 const NekDouble var_potassium_dynamics__i_to =
933 var_transient_outward_current__i_to;
934 const NekDouble var_potassium_dynamics__i_NaK =
935 var_sodium_potassium_pump_current__i_NaK;
936 const NekDouble var_potassium_dynamics__i_Kr =
937 var_rapid_time_dependent_potassium_current__i_Kr;
938 const NekDouble var_potassium_dynamics__i_Ks =
939 var_slow_time_dependent_potassium_current__i_Ks;
940 const NekDouble var_potassium_dynamics__i_p_K =
941 var_potassium_pump_current__i_p_K;
943 var_potassium_dynamics__chaste_interface__chaste_membrane_capacitance =
945 const NekDouble var_potassium_dynamics__i_Stim_converter =
946 var_chaste_interface__membrane__i_Stim;
947 const NekDouble var_potassium_dynamics__i_Stim =
948 var_potassium_dynamics__i_Stim_converter /
949 var_potassium_dynamics__chaste_interface__chaste_membrane_capacitance;
950 const NekDouble var_potassium_dynamics__d_K_i_d_environment__time =
952 ((var_potassium_dynamics__i_K1 + var_potassium_dynamics__i_to +
953 var_potassium_dynamics__i_Kr + var_potassium_dynamics__i_Ks +
954 var_potassium_dynamics__i_p_K +
955 var_potassium_dynamics__i_Stim) -
956 (2.0 * var_potassium_dynamics__i_NaK))) /
957 (1.0 * var_potassium_dynamics__V_c * var_potassium_dynamics__F)) *
958 var_potassium_dynamics__Cm;
960 var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time =
961 var_calcium_dynamics__d_Ca_i_d_environment__time;
963 var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time =
964 var_calcium_dynamics__d_Ca_SR_d_environment__time;
966 var_chaste_interface__calcium_dynamics__d_Ca_ss_d_environment__time =
967 var_calcium_dynamics__d_Ca_ss_d_environment__time;
969 var_chaste_interface__calcium_dynamics__d_R_prime_d_environment__time =
970 var_calcium_dynamics__d_R_prime_d_environment__time;
972 var_chaste_interface__sodium_dynamics__d_Na_i_d_environment__time =
973 var_sodium_dynamics__d_Na_i_d_environment__time;
975 var_chaste_interface__potassium_dynamics__d_K_i_d_environment__time =
976 var_potassium_dynamics__d_K_i_d_environment__time;
977 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_i =
978 var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time;
979 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_SR =
980 var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time;
981 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_ss =
982 var_chaste_interface__calcium_dynamics__d_Ca_ss_d_environment__time;
983 const NekDouble d_dt_chaste_interface__calcium_dynamics__R_prime =
984 var_chaste_interface__calcium_dynamics__d_R_prime_d_environment__time;
985 const NekDouble d_dt_chaste_interface__sodium_dynamics__Na_i =
986 var_chaste_interface__sodium_dynamics__d_Na_i_d_environment__time;
987 const NekDouble d_dt_chaste_interface__potassium_dynamics__K_i =
988 var_chaste_interface__potassium_dynamics__d_K_i_d_environment__time;
991 var_inward_rectifier_potassium_current__i_K1;
993 var_transient_outward_current__i_to;
995 var_rapid_time_dependent_potassium_current__i_Kr;
997 var_slow_time_dependent_potassium_current__i_Ks;
999 var_L_type_Ca_current__i_CaL;
1001 var_sodium_potassium_pump_current__i_NaK;
1003 var_fast_sodium_current__i_Na;
1005 var_sodium_background_current__i_b_Na;
1007 var_sodium_calcium_exchanger_current__i_NaCa;
1009 var_calcium_background_current__i_b_Ca;
1011 var_potassium_pump_current__i_p_K;
1013 var_calcium_pump_current__i_p_Ca;
1014 const NekDouble var_membrane__i_Stim_converter =
1015 var_chaste_interface__membrane__i_Stim;
1017 var_membrane__chaste_interface__chaste_membrane_capacitance =
1020 var_membrane__i_Stim_converter /
1021 var_membrane__chaste_interface__chaste_membrane_capacitance;
1022 const NekDouble var_membrane__d_V_d_environment__time =
1024 (var_membrane__i_K1 + var_membrane__i_to + var_membrane__i_Kr +
1025 var_membrane__i_Ks + var_membrane__i_CaL + var_membrane__i_NaK +
1026 var_membrane__i_Na + var_membrane__i_b_Na + var_membrane__i_NaCa +
1027 var_membrane__i_b_Ca + var_membrane__i_p_K + var_membrane__i_p_Ca +
1028 var_membrane__i_Stim);
1030 var_chaste_interface__membrane__d_V_d_environment__time =
1031 var_membrane__d_V_d_environment__time;
1032 d_dt_chaste_interface__membrane__V =
1033 var_chaste_interface__membrane__d_V_d_environment__time;
1036 outarray[0][i] = d_dt_chaste_interface__membrane__V;
1038 var_rapid_time_dependent_potassium_current_Xr1_gate__xr1_inf;
1040 var_rapid_time_dependent_potassium_current_Xr1_gate__tau_xr1;
1042 var_rapid_time_dependent_potassium_current_Xr2_gate__xr2_inf;
1044 var_rapid_time_dependent_potassium_current_Xr2_gate__tau_xr2;
1046 var_slow_time_dependent_potassium_current_Xs_gate__xs_inf;
1048 var_slow_time_dependent_potassium_current_Xs_gate__tau_xs;
1049 outarray[4][i] = var_fast_sodium_current_m_gate__m_inf;
1050 m_gates_tau[3][i] = var_fast_sodium_current_m_gate__tau_m;
1051 outarray[5][i] = var_fast_sodium_current_h_gate__h_inf;
1052 m_gates_tau[4][i] = var_fast_sodium_current_h_gate__tau_h;
1053 outarray[6][i] = var_fast_sodium_current_j_gate__j_inf;
1054 m_gates_tau[5][i] = var_fast_sodium_current_j_gate__tau_j;
1055 outarray[7][i] = var_L_type_Ca_current_d_gate__d_inf;
1056 m_gates_tau[6][i] = var_L_type_Ca_current_d_gate__tau_d;
1057 outarray[8][i] = var_L_type_Ca_current_f_gate__f_inf;
1058 m_gates_tau[7][i] = var_L_type_Ca_current_f_gate__tau_f;
1059 outarray[9][i] = var_L_type_Ca_current_f2_gate__f2_inf;
1060 m_gates_tau[8][i] = var_L_type_Ca_current_f2_gate__tau_f2;
1061 outarray[10][i] = var_L_type_Ca_current_fCass_gate__fCass_inf;
1062 m_gates_tau[9][i] = var_L_type_Ca_current_fCass_gate__tau_fCass;
1063 outarray[11][i] = var_transient_outward_current_s_gate__s_inf;
1064 m_gates_tau[10][i] = var_transient_outward_current_s_gate__tau_s;
1065 outarray[12][i] = var_transient_outward_current_r_gate__r_inf;
1066 m_gates_tau[11][i] = var_transient_outward_current_r_gate__tau_r;
1067 outarray[13][i] = d_dt_chaste_interface__calcium_dynamics__Ca_i;
1068 outarray[14][i] = d_dt_chaste_interface__calcium_dynamics__Ca_SR;
1069 outarray[15][i] = d_dt_chaste_interface__calcium_dynamics__Ca_ss;
1070 outarray[16][i] = d_dt_chaste_interface__calcium_dynamics__R_prime;
1071 outarray[17][i] = d_dt_chaste_interface__sodium_dynamics__Na_i;
1072 outarray[18][i] = d_dt_chaste_interface__potassium_dynamics__K_i;
Array< OneD, Array< OneD, NekDouble > > m_cellSol
Cell model solution variables.
std::vector< int > m_concentrations
Indices of cell model variables which are concentrations.
std::vector< int > m_gates
Indices of cell model variables which are gates.
size_t m_nq
Number of physical points.
size_t m_nvar
Number of variables in cell model (inc. transmembrane voltage)
Array< OneD, Array< OneD, NekDouble > > m_gates_tau
Storage for gate tau values.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
static std::string RegisterEnumValue(std::string pEnum, std::string pString, int pEnumValue)
Registers an enumeration value.
static std::string RegisterDefaultSolverInfo(const std::string &pName, const std::string &pValue)
Registers the default string value of a solver info property.
TenTusscher06(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Constructor.
static std::string lookupIds[]
enum Variants model_variant
virtual void v_GenerateSummary(SummaryList &s) override
Prints a summary of the model parameters.
virtual void v_Update(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time) override
virtual void v_SetInitialConditions() override
static CellModelSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Creates an instance of this class.
static std::string className
Name of class.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
std::vector< std::pair< std::string, std::string > > SummaryList
void AddSummaryItem(SummaryList &l, const std::string &name, const std::string &value)
Adds a summary item to the summary info list.
The above copyright notice and this permission notice shall be included.
CellModelFactory & GetCellModelFactory()
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
scalarT< T > log(scalarT< T > in)
scalarT< T > sqrt(scalarT< T > in)