148 for (
unsigned int i = 0; i <
m_nq; ++i)
152 NekDouble var_chaste_interface__membrane__V = inarray[0][i];
155 var_chaste_interface__rapid_time_dependent_potassium_current_Xr1_gate__Xr1 =
159 var_chaste_interface__rapid_time_dependent_potassium_current_Xr2_gate__Xr2 =
163 var_chaste_interface__slow_time_dependent_potassium_current_Xs_gate__Xs =
166 NekDouble var_chaste_interface__fast_sodium_current_m_gate__m =
169 NekDouble var_chaste_interface__fast_sodium_current_h_gate__h =
172 NekDouble var_chaste_interface__fast_sodium_current_j_gate__j =
175 NekDouble var_chaste_interface__L_type_Ca_current_d_gate__d =
178 NekDouble var_chaste_interface__L_type_Ca_current_f_gate__f =
181 NekDouble var_chaste_interface__L_type_Ca_current_f2_gate__f2 =
184 NekDouble var_chaste_interface__L_type_Ca_current_fCass_gate__fCass =
187 NekDouble var_chaste_interface__transient_outward_current_s_gate__s =
190 NekDouble var_chaste_interface__transient_outward_current_r_gate__r =
193 NekDouble var_chaste_interface__calcium_dynamics__Ca_i = inarray[13][i];
195 NekDouble var_chaste_interface__calcium_dynamics__Ca_SR =
198 NekDouble var_chaste_interface__calcium_dynamics__Ca_ss =
201 NekDouble var_chaste_interface__calcium_dynamics__R_prime =
204 NekDouble var_chaste_interface__sodium_dynamics__Na_i = inarray[17][i];
206 NekDouble var_chaste_interface__potassium_dynamics__K_i =
211 NekDouble d_dt_chaste_interface__membrane__V;
212 const NekDouble var_membrane__R = 8314.472;
214 const NekDouble var_membrane__F = 96485.3415;
215 const NekDouble var_membrane__Cm = 0.185;
216 const NekDouble var_membrane__V_c = 0.016404;
217 const NekDouble var_inward_rectifier_potassium_current__V =
218 var_chaste_interface__membrane__V;
219 const NekDouble var_reversal_potentials__K_i =
220 var_chaste_interface__potassium_dynamics__K_i;
221 const NekDouble var_reversal_potentials__R =
223 const NekDouble var_reversal_potentials__T = var_membrane__T;
224 const NekDouble var_reversal_potentials__F =
227 const NekDouble var_reversal_potentials__K_o =
228 var_potassium_dynamics__K_o;
229 const NekDouble var_reversal_potentials__E_K =
230 ((var_reversal_potentials__R * var_reversal_potentials__T) /
231 var_reversal_potentials__F) *
232 log(var_reversal_potentials__K_o /
233 var_reversal_potentials__K_i);
234 const NekDouble var_inward_rectifier_potassium_current__E_K =
235 var_reversal_potentials__E_K;
236 const NekDouble var_inward_rectifier_potassium_current__beta_K1 =
238 exp(0.0002 * ((var_inward_rectifier_potassium_current__V -
239 var_inward_rectifier_potassium_current__E_K) +
241 exp(0.1 * ((var_inward_rectifier_potassium_current__V -
242 var_inward_rectifier_potassium_current__E_K) -
246 (var_inward_rectifier_potassium_current__V -
247 var_inward_rectifier_potassium_current__E_K)));
248 const NekDouble var_inward_rectifier_potassium_current__alpha_K1 =
250 (1.0 + exp(0.06 * ((var_inward_rectifier_potassium_current__V -
251 var_inward_rectifier_potassium_current__E_K) -
253 const NekDouble var_inward_rectifier_potassium_current__xK1_inf =
254 var_inward_rectifier_potassium_current__alpha_K1 /
255 (var_inward_rectifier_potassium_current__alpha_K1 +
256 var_inward_rectifier_potassium_current__beta_K1);
257 const NekDouble var_inward_rectifier_potassium_current__K_o =
258 var_potassium_dynamics__K_o;
259 const NekDouble var_inward_rectifier_potassium_current__g_K1 =
261 const NekDouble var_inward_rectifier_potassium_current__i_K1 =
262 var_inward_rectifier_potassium_current__g_K1 *
263 var_inward_rectifier_potassium_current__xK1_inf *
264 sqrt(var_inward_rectifier_potassium_current__K_o / 5.4) *
265 (var_inward_rectifier_potassium_current__V -
266 var_inward_rectifier_potassium_current__E_K);
267 const NekDouble var_transient_outward_current__s =
268 var_chaste_interface__transient_outward_current_s_gate__s;
269 const NekDouble var_transient_outward_current__r =
270 var_chaste_interface__transient_outward_current_r_gate__r;
271 const NekDouble var_transient_outward_current__g_to =
273 const NekDouble var_transient_outward_current__V =
274 var_chaste_interface__membrane__V;
275 const NekDouble var_transient_outward_current__E_K =
276 var_reversal_potentials__E_K;
277 const NekDouble var_transient_outward_current__i_to =
278 var_transient_outward_current__g_to *
279 var_transient_outward_current__r *
280 var_transient_outward_current__s *
281 (var_transient_outward_current__V -
282 var_transient_outward_current__E_K);
283 const NekDouble var_rapid_time_dependent_potassium_current__Xr1 =
284 var_chaste_interface__rapid_time_dependent_potassium_current_Xr1_gate__Xr1;
285 const NekDouble var_rapid_time_dependent_potassium_current__Xr2 =
286 var_chaste_interface__rapid_time_dependent_potassium_current_Xr2_gate__Xr2;
287 const NekDouble var_rapid_time_dependent_potassium_current__V =
288 var_chaste_interface__membrane__V;
289 const NekDouble var_rapid_time_dependent_potassium_current__K_o =
290 var_potassium_dynamics__K_o;
291 const NekDouble var_rapid_time_dependent_potassium_current__E_K =
292 var_reversal_potentials__E_K;
293 const NekDouble var_rapid_time_dependent_potassium_current__g_Kr =
295 const NekDouble var_rapid_time_dependent_potassium_current__i_Kr =
296 var_rapid_time_dependent_potassium_current__g_Kr *
297 sqrt(var_rapid_time_dependent_potassium_current__K_o / 5.4) *
298 var_rapid_time_dependent_potassium_current__Xr1 *
299 var_rapid_time_dependent_potassium_current__Xr2 *
300 (var_rapid_time_dependent_potassium_current__V -
301 var_rapid_time_dependent_potassium_current__E_K);
302 const NekDouble var_slow_time_dependent_potassium_current__g_Ks =
304 const NekDouble var_sodium_dynamics__Na_o = 140.0;
305 const NekDouble var_reversal_potentials__Na_o =
306 var_sodium_dynamics__Na_o;
307 const NekDouble var_reversal_potentials__Na_i =
308 var_chaste_interface__sodium_dynamics__Na_i;
309 const NekDouble var_reversal_potentials__P_kna = 0.03;
310 const NekDouble var_reversal_potentials__E_Ks =
311 ((var_reversal_potentials__R * var_reversal_potentials__T) /
312 var_reversal_potentials__F) *
313 log((var_reversal_potentials__K_o +
314 (var_reversal_potentials__P_kna *
315 var_reversal_potentials__Na_o)) /
316 (var_reversal_potentials__K_i +
317 (var_reversal_potentials__P_kna *
318 var_reversal_potentials__Na_i)));
319 const NekDouble var_slow_time_dependent_potassium_current__E_Ks =
320 var_reversal_potentials__E_Ks;
321 const NekDouble var_slow_time_dependent_potassium_current__V =
322 var_chaste_interface__membrane__V;
323 const NekDouble var_slow_time_dependent_potassium_current__Xs =
324 var_chaste_interface__slow_time_dependent_potassium_current_Xs_gate__Xs;
325 const NekDouble var_slow_time_dependent_potassium_current__i_Ks =
326 var_slow_time_dependent_potassium_current__g_Ks *
327 pow(var_slow_time_dependent_potassium_current__Xs, 2.0) *
328 (var_slow_time_dependent_potassium_current__V -
329 var_slow_time_dependent_potassium_current__E_Ks);
330 const NekDouble var_L_type_Ca_current__Ca_ss =
331 var_chaste_interface__calcium_dynamics__Ca_ss;
332 const NekDouble var_L_type_Ca_current__g_CaL =
334 const NekDouble var_L_type_Ca_current__f =
335 var_chaste_interface__L_type_Ca_current_f_gate__f;
336 const NekDouble var_L_type_Ca_current__d =
337 var_chaste_interface__L_type_Ca_current_d_gate__d;
338 const NekDouble var_L_type_Ca_current__F =
340 const NekDouble var_L_type_Ca_current__f2 =
341 var_chaste_interface__L_type_Ca_current_f2_gate__f2;
342 const NekDouble var_L_type_Ca_current__fCass =
343 var_chaste_interface__L_type_Ca_current_fCass_gate__fCass;
344 const NekDouble var_L_type_Ca_current__V =
345 var_chaste_interface__membrane__V;
346 const NekDouble var_L_type_Ca_current__T = var_membrane__T;
347 const NekDouble var_calcium_dynamics__Ca_o = 2.0;
348 const NekDouble var_L_type_Ca_current__Ca_o =
349 var_calcium_dynamics__Ca_o;
350 const NekDouble var_L_type_Ca_current__R =
352 const NekDouble var_L_type_Ca_current__i_CaL =
353 (((var_L_type_Ca_current__g_CaL * var_L_type_Ca_current__d *
354 var_L_type_Ca_current__f * var_L_type_Ca_current__f2 *
355 var_L_type_Ca_current__fCass * 4.0 *
356 (var_L_type_Ca_current__V - 15.0) *
357 pow(var_L_type_Ca_current__F, 2.0)) /
358 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) *
359 ((0.25 * var_L_type_Ca_current__Ca_ss *
360 exp((2.0 * (var_L_type_Ca_current__V - 15.0) *
361 var_L_type_Ca_current__F) /
362 (var_L_type_Ca_current__R * var_L_type_Ca_current__T))) -
363 var_L_type_Ca_current__Ca_o)) /
364 (exp((2.0 * (var_L_type_Ca_current__V - 15.0) *
365 var_L_type_Ca_current__F) /
366 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) -
368 const NekDouble var_sodium_potassium_pump_current__Na_i =
369 var_chaste_interface__sodium_dynamics__Na_i;
370 const NekDouble var_sodium_potassium_pump_current__R =
372 const NekDouble var_sodium_potassium_pump_current__T =
374 const NekDouble var_sodium_potassium_pump_current__V =
375 var_chaste_interface__membrane__V;
376 const NekDouble var_sodium_potassium_pump_current__K_mk =
378 const NekDouble var_sodium_potassium_pump_current__P_NaK =
380 const NekDouble var_sodium_potassium_pump_current__K_mNa =
382 const NekDouble var_sodium_potassium_pump_current__F =
384 const NekDouble var_sodium_potassium_pump_current__K_o =
385 var_potassium_dynamics__K_o;
386 const NekDouble var_sodium_potassium_pump_current__i_NaK =
387 ((((var_sodium_potassium_pump_current__P_NaK *
388 var_sodium_potassium_pump_current__K_o) /
389 (var_sodium_potassium_pump_current__K_o +
390 var_sodium_potassium_pump_current__K_mk)) *
391 var_sodium_potassium_pump_current__Na_i) /
392 (var_sodium_potassium_pump_current__Na_i +
393 var_sodium_potassium_pump_current__K_mNa)) /
395 (0.1245 * exp(((-0.1) * var_sodium_potassium_pump_current__V *
396 var_sodium_potassium_pump_current__F) /
397 (var_sodium_potassium_pump_current__R *
398 var_sodium_potassium_pump_current__T))) +
400 exp(((-var_sodium_potassium_pump_current__V) *
401 var_sodium_potassium_pump_current__F) /
402 (var_sodium_potassium_pump_current__R *
403 var_sodium_potassium_pump_current__T))));
404 const NekDouble var_fast_sodium_current__j =
405 var_chaste_interface__fast_sodium_current_j_gate__j;
406 const NekDouble var_fast_sodium_current__h =
407 var_chaste_interface__fast_sodium_current_h_gate__h;
408 const NekDouble var_fast_sodium_current__g_Na =
410 const NekDouble var_fast_sodium_current__m =
411 var_chaste_interface__fast_sodium_current_m_gate__m;
412 const NekDouble var_fast_sodium_current__V =
413 var_chaste_interface__membrane__V;
414 const NekDouble var_reversal_potentials__E_Na =
415 ((var_reversal_potentials__R * var_reversal_potentials__T) /
416 var_reversal_potentials__F) *
417 log(var_reversal_potentials__Na_o /
418 var_reversal_potentials__Na_i);
419 const NekDouble var_fast_sodium_current__E_Na =
420 var_reversal_potentials__E_Na;
421 const NekDouble var_fast_sodium_current__i_Na =
422 var_fast_sodium_current__g_Na *
423 pow(var_fast_sodium_current__m, 3.0) * var_fast_sodium_current__h *
424 var_fast_sodium_current__j *
425 (var_fast_sodium_current__V -
426 var_fast_sodium_current__E_Na);
427 const NekDouble var_sodium_background_current__V =
428 var_chaste_interface__membrane__V;
429 const NekDouble var_sodium_background_current__E_Na =
430 var_reversal_potentials__E_Na;
431 const NekDouble var_sodium_background_current__g_bna =
433 const NekDouble var_sodium_background_current__i_b_Na =
434 var_sodium_background_current__g_bna *
435 (var_sodium_background_current__V -
436 var_sodium_background_current__E_Na);
437 const NekDouble var_sodium_calcium_exchanger_current__alpha =
439 const NekDouble var_sodium_calcium_exchanger_current__gamma =
441 const NekDouble var_sodium_calcium_exchanger_current__K_sat =
443 const NekDouble var_sodium_calcium_exchanger_current__Km_Ca =
445 const NekDouble var_sodium_calcium_exchanger_current__K_NaCa =
447 const NekDouble var_sodium_calcium_exchanger_current__F =
449 const NekDouble var_sodium_calcium_exchanger_current__Ca_i =
450 var_chaste_interface__calcium_dynamics__Ca_i;
451 const NekDouble var_sodium_calcium_exchanger_current__Ca_o =
452 var_calcium_dynamics__Ca_o;
453 const NekDouble var_sodium_calcium_exchanger_current__V =
454 var_chaste_interface__membrane__V;
455 const NekDouble var_sodium_calcium_exchanger_current__R =
457 const NekDouble var_sodium_calcium_exchanger_current__Km_Nai =
459 const NekDouble var_sodium_calcium_exchanger_current__Na_o =
460 var_sodium_dynamics__Na_o;
461 const NekDouble var_sodium_calcium_exchanger_current__Na_i =
462 var_chaste_interface__sodium_dynamics__Na_i;
463 const NekDouble var_sodium_calcium_exchanger_current__T =
465 const NekDouble var_sodium_calcium_exchanger_current__i_NaCa =
466 (var_sodium_calcium_exchanger_current__K_NaCa *
467 ((exp((var_sodium_calcium_exchanger_current__gamma *
468 var_sodium_calcium_exchanger_current__V *
469 var_sodium_calcium_exchanger_current__F) /
470 (var_sodium_calcium_exchanger_current__R *
471 var_sodium_calcium_exchanger_current__T)) *
472 pow(var_sodium_calcium_exchanger_current__Na_i, 3.0) *
473 var_sodium_calcium_exchanger_current__Ca_o) -
474 (exp(((var_sodium_calcium_exchanger_current__gamma - 1.0) *
475 var_sodium_calcium_exchanger_current__V *
476 var_sodium_calcium_exchanger_current__F) /
477 (var_sodium_calcium_exchanger_current__R *
478 var_sodium_calcium_exchanger_current__T)) *
479 pow(var_sodium_calcium_exchanger_current__Na_o, 3.0) *
480 var_sodium_calcium_exchanger_current__Ca_i *
481 var_sodium_calcium_exchanger_current__alpha))) /
482 ((pow(var_sodium_calcium_exchanger_current__Km_Nai, 3.0) +
483 pow(var_sodium_calcium_exchanger_current__Na_o, 3.0)) *
484 (var_sodium_calcium_exchanger_current__Km_Ca +
485 var_sodium_calcium_exchanger_current__Ca_o) *
487 (var_sodium_calcium_exchanger_current__K_sat *
488 exp(((var_sodium_calcium_exchanger_current__gamma - 1.0) *
489 var_sodium_calcium_exchanger_current__V *
490 var_sodium_calcium_exchanger_current__F) /
491 (var_sodium_calcium_exchanger_current__R *
492 var_sodium_calcium_exchanger_current__T)))));
493 const NekDouble var_reversal_potentials__Ca_o =
494 var_calcium_dynamics__Ca_o;
495 const NekDouble var_reversal_potentials__Ca_i =
496 var_chaste_interface__calcium_dynamics__Ca_i;
497 const NekDouble var_reversal_potentials__E_Ca =
498 ((0.5 * var_reversal_potentials__R * var_reversal_potentials__T) /
499 var_reversal_potentials__F) *
500 log(var_reversal_potentials__Ca_o /
501 var_reversal_potentials__Ca_i);
502 const NekDouble var_calcium_background_current__E_Ca =
503 var_reversal_potentials__E_Ca;
504 const NekDouble var_calcium_background_current__g_bca =
506 const NekDouble var_calcium_background_current__V =
507 var_chaste_interface__membrane__V;
508 const NekDouble var_calcium_background_current__i_b_Ca =
509 var_calcium_background_current__g_bca *
510 (var_calcium_background_current__V -
511 var_calcium_background_current__E_Ca);
512 const NekDouble var_potassium_pump_current__g_pK =
514 const NekDouble var_potassium_pump_current__V =
515 var_chaste_interface__membrane__V;
516 const NekDouble var_potassium_pump_current__E_K =
517 var_reversal_potentials__E_K;
518 const NekDouble var_potassium_pump_current__i_p_K =
519 (var_potassium_pump_current__g_pK *
520 (var_potassium_pump_current__V -
521 var_potassium_pump_current__E_K)) /
522 (1.0 + exp((25.0 - var_potassium_pump_current__V) /
524 const NekDouble var_calcium_pump_current__K_pCa = 0.0005;
525 const NekDouble var_calcium_pump_current__Ca_i =
526 var_chaste_interface__calcium_dynamics__Ca_i;
527 const NekDouble var_calcium_pump_current__g_pCa =
529 const NekDouble var_calcium_pump_current__i_p_Ca =
530 (var_calcium_pump_current__g_pCa * var_calcium_pump_current__Ca_i) /
531 (var_calcium_pump_current__Ca_i +
532 var_calcium_pump_current__K_pCa);
533 const NekDouble var_chaste_interface__membrane__i_Stim = 0.0;
534 const NekDouble var_rapid_time_dependent_potassium_current_Xr1_gate__V =
535 var_rapid_time_dependent_potassium_current__V;
537 var_rapid_time_dependent_potassium_current_Xr1_gate__alpha_xr1 =
541 var_rapid_time_dependent_potassium_current_Xr1_gate__V) /
544 var_rapid_time_dependent_potassium_current_Xr1_gate__beta_xr1 =
547 exp((var_rapid_time_dependent_potassium_current_Xr1_gate__V +
551 var_rapid_time_dependent_potassium_current_Xr1_gate__tau_xr1 =
553 var_rapid_time_dependent_potassium_current_Xr1_gate__alpha_xr1 *
554 var_rapid_time_dependent_potassium_current_Xr1_gate__beta_xr1;
556 var_rapid_time_dependent_potassium_current_Xr1_gate__xr1_inf =
560 var_rapid_time_dependent_potassium_current_Xr1_gate__V) /
562 const NekDouble var_rapid_time_dependent_potassium_current_Xr2_gate__V =
563 var_rapid_time_dependent_potassium_current__V;
565 var_rapid_time_dependent_potassium_current_Xr2_gate__alpha_xr2 =
569 var_rapid_time_dependent_potassium_current_Xr2_gate__V) /
572 var_rapid_time_dependent_potassium_current_Xr2_gate__beta_xr2 =
575 exp((var_rapid_time_dependent_potassium_current_Xr2_gate__V -
579 var_rapid_time_dependent_potassium_current_Xr2_gate__tau_xr2 =
581 var_rapid_time_dependent_potassium_current_Xr2_gate__alpha_xr2 *
582 var_rapid_time_dependent_potassium_current_Xr2_gate__beta_xr2;
584 var_rapid_time_dependent_potassium_current_Xr2_gate__xr2_inf =
587 exp((var_rapid_time_dependent_potassium_current_Xr2_gate__V +
590 const NekDouble var_slow_time_dependent_potassium_current_Xs_gate__V =
591 var_slow_time_dependent_potassium_current__V;
593 var_slow_time_dependent_potassium_current_Xs_gate__beta_xs =
596 exp((var_slow_time_dependent_potassium_current_Xs_gate__V -
600 var_slow_time_dependent_potassium_current_Xs_gate__alpha_xs =
605 var_slow_time_dependent_potassium_current_Xs_gate__V) /
608 var_slow_time_dependent_potassium_current_Xs_gate__tau_xs =
610 var_slow_time_dependent_potassium_current_Xs_gate__alpha_xs *
611 var_slow_time_dependent_potassium_current_Xs_gate__beta_xs) +
614 var_slow_time_dependent_potassium_current_Xs_gate__xs_inf =
618 var_slow_time_dependent_potassium_current_Xs_gate__V) /
620 const NekDouble var_fast_sodium_current_m_gate__V =
621 var_fast_sodium_current__V;
622 const NekDouble var_fast_sodium_current_m_gate__alpha_m =
623 1.0 / (1.0 + exp(((-60.0) - var_fast_sodium_current_m_gate__V) /
625 const NekDouble var_fast_sodium_current_m_gate__beta_m =
627 (1.0 + exp((var_fast_sodium_current_m_gate__V + 35.0) / 5.0))) +
628 (0.1 / (1.0 + exp((var_fast_sodium_current_m_gate__V - 50.0) /
630 const NekDouble var_fast_sodium_current_m_gate__tau_m =
631 1.0 * var_fast_sodium_current_m_gate__alpha_m *
632 var_fast_sodium_current_m_gate__beta_m;
633 const NekDouble var_fast_sodium_current_m_gate__m_inf =
634 1.0 / pow(1.0 + exp(((-56.86) - var_fast_sodium_current_m_gate__V) /
637 const NekDouble var_fast_sodium_current_h_gate__V =
638 var_fast_sodium_current__V;
639 const NekDouble var_fast_sodium_current_h_gate__h_inf =
641 pow(1.0 + exp((var_fast_sodium_current_h_gate__V + 71.55) / 7.43),
643 const NekDouble var_fast_sodium_current_h_gate__beta_h =
644 (var_fast_sodium_current_h_gate__V < (-40.0))
645 ? ((2.7 * exp(0.079 * var_fast_sodium_current_h_gate__V)) +
646 (310000.0 * exp(0.3485 * var_fast_sodium_current_h_gate__V)))
649 (1.0 + exp((var_fast_sodium_current_h_gate__V + 10.66) /
651 const NekDouble var_fast_sodium_current_h_gate__alpha_h =
652 (var_fast_sodium_current_h_gate__V < (-40.0))
654 exp((-(var_fast_sodium_current_h_gate__V + 80.0)) / 6.8))
656 const NekDouble var_fast_sodium_current_h_gate__tau_h =
657 1.0 / (var_fast_sodium_current_h_gate__alpha_h +
658 var_fast_sodium_current_h_gate__beta_h);
659 const NekDouble var_fast_sodium_current_j_gate__V =
660 var_fast_sodium_current__V;
661 const NekDouble var_fast_sodium_current_j_gate__j_inf =
663 pow(1.0 + exp((var_fast_sodium_current_j_gate__V + 71.55) / 7.43),
665 const NekDouble var_fast_sodium_current_j_gate__alpha_j =
666 (var_fast_sodium_current_j_gate__V < (-40.0))
668 exp(0.2444 * var_fast_sodium_current_j_gate__V)) -
670 exp((-0.04391) * var_fast_sodium_current_j_gate__V))) *
671 (var_fast_sodium_current_j_gate__V + 37.78)) /
674 exp(0.311 * (var_fast_sodium_current_j_gate__V + 79.23))))
676 const NekDouble var_fast_sodium_current_j_gate__beta_j =
677 (var_fast_sodium_current_j_gate__V < (-40.0))
679 exp((-0.01052) * var_fast_sodium_current_j_gate__V)) /
680 (1.0 + exp((-0.1378) *
681 (var_fast_sodium_current_j_gate__V + 40.14))))
682 : ((0.6 * exp(0.057 * var_fast_sodium_current_j_gate__V)) /
683 (1.0 + exp((-0.1) * (var_fast_sodium_current_j_gate__V +
685 const NekDouble var_fast_sodium_current_j_gate__tau_j =
686 1.0 / (var_fast_sodium_current_j_gate__alpha_j +
687 var_fast_sodium_current_j_gate__beta_j);
688 const NekDouble var_L_type_Ca_current_d_gate__V =
689 var_L_type_Ca_current__V;
690 const NekDouble var_L_type_Ca_current_d_gate__alpha_d =
692 (1.0 + exp(((-35.0) - var_L_type_Ca_current_d_gate__V) / 13.0))) +
694 const NekDouble var_L_type_Ca_current_d_gate__gamma_d =
695 1.0 / (1.0 + exp((50.0 - var_L_type_Ca_current_d_gate__V) /
697 const NekDouble var_L_type_Ca_current_d_gate__beta_d =
698 1.4 / (1.0 + exp((var_L_type_Ca_current_d_gate__V + 5.0) /
700 const NekDouble var_L_type_Ca_current_d_gate__tau_d =
701 (1.0 * var_L_type_Ca_current_d_gate__alpha_d *
702 var_L_type_Ca_current_d_gate__beta_d) +
703 var_L_type_Ca_current_d_gate__gamma_d;
704 const NekDouble var_L_type_Ca_current_d_gate__d_inf =
705 1.0 / (1.0 + exp(((-8.0) - var_L_type_Ca_current_d_gate__V) /
707 const NekDouble var_L_type_Ca_current_f_gate__V =
708 var_L_type_Ca_current__V;
709 const NekDouble var_L_type_Ca_current_f_gate__tau_f =
711 exp((-pow(var_L_type_Ca_current_f_gate__V + 27.0, 2.0)) / 225.0)) +
713 (1.0 + exp((13.0 - var_L_type_Ca_current_f_gate__V) / 10.0))) +
715 (1.0 + exp((var_L_type_Ca_current_f_gate__V + 30.0) / 10.0))) +
717 const NekDouble var_L_type_Ca_current_f_gate__f_inf =
718 1.0 / (1.0 + exp((var_L_type_Ca_current_f_gate__V + 20.0) /
720 const NekDouble var_L_type_Ca_current_f2_gate__V =
721 var_L_type_Ca_current__V;
722 const NekDouble var_L_type_Ca_current_f2_gate__f2_inf =
724 (1.0 + exp((var_L_type_Ca_current_f2_gate__V + 35.0) / 7.0))) +
726 const NekDouble var_L_type_Ca_current_f2_gate__tau_f2 =
727 (562.0 * exp((-pow(var_L_type_Ca_current_f2_gate__V + 27.0, 2.0)) /
730 (1.0 + exp((25.0 - var_L_type_Ca_current_f2_gate__V) / 10.0))) +
731 (80.0 / (1.0 + exp((var_L_type_Ca_current_f2_gate__V + 30.0) /
733 const NekDouble var_L_type_Ca_current_fCass_gate__Ca_ss =
734 var_L_type_Ca_current__Ca_ss;
735 const NekDouble var_L_type_Ca_current_fCass_gate__tau_fCass =
737 (1.0 + pow(var_L_type_Ca_current_fCass_gate__Ca_ss / 0.05, 2.0))) +
739 const NekDouble var_L_type_Ca_current_fCass_gate__fCass_inf =
741 (1.0 + pow(var_L_type_Ca_current_fCass_gate__Ca_ss / 0.05, 2.0))) +
743 const NekDouble var_transient_outward_current_s_gate__V =
744 var_transient_outward_current__V;
745 const NekDouble var_transient_outward_current_s_gate__s_inf =
746 1.0 / (1.0 + exp((var_transient_outward_current_s_gate__V +
749 const NekDouble var_transient_outward_current_s_gate__tau_s =
751 exp((-pow(var_transient_outward_current_s_gate__V +
s_tau_f2,
757 (1.0 + exp((var_transient_outward_current_s_gate__V - 20.0) /
760 const NekDouble var_transient_outward_current_r_gate__V =
761 var_transient_outward_current__V;
762 const NekDouble var_transient_outward_current_r_gate__r_inf =
763 1.0 / (1.0 + exp((20.0 - var_transient_outward_current_r_gate__V) /
765 const NekDouble var_transient_outward_current_r_gate__tau_r =
767 exp((-pow(var_transient_outward_current_r_gate__V + 40.0, 2.0)) /
770 const NekDouble var_calcium_dynamics__Ca_i =
771 var_chaste_interface__calcium_dynamics__Ca_i;
772 const NekDouble var_calcium_dynamics__Ca_SR =
773 var_chaste_interface__calcium_dynamics__Ca_SR;
774 const NekDouble var_calcium_dynamics__Ca_ss =
775 var_chaste_interface__calcium_dynamics__Ca_ss;
776 const NekDouble var_calcium_dynamics__V_rel = 0.102;
777 const NekDouble var_calcium_dynamics__R_prime =
778 var_chaste_interface__calcium_dynamics__R_prime;
779 const NekDouble var_calcium_dynamics__k1_prime =
781 const NekDouble var_calcium_dynamics__max_sr = 2.5;
782 const NekDouble var_calcium_dynamics__EC = 1.5;
783 const NekDouble var_calcium_dynamics__min_sr = 1.0;
784 const NekDouble var_calcium_dynamics__kcasr =
785 var_calcium_dynamics__max_sr -
786 ((var_calcium_dynamics__max_sr - var_calcium_dynamics__min_sr) /
787 (1.0 + pow(var_calcium_dynamics__EC / var_calcium_dynamics__Ca_SR,
789 const NekDouble var_calcium_dynamics__k1 =
790 var_calcium_dynamics__k1_prime /
791 var_calcium_dynamics__kcasr;
792 const NekDouble var_calcium_dynamics__k3 = 0.06;
793 const NekDouble var_calcium_dynamics__O =
794 (var_calcium_dynamics__k1 * pow(var_calcium_dynamics__Ca_ss, 2.0) *
795 var_calcium_dynamics__R_prime) /
796 (var_calcium_dynamics__k3 +
797 (var_calcium_dynamics__k1 *
798 pow(var_calcium_dynamics__Ca_ss, 2.0)));
799 const NekDouble var_calcium_dynamics__i_rel =
800 var_calcium_dynamics__V_rel * var_calcium_dynamics__O *
801 (var_calcium_dynamics__Ca_SR -
802 var_calcium_dynamics__Ca_ss);
803 const NekDouble var_calcium_dynamics__Vmax_up =
805 const NekDouble var_calcium_dynamics__K_up = 0.00025;
806 const NekDouble var_calcium_dynamics__i_up =
807 var_calcium_dynamics__Vmax_up /
808 (1.0 + (pow(var_calcium_dynamics__K_up, 2.0) /
809 pow(var_calcium_dynamics__Ca_i,
811 const NekDouble var_calcium_dynamics__V_leak =
813 const NekDouble var_calcium_dynamics__i_leak =
814 var_calcium_dynamics__V_leak *
815 (var_calcium_dynamics__Ca_SR -
816 var_calcium_dynamics__Ca_i);
817 const NekDouble var_calcium_dynamics__V_xfer =
819 const NekDouble var_calcium_dynamics__i_xfer =
820 var_calcium_dynamics__V_xfer *
821 (var_calcium_dynamics__Ca_ss -
822 var_calcium_dynamics__Ca_i);
823 const NekDouble var_calcium_dynamics__k2_prime =
825 const NekDouble var_calcium_dynamics__k2 =
826 var_calcium_dynamics__k2_prime *
827 var_calcium_dynamics__kcasr;
828 const NekDouble var_calcium_dynamics__k4 = 0.005;
829 const NekDouble var_calcium_dynamics__Buf_c = 0.2;
830 const NekDouble var_calcium_dynamics__K_buf_c = 0.001;
831 const NekDouble var_calcium_dynamics__Ca_i_bufc =
834 ((var_calcium_dynamics__Buf_c * var_calcium_dynamics__K_buf_c) /
835 pow(var_calcium_dynamics__Ca_i + var_calcium_dynamics__K_buf_c,
837 const NekDouble var_calcium_dynamics__K_buf_sr = 0.3;
838 const NekDouble var_calcium_dynamics__Buf_sr = 10.0;
839 const NekDouble var_calcium_dynamics__Ca_sr_bufsr =
842 ((var_calcium_dynamics__Buf_sr * var_calcium_dynamics__K_buf_sr) /
843 pow(var_calcium_dynamics__Ca_SR + var_calcium_dynamics__K_buf_sr,
845 const NekDouble var_calcium_dynamics__Buf_ss = 0.4;
846 const NekDouble var_calcium_dynamics__K_buf_ss = 0.00025;
847 const NekDouble var_calcium_dynamics__Ca_ss_bufss =
850 ((var_calcium_dynamics__Buf_ss * var_calcium_dynamics__K_buf_ss) /
851 pow(var_calcium_dynamics__Ca_ss + var_calcium_dynamics__K_buf_ss,
853 const NekDouble var_calcium_dynamics__V_sr = 0.001094;
854 const NekDouble var_calcium_dynamics__V_ss = 5.468e-05;
855 const NekDouble var_calcium_dynamics__V_c =
857 const NekDouble var_calcium_dynamics__F =
859 const NekDouble var_calcium_dynamics__Cm = var_membrane__Cm;
860 const NekDouble var_calcium_dynamics__i_CaL =
861 var_L_type_Ca_current__i_CaL;
862 const NekDouble var_calcium_dynamics__i_NaCa =
863 var_sodium_calcium_exchanger_current__i_NaCa;
864 const NekDouble var_calcium_dynamics__i_p_Ca =
865 var_calcium_pump_current__i_p_Ca;
866 const NekDouble var_calcium_dynamics__i_b_Ca =
867 var_calcium_background_current__i_b_Ca;
868 const NekDouble var_calcium_dynamics__d_Ca_i_d_environment__time =
869 var_calcium_dynamics__Ca_i_bufc *
870 (((((var_calcium_dynamics__i_leak - var_calcium_dynamics__i_up) *
871 var_calcium_dynamics__V_sr) /
872 var_calcium_dynamics__V_c) +
873 var_calcium_dynamics__i_xfer) -
875 ((var_calcium_dynamics__i_b_Ca + var_calcium_dynamics__i_p_Ca) -
876 (2.0 * var_calcium_dynamics__i_NaCa)) *
877 var_calcium_dynamics__Cm) /
878 (2.0 * 1.0 * var_calcium_dynamics__V_c *
879 var_calcium_dynamics__F)));
881 const NekDouble var_calcium_dynamics__d_Ca_SR_d_environment__time =
882 var_calcium_dynamics__Ca_sr_bufsr *
883 (var_calcium_dynamics__i_up -
884 (var_calcium_dynamics__i_rel +
885 var_calcium_dynamics__i_leak));
887 const NekDouble var_calcium_dynamics__d_Ca_ss_d_environment__time =
888 var_calcium_dynamics__Ca_ss_bufss *
889 (((((-1.0) * var_calcium_dynamics__i_CaL *
890 var_calcium_dynamics__Cm) /
891 (2.0 * 1.0 * var_calcium_dynamics__V_ss *
892 var_calcium_dynamics__F)) +
893 ((var_calcium_dynamics__i_rel * var_calcium_dynamics__V_sr) /
894 var_calcium_dynamics__V_ss)) -
895 ((var_calcium_dynamics__i_xfer * var_calcium_dynamics__V_c) /
896 var_calcium_dynamics__V_ss));
898 const NekDouble var_calcium_dynamics__d_R_prime_d_environment__time =
899 ((-var_calcium_dynamics__k2) * var_calcium_dynamics__Ca_ss *
900 var_calcium_dynamics__R_prime) +
901 (var_calcium_dynamics__k4 *
902 (1.0 - var_calcium_dynamics__R_prime));
905 const NekDouble var_sodium_dynamics__Cm = var_membrane__Cm;
906 const NekDouble var_sodium_dynamics__V_c =
908 const NekDouble var_sodium_dynamics__i_Na =
909 var_fast_sodium_current__i_Na;
910 const NekDouble var_sodium_dynamics__i_NaCa =
911 var_sodium_calcium_exchanger_current__i_NaCa;
912 const NekDouble var_sodium_dynamics__i_NaK =
913 var_sodium_potassium_pump_current__i_NaK;
914 const NekDouble var_sodium_dynamics__i_b_Na =
915 var_sodium_background_current__i_b_Na;
916 const NekDouble var_sodium_dynamics__d_Na_i_d_environment__time =
918 (var_sodium_dynamics__i_Na + var_sodium_dynamics__i_b_Na +
919 (3.0 * var_sodium_dynamics__i_NaK) +
920 (3.0 * var_sodium_dynamics__i_NaCa))) /
921 (1.0 * var_sodium_dynamics__V_c * var_sodium_dynamics__F)) *
922 var_sodium_dynamics__Cm;
923 const NekDouble var_potassium_dynamics__F =
925 const NekDouble var_potassium_dynamics__Cm = var_membrane__Cm;
926 const NekDouble var_potassium_dynamics__V_c =
928 const NekDouble var_potassium_dynamics__i_K1 =
929 var_inward_rectifier_potassium_current__i_K1;
930 const NekDouble var_potassium_dynamics__i_to =
931 var_transient_outward_current__i_to;
932 const NekDouble var_potassium_dynamics__i_NaK =
933 var_sodium_potassium_pump_current__i_NaK;
934 const NekDouble var_potassium_dynamics__i_Kr =
935 var_rapid_time_dependent_potassium_current__i_Kr;
936 const NekDouble var_potassium_dynamics__i_Ks =
937 var_slow_time_dependent_potassium_current__i_Ks;
938 const NekDouble var_potassium_dynamics__i_p_K =
939 var_potassium_pump_current__i_p_K;
941 var_potassium_dynamics__chaste_interface__chaste_membrane_capacitance =
943 const NekDouble var_potassium_dynamics__i_Stim_converter =
944 var_chaste_interface__membrane__i_Stim;
945 const NekDouble var_potassium_dynamics__i_Stim =
946 var_potassium_dynamics__i_Stim_converter /
947 var_potassium_dynamics__chaste_interface__chaste_membrane_capacitance;
948 const NekDouble var_potassium_dynamics__d_K_i_d_environment__time =
950 ((var_potassium_dynamics__i_K1 + var_potassium_dynamics__i_to +
951 var_potassium_dynamics__i_Kr + var_potassium_dynamics__i_Ks +
952 var_potassium_dynamics__i_p_K +
953 var_potassium_dynamics__i_Stim) -
954 (2.0 * var_potassium_dynamics__i_NaK))) /
955 (1.0 * var_potassium_dynamics__V_c * var_potassium_dynamics__F)) *
956 var_potassium_dynamics__Cm;
958 var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time =
959 var_calcium_dynamics__d_Ca_i_d_environment__time;
961 var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time =
962 var_calcium_dynamics__d_Ca_SR_d_environment__time;
964 var_chaste_interface__calcium_dynamics__d_Ca_ss_d_environment__time =
965 var_calcium_dynamics__d_Ca_ss_d_environment__time;
967 var_chaste_interface__calcium_dynamics__d_R_prime_d_environment__time =
968 var_calcium_dynamics__d_R_prime_d_environment__time;
970 var_chaste_interface__sodium_dynamics__d_Na_i_d_environment__time =
971 var_sodium_dynamics__d_Na_i_d_environment__time;
973 var_chaste_interface__potassium_dynamics__d_K_i_d_environment__time =
974 var_potassium_dynamics__d_K_i_d_environment__time;
975 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_i =
976 var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time;
977 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_SR =
978 var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time;
979 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_ss =
980 var_chaste_interface__calcium_dynamics__d_Ca_ss_d_environment__time;
981 const NekDouble d_dt_chaste_interface__calcium_dynamics__R_prime =
982 var_chaste_interface__calcium_dynamics__d_R_prime_d_environment__time;
983 const NekDouble d_dt_chaste_interface__sodium_dynamics__Na_i =
984 var_chaste_interface__sodium_dynamics__d_Na_i_d_environment__time;
985 const NekDouble d_dt_chaste_interface__potassium_dynamics__K_i =
986 var_chaste_interface__potassium_dynamics__d_K_i_d_environment__time;
989 var_inward_rectifier_potassium_current__i_K1;
991 var_transient_outward_current__i_to;
993 var_rapid_time_dependent_potassium_current__i_Kr;
995 var_slow_time_dependent_potassium_current__i_Ks;
997 var_L_type_Ca_current__i_CaL;
999 var_sodium_potassium_pump_current__i_NaK;
1001 var_fast_sodium_current__i_Na;
1003 var_sodium_background_current__i_b_Na;
1005 var_sodium_calcium_exchanger_current__i_NaCa;
1007 var_calcium_background_current__i_b_Ca;
1009 var_potassium_pump_current__i_p_K;
1011 var_calcium_pump_current__i_p_Ca;
1012 const NekDouble var_membrane__i_Stim_converter =
1013 var_chaste_interface__membrane__i_Stim;
1015 var_membrane__chaste_interface__chaste_membrane_capacitance =
1018 var_membrane__i_Stim_converter /
1019 var_membrane__chaste_interface__chaste_membrane_capacitance;
1020 const NekDouble var_membrane__d_V_d_environment__time =
1022 (var_membrane__i_K1 + var_membrane__i_to + var_membrane__i_Kr +
1023 var_membrane__i_Ks + var_membrane__i_CaL + var_membrane__i_NaK +
1024 var_membrane__i_Na + var_membrane__i_b_Na + var_membrane__i_NaCa +
1025 var_membrane__i_b_Ca + var_membrane__i_p_K + var_membrane__i_p_Ca +
1026 var_membrane__i_Stim);
1028 var_chaste_interface__membrane__d_V_d_environment__time =
1029 var_membrane__d_V_d_environment__time;
1030 d_dt_chaste_interface__membrane__V =
1031 var_chaste_interface__membrane__d_V_d_environment__time;
1034 outarray[0][i] = d_dt_chaste_interface__membrane__V;
1036 var_rapid_time_dependent_potassium_current_Xr1_gate__xr1_inf;
1038 var_rapid_time_dependent_potassium_current_Xr1_gate__tau_xr1;
1040 var_rapid_time_dependent_potassium_current_Xr2_gate__xr2_inf;
1042 var_rapid_time_dependent_potassium_current_Xr2_gate__tau_xr2;
1044 var_slow_time_dependent_potassium_current_Xs_gate__xs_inf;
1046 var_slow_time_dependent_potassium_current_Xs_gate__tau_xs;
1047 outarray[4][i] = var_fast_sodium_current_m_gate__m_inf;
1048 m_gates_tau[3][i] = var_fast_sodium_current_m_gate__tau_m;
1049 outarray[5][i] = var_fast_sodium_current_h_gate__h_inf;
1050 m_gates_tau[4][i] = var_fast_sodium_current_h_gate__tau_h;
1051 outarray[6][i] = var_fast_sodium_current_j_gate__j_inf;
1052 m_gates_tau[5][i] = var_fast_sodium_current_j_gate__tau_j;
1053 outarray[7][i] = var_L_type_Ca_current_d_gate__d_inf;
1054 m_gates_tau[6][i] = var_L_type_Ca_current_d_gate__tau_d;
1055 outarray[8][i] = var_L_type_Ca_current_f_gate__f_inf;
1056 m_gates_tau[7][i] = var_L_type_Ca_current_f_gate__tau_f;
1057 outarray[9][i] = var_L_type_Ca_current_f2_gate__f2_inf;
1058 m_gates_tau[8][i] = var_L_type_Ca_current_f2_gate__tau_f2;
1059 outarray[10][i] = var_L_type_Ca_current_fCass_gate__fCass_inf;
1060 m_gates_tau[9][i] = var_L_type_Ca_current_fCass_gate__tau_fCass;
1061 outarray[11][i] = var_transient_outward_current_s_gate__s_inf;
1062 m_gates_tau[10][i] = var_transient_outward_current_s_gate__tau_s;
1063 outarray[12][i] = var_transient_outward_current_r_gate__r_inf;
1064 m_gates_tau[11][i] = var_transient_outward_current_r_gate__tau_r;
1065 outarray[13][i] = d_dt_chaste_interface__calcium_dynamics__Ca_i;
1066 outarray[14][i] = d_dt_chaste_interface__calcium_dynamics__Ca_SR;
1067 outarray[15][i] = d_dt_chaste_interface__calcium_dynamics__Ca_ss;
1068 outarray[16][i] = d_dt_chaste_interface__calcium_dynamics__R_prime;
1069 outarray[17][i] = d_dt_chaste_interface__sodium_dynamics__Na_i;
1070 outarray[18][i] = d_dt_chaste_interface__potassium_dynamics__K_i;
Array< OneD, Array< OneD, NekDouble > > m_cellSol
Cell model solution variables.
int m_nq
Number of physical points.
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.
Array< OneD, Array< OneD, NekDouble > > m_gates_tau
Storage for gate tau values.
int m_nvar
Number of variables in cell model (inc. transmembrane voltage)
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_SetInitialConditions()
virtual void v_GenerateSummary(SummaryList &s)
Prints a summary of the model parameters.
static CellModelSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Creates an instance of this class.
virtual void v_Update(const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const NekDouble time)
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)