From 0ff6301f110e4ab1fb39504097ce594e7bcc7623 Mon Sep 17 00:00:00 2001 From: bergolho Date: Sat, 15 Jun 2024 16:05:07 +0100 Subject: [PATCH] Order of the state-vector from the 'ToRORd_GKsGKrtjca' model is now the same as the Matlab code/Minor adjustments to the model for the T-wave --- src/extra_data_library/helper_functions.c | 268 ++++----- ...ixed_endo_mid_epi_GKsGKrtjca_adjustments.c | 336 ++++++------ ...do_mid_epi_GKsGKrtjca_adjustments.common.c | 78 +-- ...xed_endo_mid_epi_GKsGKrtjca_adjustments.cu | 509 +++++++++--------- ...ixed_endo_mid_epi_GKsGKrtjca_adjustments.h | 2 +- ...mid_epi_GKsGKrtjca_adjustments_RL.common.c | 170 +++--- 6 files changed, 681 insertions(+), 682 deletions(-) diff --git a/src/extra_data_library/helper_functions.c b/src/extra_data_library/helper_functions.c index f2e42ae8..f4ab5c39 100644 --- a/src/extra_data_library/helper_functions.c +++ b/src/extra_data_library/helper_functions.c @@ -1057,140 +1057,140 @@ struct extra_data_for_torord_gksgkrtjca_twave * set_common_torord_gksgkrtjca_twa extra_data->initial_ss_epi = MALLOC_ARRAY_OF_TYPE(real, neq); extra_data->initial_ss_mid = MALLOC_ARRAY_OF_TYPE(real, neq); - // Set the initial conditions (celltype = ENDO) - extra_data->initial_ss_endo[0] = -8.890585e+01; - extra_data->initial_ss_endo[1] = 1.107642e-02; - extra_data->initial_ss_endo[2] = 6.504164e-05; - extra_data->initial_ss_endo[3] = 1.210818e+01; - extra_data->initial_ss_endo[4] = 1.210851e+01; - extra_data->initial_ss_endo[5] = 1.426206e+02; - extra_data->initial_ss_endo[6] = 1.426205e+02; - extra_data->initial_ss_endo[7] = 1.530373e+00; - extra_data->initial_ss_endo[8] = 1.528032e+00; - extra_data->initial_ss_endo[9] = 7.455488e-05; - extra_data->initial_ss_endo[10] = 7.814592e-04; - extra_data->initial_ss_endo[11] = 8.313839e-01; - extra_data->initial_ss_endo[12] = 8.311938e-01; - extra_data->initial_ss_endo[13] = 6.752873e-01; - extra_data->initial_ss_endo[14] = 8.308255e-01; - extra_data->initial_ss_endo[15] = 1.585610e-04; - extra_data->initial_ss_endo[16] = 5.294475e-01; - extra_data->initial_ss_endo[17] = 2.896996e-01; - extra_data->initial_ss_endo[18] = 9.419166e-04; - extra_data->initial_ss_endo[19] = 9.996194e-01; - extra_data->initial_ss_endo[20] = 5.938602e-01; - extra_data->initial_ss_endo[21] = 4.799180e-04; - extra_data->initial_ss_endo[22] = 9.996194e-01; - extra_data->initial_ss_endo[23] = 6.543754e-01; - extra_data->initial_ss_endo[24] = -2.898677e-33; - extra_data->initial_ss_endo[25] = 1.000000e+00; - extra_data->initial_ss_endo[26] = 9.389659e-01; - extra_data->initial_ss_endo[27] = 1.000000e+00; - extra_data->initial_ss_endo[28] = 9.999003e-01; - extra_data->initial_ss_endo[29] = 9.999773e-01; - extra_data->initial_ss_endo[30] = 1.000000e+00; - extra_data->initial_ss_endo[31] = 1.000000e+00; - extra_data->initial_ss_endo[32] = 4.920606e-04; - extra_data->initial_ss_endo[33] = 8.337021e-04; - extra_data->initial_ss_endo[34] = 6.962775e-04; - extra_data->initial_ss_endo[35] = 8.425453e-04; - extra_data->initial_ss_endo[36] = 9.980807e-01; - extra_data->initial_ss_endo[37] = 1.289824e-05; - extra_data->initial_ss_endo[38] = 3.675442e-04; - extra_data->initial_ss_endo[39] = 2.471690e-01; - extra_data->initial_ss_endo[40] = 1.742987e-04; - extra_data->initial_ss_endo[41] = 5.421027e-24; - extra_data->initial_ss_endo[42] = 6.407933e-23; - - // Set the initial conditions (celltype = EPI) - extra_data->initial_ss_epi[0] = -8.917755e+01; - extra_data->initial_ss_epi[1] = 1.288116e-02; - extra_data->initial_ss_epi[2] = 5.767956e-05; - extra_data->initial_ss_epi[3] = 1.284260e+01; - extra_data->initial_ss_epi[4] = 1.284291e+01; - extra_data->initial_ss_epi[5] = 1.429114e+02; - extra_data->initial_ss_epi[6] = 1.429113e+02; - extra_data->initial_ss_epi[7] = 1.812268e+00; - extra_data->initial_ss_epi[8] = 1.810520e+00; - extra_data->initial_ss_epi[9] = 6.631866e-05; - extra_data->initial_ss_epi[10] = 7.370422e-04; - extra_data->initial_ss_epi[11] = 8.366816e-01; - extra_data->initial_ss_epi[12] = 8.366012e-01; - extra_data->initial_ss_epi[13] = 6.840260e-01; - extra_data->initial_ss_epi[14] = 8.363958e-01; - extra_data->initial_ss_epi[15] = 1.505860e-04; - extra_data->initial_ss_epi[16] = 5.412669e-01; - extra_data->initial_ss_epi[17] = 3.043382e-01; - extra_data->initial_ss_epi[18] = 9.248184e-04; - extra_data->initial_ss_epi[19] = 9.996371e-01; - extra_data->initial_ss_epi[20] = 9.996342e-01; - extra_data->initial_ss_epi[21] = 4.712023e-04; - extra_data->initial_ss_epi[22] = 9.996371e-01; - extra_data->initial_ss_epi[23] = 9.996366e-01; - extra_data->initial_ss_epi[24] = 4.333129e-43; - extra_data->initial_ss_epi[25] = 1.000000e+00; - extra_data->initial_ss_epi[26] = 9.485160e-01; - extra_data->initial_ss_epi[27] = 1.000000e+00; - extra_data->initial_ss_epi[28] = 9.999339e-01; - extra_data->initial_ss_epi[29] = 9.999822e-01; - extra_data->initial_ss_epi[30] = 1.000000e+00; - extra_data->initial_ss_epi[31] = 1.000000e+00; - extra_data->initial_ss_epi[32] = 3.086885e-04; - extra_data->initial_ss_epi[33] = 5.303737e-04; - extra_data->initial_ss_epi[34] = 6.775197e-04; - extra_data->initial_ss_epi[35] = 8.264829e-04; - extra_data->initial_ss_epi[36] = 9.982135e-01; - extra_data->initial_ss_epi[37] = 9.433146e-06; - extra_data->initial_ss_epi[38] = 2.730221e-04; - extra_data->initial_ss_epi[39] = 2.308784e-01; - extra_data->initial_ss_epi[40] = 1.690386e-04; - extra_data->initial_ss_epi[41] = -1.103286e-23; - extra_data->initial_ss_epi[42] = -6.177055e-22; - - // Set the initial conditions (celltype = MCELL) - extra_data->initial_ss_mid[0] = -8.924177e+01; - extra_data->initial_ss_mid[1] = 1.922391e-02; - extra_data->initial_ss_mid[2] = 6.585066e-05; - extra_data->initial_ss_mid[3] = 1.503347e+01; - extra_data->initial_ss_mid[4] = 1.503401e+01; - extra_data->initial_ss_mid[5] = 1.434407e+02; - extra_data->initial_ss_mid[6] = 1.434406e+02; - extra_data->initial_ss_mid[7] = 1.959747e+00; - extra_data->initial_ss_mid[8] = 1.963459e+00; - extra_data->initial_ss_mid[9] = 8.177438e-05; - extra_data->initial_ss_mid[10] = 7.269124e-04; - extra_data->initial_ss_mid[11] = 8.379059e-01; - extra_data->initial_ss_mid[12] = 8.377164e-01; - extra_data->initial_ss_mid[13] = 6.860578e-01; - extra_data->initial_ss_mid[14] = 8.372100e-01; - extra_data->initial_ss_mid[15] = 1.487602e-04; - extra_data->initial_ss_mid[16] = 5.350003e-01; - extra_data->initial_ss_mid[17] = 2.851164e-01; - extra_data->initial_ss_mid[18] = 9.208259e-04; - extra_data->initial_ss_mid[19] = 9.996411e-01; - extra_data->initial_ss_mid[20] = 5.673539e-01; - extra_data->initial_ss_mid[21] = 4.691672e-04; - extra_data->initial_ss_mid[22] = 9.996412e-01; - extra_data->initial_ss_mid[23] = 6.265825e-01; - extra_data->initial_ss_mid[24] = -4.922960e-40; - extra_data->initial_ss_mid[25] = 1.000000e+00; - extra_data->initial_ss_mid[26] = 9.200354e-01; - extra_data->initial_ss_mid[27] = 1.000000e+00; - extra_data->initial_ss_mid[28] = 9.997888e-01; - extra_data->initial_ss_mid[29] = 9.999665e-01; - extra_data->initial_ss_mid[30] = 1.000000e+00; - extra_data->initial_ss_mid[31] = 1.000000e+00; - extra_data->initial_ss_mid[32] = 5.161178e-04; - extra_data->initial_ss_mid[33] = 1.189422e-03; - extra_data->initial_ss_mid[34] = 6.917041e-04; - extra_data->initial_ss_mid[35] = 8.225453e-04; - extra_data->initial_ss_mid[36] = 9.979358e-01; - extra_data->initial_ss_mid[37] = 1.835276e-05; - extra_data->initial_ss_mid[38] = 5.316232e-04; - extra_data->initial_ss_mid[39] = 2.650323e-01; - extra_data->initial_ss_mid[40] = 1.678628e-04; - extra_data->initial_ss_mid[41] = 2.091039e-25; - extra_data->initial_ss_mid[42] = 2.438403e-23; + // Set the default initial conditions from Matlab (celltype = ENDO) + extra_data->initial_ss_endo[0] = -88.6369922306458; + extra_data->initial_ss_endo[1] = 11.8973412949238; + extra_data->initial_ss_endo[2] = 11.897661047085; + extra_data->initial_ss_endo[3] = 141.234464714982; + extra_data->initial_ss_endo[4] = 141.234423402713; + extra_data->initial_ss_endo[5] = 7.26747296460659e-05; + extra_data->initial_ss_endo[6] = 6.33786975780735e-05; + extra_data->initial_ss_endo[7] = 1.5326530637197; + extra_data->initial_ss_endo[8] = 1.53394579180493; + extra_data->initial_ss_endo[9] = 0.000828007761976018; + extra_data->initial_ss_endo[10] = 0.666527193684116; + extra_data->initial_ss_endo[11] = 0.826020806005678; + extra_data->initial_ss_endo[12] = 0.826055985895856; + extra_data->initial_ss_endo[13] = 0.825850881115628; + extra_data->initial_ss_endo[14] = 0.000166868626513013; + extra_data->initial_ss_endo[15] = 0.522830604669169; + extra_data->initial_ss_endo[16] = 0.285969584294187; + extra_data->initial_ss_endo[17] = 0.000959137028030184; + extra_data->initial_ss_endo[18] = 0.999601150012565; + extra_data->initial_ss_endo[19] = 0.5934016398361; + extra_data->initial_ss_endo[20] = 0.000488696137242056; + extra_data->initial_ss_endo[21] = 0.999601147267179; + extra_data->initial_ss_endo[22] = 0.654668660159696; + extra_data->initial_ss_endo[23] = 9.50007519781516e-32; + extra_data->initial_ss_endo[24] = 0.999999992317577; + extra_data->initial_ss_endo[25] = 0.939258048397962; + extra_data->initial_ss_endo[26] = 0.999999992317557; + extra_data->initial_ss_endo[27] = 0.999898379647465; + extra_data->initial_ss_endo[28] = 0.99997825156004; + extra_data->initial_ss_endo[29] = 0.000444816183420527; + extra_data->initial_ss_endo[30] = 0.000755072490632667; + extra_data->initial_ss_endo[31] = 0.999999992318446; + extra_data->initial_ss_endo[32] = 0.999999992318445; + extra_data->initial_ss_endo[33] = 0.24240468344952; + extra_data->initial_ss_endo[34] = 0.000179537726989804; + extra_data->initial_ss_endo[35] = -6.88308558109975e-25; + extra_data->initial_ss_endo[36] = 0.0111749845355653; + extra_data->initial_ss_endo[37] = 0.998036620213316; + extra_data->initial_ss_endo[38] = 0.000858801779013532; + extra_data->initial_ss_endo[39] = 0.000709744678350176; + extra_data->initial_ss_endo[40] = 0.000381261722195702; + extra_data->initial_ss_endo[41] = 1.35711566929992e-05; + extra_data->initial_ss_endo[42] = 2.30252452954649e-23; + + // Set the default initial conditions from Matlab (celltype = EPI) + extra_data->initial_ss_epi[0] = -89.0462806262884; + extra_data->initial_ss_epi[1] = 12.7218980311997; + extra_data->initial_ss_epi[2] = 12.7222039977392; + extra_data->initial_ss_epi[3] = 142.248960281735; + extra_data->initial_ss_epi[4] = 142.248911688304; + extra_data->initial_ss_epi[5] = 6.54105789316085e-05; + extra_data->initial_ss_epi[6] = 5.68443136844764e-05; + extra_data->initial_ss_epi[7] = 1.80911728399381; + extra_data->initial_ss_epi[8] = 1.80970235621251; + extra_data->initial_ss_epi[9] = 0.000758182108180449; + extra_data->initial_ss_epi[10] = 0.679839847935577; + extra_data->initial_ss_epi[11] = 0.834150231581688; + extra_data->initial_ss_epi[12] = 0.834188252920967; + extra_data->initial_ss_epi[13] = 0.834081731522592; + extra_data->initial_ss_epi[14] = 0.000154387698861246; + extra_data->initial_ss_epi[15] = 0.538295069820379; + extra_data->initial_ss_epi[16] = 0.302769394159465; + extra_data->initial_ss_epi[17] = 0.000933035060391086; + extra_data->initial_ss_epi[18] = 0.999628705730844; + extra_data->initial_ss_epi[19] = 0.999626204093615; + extra_data->initial_ss_epi[20] = 0.00047539066209218; + extra_data->initial_ss_epi[21] = 0.999628705544664; + extra_data->initial_ss_epi[22] = 0.999628513430851; + extra_data->initial_ss_epi[23] = 1.74213411952898e-37; + extra_data->initial_ss_epi[24] = 0.999999993122906; + extra_data->initial_ss_epi[25] = 0.947952168523141; + extra_data->initial_ss_epi[26] = 0.999999993122889; + extra_data->initial_ss_epi[27] = 0.999932686646139; + extra_data->initial_ss_epi[28] = 0.999982915381882; + extra_data->initial_ss_epi[29] = 0.000291544679470133; + extra_data->initial_ss_epi[30] = 0.000502604507932921; + extra_data->initial_ss_epi[31] = 0.999999993124187; + extra_data->initial_ss_epi[32] = 0.999999993123756; + extra_data->initial_ss_epi[33] = 0.22881550094027; + extra_data->initial_ss_epi[34] = 0.000171497784228012; + extra_data->initial_ss_epi[35] = -1.13118992668881e-26; + extra_data->initial_ss_epi[36] = 0.0129505221481656; + extra_data->initial_ss_epi[37] = 0.998194356754674; + extra_data->initial_ss_epi[38] = 0.000834232097912889; + extra_data->initial_ss_epi[39] = 0.000683865770895308; + extra_data->initial_ss_epi[40] = 0.00027787850109644; + extra_data->initial_ss_epi[41] = 9.66775862738005e-06; + extra_data->initial_ss_epi[42] = 8.16930403133409e-24; + + // Set the default initial conditions from Matlab (celltype = MCELL) + extra_data->initial_ss_mid[0] = -89.5379994049964; + extra_data->initial_ss_mid[1] = 14.9292004720038; + extra_data->initial_ss_mid[2] = 14.9296673679334; + extra_data->initial_ss_mid[3] = 144.84471868881; + extra_data->initial_ss_mid[4] = 144.844658476157; + extra_data->initial_ss_mid[5] = 7.50228807455408e-05; + extra_data->initial_ss_mid[6] = 6.10763598140135e-05; + extra_data->initial_ss_mid[7] = 1.79043480744558; + extra_data->initial_ss_mid[8] = 1.79484249993962; + extra_data->initial_ss_mid[9] = 0.000681936485046493; + extra_data->initial_ss_mid[10] = 0.695380653101535; + extra_data->initial_ss_mid[11] = 0.843488797335149; + extra_data->initial_ss_mid[12] = 0.843520761455969; + extra_data->initial_ss_mid[13] = 0.843226224403045; + extra_data->initial_ss_mid[14] = 0.000140621109700401; + extra_data->initial_ss_mid[15] = 0.545314876174586; + extra_data->initial_ss_mid[16] = 0.292496735833565; + extra_data->initial_ss_mid[17] = 0.000902612655601118; + extra_data->initial_ss_mid[18] = 0.999659345906191; + extra_data->initial_ss_mid[19] = 0.56311967936689; + extra_data->initial_ss_mid[20] = 0.000459883274920751; + extra_data->initial_ss_mid[21] = 0.999659343029625; + extra_data->initial_ss_mid[22] = 0.623696443871387; + extra_data->initial_ss_mid[23] = -1.31418873360667e-33; + extra_data->initial_ss_mid[24] = 0.999999993979673; + extra_data->initial_ss_mid[25] = 0.920408593154793; + extra_data->initial_ss_mid[26] = 0.999999993979652; + extra_data->initial_ss_mid[27] = 0.999761950174748; + extra_data->initial_ss_mid[28] = 0.999962530196306; + extra_data->initial_ss_mid[29] = 0.0003853594696671; + extra_data->initial_ss_mid[30] = 0.000853529194511867; + extra_data->initial_ss_mid[31] = 0.999999993978835; + extra_data->initial_ss_mid[32] = 0.999999993980401; + extra_data->initial_ss_mid[33] = 0.266415111925392; + extra_data->initial_ss_mid[34] = 0.000162310655612839; + extra_data->initial_ss_mid[35] = 1.20976169203982e-24; + extra_data->initial_ss_mid[36] = 0.0178243652102213; + extra_data->initial_ss_mid[37] = 0.997971986641796; + extra_data->initial_ss_mid[38] = 0.000805399061926759; + extra_data->initial_ss_mid[39] = 0.000678179976274546; + extra_data->initial_ss_mid[40] = 0.00052653630893167; + extra_data->initial_ss_mid[41] = 1.78956481798154e-05; + extra_data->initial_ss_mid[42] = 7.0591623795627e-23; extra_data->transmurality = MALLOC_ARRAY_OF_TYPE(real, num_cells); extra_data->sf_IKs = MALLOC_ARRAY_OF_TYPE(real, num_cells); diff --git a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.c b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.c index ed62d253..a1591e30 100644 --- a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.c +++ b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.c @@ -68,50 +68,50 @@ SET_ODE_INITIAL_CONDITIONS_CPU(set_model_initial_conditions_cpu) { for(uint32_t i = 0; i < num_cells; i++){ real *sv = &solver->sv[i * NEQ]; - // Steady-state after 200 beats (endocardium cell) - sv[0] = -8.890585e+01; - sv[1] = 1.107642e-02; - sv[2] = 6.504164e-05; - sv[3] = 1.210818e+01; - sv[4] = 1.210851e+01; - sv[5] = 1.426206e+02; - sv[6] = 1.426205e+02; - sv[7] = 1.530373e+00; - sv[8] = 1.528032e+00; - sv[9] = 7.455488e-05; - sv[10] = 7.814592e-04; - sv[11] = 8.313839e-01; - sv[12] = 8.311938e-01; - sv[13] = 6.752873e-01; - sv[14] = 8.308255e-01; - sv[15] = 1.585610e-04; - sv[16] = 5.294475e-01; - sv[17] = 2.896996e-01; - sv[18] = 9.419166e-04; - sv[19] = 9.996194e-01; - sv[20] = 5.938602e-01; - sv[21] = 4.799180e-04; - sv[22] = 9.996194e-01; - sv[23] = 6.543754e-01; - sv[24] = -2.898677e-33; - sv[25] = 1.000000e+00; - sv[26] = 9.389659e-01; - sv[27] = 1.000000e+00; - sv[28] = 9.999003e-01; - sv[29] = 9.999773e-01; - sv[30] = 1.000000e+00; - sv[31] = 1.000000e+00; - sv[32] = 4.920606e-04; - sv[33] = 8.337021e-04; - sv[34] = 6.962775e-04; - sv[35] = 8.425453e-04; - sv[36] = 9.980807e-01; - sv[37] = 1.289824e-05; - sv[38] = 3.675442e-04; - sv[39] = 2.471690e-01; - sv[40] = 1.742987e-04; - sv[41] = 5.421027e-24; - sv[42] = 6.407933e-23; + // Default initial condition from Matlab (endocardium cell) + sv[0] = -88.6369922306458; + sv[1] = 11.8973412949238; + sv[2] = 11.897661047085; + sv[3] = 141.234464714982; + sv[4] = 141.234423402713; + sv[5] = 7.26747296460659e-05; + sv[6] = 6.33786975780735e-05; + sv[7] = 1.5326530637197; + sv[8] = 1.53394579180493; + sv[9] = 0.000828007761976018; + sv[10] = 0.666527193684116; + sv[11] = 0.826020806005678; + sv[12] = 0.826055985895856; + sv[13] = 0.825850881115628; + sv[14] = 0.000166868626513013; + sv[15] = 0.522830604669169; + sv[16] = 0.285969584294187; + sv[17] = 0.000959137028030184; + sv[18] = 0.999601150012565; + sv[19] = 0.5934016398361; + sv[20] = 0.000488696137242056; + sv[21] = 0.999601147267179; + sv[22] = 0.654668660159696; + sv[23] = 9.50007519781516e-32; + sv[24] = 0.999999992317577; + sv[25] = 0.939258048397962; + sv[26] = 0.999999992317557; + sv[27] = 0.999898379647465; + sv[28] = 0.99997825156004; + sv[29] = 0.000444816183420527; + sv[30] = 0.000755072490632667; + sv[31] = 0.999999992318446; + sv[32] = 0.999999992318445; + sv[33] = 0.24240468344952; + sv[34] = 0.000179537726989804; + sv[35] = -6.88308558109975e-25; + sv[36] = 0.0111749845355653; + sv[37] = 0.998036620213316; + sv[38] = 0.000858801779013532; + sv[39] = 0.000709744678350176; + sv[40] = 0.000381261722195702; + sv[41] = 1.35711566929992e-05; + sv[42] = 2.30252452954649e-23; } } } @@ -160,7 +160,7 @@ SOLVE_MODEL_ODES(solve_model_odes_cpu) { else { // Default: initialize all current modifiers for (uint32_t i = 0; i < num_extra_parameters; i++) { - if (i == 9) + if (i == 10) extra_par[i] = 0.0; else extra_par[i] = 1.0; @@ -212,47 +212,47 @@ void solve_model_ode_cpu(real dt, real *sv, real stim_current, real transmuralit // Non-linear = Euler // Hodkin-Huxley = Rush-Larsen || Euler (if 'a' coefficient is too small) SOLVE_EQUATION_EULER_CPU(0); // v - SOLVE_EQUATION_EULER_CPU(1); // CaMKt - SOLVE_EQUATION_EULER_CPU(2); // cass - SOLVE_EQUATION_EULER_CPU(3); // nai - SOLVE_EQUATION_EULER_CPU(4); // nass - SOLVE_EQUATION_EULER_CPU(5); // ki - SOLVE_EQUATION_EULER_CPU(6); // kss + SOLVE_EQUATION_EULER_CPU(1); // nai + SOLVE_EQUATION_EULER_CPU(2); // nass + SOLVE_EQUATION_EULER_CPU(3); // ki + SOLVE_EQUATION_EULER_CPU(4); // kss + SOLVE_EQUATION_EULER_CPU(5); // cai + SOLVE_EQUATION_EULER_CPU(6); // cass SOLVE_EQUATION_EULER_CPU(7); // cansr SOLVE_EQUATION_EULER_CPU(8); // cajsr - SOLVE_EQUATION_EULER_CPU(9); // cai - SOLVE_EQUATION_RUSH_LARSEN_CPU(10); // m + SOLVE_EQUATION_RUSH_LARSEN_CPU(9); // m + SOLVE_EQUATION_RUSH_LARSEN_CPU(10); // hp SOLVE_EQUATION_RUSH_LARSEN_CPU(11); // h SOLVE_EQUATION_RUSH_LARSEN_CPU(12); // j - SOLVE_EQUATION_RUSH_LARSEN_CPU(13); // hp - SOLVE_EQUATION_RUSH_LARSEN_CPU(14); // jp - SOLVE_EQUATION_RUSH_LARSEN_CPU(15); // mL - SOLVE_EQUATION_RUSH_LARSEN_CPU(16); // hL - SOLVE_EQUATION_RUSH_LARSEN_CPU(17); // hLp - SOLVE_EQUATION_RUSH_LARSEN_CPU(18); // a - SOLVE_EQUATION_RUSH_LARSEN_CPU(19); // iF - SOLVE_EQUATION_RUSH_LARSEN_CPU(20); // iS - SOLVE_EQUATION_RUSH_LARSEN_CPU(21); // ap - SOLVE_EQUATION_RUSH_LARSEN_CPU(22); // iFp - SOLVE_EQUATION_RUSH_LARSEN_CPU(23); // iSp - SOLVE_EQUATION_RUSH_LARSEN_CPU(24); // d - SOLVE_EQUATION_RUSH_LARSEN_CPU(25); // ff - SOLVE_EQUATION_RUSH_LARSEN_CPU(26); // fs - SOLVE_EQUATION_RUSH_LARSEN_CPU(27); // fcaf - SOLVE_EQUATION_RUSH_LARSEN_CPU(28); // fcas - SOLVE_EQUATION_RUSH_LARSEN_CPU(29); // jca - SOLVE_EQUATION_RUSH_LARSEN_CPU(30); // ffp - SOLVE_EQUATION_RUSH_LARSEN_CPU(31); // fcafp - SOLVE_EQUATION_EULER_CPU(32); // nca - SOLVE_EQUATION_EULER_CPU(33); // nca_i - SOLVE_EQUATION_EULER_CPU(34); // ikr_c0 - SOLVE_EQUATION_EULER_CPU(35); // ikr_c1 - SOLVE_EQUATION_EULER_CPU(36); // ikr_c2 - SOLVE_EQUATION_EULER_CPU(37); // ikr_i - SOLVE_EQUATION_EULER_CPU(38); // ikr_o - SOLVE_EQUATION_RUSH_LARSEN_CPU(39); // xs1 - SOLVE_EQUATION_RUSH_LARSEN_CPU(40); // xs2 - SOLVE_EQUATION_RUSH_LARSEN_CPU(41); // Jrel_np + SOLVE_EQUATION_RUSH_LARSEN_CPU(13); // jp + SOLVE_EQUATION_RUSH_LARSEN_CPU(14); // mL + SOLVE_EQUATION_RUSH_LARSEN_CPU(15); // hL + SOLVE_EQUATION_RUSH_LARSEN_CPU(16); // hLp + SOLVE_EQUATION_RUSH_LARSEN_CPU(17); // a + SOLVE_EQUATION_RUSH_LARSEN_CPU(18); // iF + SOLVE_EQUATION_RUSH_LARSEN_CPU(19); // iS + SOLVE_EQUATION_RUSH_LARSEN_CPU(20); // ap + SOLVE_EQUATION_RUSH_LARSEN_CPU(21); // iFp + SOLVE_EQUATION_RUSH_LARSEN_CPU(22); // iSp + SOLVE_EQUATION_RUSH_LARSEN_CPU(23); // d + SOLVE_EQUATION_RUSH_LARSEN_CPU(24); // ff + SOLVE_EQUATION_RUSH_LARSEN_CPU(25); // fs + SOLVE_EQUATION_RUSH_LARSEN_CPU(26); // fcaf + SOLVE_EQUATION_RUSH_LARSEN_CPU(27); // fcas + SOLVE_EQUATION_RUSH_LARSEN_CPU(28); // jca + SOLVE_EQUATION_EULER_CPU(29); // nca + SOLVE_EQUATION_EULER_CPU(30); // nca_i + SOLVE_EQUATION_RUSH_LARSEN_CPU(31); // ffp + SOLVE_EQUATION_RUSH_LARSEN_CPU(32); // fcafp + SOLVE_EQUATION_RUSH_LARSEN_CPU(33); // xs1 + SOLVE_EQUATION_RUSH_LARSEN_CPU(34); // xs2 + SOLVE_EQUATION_RUSH_LARSEN_CPU(35); // Jrel_np + SOLVE_EQUATION_EULER_CPU(36); // CaMKt + SOLVE_EQUATION_EULER_CPU(37); // ikr_c0 + SOLVE_EQUATION_EULER_CPU(38); // ikr_c1 + SOLVE_EQUATION_EULER_CPU(39); // ikr_c2 + SOLVE_EQUATION_EULER_CPU(40); // ikr_o + SOLVE_EQUATION_EULER_CPU(41); // ikr_i SOLVE_EQUATION_RUSH_LARSEN_CPU(42); // Jrel_p } @@ -410,49 +410,49 @@ void RHS_cpu(const real *sv, real *rDY_, real stim_current, real dt, real transm real calc_I_stim = stim_current; // State variables - real v = sv[0]; - real CaMKt = sv[1]; - real cass = sv[2]; - real nai = sv[3]; - real nass = sv[4]; - real ki = sv[5]; - real kss = sv[6]; - real cansr = sv[7]; - real cajsr = sv[8]; - real cai = sv[9]; - real m = sv[10]; - real h = sv[11]; - real j = sv[12]; - real hp = sv[13]; - real jp = sv[14]; - real mL = sv[15]; - real hL = sv[16]; - real hLp = sv[17]; - real a = sv[18]; - real iF = sv[19]; - real iS = sv[20]; - real ap = sv[21]; - real iFp = sv[22]; - real iSp = sv[23]; - real d = sv[24]; - real ff = sv[25]; - real fs = sv[26]; - real fcaf = sv[27]; - real fcas = sv[28]; - real jca = sv[29]; - real ffp = sv[30]; - real fcafp = sv[31]; - real nca = sv[32]; - real nca_i = sv[33]; - real ikr_c0 = sv[34]; - real ikr_c1 = sv[35]; - real ikr_c2 = sv[36]; - real ikr_i = sv[37]; - real ikr_o = sv[38]; - real xs1 = sv[39]; - real xs2 = sv[40]; - real Jrel_np = sv[41]; - real Jrel_p = sv[42]; + real v = sv[0]; + real nai = sv[1]; + real nass = sv[2]; + real ki = sv[3]; + real kss = sv[4]; + real cai = sv[5]; + real cass = sv[6]; + real cansr = sv[7]; + real cajsr = sv[8]; + real m = sv[9]; + real hp = sv[10]; + real h = sv[11]; + real j = sv[12]; + real jp = sv[13]; + real mL = sv[14]; + real hL = sv[15]; + real hLp = sv[16]; + real a = sv[17]; + real iF = sv[18]; + real iS = sv[19]; + real ap = sv[20]; + real iFp = sv[21]; + real iSp = sv[22]; + real d = sv[23]; + real ff = sv[24]; + real fs = sv[25]; + real fcaf = sv[26]; + real fcas = sv[27]; + real jca = sv[28]; + real nca = sv[29]; + real nca_i = sv[30]; + real ffp = sv[31]; + real fcafp = sv[32]; + real xs1 = sv[33]; + real xs2 = sv[34]; + real Jrel_np = sv[35]; + real CaMKt = sv[36]; + real ikr_c0 = sv[37]; + real ikr_c1 = sv[38]; + real ikr_c2 = sv[39]; + real ikr_o = sv[40]; + real ikr_i = sv[41]; + real Jrel_p = sv[42]; #include "ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.common.c" } @@ -488,49 +488,49 @@ void RHS_RL_cpu(real *a_, real *b_, const real *sv, real *rDY_, real stim_curren real calc_I_stim = stim_current; // State variables - real v = sv[0]; - real CaMKt = sv[1]; - real cass = sv[2]; - real nai = sv[3]; - real nass = sv[4]; - real ki = sv[5]; - real kss = sv[6]; - real cansr = sv[7]; - real cajsr = sv[8]; - real cai = sv[9]; - real m = sv[10]; - real h = sv[11]; - real j = sv[12]; - real hp = sv[13]; - real jp = sv[14]; - real mL = sv[15]; - real hL = sv[16]; - real hLp = sv[17]; - real a = sv[18]; - real iF = sv[19]; - real iS = sv[20]; - real ap = sv[21]; - real iFp = sv[22]; - real iSp = sv[23]; - real d = sv[24]; - real ff = sv[25]; - real fs = sv[26]; - real fcaf = sv[27]; - real fcas = sv[28]; - real jca = sv[29]; - real ffp = sv[30]; - real fcafp = sv[31]; - real nca = sv[32]; - real nca_i = sv[33]; - real ikr_c0 = sv[34]; - real ikr_c1 = sv[35]; - real ikr_c2 = sv[36]; - real ikr_i = sv[37]; - real ikr_o = sv[38]; - real xs1 = sv[39]; - real xs2 = sv[40]; - real Jrel_np = sv[41]; - real Jrel_p = sv[42]; + real v = sv[0]; + real nai = sv[1]; + real nass = sv[2]; + real ki = sv[3]; + real kss = sv[4]; + real cai = sv[5]; + real cass = sv[6]; + real cansr = sv[7]; + real cajsr = sv[8]; + real m = sv[9]; + real hp = sv[10]; + real h = sv[11]; + real j = sv[12]; + real jp = sv[13]; + real mL = sv[14]; + real hL = sv[15]; + real hLp = sv[16]; + real a = sv[17]; + real iF = sv[18]; + real iS = sv[19]; + real ap = sv[20]; + real iFp = sv[21]; + real iSp = sv[22]; + real d = sv[23]; + real ff = sv[24]; + real fs = sv[25]; + real fcaf = sv[26]; + real fcas = sv[27]; + real jca = sv[28]; + real nca = sv[29]; + real nca_i = sv[30]; + real ffp = sv[31]; + real fcafp = sv[32]; + real xs1 = sv[33]; + real xs2 = sv[34]; + real Jrel_np = sv[35]; + real CaMKt = sv[36]; + real ikr_c0 = sv[37]; + real ikr_c1 = sv[38]; + real ikr_c2 = sv[39]; + real ikr_o = sv[40]; + real ikr_i = sv[41]; + real Jrel_p = sv[42]; #include "ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments_RL.common.c" } diff --git a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.common.c b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.common.c index f20b04be..4225f499 100644 --- a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.common.c +++ b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.common.c @@ -225,7 +225,7 @@ real PCa=8.3757e-05 * ICaL_Multiplier; if (celltype==EPI) PCa=PCa*1.2; else if (celltype==MID) - PCa=PCa*2; + PCa=PCa*1.8; real PCap=1.1*PCa; real PCaNa=0.00125*PCa; @@ -300,7 +300,7 @@ real dc2 = c1 * alpha1 + o*beta2 + I*betaItoC2 - c2 * (beta1 + alpha2 + alphac2T real delta_o = c2 * alpha2 + I*betai - o*(beta2+alphai); // Euler real di = c2*alphac2ToI + o*alphai - I*(betaItoC2 + betai); // Euler -real GKr = 0.0321 * sqrt(ko/5) * IKr_Multiplier * 0.6; // 1st element compensates for change to ko (sqrt(5/5.4)* 0.0362) Adjustment for T wave personalisation. +real GKr = 0.0321 * sqrt(ko/5) * IKr_Multiplier * 0.5; // 1st element compensates for change to ko (sqrt(5/5.4)* 0.0362) Adjustment for T wave personalisation. if (celltype==EPI) GKr=GKr*1.3; else if (celltype==MID) @@ -634,45 +634,45 @@ real dcajsr=Bcajsr*(Jtr-Jrel); // Right-hand side rDY_[0] = dv; -rDY_[1] = dCaMKt; -rDY_[2] = dcass; -rDY_[3] = dnai; -rDY_[4] = dnass; -rDY_[5] = dki; -rDY_[6] = dkss; +rDY_[1] = dnai; +rDY_[2] = dnass; +rDY_[3] = dki; +rDY_[4] = dkss; +rDY_[5] = dcai; +rDY_[6] = dcass; rDY_[7] = dcansr; rDY_[8] = dcajsr; -rDY_[9] = dcai; -rDY_[10] = dm; +rDY_[9] = dm; +rDY_[10] = dhp; rDY_[11] = dh; rDY_[12] = dj; -rDY_[13] = dhp; -rDY_[14] = djp; -rDY_[15] = dmL; -rDY_[16] = dhL; -rDY_[17] = dhLp; -rDY_[18] = da; -rDY_[19] = diF; -rDY_[20] = diS; -rDY_[21] = dap; -rDY_[22] = diFp; -rDY_[23] = diSp; -rDY_[24] = dd; -rDY_[25] = dff; -rDY_[26] = dfs; -rDY_[27] = dfcaf; -rDY_[28] = dfcas; -rDY_[29] = djca; -rDY_[30] = dffp; -rDY_[31] = dfcafp; -rDY_[32] = dnca; -rDY_[33] = dnca_i; -rDY_[34] = dc0; -rDY_[35] = dc1; -rDY_[36] = dc2; -rDY_[37] = di; -rDY_[38] = delta_o; -rDY_[39] = dxs1; -rDY_[40] = dxs2; -rDY_[41] = dJrelnp; +rDY_[13] = djp; +rDY_[14] = dmL; +rDY_[15] = dhL; +rDY_[16] = dhLp; +rDY_[17] = da; +rDY_[18] = diF; +rDY_[19] = diS; +rDY_[20] = dap; +rDY_[21] = diFp; +rDY_[22] = diSp; +rDY_[23] = dd; +rDY_[24] = dff; +rDY_[25] = dfs; +rDY_[26] = dfcaf; +rDY_[27] = dfcas; +rDY_[28] = djca; +rDY_[29] = dnca; +rDY_[30] = dnca_i; +rDY_[31] = dffp; +rDY_[32] = dfcafp; +rDY_[33] = dxs1; +rDY_[34] = dxs2; +rDY_[35] = dJrelnp; +rDY_[36] = dCaMKt; +rDY_[37] = dc0; +rDY_[38] = dc1; +rDY_[39] = dc2; +rDY_[40] = delta_o; +rDY_[41] = di; rDY_[42] = dJrelp; diff --git a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.cu b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.cu index 41bb3213..79301d0d 100644 --- a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.cu +++ b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.cu @@ -5,53 +5,52 @@ __global__ void kernel_set_model_initial_conditions(real *sv, int num_volumes, size_t pitch, bool use_adpt_dt, real min_dt) { int threadID = blockDim.x * blockIdx.x + threadIdx.x; - // Default initial conditions (endocardium cell) if (threadID < num_volumes) { for (int i = 0; i < NEQ; i++) { - // Steady-state after 200 beats (endocardium cell) - *((real * )((char *) sv + pitch * 0) + threadID) = -8.890585e+01; - *((real * )((char *) sv + pitch * 1) + threadID) = 1.107642e-02; - *((real * )((char *) sv + pitch * 2) + threadID) = 6.504164e-05; - *((real * )((char *) sv + pitch * 3) + threadID) = 1.210818e+01; - *((real * )((char *) sv + pitch * 4) + threadID) = 1.210851e+01; - *((real * )((char *) sv + pitch * 5) + threadID) = 1.426206e+02; - *((real * )((char *) sv + pitch * 6) + threadID) = 1.426205e+02; - *((real * )((char *) sv + pitch * 7) + threadID) = 1.530373e+00; - *((real * )((char *) sv + pitch * 8) + threadID) = 1.528032e+00; - *((real * )((char *) sv + pitch * 9) + threadID) = 7.455488e-05; - *((real * )((char *) sv + pitch * 10) + threadID) = 7.814592e-04; - *((real * )((char *) sv + pitch * 11) + threadID) = 8.313839e-01; - *((real * )((char *) sv + pitch * 12) + threadID) = 8.311938e-01; - *((real * )((char *) sv + pitch * 13) + threadID) = 6.752873e-01; - *((real * )((char *) sv + pitch * 14) + threadID) = 8.308255e-01; - *((real * )((char *) sv + pitch * 15) + threadID) = 1.585610e-04; - *((real * )((char *) sv + pitch * 16) + threadID) = 5.294475e-01; - *((real * )((char *) sv + pitch * 17) + threadID) = 2.896996e-01; - *((real * )((char *) sv + pitch * 18) + threadID) = 9.419166e-04; - *((real * )((char *) sv + pitch * 19) + threadID) = 9.996194e-01; - *((real * )((char *) sv + pitch * 20) + threadID) = 5.938602e-01; - *((real * )((char *) sv + pitch * 21) + threadID) = 4.799180e-04; - *((real * )((char *) sv + pitch * 22) + threadID) = 9.996194e-01; - *((real * )((char *) sv + pitch * 23) + threadID) = 6.543754e-01; - *((real * )((char *) sv + pitch * 24) + threadID) = -2.898677e-33; - *((real * )((char *) sv + pitch * 25) + threadID) = 1.000000e+00; - *((real * )((char *) sv + pitch * 26) + threadID) = 9.389659e-01; - *((real * )((char *) sv + pitch * 27) + threadID) = 1.000000e+00; - *((real * )((char *) sv + pitch * 28) + threadID) = 9.999003e-01; - *((real * )((char *) sv + pitch * 29) + threadID) = 9.999773e-01; - *((real * )((char *) sv + pitch * 30) + threadID) = 1.000000e+00; - *((real * )((char *) sv + pitch * 31) + threadID) = 1.000000e+00; - *((real * )((char *) sv + pitch * 32) + threadID) = 4.920606e-04; - *((real * )((char *) sv + pitch * 33) + threadID) = 8.337021e-04; - *((real * )((char *) sv + pitch * 34) + threadID) = 6.962775e-04; - *((real * )((char *) sv + pitch * 35) + threadID) = 8.425453e-04; - *((real * )((char *) sv + pitch * 36) + threadID) = 9.980807e-01; - *((real * )((char *) sv + pitch * 37) + threadID) = 1.289824e-05; - *((real * )((char *) sv + pitch * 38) + threadID) = 3.675442e-04; - *((real * )((char *) sv + pitch * 39) + threadID) = 2.471690e-01; - *((real * )((char *) sv + pitch * 40) + threadID) = 1.742987e-04; - *((real * )((char *) sv + pitch * 41) + threadID) = 5.421027e-24; - *((real * )((char *) sv + pitch * 42) + threadID) = 6.407933e-23; + // Default initial condition from Matlab (endocardium cell) + *((real * )((char *) sv + pitch * 0) + threadID) = -88.6369922306458; + *((real * )((char *) sv + pitch * 1) + threadID) = 11.8973412949238; + *((real * )((char *) sv + pitch * 2) + threadID) = 11.897661047085; + *((real * )((char *) sv + pitch * 3) + threadID) = 141.234464714982; + *((real * )((char *) sv + pitch * 4) + threadID) = 141.234423402713; + *((real * )((char *) sv + pitch * 5) + threadID) = 7.26747296460659e-05; + *((real * )((char *) sv + pitch * 6) + threadID) = 6.33786975780735e-05; + *((real * )((char *) sv + pitch * 7) + threadID) = 1.5326530637197; + *((real * )((char *) sv + pitch * 8) + threadID) = 1.53394579180493; + *((real * )((char *) sv + pitch * 9) + threadID) = 0.000828007761976018; + *((real * )((char *) sv + pitch * 10) + threadID) = 0.666527193684116; + *((real * )((char *) sv + pitch * 11) + threadID) = 0.826020806005678; + *((real * )((char *) sv + pitch * 12) + threadID) = 0.826055985895856; + *((real * )((char *) sv + pitch * 13) + threadID) = 0.825850881115628; + *((real * )((char *) sv + pitch * 14) + threadID) = 0.000166868626513013; + *((real * )((char *) sv + pitch * 15) + threadID) = 0.522830604669169; + *((real * )((char *) sv + pitch * 16) + threadID) = 0.285969584294187; + *((real * )((char *) sv + pitch * 17) + threadID) = 0.000959137028030184; + *((real * )((char *) sv + pitch * 18) + threadID) = 0.999601150012565; + *((real * )((char *) sv + pitch * 19) + threadID) = 0.5934016398361; + *((real * )((char *) sv + pitch * 20) + threadID) = 0.000488696137242056; + *((real * )((char *) sv + pitch * 21) + threadID) = 0.999601147267179; + *((real * )((char *) sv + pitch * 22) + threadID) = 0.654668660159696; + *((real * )((char *) sv + pitch * 23) + threadID) = 9.50007519781516e-32; + *((real * )((char *) sv + pitch * 24) + threadID) = 0.999999992317577; + *((real * )((char *) sv + pitch * 25) + threadID) = 0.939258048397962; + *((real * )((char *) sv + pitch * 26) + threadID) = 0.999999992317557; + *((real * )((char *) sv + pitch * 27) + threadID) = 0.999898379647465; + *((real * )((char *) sv + pitch * 28) + threadID) = 0.99997825156004; + *((real * )((char *) sv + pitch * 29) + threadID) = 0.000444816183420527; + *((real * )((char *) sv + pitch * 30) + threadID) = 0.000755072490632667; + *((real * )((char *) sv + pitch * 31) + threadID) = 0.999999992318446; + *((real * )((char *) sv + pitch * 32) + threadID) = 0.999999992318445; + *((real * )((char *) sv + pitch * 33) + threadID) = 0.24240468344952; + *((real * )((char *) sv + pitch * 34) + threadID) = 0.000179537726989804; + *((real * )((char *) sv + pitch * 35) + threadID) = -6.88308558109975e-25; + *((real * )((char *) sv + pitch * 36) + threadID) = 0.0111749845355653; + *((real * )((char *) sv + pitch * 37) + threadID) = 0.998036620213316; + *((real * )((char *) sv + pitch * 38) + threadID) = 0.000858801779013532; + *((real * )((char *) sv + pitch * 39) + threadID) = 0.000709744678350176; + *((real * )((char *) sv + pitch * 40) + threadID) = 0.000381261722195702; + *((real * )((char *) sv + pitch * 41) + threadID) = 1.35711566929992e-05; + *((real * )((char *) sv + pitch * 42) + threadID) = 2.30252452954649e-23; } if(use_adpt_dt) { @@ -240,7 +239,7 @@ extern "C" SOLVE_MODEL_ODES(solve_model_odes_gpu) { // Default: initialize all current modifiers for (uint32_t i = 0; i < num_extra_parameters; i++) { - if (i == 9) + if (i == 10) extra_par[i] = 0.0; else extra_par[i] = 1.0; @@ -294,47 +293,47 @@ __global__ void solve_endo_mid_epi_gpu(real cur_time, real dt, real *sv, real *s // Non-linear = Euler // Hodkin-Huxley = Rush-Larsen || Euler (if 'a' coefficient is too small) SOLVE_EQUATION_EULER_GPU(0); // v - SOLVE_EQUATION_EULER_GPU(1); // CaMKt - SOLVE_EQUATION_EULER_GPU(2); // cass - SOLVE_EQUATION_EULER_GPU(3); // nai - SOLVE_EQUATION_EULER_GPU(4); // nass - SOLVE_EQUATION_EULER_GPU(5); // ki - SOLVE_EQUATION_EULER_GPU(6); // kss + SOLVE_EQUATION_EULER_GPU(1); // nai + SOLVE_EQUATION_EULER_GPU(2); // nass + SOLVE_EQUATION_EULER_GPU(3); // ki + SOLVE_EQUATION_EULER_GPU(4); // kss + SOLVE_EQUATION_EULER_GPU(5); // cai + SOLVE_EQUATION_EULER_GPU(6); // cass SOLVE_EQUATION_EULER_GPU(7); // cansr SOLVE_EQUATION_EULER_GPU(8); // cajsr - SOLVE_EQUATION_EULER_GPU(9); // cai - SOLVE_EQUATION_RUSH_LARSEN_GPU(10); // m + SOLVE_EQUATION_RUSH_LARSEN_GPU(9); // m + SOLVE_EQUATION_RUSH_LARSEN_GPU(10); // hp SOLVE_EQUATION_RUSH_LARSEN_GPU(11); // h SOLVE_EQUATION_RUSH_LARSEN_GPU(12); // j - SOLVE_EQUATION_RUSH_LARSEN_GPU(13); // hp - SOLVE_EQUATION_RUSH_LARSEN_GPU(14); // jp - SOLVE_EQUATION_RUSH_LARSEN_GPU(15); // mL - SOLVE_EQUATION_RUSH_LARSEN_GPU(16); // hL - SOLVE_EQUATION_RUSH_LARSEN_GPU(17); // hLp - SOLVE_EQUATION_RUSH_LARSEN_GPU(18); // a - SOLVE_EQUATION_RUSH_LARSEN_GPU(19); // iF - SOLVE_EQUATION_RUSH_LARSEN_GPU(20); // iS - SOLVE_EQUATION_RUSH_LARSEN_GPU(21); // ap - SOLVE_EQUATION_RUSH_LARSEN_GPU(22); // iFp - SOLVE_EQUATION_RUSH_LARSEN_GPU(23); // iSp - SOLVE_EQUATION_RUSH_LARSEN_GPU(24); // d - SOLVE_EQUATION_RUSH_LARSEN_GPU(25); // ff - SOLVE_EQUATION_RUSH_LARSEN_GPU(26); // fs - SOLVE_EQUATION_RUSH_LARSEN_GPU(27); // fcaf - SOLVE_EQUATION_RUSH_LARSEN_GPU(28); // fcas - SOLVE_EQUATION_RUSH_LARSEN_GPU(29); // jca - SOLVE_EQUATION_RUSH_LARSEN_GPU(30); // ffp - SOLVE_EQUATION_RUSH_LARSEN_GPU(31); // fcafp - SOLVE_EQUATION_EULER_GPU(32); // nca - SOLVE_EQUATION_EULER_GPU(33); // nca_i - SOLVE_EQUATION_EULER_GPU(34); // ikr_c0 - SOLVE_EQUATION_EULER_GPU(35); // ikr_c1 - SOLVE_EQUATION_EULER_GPU(36); // ikr_c2 - SOLVE_EQUATION_EULER_GPU(37); // ikr_i - SOLVE_EQUATION_EULER_GPU(38); // ikr_o - SOLVE_EQUATION_RUSH_LARSEN_GPU(39); // xs1 - SOLVE_EQUATION_RUSH_LARSEN_GPU(40); // xs2 - SOLVE_EQUATION_RUSH_LARSEN_GPU(41); // Jrel_np + SOLVE_EQUATION_RUSH_LARSEN_GPU(13); // jp + SOLVE_EQUATION_RUSH_LARSEN_GPU(14); // mL + SOLVE_EQUATION_RUSH_LARSEN_GPU(15); // hL + SOLVE_EQUATION_RUSH_LARSEN_GPU(16); // hLp + SOLVE_EQUATION_RUSH_LARSEN_GPU(17); // a + SOLVE_EQUATION_RUSH_LARSEN_GPU(18); // iF + SOLVE_EQUATION_RUSH_LARSEN_GPU(19); // iS + SOLVE_EQUATION_RUSH_LARSEN_GPU(20); // ap + SOLVE_EQUATION_RUSH_LARSEN_GPU(21); // iFp + SOLVE_EQUATION_RUSH_LARSEN_GPU(22); // iSp + SOLVE_EQUATION_RUSH_LARSEN_GPU(23); // d + SOLVE_EQUATION_RUSH_LARSEN_GPU(24); // ff + SOLVE_EQUATION_RUSH_LARSEN_GPU(25); // fs + SOLVE_EQUATION_RUSH_LARSEN_GPU(26); // fcaf + SOLVE_EQUATION_RUSH_LARSEN_GPU(27); // fcas + SOLVE_EQUATION_RUSH_LARSEN_GPU(28); // jca + SOLVE_EQUATION_EULER_GPU(29); // nca + SOLVE_EQUATION_EULER_GPU(30); // nca_i + SOLVE_EQUATION_RUSH_LARSEN_GPU(31); // ffp + SOLVE_EQUATION_RUSH_LARSEN_GPU(32); // fcafp + SOLVE_EQUATION_RUSH_LARSEN_GPU(33); // xs1 + SOLVE_EQUATION_RUSH_LARSEN_GPU(34); // xs2 + SOLVE_EQUATION_RUSH_LARSEN_GPU(35); // Jrel_np + SOLVE_EQUATION_EULER_GPU(36); // CaMKt + SOLVE_EQUATION_EULER_GPU(37); // ikr_c0 + SOLVE_EQUATION_EULER_GPU(38); // ikr_c1 + SOLVE_EQUATION_EULER_GPU(39); // ikr_c2 + SOLVE_EQUATION_EULER_GPU(40); // ikr_o + SOLVE_EQUATION_EULER_GPU(41); // ikr_i SOLVE_EQUATION_RUSH_LARSEN_GPU(42); // Jrel_p } } else { @@ -549,93 +548,93 @@ inline __device__ void RHS_gpu(real *sv, real *rDY_, real stim_current, real tra real Jrel_p; if (use_adpt_dt) { - v = sv[0]; - CaMKt = sv[1]; - cass = sv[2]; - nai = sv[3]; - nass = sv[4]; - ki = sv[5]; - kss = sv[6]; - cansr = sv[7]; - cajsr = sv[8]; - cai = sv[9]; - m = sv[10]; - h = sv[11]; - j = sv[12]; - hp = sv[13]; - jp = sv[14]; - mL = sv[15]; - hL = sv[16]; - hLp = sv[17]; - a = sv[18]; - iF = sv[19]; - iS = sv[20]; - ap = sv[21]; - iFp = sv[22]; - iSp = sv[23]; - d = sv[24]; - ff = sv[25]; - fs = sv[26]; - fcaf = sv[27]; - fcas = sv[28]; - jca = sv[29]; - ffp = sv[30]; - fcafp = sv[31]; - nca = sv[32]; - nca_i = sv[33]; - ikr_c0 = sv[34]; - ikr_c1 = sv[35]; - ikr_c2 = sv[36]; - ikr_i = sv[37]; - ikr_o = sv[38]; - xs1 = sv[39]; - xs2 = sv[40]; - Jrel_np = sv[41]; - Jrel_p = sv[42]; + v = sv[0]; + nai = sv[1]; + nass = sv[2]; + ki = sv[3]; + kss = sv[4]; + cai = sv[5]; + cass = sv[6]; + cansr = sv[7]; + cajsr = sv[8]; + m = sv[9]; + hp = sv[10]; + h = sv[11]; + j = sv[12]; + jp = sv[13]; + mL = sv[14]; + hL = sv[15]; + hLp = sv[16]; + a = sv[17]; + iF = sv[18]; + iS = sv[19]; + ap = sv[20]; + iFp = sv[21]; + iSp = sv[22]; + d = sv[23]; + ff = sv[24]; + fs = sv[25]; + fcaf = sv[26]; + fcas = sv[27]; + jca = sv[28]; + nca = sv[29]; + nca_i = sv[30]; + ffp = sv[31]; + fcafp = sv[32]; + xs1 = sv[33]; + xs2 = sv[34]; + Jrel_np = sv[35]; + CaMKt = sv[36]; + ikr_c0 = sv[37]; + ikr_c1 = sv[38]; + ikr_c2 = sv[39]; + ikr_o = sv[40]; + ikr_i = sv[41]; + Jrel_p = sv[42]; } else { - v = *((real *)((char *)sv + pitch * 0) + threadID_); - CaMKt = *((real *)((char *)sv + pitch * 1) + threadID_); - cass = *((real *)((char *)sv + pitch * 2) + threadID_); - nai = *((real *)((char *)sv + pitch * 3) + threadID_); - nass = *((real *)((char *)sv + pitch * 4) + threadID_); - ki = *((real *)((char *)sv + pitch * 5) + threadID_); - kss = *((real *)((char *)sv + pitch * 6) + threadID_); - cansr = *((real *)((char *)sv + pitch * 7) + threadID_); - cajsr = *((real *)((char *)sv + pitch * 8) + threadID_); - cai = *((real *)((char *)sv + pitch * 9) + threadID_); - m = *((real *)((char *)sv + pitch * 10) + threadID_); - h = *((real *)((char *)sv + pitch * 11) + threadID_); - j = *((real *)((char *)sv + pitch * 12) + threadID_); - hp = *((real *)((char *)sv + pitch * 13) + threadID_); - jp = *((real *)((char *)sv + pitch * 14) + threadID_); - mL = *((real *)((char *)sv + pitch * 15) + threadID_); - hL = *((real *)((char *)sv + pitch * 16) + threadID_); - hLp = *((real *)((char *)sv + pitch * 17) + threadID_); - a = *((real *)((char *)sv + pitch * 18) + threadID_); - iF = *((real *)((char *)sv + pitch * 19) + threadID_); - iS = *((real *)((char *)sv + pitch * 20) + threadID_); - ap = *((real *)((char *)sv + pitch * 21) + threadID_); - iFp = *((real *)((char *)sv + pitch * 22) + threadID_); - iSp = *((real *)((char *)sv + pitch * 23) + threadID_); - d = *((real *)((char *)sv + pitch * 24) + threadID_); - ff = *((real *)((char *)sv + pitch * 25) + threadID_); - fs = *((real *)((char *)sv + pitch * 26) + threadID_); - fcaf = *((real *)((char *)sv + pitch * 27) + threadID_); - fcas = *((real *)((char *)sv + pitch * 28) + threadID_); - jca = *((real *)((char *)sv + pitch * 29) + threadID_); - ffp = *((real *)((char *)sv + pitch * 30) + threadID_); - fcafp = *((real *)((char *)sv + pitch * 31) + threadID_); - nca = *((real *)((char *)sv + pitch * 32) + threadID_); - nca_i = *((real *)((char *)sv + pitch * 33) + threadID_); - ikr_c0 = *((real *)((char *)sv + pitch * 34) + threadID_); - ikr_c1 = *((real *)((char *)sv + pitch * 35) + threadID_); - ikr_c2 = *((real *)((char *)sv + pitch * 36) + threadID_); - ikr_i = *((real *)((char *)sv + pitch * 37) + threadID_); - ikr_o = *((real *)((char *)sv + pitch * 38) + threadID_); - xs1 = *((real *)((char *)sv + pitch * 39) + threadID_); - xs2 = *((real *)((char *)sv + pitch * 40) + threadID_); - Jrel_np = *((real *)((char *)sv + pitch * 41) + threadID_); - Jrel_p = *((real *)((char *)sv + pitch * 42) + threadID_); + v = *((real *)((char *)sv + pitch * 0) + threadID_); + nai = *((real *)((char *)sv + pitch * 1) + threadID_); + nass = *((real *)((char *)sv + pitch * 2) + threadID_); + ki = *((real *)((char *)sv + pitch * 3) + threadID_); + kss = *((real *)((char *)sv + pitch * 4) + threadID_); + cai = *((real *)((char *)sv + pitch * 5) + threadID_); + cass = *((real *)((char *)sv + pitch * 6) + threadID_); + cansr = *((real *)((char *)sv + pitch * 7) + threadID_); + cajsr = *((real *)((char *)sv + pitch * 8) + threadID_); + m = *((real *)((char *)sv + pitch * 9) + threadID_); + hp = *((real *)((char *)sv + pitch * 10) + threadID_); + h = *((real *)((char *)sv + pitch * 11) + threadID_); + j = *((real *)((char *)sv + pitch * 12) + threadID_); + jp = *((real *)((char *)sv + pitch * 13) + threadID_); + mL = *((real *)((char *)sv + pitch * 14) + threadID_); + hL = *((real *)((char *)sv + pitch * 15) + threadID_); + hLp = *((real *)((char *)sv + pitch * 16) + threadID_); + a = *((real *)((char *)sv + pitch * 17) + threadID_); + iF = *((real *)((char *)sv + pitch * 18) + threadID_); + iS = *((real *)((char *)sv + pitch * 19) + threadID_); + ap = *((real *)((char *)sv + pitch * 20) + threadID_); + iFp = *((real *)((char *)sv + pitch * 21) + threadID_); + iSp = *((real *)((char *)sv + pitch * 22) + threadID_); + d = *((real *)((char *)sv + pitch * 23) + threadID_); + ff = *((real *)((char *)sv + pitch * 24) + threadID_); + fs = *((real *)((char *)sv + pitch * 25) + threadID_); + fcaf = *((real *)((char *)sv + pitch * 26) + threadID_); + fcas = *((real *)((char *)sv + pitch * 27) + threadID_); + jca = *((real *)((char *)sv + pitch * 28) + threadID_); + nca = *((real *)((char *)sv + pitch * 29) + threadID_); + nca_i = *((real *)((char *)sv + pitch * 30) + threadID_); + ffp = *((real *)((char *)sv + pitch * 31) + threadID_); + fcafp = *((real *)((char *)sv + pitch * 32) + threadID_); + xs1 = *((real *)((char *)sv + pitch * 33) + threadID_); + xs2 = *((real *)((char *)sv + pitch * 34) + threadID_); + Jrel_np = *((real *)((char *)sv + pitch * 35) + threadID_); + CaMKt = *((real *)((char *)sv + pitch * 36) + threadID_); + ikr_c0 = *((real *)((char *)sv + pitch * 37) + threadID_); + ikr_c1 = *((real *)((char *)sv + pitch * 38) + threadID_); + ikr_c2 = *((real *)((char *)sv + pitch * 39) + threadID_); + ikr_o = *((real *)((char *)sv + pitch * 40) + threadID_); + ikr_i = *((real *)((char *)sv + pitch * 41) + threadID_); + Jrel_p = *((real *)((char *)sv + pitch * 42) + threadID_); } #include "ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.common.c" @@ -718,93 +717,93 @@ inline __device__ void RHS_RL_gpu(real *a_, real *b_, real *sv, real *rDY_, real real Jrel_p; if (use_adpt_dt) { - v = sv[0]; - CaMKt = sv[1]; - cass = sv[2]; - nai = sv[3]; - nass = sv[4]; - ki = sv[5]; - kss = sv[6]; - cansr = sv[7]; - cajsr = sv[8]; - cai = sv[9]; - m = sv[10]; - h = sv[11]; - j = sv[12]; - hp = sv[13]; - jp = sv[14]; - mL = sv[15]; - hL = sv[16]; - hLp = sv[17]; - a = sv[18]; - iF = sv[19]; - iS = sv[20]; - ap = sv[21]; - iFp = sv[22]; - iSp = sv[23]; - d = sv[24]; - ff = sv[25]; - fs = sv[26]; - fcaf = sv[27]; - fcas = sv[28]; - jca = sv[29]; - ffp = sv[30]; - fcafp = sv[31]; - nca = sv[32]; - nca_i = sv[33]; - ikr_c0 = sv[34]; - ikr_c1 = sv[35]; - ikr_c2 = sv[36]; - ikr_i = sv[37]; - ikr_o = sv[38]; - xs1 = sv[39]; - xs2 = sv[40]; - Jrel_np = sv[41]; - Jrel_p = sv[42]; + v = sv[0]; + nai = sv[1]; + nass = sv[2]; + ki = sv[3]; + kss = sv[4]; + cai = sv[5]; + cass = sv[6]; + cansr = sv[7]; + cajsr = sv[8]; + m = sv[9]; + hp = sv[10]; + h = sv[11]; + j = sv[12]; + jp = sv[13]; + mL = sv[14]; + hL = sv[15]; + hLp = sv[16]; + a = sv[17]; + iF = sv[18]; + iS = sv[19]; + ap = sv[20]; + iFp = sv[21]; + iSp = sv[22]; + d = sv[23]; + ff = sv[24]; + fs = sv[25]; + fcaf = sv[26]; + fcas = sv[27]; + jca = sv[28]; + nca = sv[29]; + nca_i = sv[30]; + ffp = sv[31]; + fcafp = sv[32]; + xs1 = sv[33]; + xs2 = sv[34]; + Jrel_np = sv[35]; + CaMKt = sv[36]; + ikr_c0 = sv[37]; + ikr_c1 = sv[38]; + ikr_c2 = sv[39]; + ikr_o = sv[40]; + ikr_i = sv[41]; + Jrel_p = sv[42]; } else { - v = *((real *)((char *)sv + pitch * 0) + threadID_); - CaMKt = *((real *)((char *)sv + pitch * 1) + threadID_); - cass = *((real *)((char *)sv + pitch * 2) + threadID_); - nai = *((real *)((char *)sv + pitch * 3) + threadID_); - nass = *((real *)((char *)sv + pitch * 4) + threadID_); - ki = *((real *)((char *)sv + pitch * 5) + threadID_); - kss = *((real *)((char *)sv + pitch * 6) + threadID_); - cansr = *((real *)((char *)sv + pitch * 7) + threadID_); - cajsr = *((real *)((char *)sv + pitch * 8) + threadID_); - cai = *((real *)((char *)sv + pitch * 9) + threadID_); - m = *((real *)((char *)sv + pitch * 10) + threadID_); - h = *((real *)((char *)sv + pitch * 11) + threadID_); - j = *((real *)((char *)sv + pitch * 12) + threadID_); - hp = *((real *)((char *)sv + pitch * 13) + threadID_); - jp = *((real *)((char *)sv + pitch * 14) + threadID_); - mL = *((real *)((char *)sv + pitch * 15) + threadID_); - hL = *((real *)((char *)sv + pitch * 16) + threadID_); - hLp = *((real *)((char *)sv + pitch * 17) + threadID_); - a = *((real *)((char *)sv + pitch * 18) + threadID_); - iF = *((real *)((char *)sv + pitch * 19) + threadID_); - iS = *((real *)((char *)sv + pitch * 20) + threadID_); - ap = *((real *)((char *)sv + pitch * 21) + threadID_); - iFp = *((real *)((char *)sv + pitch * 22) + threadID_); - iSp = *((real *)((char *)sv + pitch * 23) + threadID_); - d = *((real *)((char *)sv + pitch * 24) + threadID_); - ff = *((real *)((char *)sv + pitch * 25) + threadID_); - fs = *((real *)((char *)sv + pitch * 26) + threadID_); - fcaf = *((real *)((char *)sv + pitch * 27) + threadID_); - fcas = *((real *)((char *)sv + pitch * 28) + threadID_); - jca = *((real *)((char *)sv + pitch * 29) + threadID_); - ffp = *((real *)((char *)sv + pitch * 30) + threadID_); - fcafp = *((real *)((char *)sv + pitch * 31) + threadID_); - nca = *((real *)((char *)sv + pitch * 32) + threadID_); - nca_i = *((real *)((char *)sv + pitch * 33) + threadID_); - ikr_c0 = *((real *)((char *)sv + pitch * 34) + threadID_); - ikr_c1 = *((real *)((char *)sv + pitch * 35) + threadID_); - ikr_c2 = *((real *)((char *)sv + pitch * 36) + threadID_); - ikr_i = *((real *)((char *)sv + pitch * 37) + threadID_); - ikr_o = *((real *)((char *)sv + pitch * 38) + threadID_); - xs1 = *((real *)((char *)sv + pitch * 39) + threadID_); - xs2 = *((real *)((char *)sv + pitch * 40) + threadID_); - Jrel_np = *((real *)((char *)sv + pitch * 41) + threadID_); - Jrel_p = *((real *)((char *)sv + pitch * 42) + threadID_); + v = *((real *)((char *)sv + pitch * 0) + threadID_); + nai = *((real *)((char *)sv + pitch * 1) + threadID_); + nass = *((real *)((char *)sv + pitch * 2) + threadID_); + ki = *((real *)((char *)sv + pitch * 3) + threadID_); + kss = *((real *)((char *)sv + pitch * 4) + threadID_); + cai = *((real *)((char *)sv + pitch * 5) + threadID_); + cass = *((real *)((char *)sv + pitch * 6) + threadID_); + cansr = *((real *)((char *)sv + pitch * 7) + threadID_); + cajsr = *((real *)((char *)sv + pitch * 8) + threadID_); + m = *((real *)((char *)sv + pitch * 9) + threadID_); + hp = *((real *)((char *)sv + pitch * 10) + threadID_); + h = *((real *)((char *)sv + pitch * 11) + threadID_); + j = *((real *)((char *)sv + pitch * 12) + threadID_); + jp = *((real *)((char *)sv + pitch * 13) + threadID_); + mL = *((real *)((char *)sv + pitch * 14) + threadID_); + hL = *((real *)((char *)sv + pitch * 15) + threadID_); + hLp = *((real *)((char *)sv + pitch * 16) + threadID_); + a = *((real *)((char *)sv + pitch * 17) + threadID_); + iF = *((real *)((char *)sv + pitch * 18) + threadID_); + iS = *((real *)((char *)sv + pitch * 19) + threadID_); + ap = *((real *)((char *)sv + pitch * 20) + threadID_); + iFp = *((real *)((char *)sv + pitch * 21) + threadID_); + iSp = *((real *)((char *)sv + pitch * 22) + threadID_); + d = *((real *)((char *)sv + pitch * 23) + threadID_); + ff = *((real *)((char *)sv + pitch * 24) + threadID_); + fs = *((real *)((char *)sv + pitch * 25) + threadID_); + fcaf = *((real *)((char *)sv + pitch * 26) + threadID_); + fcas = *((real *)((char *)sv + pitch * 27) + threadID_); + jca = *((real *)((char *)sv + pitch * 28) + threadID_); + nca = *((real *)((char *)sv + pitch * 29) + threadID_); + nca_i = *((real *)((char *)sv + pitch * 30) + threadID_); + ffp = *((real *)((char *)sv + pitch * 31) + threadID_); + fcafp = *((real *)((char *)sv + pitch * 32) + threadID_); + xs1 = *((real *)((char *)sv + pitch * 33) + threadID_); + xs2 = *((real *)((char *)sv + pitch * 34) + threadID_); + Jrel_np = *((real *)((char *)sv + pitch * 35) + threadID_); + CaMKt = *((real *)((char *)sv + pitch * 36) + threadID_); + ikr_c0 = *((real *)((char *)sv + pitch * 37) + threadID_); + ikr_c1 = *((real *)((char *)sv + pitch * 38) + threadID_); + ikr_c2 = *((real *)((char *)sv + pitch * 39) + threadID_); + ikr_o = *((real *)((char *)sv + pitch * 40) + threadID_); + ikr_i = *((real *)((char *)sv + pitch * 41) + threadID_); + Jrel_p = *((real *)((char *)sv + pitch * 42) + threadID_); } #include "ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments_RL.common.c" diff --git a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.h b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.h index 33b0a174..53cdb76d 100644 --- a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.h +++ b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments.h @@ -8,7 +8,7 @@ #include "../../extra_data_library/helper_functions.h" #define NEQ 43 -#define INITIAL_V (-8.890585e+01) +#define INITIAL_V (-88.6369922306458) #define ENDO 0.0 #define MID 1.0 diff --git a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments_RL.common.c b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments_RL.common.c index 1efd0ea0..0805958d 100644 --- a/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments_RL.common.c +++ b/src/models_library/ToROrd/ToRORd_fkatp_mixed_endo_mid_epi_GKsGKrtjca_adjustments_RL.common.c @@ -225,7 +225,7 @@ real PCa=8.3757e-05 * ICaL_Multiplier; if (celltype==EPI) PCa=PCa*1.2; else if (celltype==MID) - PCa=PCa*2; + PCa=PCa*1.8; real PCap=1.1*PCa; real PCaNa=0.00125*PCa; @@ -300,7 +300,7 @@ real dc2 = c1 * alpha1 + o*beta2 + I*betaItoC2 - c2 * (beta1 + alpha2 + alphac2T real delta_o = c2 * alpha2 + I*betai - o*(beta2+alphai); // Euler real di = c2*alphac2ToI + o*alphai - I*(betaItoC2 + betai); // Euler -real GKr = 0.0321 * sqrt(ko/5) * IKr_Multiplier * 0.6; // 1st element compensates for change to ko (sqrt(5/5.4)* 0.0362) Adjustment for T wave personalisation. +real GKr = 0.0321 * sqrt(ko/5) * IKr_Multiplier * 0.5; // 1st element compensates for change to ko (sqrt(5/5.4)* 0.0362) Adjustment for T wave personalisation. if (celltype==EPI) GKr=GKr*1.3; else if (celltype==MID) @@ -633,102 +633,102 @@ real Bcajsr=1.0/(1.0+csqnmax*kmcsqn/pow((kmcsqn+cajsr),2.0)); real dcajsr=Bcajsr*(Jtr-Jrel); // Compute 'a' coefficients for the Hodkin-Huxley variables -a_[10] = -1.0 / tm; +a_[9 ] = -1.0 / tm; a_[11] = -1.0 / tauh; a_[12] = -1.0 / tauj; -a_[13] = -1.0 / tauh; -a_[14] = -1.0 / taujp; -a_[15] = -1.0 / tmL; -a_[16] = -1.0 / thL; -a_[17] = -1.0 / thLp; -a_[18] = -1.0 / ta; -a_[19] = -1.0 / tiF; -a_[20] = -1.0 / tiS; -a_[21] = -1.0 / ta; -a_[22] = -1.0 / tiFp; -a_[23] = -1.0 / tiSp; -a_[24] = -1.0 / td; -a_[25] = -1.0 / tff; -a_[26] = -1.0 / tfs; -a_[27] = -1.0 / tfcaf; -a_[28] = -1.0 / tfcas; -a_[29] = -1.0 / tjca; -a_[30] = -1.0 / tffp; -a_[31] = -1.0 / tfcafp; -a_[39] = -1.0 / txs1; -a_[40] = -1.0 / txs2; -a_[41] = -1.0 / tau_rel; +a_[10] = -1.0 / tauh; +a_[13] = -1.0 / taujp; +a_[14] = -1.0 / tmL; +a_[15] = -1.0 / thL; +a_[16] = -1.0 / thLp; +a_[17] = -1.0 / ta; +a_[18] = -1.0 / tiF; +a_[19] = -1.0 / tiS; +a_[20] = -1.0 / ta; +a_[21] = -1.0 / tiFp; +a_[22] = -1.0 / tiSp; +a_[23] = -1.0 / td; +a_[24] = -1.0 / tff; +a_[25] = -1.0 / tfs; +a_[26] = -1.0 / tfcaf; +a_[27] = -1.0 / tfcas; +a_[28] = -1.0 / tjca; +a_[31] = -1.0 / tffp; +a_[32] = -1.0 / tfcafp; +a_[33] = -1.0 / txs1; +a_[34] = -1.0 / txs2; +a_[35] = -1.0 / tau_rel; a_[42] = -1.0 / tau_relp; // Compute 'b' coefficients for the Hodkin-Huxley variables -b_[10] = mss / tm; +b_[9 ] = mss / tm; b_[11] = hss / tauh; b_[12] = jss / tauj; -b_[13] = hssp / tauh; -b_[14] = jss / taujp; -b_[15] = mLss / tmL; -b_[16] = hLss / thL; -b_[17] = hLssp / thLp; -b_[18] = ass / ta; -b_[19] = iss / tiF; -b_[20] = iss / tiS; -b_[21] = assp / ta; -b_[22] = iss / tiFp; -b_[23] = iss / tiSp; -b_[24] = dss / td; -b_[25] = fss / tff; -b_[26] = fss / tfs; -b_[27] = fcass / tfcaf; -b_[28] = fcass / tfcas; -b_[29] = jcass / tjca; -b_[30] = fss / tffp; -b_[31] = fcass / tfcafp; -b_[39] = xs1ss / txs1; -b_[40] = xs2ss / txs2; -b_[41] = Jrel_inf / tau_rel; +b_[10] = hssp / tauh; +b_[13] = jss / taujp; +b_[14] = mLss / tmL; +b_[15] = hLss / thL; +b_[16] = hLssp / thLp; +b_[17] = ass / ta; +b_[18] = iss / tiF; +b_[19] = iss / tiS; +b_[20] = assp / ta; +b_[21] = iss / tiFp; +b_[22] = iss / tiSp; +b_[23] = dss / td; +b_[24] = fss / tff; +b_[25] = fss / tfs; +b_[26] = fcass / tfcaf; +b_[27] = fcass / tfcas; +b_[28] = jcass / tjca; +b_[31] = fss / tffp; +b_[32] = fcass / tfcafp; +b_[33] = xs1ss / txs1; +b_[34] = xs2ss / txs2; +b_[35] = Jrel_inf / tau_rel; b_[42] = Jrel_infp / tau_relp; // Right-hand side rDY_[0] = dv; -rDY_[1] = dCaMKt; -rDY_[2] = dcass; -rDY_[3] = dnai; -rDY_[4] = dnass; -rDY_[5] = dki; -rDY_[6] = dkss; +rDY_[1] = dnai; +rDY_[2] = dnass; +rDY_[3] = dki; +rDY_[4] = dkss; +rDY_[5] = dcai; +rDY_[6] = dcass; rDY_[7] = dcansr; rDY_[8] = dcajsr; -rDY_[9] = dcai; -rDY_[10] = dm; +rDY_[9] = dm; +rDY_[10] = dhp; rDY_[11] = dh; rDY_[12] = dj; -rDY_[13] = dhp; -rDY_[14] = djp; -rDY_[15] = dmL; -rDY_[16] = dhL; -rDY_[17] = dhLp; -rDY_[18] = da; -rDY_[19] = diF; -rDY_[20] = diS; -rDY_[21] = dap; -rDY_[22] = diFp; -rDY_[23] = diSp; -rDY_[24] = dd; -rDY_[25] = dff; -rDY_[26] = dfs; -rDY_[27] = dfcaf; -rDY_[28] = dfcas; -rDY_[29] = djca; -rDY_[30] = dffp; -rDY_[31] = dfcafp; -rDY_[32] = dnca; -rDY_[33] = dnca_i; -rDY_[34] = dc0; -rDY_[35] = dc1; -rDY_[36] = dc2; -rDY_[37] = di; -rDY_[38] = delta_o; -rDY_[39] = dxs1; -rDY_[40] = dxs2; -rDY_[41] = dJrelnp; +rDY_[13] = djp; +rDY_[14] = dmL; +rDY_[15] = dhL; +rDY_[16] = dhLp; +rDY_[17] = da; +rDY_[18] = diF; +rDY_[19] = diS; +rDY_[20] = dap; +rDY_[21] = diFp; +rDY_[22] = diSp; +rDY_[23] = dd; +rDY_[24] = dff; +rDY_[25] = dfs; +rDY_[26] = dfcaf; +rDY_[27] = dfcas; +rDY_[28] = djca; +rDY_[29] = dnca; +rDY_[30] = dnca_i; +rDY_[31] = dffp; +rDY_[32] = dfcafp; +rDY_[33] = dxs1; +rDY_[34] = dxs2; +rDY_[35] = dJrelnp; +rDY_[36] = dCaMKt; +rDY_[37] = dc0; +rDY_[38] = dc1; +rDY_[39] = dc2; +rDY_[40] = delta_o; +rDY_[41] = di; rDY_[42] = dJrelp;